Commit 9580973a97edb89344987cf0356d55b30e615525
Merge branch 'ft-dev' into 'main'
feat:新增租户配置的创建时间字段,fix:修复消息配置编辑控制台警告问题 See merge request huang/yun-teng-iot-front!95
Showing
9 changed files
with
140 additions
and
75 deletions
1 | // 时间戳转时间 | 1 | // 时间戳转时间 |
2 | -export const transformTime = (timestamp = +new Date()) => { | ||
3 | - if (timestamp) { | ||
4 | - const time = new Date(timestamp); | ||
5 | - const y = time.getFullYear(); //getFullYear方法以四位数字返回年份 | ||
6 | - const M = time.getMonth() + 1; // getMonth方法从 Date 对象返回月份 (0 ~ 11),返回结果需要手动加一 | ||
7 | - const d = time.getDate(); // getDate方法从 Date 对象返回一个月中的某一天 (1 ~ 31) | ||
8 | - // const h = time.getHours(); // getHours方法返回 Date 对象的小时 (0 ~ 23) | ||
9 | - // const m = time.getMinutes(); // getMinutes方法返回 Date 对象的分钟 (0 ~ 59) | ||
10 | - // const s = time.getSeconds(); // getSeconds方法返回 Date 对象的秒数 (0 ~ 59) | ||
11 | - // h + ':' + m + ':' + s | ||
12 | - return y + '-' + M + '-' + d; | ||
13 | - } else { | ||
14 | - return ''; | ||
15 | - } | 2 | +export const transformTime = (str) => { |
3 | + const n = parseInt(str); | ||
4 | + const D = new Date(n); | ||
5 | + const year = D.getFullYear(); //四位数年份 | ||
6 | + let month = D.getMonth() + 1; //月份(0-11),0为一月份 | ||
7 | + month = month < 10 ? '0' + month : month; | ||
8 | + let day = D.getDate(); //月的某一天(1-31) | ||
9 | + day = day < 10 ? '0' + day : day; | ||
10 | + let hours = D.getHours(); //小时(0-23) | ||
11 | + hours = hours < 10 ? '0' + hours : hours; | ||
12 | + let minutes = D.getMinutes(); //分钟(0-59) | ||
13 | + minutes = minutes < 10 ? '0' + minutes : minutes; | ||
14 | + const now_time = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes; | ||
15 | + return now_time; | ||
16 | }; | 16 | }; |
@@ -36,12 +36,33 @@ | @@ -36,12 +36,33 @@ | ||
36 | setDrawerProps({ confirmLoading: false }); | 36 | setDrawerProps({ confirmLoading: false }); |
37 | isUpdate.value = !!data?.isUpdate; | 37 | isUpdate.value = !!data?.isUpdate; |
38 | if (unref(isUpdate)) { | 38 | if (unref(isUpdate)) { |
39 | - const config = data.record.config; | ||
40 | - for (const key in config) { | ||
41 | - Reflect.set(data.record, key + '', config[key]); | ||
42 | - } | 39 | + console.log(data); |
40 | + // const config = data.record.config; | ||
41 | + // for (const key in config) { | ||
42 | + // Reflect.set(data.record, key + '', config[key]); | ||
43 | + // } | ||
44 | + // await setFieldsValue({ | ||
45 | + // ...data.record, | ||
46 | + // }); | ||
43 | await setFieldsValue({ | 47 | await setFieldsValue({ |
44 | - ...data.record, | 48 | + accessKeyId: data.record.config.accessKeyId, |
49 | + accessKeySecret: data.record.config.accessKeySecret, | ||
50 | + platformTypeDictText: data.record.platformTypeDictText, | ||
51 | + messageTypeDictText: data.record.messageTypeDictText, | ||
52 | + messageType: data.record.messageType, | ||
53 | + platformType: data.record.platformType, | ||
54 | + configName: data.record.configName, | ||
55 | + createTime: data.record.createTime, | ||
56 | + creator: data.record.creator, | ||
57 | + enabled: data.record.enabled, | ||
58 | + id: data.record.id, | ||
59 | + key: data.record.key, | ||
60 | + pendingStatus: data.record.pendingStatus, | ||
61 | + remark: data.record.remark, | ||
62 | + status: data.record.status, | ||
63 | + tenantId: data.record.tenantId, | ||
64 | + updateTime: data.record.updateTime, | ||
65 | + updater: data.record.updater, | ||
45 | }); | 66 | }); |
46 | } | 67 | } |
47 | }); | 68 | }); |
@@ -73,7 +73,6 @@ export const searchFormSchema: FormSchema[] = [ | @@ -73,7 +73,6 @@ export const searchFormSchema: FormSchema[] = [ | ||
73 | { | 73 | { |
74 | field: 'messageType', | 74 | field: 'messageType', |
75 | label: '消息类型', | 75 | label: '消息类型', |
76 | - required: true, | ||
77 | component: 'ApiSelect', | 76 | component: 'ApiSelect', |
78 | colProps: { | 77 | colProps: { |
79 | span: 6, | 78 | span: 6, |
@@ -54,7 +54,6 @@ export const searchFormSchema: FormSchema[] = [ | @@ -54,7 +54,6 @@ export const searchFormSchema: FormSchema[] = [ | ||
54 | label: '发送手机', | 54 | label: '发送手机', |
55 | component: 'Input', | 55 | component: 'Input', |
56 | colProps: { span: 6 }, | 56 | colProps: { span: 6 }, |
57 | - rules: phoneRule, | ||
58 | componentProps: { | 57 | componentProps: { |
59 | maxLength: 36, | 58 | maxLength: 36, |
60 | }, | 59 | }, |
@@ -49,26 +49,12 @@ export const searchFormSchema: FormSchema[] = [ | @@ -49,26 +49,12 @@ export const searchFormSchema: FormSchema[] = [ | ||
49 | maxLength: 255, | 49 | maxLength: 255, |
50 | placeholder: '请输入用户名', | 50 | placeholder: '请输入用户名', |
51 | }, | 51 | }, |
52 | - dynamicRules: () => { | ||
53 | - return [ | ||
54 | - { | ||
55 | - required: false, | ||
56 | - validator: (_, value) => { | ||
57 | - if (String(value).length > 255) { | ||
58 | - return Promise.reject('字数不超过255个字'); | ||
59 | - } | ||
60 | - return Promise.resolve(); | ||
61 | - }, | ||
62 | - }, | ||
63 | - ]; | ||
64 | - }, | ||
65 | }, | 52 | }, |
66 | { | 53 | { |
67 | field: 'realName', | 54 | field: 'realName', |
68 | label: '姓名', | 55 | label: '姓名', |
69 | component: 'Input', | 56 | component: 'Input', |
70 | colProps: { span: 8 }, | 57 | colProps: { span: 8 }, |
71 | - required: true, | ||
72 | componentProps: { | 58 | componentProps: { |
73 | maxLength: 255, | 59 | maxLength: 255, |
74 | placeholder: '请输入姓名', | 60 | placeholder: '请输入姓名', |
@@ -10,6 +10,7 @@ | @@ -10,6 +10,7 @@ | ||
10 | <BasicForm @register="registerForm"> | 10 | <BasicForm @register="registerForm"> |
11 | <template #menu="{ model, field }"> | 11 | <template #menu="{ model, field }"> |
12 | <BasicTree | 12 | <BasicTree |
13 | + v-if="treeData.length > 0" | ||
13 | ref="tree" | 14 | ref="tree" |
14 | v-model:value="model[field]" | 15 | v-model:value="model[field]" |
15 | :treeData="treeData" | 16 | :treeData="treeData" |
@@ -19,6 +20,7 @@ | @@ -19,6 +20,7 @@ | ||
19 | toolbar | 20 | toolbar |
20 | title="菜单分配" | 21 | title="菜单分配" |
21 | @check="handleCheckClick" | 22 | @check="handleCheckClick" |
23 | + :defaultExpandAll="true" | ||
22 | /> | 24 | /> |
23 | </template> | 25 | </template> |
24 | </BasicForm> | 26 | </BasicForm> |
@@ -4,7 +4,9 @@ import { h } from 'vue'; | @@ -4,7 +4,9 @@ import { h } from 'vue'; | ||
4 | import { Switch } from 'ant-design-vue'; | 4 | import { Switch } from 'ant-design-vue'; |
5 | import { setRoleStatus } from '/@/api/system/system'; | 5 | import { setRoleStatus } from '/@/api/system/system'; |
6 | import { useMessage } from '/@/hooks/web/useMessage'; | 6 | import { useMessage } from '/@/hooks/web/useMessage'; |
7 | -import { getAllRoleList } from '/@/api/system/system'; | 7 | +import { getRoleListByPage } from '/@/api/system/system'; |
8 | +import { USER_INFO_KEY } from '/@/enums/cacheEnum'; | ||
9 | +import { getAuthCache } from '/@/utils/auth'; | ||
8 | 10 | ||
9 | export const columns: BasicColumn[] = [ | 11 | export const columns: BasicColumn[] = [ |
10 | { | 12 | { |
@@ -34,9 +36,18 @@ export const columns: BasicColumn[] = [ | @@ -34,9 +36,18 @@ export const columns: BasicColumn[] = [ | ||
34 | record.pendingStatus = true; | 36 | record.pendingStatus = true; |
35 | const newStatus = checked ? 1 : 0; | 37 | const newStatus = checked ? 1 : 0; |
36 | const { createMessage } = useMessage(); | 38 | const { createMessage } = useMessage(); |
37 | - const data = await getAllRoleList(); | ||
38 | - const findById = data.find((f) => f.id == record.id); | ||
39 | - if (findById?.id) return createMessage.error(`该租户下面有此用户,无法禁用`); | 39 | + const data = await getRoleListByPage({ |
40 | + page: 1, | ||
41 | + pageSize: 100, | ||
42 | + // roleType: 'CUSTOMER_USER', | ||
43 | + }); | ||
44 | + const userInfo = (await getAuthCache(USER_INFO_KEY)) as unknown as any; | ||
45 | + const findById = data.items.find((f) => { | ||
46 | + if (f.id === userInfo.plainRoles[0].roleId) { | ||
47 | + return f.id; | ||
48 | + } | ||
49 | + }); | ||
50 | + if (record.id == findById?.id) return createMessage.error(`该租户下面有此客户,无法禁用`); | ||
40 | record.pendingStatus = true; | 51 | record.pendingStatus = true; |
41 | setRoleStatus(record.id, newStatus) | 52 | setRoleStatus(record.id, newStatus) |
42 | .then(() => { | 53 | .then(() => { |
@@ -112,6 +123,49 @@ export const formSchema: FormSchema[] = [ | @@ -112,6 +123,49 @@ export const formSchema: FormSchema[] = [ | ||
112 | { label: '停用', value: 0 }, | 123 | { label: '停用', value: 0 }, |
113 | ], | 124 | ], |
114 | }, | 125 | }, |
126 | + // componentProps({ formModel, formActionType }) { | ||
127 | + // const initStatus = formModel.status; | ||
128 | + // const { createMessage } = useMessage(); | ||
129 | + // let initBoolean = false; | ||
130 | + // const { setFieldsValue } = formActionType; | ||
131 | + // if (formModel.name !== undefined) { | ||
132 | + // initBoolean = true; | ||
133 | + // } else if (formModel.name == undefined) { | ||
134 | + // initBoolean = false; | ||
135 | + // } | ||
136 | + // return { | ||
137 | + // options: [ | ||
138 | + // { label: '启用', value: 1 }, | ||
139 | + // { label: '停用', value: 0 }, | ||
140 | + // ], | ||
141 | + // async onChange(e) { | ||
142 | + // // const data = await getAllRoleList(); | ||
143 | + // // const findById = data.find((f) => f.id); | ||
144 | + // if (!initBoolean) { | ||
145 | + // setFieldsValue({ | ||
146 | + // status: initStatus, | ||
147 | + // }); | ||
148 | + // } else { | ||
149 | + // if (e == 0 && formModel.name !== undefined) { | ||
150 | + // createMessage.error(`该租户下面有此用户,无法停用`); | ||
151 | + // setFieldsValue({ | ||
152 | + // status: Number(1), | ||
153 | + // }); | ||
154 | + // } else { | ||
155 | + // setFieldsValue({ | ||
156 | + // status: initStatus, | ||
157 | + // }); | ||
158 | + // } | ||
159 | + // } | ||
160 | + // // if (e == 0) { | ||
161 | + // // if (findById?.id) return createMessage.error(`该租户下面有此用户,无法禁用`); | ||
162 | + // // setFieldsValue({ | ||
163 | + // // status: 1, | ||
164 | + // // }); | ||
165 | + // // } | ||
166 | + // }, | ||
167 | + // }; | ||
168 | + // }, | ||
115 | }, | 169 | }, |
116 | { | 170 | { |
117 | label: '备注', | 171 | label: '备注', |
@@ -10,6 +10,7 @@ | @@ -10,6 +10,7 @@ | ||
10 | <BasicForm @register="registerForm"> | 10 | <BasicForm @register="registerForm"> |
11 | <template #menu="{ model, field }"> | 11 | <template #menu="{ model, field }"> |
12 | <BasicTree | 12 | <BasicTree |
13 | + v-if="treeData.length > 0" | ||
13 | v-model:value="model[field]" | 14 | v-model:value="model[field]" |
14 | :treeData="treeData" | 15 | :treeData="treeData" |
15 | :replaceFields="{ title: 'menuName' }" | 16 | :replaceFields="{ title: 'menuName' }" |
@@ -19,6 +20,7 @@ | @@ -19,6 +20,7 @@ | ||
19 | ref="tree" | 20 | ref="tree" |
20 | title="菜单分配" | 21 | title="菜单分配" |
21 | @check="handleCheckClick" | 22 | @check="handleCheckClick" |
23 | + :defaultExpandAll="true" | ||
22 | /> | 24 | /> |
23 | </template> | 25 | </template> |
24 | </BasicForm> | 26 | </BasicForm> |
@@ -35,17 +35,19 @@ | @@ -35,17 +35,19 @@ | ||
35 | const { proxy } = getCurrentInstance(); | 35 | const { proxy } = getCurrentInstance(); |
36 | const getChildData = ref(null); | 36 | const getChildData = ref(null); |
37 | const editGetId: any = ref(''); | 37 | const editGetId: any = ref(''); |
38 | - const [registerForm, { validateFields, getFieldsValue, resetFields, setFieldsValue }] = | ||
39 | - useForm({ | ||
40 | - schemas: formSchema, | ||
41 | - showActionButtonGroup: false, | ||
42 | - }); | 38 | + const [registerForm, { getFieldsValue, resetFields, setFieldsValue }] = useForm({ |
39 | + schemas: formSchema, | ||
40 | + showActionButtonGroup: false, | ||
41 | + }); | ||
43 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { | 42 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { |
44 | //清除表单值 | 43 | //清除表单值 |
45 | proxy.$refs.getChildData.funcResetFields(); | 44 | proxy.$refs.getChildData.funcResetFields(); |
46 | await resetFields(); | 45 | await resetFields(); |
47 | setDrawerProps({ confirmLoading: false }); | 46 | setDrawerProps({ confirmLoading: false }); |
48 | isUpdate.value = !!data?.isUpdate; | 47 | isUpdate.value = !!data?.isUpdate; |
48 | + if (!unref(isUpdate)) { | ||
49 | + editGetId.value = ''; | ||
50 | + } | ||
49 | //编辑 | 51 | //编辑 |
50 | if (unref(isUpdate)) { | 52 | if (unref(isUpdate)) { |
51 | parentSetData.value = { ...data.record.profileData.configuration }; | 53 | parentSetData.value = { ...data.record.profileData.configuration }; |
@@ -58,44 +60,44 @@ | @@ -58,44 +60,44 @@ | ||
58 | }); | 60 | }); |
59 | const getTitle = computed(() => (!unref(isUpdate) ? '新增租户配置' : '编辑租户配置')); | 61 | const getTitle = computed(() => (!unref(isUpdate) ? '新增租户配置' : '编辑租户配置')); |
60 | 62 | ||
63 | + const getAllFieldsFunc = () => { | ||
64 | + getValuesFormData = getFieldsValue(); | ||
65 | + let getChildValues = proxy.$refs.getChildData.getAllFields(); | ||
66 | + let profileData1 = { | ||
67 | + configuration: getChildValues, | ||
68 | + }; | ||
69 | + const id: any = { | ||
70 | + id: unref(isUpdate) ? editGetId.value : '', | ||
71 | + }; | ||
72 | + | ||
73 | + const createTime = { | ||
74 | + createdTime: Date.now(), | ||
75 | + }; | ||
76 | + | ||
77 | + Object.assign( | ||
78 | + postAllData, | ||
79 | + { | ||
80 | + profileData: profileData1, | ||
81 | + }, | ||
82 | + getValuesFormData, | ||
83 | + id, | ||
84 | + createTime | ||
85 | + ); | ||
86 | + if (!unref(isUpdate)) { | ||
87 | + delete postAllData.id; | ||
88 | + } | ||
89 | + }; | ||
90 | + | ||
61 | async function handleSubmit() { | 91 | async function handleSubmit() { |
62 | if (!unref(isUpdate)) { | 92 | if (!unref(isUpdate)) { |
63 | - let res = validateFields(); | ||
64 | - if (!res) return; | ||
65 | - getValuesFormData = getFieldsValue(); | ||
66 | - let getChildValues = proxy.$refs.getChildData.getAllFields(); | ||
67 | - let profileData1 = { | ||
68 | - configuration: getChildValues, | ||
69 | - }; | ||
70 | - Object.assign( | ||
71 | - postAllData, | ||
72 | - { | ||
73 | - profileData: profileData1, | ||
74 | - }, | ||
75 | - getValuesFormData | ||
76 | - ); | 93 | + getAllFieldsFunc(); |
77 | await saveTenantProfileApi(postAllData); | 94 | await saveTenantProfileApi(postAllData); |
78 | createMessage.success('租户配置新增成功'); | 95 | createMessage.success('租户配置新增成功'); |
79 | closeDrawer(); | 96 | closeDrawer(); |
80 | emit('success'); | 97 | emit('success'); |
81 | resetFields(); | 98 | resetFields(); |
82 | - } | ||
83 | - if (unref(isUpdate)) { | ||
84 | - let res = validateFields(); | ||
85 | - if (!res) return; | ||
86 | - getValuesFormData = getFieldsValue(); | ||
87 | - getValuesFormData.id = editGetId.value; | ||
88 | - let getChildValues = proxy.$refs.getChildData.getAllFields(); | ||
89 | - let profileData1 = { | ||
90 | - configuration: getChildValues, | ||
91 | - }; | ||
92 | - Object.assign( | ||
93 | - postAllData, | ||
94 | - { | ||
95 | - profileData: profileData1, | ||
96 | - }, | ||
97 | - getValuesFormData | ||
98 | - ); | 99 | + } else { |
100 | + getAllFieldsFunc(); | ||
99 | await saveTenantProfileApi(postAllData); | 101 | await saveTenantProfileApi(postAllData); |
100 | createMessage.success('租户配置编辑成功'); | 102 | createMessage.success('租户配置编辑成功'); |
101 | closeDrawer(); | 103 | closeDrawer(); |