Commit 763a5927157e80af3f7bf4f4493973bd08c6212f
Merge branch 'ft_local_dev' into 'main'
pref:优化Topic内容 See merge request huang/yun-teng-iot-front!414
Showing
14 changed files
with
200 additions
and
75 deletions
| ... | ... | @@ -96,10 +96,6 @@ export function getTenantPage(params: TenantPageRequestParams) { |
| 96 | 96 | return getPageData<TenantDTO>(params, Api.tenantPage); |
| 97 | 97 | } |
| 98 | 98 | |
| 99 | -// export function getTenantAdminPage(params: TenantAdminPageRequestParams) { | |
| 100 | -// return getPageData<UserDTO>(params, Api.userPage); | |
| 101 | -// } | |
| 102 | - | |
| 103 | 99 | //分页 |
| 104 | 100 | export const getTenantAdminPage = (params: TenantAdminPageRequestParams) => { |
| 105 | 101 | return defHttp.get<TenantAdminPageRequestParams>({ | ... | ... |
| ... | ... | @@ -40,9 +40,8 @@ export interface TenantPageRequestParams extends BaseQueryParams { |
| 40 | 40 | |
| 41 | 41 | export interface TenantAdminPageRequestParams extends BaseQueryParams { |
| 42 | 42 | realName?: string; |
| 43 | - // tenantCode: string; | |
| 44 | 43 | tenantId?: string; |
| 45 | - // roleType?: string; | |
| 44 | + items?: string[]; | |
| 46 | 45 | } |
| 47 | 46 | |
| 48 | 47 | export interface tenantProfileDTO { | ... | ... |
| ... | ... | @@ -25,7 +25,7 @@ |
| 25 | 25 | > |
| 26 | 26 | <div class="change-avatar" style="text-align: center"> |
| 27 | 27 | <div class="mb-2" style="font-weight: 700">个人头像</div> |
| 28 | - <div style="display: flex; align-items: center; justify-content: center; width: 35.6rem"> | |
| 28 | + <div style="display: flex; align-items: center; justify-content: center"> | |
| 29 | 29 | <div> |
| 30 | 30 | <Upload |
| 31 | 31 | name="avatar" |
| ... | ... | @@ -265,7 +265,8 @@ |
| 265 | 265 | transition: border-color 0.3s ease; |
| 266 | 266 | } |
| 267 | 267 | } |
| 268 | + | |
| 268 | 269 | .headSetPop :global(.ant-modal-header) { |
| 269 | - padding: 27px 0px !important; | |
| 270 | + padding: 27px 0 !important; | |
| 270 | 271 | } |
| 271 | 272 | </style> | ... | ... |
| ... | ... | @@ -18,10 +18,7 @@ |
| 18 | 18 | <ListItem @click="go('/notice/myNotices')" class="cursor-pointer"> |
| 19 | 19 | <ListItemMeta> |
| 20 | 20 | <template #avatar> |
| 21 | - <Avatar | |
| 22 | - :src="item.sysNotice.avatar ?? defaultAvatar(item.receiverId)" | |
| 23 | - size="large" | |
| 24 | - /> | |
| 21 | + <Avatar :src="item.sysNotice.avatar" size="large" /> | |
| 25 | 22 | </template> |
| 26 | 23 | <template #description> |
| 27 | 24 | <span class="cursor-pointer noticeTitle">{{ item.sysNotice.title }} </span> |
| ... | ... | @@ -92,7 +89,7 @@ |
| 92 | 89 | ? '#e6e6e5' |
| 93 | 90 | : index === 2 |
| 94 | 91 | ? '#f8c296' |
| 95 | - : '#0b55f1;', | |
| 92 | + : '#0b55f1', | |
| 96 | 93 | }" |
| 97 | 94 | >{{ index + 1 }}</span |
| 98 | 95 | > |
| ... | ... | @@ -169,7 +166,6 @@ |
| 169 | 166 | import { BasicTable, useTable } from '/@/components/Table'; |
| 170 | 167 | import { isAdmin } from '/@/enums/roleEnum'; |
| 171 | 168 | import { getTenantExpireTimeList, getTenantTop10 } from '/@/api/dashboard'; |
| 172 | - import headerImg from '/@/assets/images/logo.png'; | |
| 173 | 169 | |
| 174 | 170 | export default defineComponent({ |
| 175 | 171 | components: { |
| ... | ... | @@ -257,11 +253,6 @@ |
| 257 | 253 | }); |
| 258 | 254 | |
| 259 | 255 | const userStore = useUserStore(); |
| 260 | - const defaultAvatar = (uid) => { | |
| 261 | - if (uid === userStore.getUserInfo?.userId) { | |
| 262 | - return userStore.getUserInfo?.avatar || headerImg; | |
| 263 | - } | |
| 264 | - }; | |
| 265 | 256 | const getContacts = computed(() => { |
| 266 | 257 | return userStore.enterPriseInfo?.contacts; |
| 267 | 258 | }); |
| ... | ... | @@ -302,7 +293,6 @@ |
| 302 | 293 | registerTable, |
| 303 | 294 | isAdmin, |
| 304 | 295 | Empty, |
| 305 | - defaultAvatar, | |
| 306 | 296 | }; |
| 307 | 297 | }, |
| 308 | 298 | }); | ... | ... |
| ... | ... | @@ -199,6 +199,7 @@ export const step2Schemas: FormSchema[] = [ |
| 199 | 199 | { |
| 200 | 200 | field: 'transportType', |
| 201 | 201 | component: 'Select', |
| 202 | + required: true, | |
| 202 | 203 | label: '接入协议', |
| 203 | 204 | defaultValue: 'DEFAULT', |
| 204 | 205 | componentProps() { |
| ... | ... | @@ -454,13 +455,31 @@ export const topicTableColumn: BasicColumn[] = [ |
| 454 | 455 | width: 100, |
| 455 | 456 | }, |
| 456 | 457 | { |
| 457 | - title: 'Topic类', | |
| 458 | - dataIndex: 'class', | |
| 458 | + title: '发布主题', | |
| 459 | + dataIndex: 'release', | |
| 459 | 460 | width: 100, |
| 460 | 461 | }, |
| 462 | + | |
| 461 | 463 | { |
| 462 | - title: '描述', | |
| 463 | - dataIndex: 'description', | |
| 464 | + title: '订阅主题', | |
| 465 | + dataIndex: 'subscribe', | |
| 464 | 466 | width: 100, |
| 465 | 467 | }, |
| 468 | + { | |
| 469 | + title: '平台', | |
| 470 | + dataIndex: 'platform', | |
| 471 | + width: 30, | |
| 472 | + }, | |
| 473 | + | |
| 474 | + { | |
| 475 | + title: '设备', | |
| 476 | + dataIndex: 'device', | |
| 477 | + width: 30, | |
| 478 | + }, | |
| 479 | + | |
| 480 | + // { | |
| 481 | + // title: '描述', | |
| 482 | + // dataIndex: 'description', | |
| 483 | + // width: 100, | |
| 484 | + // }, | |
| 466 | 485 | ]; | ... | ... |
| 1 | 1 | <script lang="ts" setup> |
| 2 | 2 | import { topicTableColumn } from '../device.profile.data'; |
| 3 | 3 | import { BasicTable, useTable } from '/@/components/Table'; |
| 4 | - import { buildUUID } from '/@/utils/uuid'; | |
| 5 | 4 | |
| 6 | 5 | const list = [ |
| 7 | - { function: '遥测主题', class: 'v1/devices/me/telemetry' }, | |
| 8 | - { function: '属性主题', class: 'v1/devices/me/attributes' }, | |
| 9 | - { function: '设备上报事件主题', class: 'v1/devices/me/attributes' }, | |
| 10 | - { function: '服务控制设备(RPC)主题', class: 'v1/devices/me/attributes' }, | |
| 6 | + { | |
| 7 | + function: '网关/直连设备遥测', | |
| 8 | + release: 'v1/devices/me/telemetry', | |
| 9 | + subscribe: 'v1/devices/me/telemetry', | |
| 10 | + platform: '订阅', | |
| 11 | + device: '发布', | |
| 12 | + }, | |
| 13 | + { | |
| 14 | + function: '服务端命令下发到设备端', | |
| 15 | + release: 'v1/devices/me/rpc/request/$request_id', | |
| 16 | + subscribe: 'v1/devices/me/rpc/request/+', | |
| 17 | + platform: '发布', | |
| 18 | + device: '订阅', | |
| 19 | + }, | |
| 20 | + { | |
| 21 | + function: '设备端响应命令到服务端', | |
| 22 | + release: 'v1/devices/me/rpc/response/$request_id', | |
| 23 | + subscribe: 'v1/devices/me/rpc/response/+', | |
| 24 | + platform: '订阅', | |
| 25 | + device: '发布', | |
| 26 | + }, | |
| 27 | + { | |
| 28 | + function: '直连设备属性上报', | |
| 29 | + release: 'v1/devices/me/attributes', | |
| 30 | + subscribe: 'v1/devices/me/attributes', | |
| 31 | + platform: '订阅', | |
| 32 | + device: '发布', | |
| 33 | + }, | |
| 34 | + | |
| 35 | + { | |
| 36 | + function: '设备端请求服务端共享属性及客户端属性', | |
| 37 | + release: 'vv1/devices/me/attributes/response/$request_id', | |
| 38 | + subscribe: 'v1/devices/me/attributes/response/+', | |
| 39 | + platform: '订阅', | |
| 40 | + device: '发布', | |
| 41 | + }, | |
| 42 | + { | |
| 43 | + function: '服务端响应共享属性集客户端属性给设备端', | |
| 44 | + release: 'v1/devices/me/attributes/response/$request_id', | |
| 45 | + subscribe: 'v1/devices/me/attributes/response/+', | |
| 46 | + platform: '发布', | |
| 47 | + device: '订阅', | |
| 48 | + }, | |
| 49 | + { | |
| 50 | + function: '设备端请求服务端子设备共享属性及客户端属性', | |
| 51 | + release: 'v1/gateway/attributes/request', | |
| 52 | + subscribe: 'v1/gateway/attributes/request', | |
| 53 | + platform: '订阅', | |
| 54 | + device: '发布', | |
| 55 | + }, | |
| 56 | + { | |
| 57 | + function: '服务端响应子设备共享属性及客户端属性给设备端', | |
| 58 | + release: 'v1/gateway/attributes/response', | |
| 59 | + subscribe: 'v1/gateway/attributes/response', | |
| 60 | + platform: '发布', | |
| 61 | + device: '订阅', | |
| 62 | + }, | |
| 63 | + { | |
| 64 | + function: '设备端上报子设备客户端属性', | |
| 65 | + release: 'v1/gateway/attributes', | |
| 66 | + subscribe: 'v1/gateway/attributes', | |
| 67 | + platform: '订阅', | |
| 68 | + device: '发布', | |
| 69 | + }, | |
| 70 | + { | |
| 71 | + function: '网关子设备遥测', | |
| 72 | + release: 'v1/gateway/telemetry', | |
| 73 | + subscribe: 'v1/gateway/telemetry', | |
| 74 | + platform: '订阅', | |
| 75 | + device: '发布', | |
| 76 | + }, | |
| 11 | 77 | ]; |
| 12 | 78 | |
| 13 | - const dataSource = Array.from({ length: 10 }, (_, index) => { | |
| 14 | - const record = list[index % 4]; | |
| 15 | - return { | |
| 16 | - id: buildUUID(), | |
| 17 | - ...record, | |
| 18 | - description: record.function, | |
| 19 | - }; | |
| 20 | - }); | |
| 79 | + const dataSource = list; | |
| 21 | 80 | |
| 22 | 81 | const [register] = useTable({ |
| 23 | 82 | title: 'Topic', | ... | ... |
| ... | ... | @@ -37,11 +37,9 @@ |
| 37 | 37 | import { SelectTypes } from 'ant-design-vue/es/select'; |
| 38 | 38 | import { Select } from 'ant-design-vue'; |
| 39 | 39 | import { useModal } from '/@/components/Modal'; |
| 40 | - import { useMessage } from '/@/hooks/web/useMessage'; | |
| 41 | 40 | import { getScriptManageMeList } from '/@/api/scriptmanage/scriptManager'; |
| 42 | 41 | import ConverScriptModal from '/@/views/scriptmanage/converscript/ConverScriptModal.vue'; |
| 43 | 42 | |
| 44 | - const { createMessage } = useMessage(); | |
| 45 | 43 | const selectScript = reactive<Record<'script', Nullable<string>>>({ |
| 46 | 44 | script: null, |
| 47 | 45 | }); |
| ... | ... | @@ -91,6 +89,7 @@ |
| 91 | 89 | openModal(true, { |
| 92 | 90 | isUpdate: false, |
| 93 | 91 | isTest: true, |
| 92 | + record: selectScript.script, | |
| 94 | 93 | isText: 'test', |
| 95 | 94 | isTitle: 'test', |
| 96 | 95 | }); |
| ... | ... | @@ -98,10 +97,6 @@ |
| 98 | 97 | }; |
| 99 | 98 | |
| 100 | 99 | const getFormData = () => { |
| 101 | - if (!selectScript.script) { | |
| 102 | - createMessage.error('请选择转换脚本'); | |
| 103 | - throw '请选择转换脚本'; | |
| 104 | - } | |
| 105 | 100 | const value = { |
| 106 | 101 | ...{ |
| 107 | 102 | scriptId: selectScript.script, | ... | ... |
| ... | ... | @@ -29,10 +29,12 @@ |
| 29 | 29 | } from '/@/api/stationnotification/stationnotifyApi'; |
| 30 | 30 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 31 | 31 | import { Authority } from '/@/components/Authority'; |
| 32 | + import { useUserStore } from '/@/store/modules/user'; | |
| 33 | + import headerImg from '/@/assets/images/logo.png'; | |
| 32 | 34 | |
| 33 | 35 | export default defineComponent({ |
| 34 | 36 | name: 'ConfigDrawer', |
| 35 | - components: { BasicDrawer, BasicForm,Authority }, | |
| 37 | + components: { BasicDrawer, BasicForm, Authority }, | |
| 36 | 38 | emits: ['success', 'register'], |
| 37 | 39 | setup(_, { emit }) { |
| 38 | 40 | const draftDisable = ref(false); |
| ... | ... | @@ -62,6 +64,9 @@ |
| 62 | 64 | setFieldsValue(data.record); |
| 63 | 65 | } |
| 64 | 66 | }); |
| 67 | + const userStore = useUserStore(); | |
| 68 | + const avatar = ref<string | undefined>(''); | |
| 69 | + avatar.value = userStore.getUserInfo?.avatar || headerImg; | |
| 65 | 70 | // 发布通知 |
| 66 | 71 | const handleSend = async () => { |
| 67 | 72 | try { |
| ... | ... | @@ -75,6 +80,7 @@ |
| 75 | 80 | ...field, |
| 76 | 81 | pointId, |
| 77 | 82 | id: unref(isUpdate) ? unref(noticeId) : undefined, |
| 83 | + avatar: avatar.value, | |
| 78 | 84 | }; |
| 79 | 85 | await notifyAddLeaseApi(editNotice); |
| 80 | 86 | emit('success'); |
| ... | ... | @@ -106,6 +112,7 @@ |
| 106 | 112 | ...field, |
| 107 | 113 | pointId, |
| 108 | 114 | id: unref(noticeId), |
| 115 | + avatar: avatar.value, | |
| 109 | 116 | }; |
| 110 | 117 | await notifyAddDraftApi(editDraft); |
| 111 | 118 | } | ... | ... |
| ... | ... | @@ -14,7 +14,12 @@ |
| 14 | 14 | :rules="[{ required: true, message: ifAdd ? '请输入脚本名称' : '请输入参数' }]" |
| 15 | 15 | > |
| 16 | 16 | <a-input v-if="ifAdd" v-model:value="scriptForm.name" placeholder="请输入脚本名称" /> |
| 17 | - <a-input v-else v-model:value="scriptForm.params" placeholder="请输入参数" /> | |
| 17 | + <a-input | |
| 18 | + @change="handleInputChange" | |
| 19 | + v-else | |
| 20 | + v-model:value="scriptForm.params" | |
| 21 | + placeholder="请输入参数" | |
| 22 | + /> | |
| 18 | 23 | </a-form-item> |
| 19 | 24 | <a-form-item |
| 20 | 25 | label="上报数据类型" |
| ... | ... | @@ -25,6 +30,15 @@ |
| 25 | 30 | <a-radio-group v-model:value="scriptForm.dataType" :options="typeOptions" /> |
| 26 | 31 | </a-space> |
| 27 | 32 | </a-form-item> |
| 33 | + <a-form-item | |
| 34 | + label="保存原始数据" | |
| 35 | + name="saveOriginalData" | |
| 36 | + :rules="[{ required: true, message: '请选择保存原始数据' }]" | |
| 37 | + > | |
| 38 | + <a-space direction="vertical"> | |
| 39 | + <a-radio-group v-model:value="scriptForm.saveOriginalData" :options="originalOptions" /> | |
| 40 | + </a-space> | |
| 41 | + </a-form-item> | |
| 28 | 42 | <a-form-item label="脚本内容" :name="ifAdd ? 'convertJs' : 'script'"> |
| 29 | 43 | <Card title="脚本内容" :bodyStyle="{ padding: 0, height: '280px' }"> |
| 30 | 44 | <template #extra> |
| ... | ... | @@ -74,7 +88,8 @@ |
| 74 | 88 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 75 | 89 | import { findDictItemByCode } from '/@/api/system/dict'; |
| 76 | 90 | import { QuestionCircleOutlined } from '@ant-design/icons-vue'; |
| 77 | - import { defaultTitle, defaultScriptContent } from './config.data'; | |
| 91 | + import { defaultTitle } from './config.data'; | |
| 92 | + import { nextTick } from 'process'; | |
| 78 | 93 | |
| 79 | 94 | defineEmits(['register']); |
| 80 | 95 | const props = defineProps({ |
| ... | ... | @@ -88,11 +103,13 @@ |
| 88 | 103 | params: '', |
| 89 | 104 | output: '', |
| 90 | 105 | dataType: 'HEX', |
| 106 | + saveOriginalData: 'false', | |
| 91 | 107 | }); |
| 92 | 108 | const reportTypeOptions = reactive({ |
| 93 | 109 | typeOptions: [], |
| 110 | + originalOptions: [], | |
| 94 | 111 | }); |
| 95 | - const { typeOptions } = toRefs(reportTypeOptions); | |
| 112 | + const { typeOptions, originalOptions } = toRefs(reportTypeOptions); | |
| 96 | 113 | const { createMessage } = useMessage(); |
| 97 | 114 | const { clipboardRef, copiedRef } = useCopyToClipboard(); |
| 98 | 115 | const aceEditor = ref(); |
| ... | ... | @@ -101,10 +118,17 @@ |
| 101 | 118 | const res: any = await findDictItemByCode({ |
| 102 | 119 | dictCode: 'report_data_type', |
| 103 | 120 | }); |
| 121 | + const resOriginal: any = await findDictItemByCode({ | |
| 122 | + dictCode: 'original_data', | |
| 123 | + }); | |
| 104 | 124 | reportTypeOptions.typeOptions = res.map((m) => { |
| 105 | 125 | return { label: m.itemText, value: m.itemValue }; |
| 106 | 126 | }); |
| 127 | + reportTypeOptions.originalOptions = resOriginal.map((m) => { | |
| 128 | + return { label: m.itemText, value: m.itemValue }; | |
| 129 | + }); | |
| 107 | 130 | scriptForm.dataType = 'HEX'; |
| 131 | + scriptForm.saveOriginalData = 'false'; | |
| 108 | 132 | }); |
| 109 | 133 | // 初始化编辑器 |
| 110 | 134 | const initEditor = (jsScript?: string) => { |
| ... | ... | @@ -121,7 +145,7 @@ |
| 121 | 145 | enableBasicAutocompletion: true, |
| 122 | 146 | enableLiveAutocompletion: true, |
| 123 | 147 | }); |
| 124 | - aceEditor.value.setValue(jsScript ?? defaultScriptContent); | |
| 148 | + aceEditor.value.setValue(jsScript); | |
| 125 | 149 | beautify(aceEditor.value.session); |
| 126 | 150 | scriptForm.convertJs = aceEditor.value.getValue(); |
| 127 | 151 | }; |
| ... | ... | @@ -154,18 +178,35 @@ |
| 154 | 178 | } |
| 155 | 179 | } |
| 156 | 180 | if (!value) return; |
| 181 | + if (scriptForm.params) { | |
| 182 | + const trimParams = scriptForm.params.replace(/\s*/g, ''); | |
| 183 | + Reflect.set(value, 'params', trimParams); | |
| 184 | + } | |
| 157 | 185 | return { |
| 158 | 186 | ...value, |
| 159 | 187 | ...{ convertJs: props.ifAdd ? scriptForm.convertJs : null }, |
| 160 | 188 | ...{ script: !props.ifAdd ? scriptForm.script : null }, |
| 189 | + ...{ saveOriginalData: scriptForm.saveOriginalData === 'false' ? false : true }, | |
| 161 | 190 | }; |
| 162 | 191 | }; |
| 192 | + const handleInputChange = (e) => { | |
| 193 | + const trimParams = e.target.value.replace(/\s*/g, ''); | |
| 194 | + Reflect.set(scriptForm, 'params', trimParams); | |
| 195 | + }; | |
| 163 | 196 | const setFormData = (v) => { |
| 164 | - for (let i in scriptForm) { | |
| 165 | - Reflect.set(scriptForm, i, v[i]); | |
| 197 | + if (v) { | |
| 198 | + for (let i in scriptForm) { | |
| 199 | + Reflect.set(scriptForm, i, v[i]); | |
| 200 | + } | |
| 201 | + nextTick(() => { | |
| 202 | + setTimeout(() => { | |
| 203 | + scriptForm.saveOriginalData = v.saveOriginalData === false ? 'false' : 'true'; | |
| 204 | + scriptForm.dataType = v.dataType; | |
| 205 | + }, 500); | |
| 206 | + }); | |
| 207 | + aceEditor.value.setValue(v.convertJs); | |
| 208 | + handleFormat(); | |
| 166 | 209 | } |
| 167 | - aceEditor.value.setValue(v.convertJs); | |
| 168 | - handleFormat(); | |
| 169 | 210 | }; |
| 170 | 211 | const setScriptContentData = (v) => { |
| 171 | 212 | aceEditor.value.setValue(v); | ... | ... |
| ... | ... | @@ -60,8 +60,10 @@ |
| 60 | 60 | converScriptRef.value?.setFormData(data.record); |
| 61 | 61 | } |
| 62 | 62 | if (unref(isTitle) == 'test') { |
| 63 | - // converScriptRef.value?.setScriptContentData(''); | |
| 64 | - converScriptRef.value?.setFormData(data.record); | |
| 63 | + if (data.record) { | |
| 64 | + const res = await getScriptManageDetail(data.record); | |
| 65 | + converScriptRef.value?.setFormData(res); | |
| 66 | + } | |
| 65 | 67 | } |
| 66 | 68 | setModalProps({ title, showOkBtn: true, showCancelBtn: true, okText }); |
| 67 | 69 | if (!unref(isUpdate)) { |
| ... | ... | @@ -96,15 +98,15 @@ |
| 96 | 98 | setTimeout(() => { |
| 97 | 99 | closeModal(); |
| 98 | 100 | }, 10); |
| 101 | + emits('success', { | |
| 102 | + res, | |
| 103 | + text: isText.value, | |
| 104 | + }); | |
| 99 | 105 | } else { |
| 100 | 106 | if (res) { |
| 101 | 107 | converScriptRef.value?.setScriptOutputData(res?.output || res?.error); |
| 102 | 108 | } |
| 103 | 109 | } |
| 104 | - emits('success', { | |
| 105 | - res, | |
| 106 | - text: isText.value, | |
| 107 | - }); | |
| 108 | 110 | } finally { |
| 109 | 111 | setModalProps({ confirmLoading: false }); |
| 110 | 112 | } | ... | ... |
| 1 | 1 | import { BasicColumn, FormSchema } from '/@/components/Table'; |
| 2 | 2 | import moment from 'moment'; |
| 3 | +import { h } from 'vue'; | |
| 3 | 4 | |
| 4 | 5 | // 表格配置 |
| 5 | 6 | export const columns: BasicColumn[] = [ |
| ... | ... | @@ -57,7 +58,20 @@ export const searchFormSchema: FormSchema[] = [ |
| 57 | 58 | }, |
| 58 | 59 | ]; |
| 59 | 60 | |
| 60 | -export const defaultScriptContent = ` | |
| 61 | - out.msg= "hello"+params; | |
| 62 | - `; | |
| 63 | -export const defaultTitle = '格式:' + defaultScriptContent; | |
| 61 | +export const defaultTitle = h('div', { style: 'background:#404040' }, [ | |
| 62 | + h('h3', { style: 'color:white' }, '示例:'), | |
| 63 | + h('h3', { style: 'color:white' }, '输入参数:0103040150008D3BBB'), | |
| 64 | + h('h3', { style: 'color:white' }, [ | |
| 65 | + h( | |
| 66 | + 'h3', | |
| 67 | + { style: 'color:white' }, | |
| 68 | + "脚本内容:out.humidity = (parseInt('0x'+params.substr(6, 4))*0.1).toFixed(2);" | |
| 69 | + ), | |
| 70 | + h( | |
| 71 | + 'h3', | |
| 72 | + { style: 'color:white' }, | |
| 73 | + "out.temperature = (parseInt('0x'+params.substr(10, 4))*0.1).toFixed(2);" | |
| 74 | + ), | |
| 75 | + h('h3', { style: 'color:white' }, "输出参数:{'humidity':'33.60','temperature':'14.10'}"), | |
| 76 | + ]), | |
| 77 | +]); | ... | ... |
| ... | ... | @@ -115,6 +115,14 @@ |
| 115 | 115 | |
| 116 | 116 | const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions, resetSelectedRowKeys } = |
| 117 | 117 | useBatchDelete(deleteScriptManage, handleSuccess, setProps); |
| 118 | + selectionOptions.rowSelection.getCheckboxProps = (record: Recordable) => { | |
| 119 | + // Demo:status为1的选择框禁用 | |
| 120 | + if (record.status === 1) { | |
| 121 | + return { disabled: true }; | |
| 122 | + } else { | |
| 123 | + return { disabled: false }; | |
| 124 | + } | |
| 125 | + }; | |
| 118 | 126 | |
| 119 | 127 | nextTick(() => { |
| 120 | 128 | setProps(selectionOptions); |
| ... | ... | @@ -147,7 +155,7 @@ |
| 147 | 155 | if (record) { |
| 148 | 156 | openModal(true, { |
| 149 | 157 | isUpdate: false, |
| 150 | - record, | |
| 158 | + record: record.id, | |
| 151 | 159 | isTest: true, |
| 152 | 160 | isText: 'test', |
| 153 | 161 | isTitle: 'test', | ... | ... |
| ... | ... | @@ -12,10 +12,10 @@ |
| 12 | 12 | > |
| 13 | 13 | <div> |
| 14 | 14 | <a-row type="flex"> |
| 15 | - <a-col :span="2" style="margin-left: 5rem"> | |
| 15 | + <a-col :span="3" style=""> | |
| 16 | 16 | <a-input v-model:value="searchInfo.jobName" placeholder="请输入任务名称" /> |
| 17 | 17 | </a-col> |
| 18 | - <a-col :span="4" style="margin-left: 5rem"> | |
| 18 | + <a-col :span="4" style="margin-left: 2rem"> | |
| 19 | 19 | <a-select |
| 20 | 20 | allowClear |
| 21 | 21 | v-model:value="searchInfo.jobGroup" |
| ... | ... | @@ -23,8 +23,7 @@ |
| 23 | 23 | placeholder="请选择任务组名" |
| 24 | 24 | style="width: 200px" |
| 25 | 25 | :options="optionGroup" |
| 26 | - > | |
| 27 | - </a-select> | |
| 26 | + /> | |
| 28 | 27 | </a-col> |
| 29 | 28 | <a-col :span="4"> |
| 30 | 29 | <a-select |
| ... | ... | @@ -33,8 +32,7 @@ |
| 33 | 32 | placeholder="请选择执行状态" |
| 34 | 33 | style="width: 200px" |
| 35 | 34 | :options="optionStatus" |
| 36 | - > | |
| 37 | - </a-select> | |
| 35 | + /> | |
| 38 | 36 | </a-col> |
| 39 | 37 | <a-col :span="4"> |
| 40 | 38 | <a-range-picker | ... | ... |
| ... | ... | @@ -93,7 +93,6 @@ |
| 93 | 93 | import TenantAdminFormDrawer from './TenantAdminFormDrawer.vue'; |
| 94 | 94 | import { MessageTypeEnum, SendResetPasswordEmailMsg } from '/@/api/tenant/tenantInfo'; |
| 95 | 95 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 96 | - import { RoleEnum } from '/@/enums/roleEnum'; | |
| 97 | 96 | import { Authority } from '/@/components/Authority'; |
| 98 | 97 | |
| 99 | 98 | export default defineComponent({ |
| ... | ... | @@ -113,17 +112,15 @@ |
| 113 | 112 | |
| 114 | 113 | const tenantId = ref(''); |
| 115 | 114 | async function handleCreateTenantAdmin() { |
| 116 | - const { items: getPageData } = await getTenantAdminPage({ | |
| 115 | + const { items } = await getTenantAdminPage({ | |
| 117 | 116 | page: 1, |
| 118 | 117 | pageSize: 1000, |
| 119 | 118 | tenantId: tenantId.value, |
| 120 | - roleType: RoleEnum.TENANT_ADMIN, | |
| 121 | - tenantCode: '', | |
| 122 | 119 | }); |
| 123 | 120 | openTenantAdminFormDrawer(true, { |
| 124 | 121 | isUpdate: false, |
| 125 | 122 | tenantId: tenantId.value, |
| 126 | - judgeExistUserName: getPageData, | |
| 123 | + judgeExistUserName: items, | |
| 127 | 124 | }); |
| 128 | 125 | } |
| 129 | 126 | |
| ... | ... | @@ -192,7 +189,6 @@ |
| 192 | 189 | showIndexColumn: false, |
| 193 | 190 | searchInfo: { |
| 194 | 191 | tenantId, |
| 195 | - // roleType: RoleEnum.TENANT_ADMIN, | |
| 196 | 192 | }, |
| 197 | 193 | actionColumn: { |
| 198 | 194 | width: 100, | ... | ... |