From c07199ca2b431373923234f6934dba48ccf29ccb Mon Sep 17 00:00:00 2001 From: wangshuaiswim Date: Wed, 1 Mar 2023 18:42:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E7=89=A9=E6=A8=A1?= =?UTF-8?q?=E5=9E=8BTODO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/device/product.ts | 3 +- .../components/Metadata/Base/Edit/index.vue | 14 +++++-- .../device/components/Metadata/Cat/index.vue | 1 - .../components/Metadata/Import/index.vue | 42 +++++++++---------- .../device/components/Metadata/index.vue | 15 ++++--- 5 files changed, 40 insertions(+), 35 deletions(-) diff --git a/src/api/device/product.ts b/src/api/device/product.ts index f6a31e9d..fc69bd04 100644 --- a/src/api/device/product.ts +++ b/src/api/device/product.ts @@ -1,5 +1,6 @@ +import { OperatorItem } from '@/components/FRuleEditor/Operator/typings' import server from '@/utils/request' -import { DeviceMetadata, ProductItem, DepartmentItem } from '@/views/device/Product/typings' +import { DeviceMetadata, ProductItem, DepartmentItem, MetadataType } from '@/views/device/Product/typings' /** * 根据条件查询产品(不带翻页) diff --git a/src/views/device/components/Metadata/Base/Edit/index.vue b/src/views/device/components/Metadata/Base/Edit/index.vue index ede6b6e6..742bf208 100644 --- a/src/views/device/components/Metadata/Base/Edit/index.vue +++ b/src/views/device/components/Metadata/Base/Edit/index.vue @@ -5,7 +5,7 @@ 保存 - + @@ -17,11 +17,11 @@ import { ProductItem } from '@/views/device/Product/typings'; import { message } from 'ant-design-vue/es'; import type { FormInstance } from 'ant-design-vue/es'; import { updateMetadata, asyncUpdateMetadata } from '../../metadata' -import { Store } from 'jetlinks-store'; import { detail } from '@/api/device/instance'; import { DeviceInstance } from '@/views/device/Instance/typings'; import BaseForm from './BaseForm.vue'; import { PropType } from 'vue'; +import { _deploy } from '@/api/device/product'; const props = defineProps({ type: { @@ -104,10 +104,16 @@ const save = reactive({ setTimeout(() => window.close(), 300); } } else { + const { id } = route.params + if (props?.type === 'device') { + instanceStore.refresh(id as string) + } else { + productStore.refresh(id as string) + } // Store.set(SystemConst.REFRESH_METADATA_TABLE, true); if (deploy) { - // TODO 是否发布 - Store.set('product-deploy', deploy); + _deploy(id as string) + // Store.set('product-deploy', deploy); } else { save.resetMetadata(); message.success({ diff --git a/src/views/device/components/Metadata/Cat/index.vue b/src/views/device/components/Metadata/Cat/index.vue index a9bafd58..eff77dc6 100644 --- a/src/views/device/components/Metadata/Cat/index.vue +++ b/src/views/device/components/Metadata/Cat/index.vue @@ -18,7 +18,6 @@
-
diff --git a/src/views/device/components/Metadata/Import/index.vue b/src/views/device/components/Metadata/Import/index.vue index 7d8867b1..faa59eff 100644 --- a/src/views/device/components/Metadata/Import/index.vue +++ b/src/views/device/components/Metadata/Import/index.vue @@ -43,7 +43,6 @@ - @@ -57,8 +56,6 @@ import type { DefaultOptionType } from 'ant-design-vue/es/select'; import type { UploadProps, UploadFile, UploadChangeParam } from 'ant-design-vue/es'; import type { DeviceMetadata, ProductItem } from '@/views/device/Product/typings' import { message } from 'ant-design-vue/es'; -import { Store } from 'jetlinks-store'; -import { SystemConst } from '@/utils/consts'; import { useInstanceStore } from '@/store/instance' import { useProductStore } from '@/store/product'; import { FILE_UPLOAD } from '@/api/comm'; @@ -139,11 +136,6 @@ const rules = reactive({ ], }) const { validate, validateInfos } = useForm(formModel, rules); -const onSubmit = () => { - validate().then(() => { - - }) -} const fileList = ref([]) const productList = ref([]) @@ -208,11 +200,11 @@ const operateLimits = (mdata: DeviceMetadata) => { const handleImport = async () => { validate().then(async (data) => { loading.value = true + const { id } = route.params || {} if (data.metadata === 'alink') { const res = await convertMetadata('from', 'alink', data.import) if (res.status === 200) { const metadata = JSON.stringify(operateLimits(res.result)) - const { id } = route.params || {} if (props?.type === 'device') { await saveMetadata(id as string, metadata) instanceStore.setCurrent(JSON.parse(metadata || '{}')) @@ -227,8 +219,13 @@ const handleImport = async () => { loading.value = false message.error('发生错误!') } - Store.set(SystemConst.GET_METADATA, true) - Store.set(SystemConst.REFRESH_METADATA_TABLE, true) + if (props?.type === 'device') { + instanceStore.refresh(id as string) + } else { + productStore.refresh(id as string) + } + // Store.set(SystemConst.GET_METADATA, true) + // Store.set(SystemConst.REFRESH_METADATA_TABLE, true) close() } else { try { @@ -255,21 +252,24 @@ const handleImport = async () => { loading.value = false if (resp.status === 200) { if (props?.type === 'device') { - const metadata: DeviceMetadata = JSON.parse(paramsDevice || '{}') - // TODO导入 - // MetadataAction.insert(metadata); - // instanceStore.setCurrent(metadata) + const detail = instanceStore.current + detail.metadata = paramsDevice + instanceStore.setCurrent(detail) message.success('导入成功') } else { - const metadata: ProductItem = JSON.parse(params?.metadata || '{}') - // TODO导入 - // MetadataAction.insert(metadata); - // productStore.setCurrent(metadata) + const detail = productStore.current + detail.metadata = params.metadata + productStore.setCurrent(detail) message.success('导入成功') } } - Store.set(SystemConst.GET_METADATA, true) - Store.set(SystemConst.REFRESH_METADATA_TABLE, true) + // Store.set(SystemConst.GET_METADATA, true) + // Store.set(SystemConst.REFRESH_METADATA_TABLE, true) + if (props?.type === 'device') { + instanceStore.refresh(id as string) + } else { + productStore.refresh(id as string) + } close(); } catch (e) { loading.value = false diff --git a/src/views/device/components/Metadata/index.vue b/src/views/device/components/Metadata/index.vue index 36ea3747..d3d3908d 100644 --- a/src/views/device/components/Metadata/index.vue +++ b/src/views/device/components/Metadata/index.vue @@ -23,8 +23,8 @@ :tooltip="{ title: '重置后将使用产品的物模型配置' }" key="reload"> 重置操作 - 快速导入 - 物模型TSL + 快速导入 + 物模型TSL @@ -50,7 +50,6 @@ import PermissionButton from '@/components/PermissionButton/index.vue' import { deleteMetadata } from '@/api/device/instance.js' import { message } from 'ant-design-vue' -import { Store } from 'jetlinks-store' import { SystemConst } from '@/utils/consts' import { useInstanceStore } from '@/store/instance' import Import from './Import/index.vue' @@ -75,11 +74,11 @@ const resetMetadata = async () => { const resp = await deleteMetadata(id as string) if (resp.status === 200) { message.info('操作成功') - - Store.set(SystemConst.REFRESH_DEVICE, true) - setTimeout(() => { - Store.set(SystemConst.REFRESH_METADATA_TABLE, true) - }, 400) + instanceStore.refresh(id as string) + // Store.set(SystemConst.REFRESH_DEVICE, true) + // setTimeout(() => { + // Store.set(SystemConst.REFRESH_METADATA_TABLE, true) + // }, 400) } } From e787cc0e867d89491deb5935c642901f4a4f9f48 Mon Sep 17 00:00:00 2001 From: easy <1358086367@qq.com> Date: Wed, 1 Mar 2023 19:14:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?update:=20=E4=B8=AA=E4=BA=BA=E4=B8=AD?= =?UTF-8?q?=E5=BF=83-=E5=9F=BA=E6=9C=AC=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/account/center.ts | 28 ++ .../Center/components/EditInfoDialog.vue | 101 ++++++++ .../Center/components/EditPasswordDialog.vue | 138 ++++++++++ src/views/account/Center/index.vue | 242 +++++++++++++++--- src/views/account/Center/typing.d.ts | 17 ++ 5 files changed, 489 insertions(+), 37 deletions(-) create mode 100644 src/views/account/Center/components/EditInfoDialog.vue create mode 100644 src/views/account/Center/components/EditPasswordDialog.vue create mode 100644 src/views/account/Center/typing.d.ts diff --git a/src/api/account/center.ts b/src/api/account/center.ts index 5523992a..4946c123 100644 --- a/src/api/account/center.ts +++ b/src/api/account/center.ts @@ -1,3 +1,31 @@ import server from '@/utils/request' export const getSsoBinds_api = (): any =>server.get(`/application/sso/me/bindings`) + +// 获取登录用户信息 +export const getMeInfo_api = () => server.get(`/user/detail`); +// 修改登录用户信息 +export const updateMeInfo_api = (data:object) => server.put(`/user/detail`,data); +// 修改登录用户密码 +export const updateMepsd_api = (data:object) => server.put(`/user/passwd`,data); +// 第三方账号解绑 +export const unBind_api = (appId: string) => server.post(`/application/sso/${appId}/unbind/me`); +/** + * 校验字段合法性 + * @param type 类型 + * @param name 值 + */ +export const validateField_api = (type: 'username' | 'password', name: string) => server.post(`/user/${type}/_validate`,name,{ + headers: { + 'Content-Type': 'text/plain' + } +}); +/** + * 校验旧密码是否正确 + * @param password 旧密码 + */ +export const checkOldPassword_api = (password:string) => server.post(`/user/me/password/_validate`,password,{ + headers: { + 'Content-Type': 'text/plain' + } +}); diff --git a/src/views/account/Center/components/EditInfoDialog.vue b/src/views/account/Center/components/EditInfoDialog.vue new file mode 100644 index 00000000..23cc9196 --- /dev/null +++ b/src/views/account/Center/components/EditInfoDialog.vue @@ -0,0 +1,101 @@ + + + + + diff --git a/src/views/account/Center/components/EditPasswordDialog.vue b/src/views/account/Center/components/EditPasswordDialog.vue new file mode 100644 index 00000000..69698c84 --- /dev/null +++ b/src/views/account/Center/components/EditPasswordDialog.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/src/views/account/Center/index.vue b/src/views/account/Center/index.vue index 3687fd51..2846aca1 100644 --- a/src/views/account/Center/index.vue +++ b/src/views/account/Center/index.vue @@ -63,11 +63,27 @@

角色

-

{{ userInfo.roleList.join(',') || '-' }}

+

+ {{ + (userInfo.roleList && + userInfo.roleList + .map((item) => item.name) + .join(',')) || + '-' + }} +

组织

-

{{ userInfo.orgList.join(',') || '-' }}

+

+ {{ + (userInfo.orgList && + userInfo.orgList + .map((item) => item.name) + .join(',')) || + '-' + }} +

邮箱

@@ -78,6 +94,7 @@ type="EditOutlined" class="edit" style="right: 40px" + @click="editInfoVisible = true" />
@@ -94,10 +111,19 @@ >安全性高的密码可以使帐号更安全。建议您定期更换密码,设置一个包含字母,符号或数字中至少两项且长度超过8位的密码 - + + + + + -
+ +

绑定三方账号

-
+ +

首页视图

+
+ + + + + + + + + + + + 确定 +
+ + +