Showing
15 changed files
with
164 additions
and
55 deletions
| @@ -25,11 +25,28 @@ | @@ -25,11 +25,28 @@ | ||
| 25 | </div> | 25 | </div> |
| 26 | </Upload> | 26 | </Upload> |
| 27 | </template> | 27 | </template> |
| 28 | + <template #videoPlatformIdSlot="{ model, field }"> | ||
| 29 | + <a-select | ||
| 30 | + placeholder="请选择流媒体配置" | ||
| 31 | + v-model:value="model[field]" | ||
| 32 | + :options="streamConfigOptions.map((item) => ({ value: item.value, label: item.label }))" | ||
| 33 | + > | ||
| 34 | + <template #dropdownRender="{ menuNode: menu }"> | ||
| 35 | + <v-nodes :vnodes="menu" /> | ||
| 36 | + <a-divider style="margin: 4px 0" /> | ||
| 37 | + <div @click="handleOpenStreamConfig" style="padding: 4px 8px; cursor: pointer"> | ||
| 38 | + <plus-outlined /> | ||
| 39 | + 新增流媒体配置 | ||
| 40 | + </div> | ||
| 41 | + </template> | ||
| 42 | + </a-select> | ||
| 43 | + </template> | ||
| 28 | </BasicForm> | 44 | </BasicForm> |
| 29 | </BasicDrawer> | 45 | </BasicDrawer> |
| 46 | + <SteramingDrawer @register="registerSteramingDrawer" @success="handleSuccess" /> | ||
| 30 | </template> | 47 | </template> |
| 31 | <script lang="ts"> | 48 | <script lang="ts"> |
| 32 | - import { defineComponent, ref, computed, unref, nextTick } from 'vue'; | 49 | + import { defineComponent, ref, computed, unref, nextTick, onMounted } from 'vue'; |
| 33 | import { BasicForm, useForm } from '/@/components/Form'; | 50 | import { BasicForm, useForm } from '/@/components/Form'; |
| 34 | import { formSchema } from './config.data'; | 51 | import { formSchema } from './config.data'; |
| 35 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; | 52 | import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; |
| @@ -39,14 +56,27 @@ | @@ -39,14 +56,27 @@ | ||
| 39 | import { PlusOutlined, LoadingOutlined } from '@ant-design/icons-vue'; | 56 | import { PlusOutlined, LoadingOutlined } from '@ant-design/icons-vue'; |
| 40 | import { upload } from '/@/api/oss/ossFileUploader'; | 57 | import { upload } from '/@/api/oss/ossFileUploader'; |
| 41 | import { FileItem } from '/@/components/Upload/src/typing'; | 58 | import { FileItem } from '/@/components/Upload/src/typing'; |
| 59 | + import { getStreamingMediaList } from '/@/api/camera/cameraManager'; | ||
| 60 | + import SteramingDrawer from '../streaming/SteramingDrawer.vue'; | ||
| 61 | + import { useDrawer } from '/@/components/Drawer'; | ||
| 42 | 62 | ||
| 43 | export default defineComponent({ | 63 | export default defineComponent({ |
| 44 | name: 'ContactDrawer', | 64 | name: 'ContactDrawer', |
| 45 | - components: { BasicDrawer, BasicForm, Upload, PlusOutlined, LoadingOutlined }, | 65 | + components: { |
| 66 | + BasicDrawer, | ||
| 67 | + BasicForm, | ||
| 68 | + Upload, | ||
| 69 | + PlusOutlined, | ||
| 70 | + LoadingOutlined, | ||
| 71 | + SteramingDrawer, | ||
| 72 | + VNodes: (_, { attrs }) => { | ||
| 73 | + return attrs.vnodes; | ||
| 74 | + }, | ||
| 75 | + }, | ||
| 46 | emits: ['success', 'register'], | 76 | emits: ['success', 'register'], |
| 47 | setup(_, { emit }) { | 77 | setup(_, { emit }) { |
| 48 | const loading = ref(false); | 78 | const loading = ref(false); |
| 49 | - | 79 | + const streamConfigOptions: any = ref([]); |
| 50 | const isUpdate = ref(true); | 80 | const isUpdate = ref(true); |
| 51 | const editId = ref(''); | 81 | const editId = ref(''); |
| 52 | const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({ | 82 | const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({ |
| @@ -54,7 +84,32 @@ | @@ -54,7 +84,32 @@ | ||
| 54 | schemas: formSchema, | 84 | schemas: formSchema, |
| 55 | showActionButtonGroup: false, | 85 | showActionButtonGroup: false, |
| 56 | }); | 86 | }); |
| 87 | + onMounted(async () => { | ||
| 88 | + const res = await getStreamingMediaList({}); | ||
| 89 | + streamConfigOptions.value = res.map((m) => { | ||
| 90 | + return { | ||
| 91 | + label: m.host, | ||
| 92 | + value: m.id, | ||
| 93 | + }; | ||
| 94 | + }); | ||
| 95 | + }); | ||
| 96 | + const [registerSteramingDrawer, { openDrawer }] = useDrawer(); | ||
| 57 | 97 | ||
| 98 | + const handleOpenStreamConfig = () => { | ||
| 99 | + openDrawer(true, { | ||
| 100 | + createFlag: true, | ||
| 101 | + }); | ||
| 102 | + }; | ||
| 103 | + async function handleSuccess() { | ||
| 104 | + const res = await getStreamingMediaList({}); | ||
| 105 | + if (res) { | ||
| 106 | + streamConfigOptions.value = res.map((m) => { | ||
| 107 | + return { label: m.host, value: m.id }; | ||
| 108 | + }); | ||
| 109 | + } else { | ||
| 110 | + streamConfigOptions.value = []; | ||
| 111 | + } | ||
| 112 | + } | ||
| 58 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { | 113 | const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => { |
| 59 | await resetFields(); | 114 | await resetFields(); |
| 60 | setDrawerProps({ confirmLoading: false }); | 115 | setDrawerProps({ confirmLoading: false }); |
| @@ -136,6 +191,10 @@ | @@ -136,6 +191,10 @@ | ||
| 136 | beforeUpload, | 191 | beforeUpload, |
| 137 | tenantLogo, | 192 | tenantLogo, |
| 138 | loading, | 193 | loading, |
| 194 | + streamConfigOptions, | ||
| 195 | + registerSteramingDrawer, | ||
| 196 | + handleOpenStreamConfig, | ||
| 197 | + handleSuccess, | ||
| 139 | }; | 198 | }; |
| 140 | }, | 199 | }, |
| 141 | }); | 200 | }); |
| @@ -4,7 +4,6 @@ import { copyTransFun } from '/@/utils/fnUtils'; | @@ -4,7 +4,6 @@ import { copyTransFun } from '/@/utils/fnUtils'; | ||
| 4 | import type { FormSchema as QFormSchema } from '/@/components/Form/index'; | 4 | import type { FormSchema as QFormSchema } from '/@/components/Form/index'; |
| 5 | 5 | ||
| 6 | import { CameraVideoUrl, CameraMaxLength, MediaTypeValidate } from '/@/utils/rules'; | 6 | import { CameraVideoUrl, CameraMaxLength, MediaTypeValidate } from '/@/utils/rules'; |
| 7 | -import { getStreamingMediaList } from '/@/api/camera/cameraManager'; | ||
| 8 | import { h } from 'vue'; | 7 | import { h } from 'vue'; |
| 9 | import SnHelpMessage from './SnHelpMessage.vue'; | 8 | import SnHelpMessage from './SnHelpMessage.vue'; |
| 10 | export enum AccessMode { | 9 | export enum AccessMode { |
| @@ -154,6 +153,7 @@ export const formSchema: QFormSchema[] = [ | @@ -154,6 +153,7 @@ export const formSchema: QFormSchema[] = [ | ||
| 154 | return values.accessMode === AccessMode.ManuallyEnter; | 153 | return values.accessMode === AccessMode.ManuallyEnter; |
| 155 | }, | 154 | }, |
| 156 | componentProps: { | 155 | componentProps: { |
| 156 | + maxLength: 36, | ||
| 157 | placeholder: '请输入视频厂家', | 157 | placeholder: '请输入视频厂家', |
| 158 | }, | 158 | }, |
| 159 | }, | 159 | }, |
| @@ -167,6 +167,7 @@ export const formSchema: QFormSchema[] = [ | @@ -167,6 +167,7 @@ export const formSchema: QFormSchema[] = [ | ||
| 167 | return values.accessMode === AccessMode.ManuallyEnter; | 167 | return values.accessMode === AccessMode.ManuallyEnter; |
| 168 | }, | 168 | }, |
| 169 | componentProps: { | 169 | componentProps: { |
| 170 | + maxLength: 36, | ||
| 170 | placeholder: '请输入摄像头编号', | 171 | placeholder: '请输入摄像头编号', |
| 171 | }, | 172 | }, |
| 172 | }, | 173 | }, |
| @@ -188,15 +189,13 @@ export const formSchema: QFormSchema[] = [ | @@ -188,15 +189,13 @@ export const formSchema: QFormSchema[] = [ | ||
| 188 | { | 189 | { |
| 189 | field: 'videoPlatformId', | 190 | field: 'videoPlatformId', |
| 190 | label: '流媒体配置', | 191 | label: '流媒体配置', |
| 191 | - component: 'ApiSelect', | 192 | + component: 'Select', |
| 192 | ifShow({ values }) { | 193 | ifShow({ values }) { |
| 193 | return values.accessMode === AccessMode.Streaming; | 194 | return values.accessMode === AccessMode.Streaming; |
| 194 | }, | 195 | }, |
| 196 | + slot: 'videoPlatformIdSlot', | ||
| 195 | componentProps: { | 197 | componentProps: { |
| 196 | placeholder: '请选择流媒体配置', | 198 | placeholder: '请选择流媒体配置', |
| 197 | - api: getStreamingMediaList, | ||
| 198 | - labelField: 'host', | ||
| 199 | - valueField: 'id', | ||
| 200 | }, | 199 | }, |
| 201 | }, | 200 | }, |
| 202 | { | 201 | { |
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | import { useMessage } from '/@/hooks/web/useMessage'; | 9 | import { useMessage } from '/@/hooks/web/useMessage'; |
| 10 | import { PlayProtocol } from '../manage/config.data'; | 10 | import { PlayProtocol } from '../manage/config.data'; |
| 11 | 11 | ||
| 12 | - const emit = defineEmits(['success','register']); | 12 | + const emit = defineEmits(['success', 'register']); |
| 13 | 13 | ||
| 14 | const createFlag = ref(false); | 14 | const createFlag = ref(false); |
| 15 | 15 | ||
| @@ -23,7 +23,7 @@ | @@ -23,7 +23,7 @@ | ||
| 23 | showActionButtonGroup: false, | 23 | showActionButtonGroup: false, |
| 24 | }); | 24 | }); |
| 25 | 25 | ||
| 26 | - const [registerDrawer, { setDrawerProps }] = useDrawerInner((data: DrawerParams) => { | 26 | + const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner((data: DrawerParams) => { |
| 27 | createFlag.value = data.createFlag; | 27 | createFlag.value = data.createFlag; |
| 28 | if (!unref(createFlag)) { | 28 | if (!unref(createFlag)) { |
| 29 | id = data.record!.id; | 29 | id = data.record!.id; |
| @@ -48,6 +48,7 @@ | @@ -48,6 +48,7 @@ | ||
| 48 | const { createMessage } = useMessage(); | 48 | const { createMessage } = useMessage(); |
| 49 | createMessage.success(message); | 49 | createMessage.success(message); |
| 50 | emit('success'); | 50 | emit('success'); |
| 51 | + closeDrawer(); | ||
| 51 | } catch (e) { | 52 | } catch (e) { |
| 52 | } finally { | 53 | } finally { |
| 53 | setDrawerProps({ | 54 | setDrawerProps({ |
| @@ -101,6 +101,7 @@ export const formDetailSchema: FormSchema[] = [ | @@ -101,6 +101,7 @@ export const formDetailSchema: FormSchema[] = [ | ||
| 101 | helpMessage: ['平台IP + 端口'], | 101 | helpMessage: ['平台IP + 端口'], |
| 102 | rules: [{ required: true, message: '平台地址为必填项' }], | 102 | rules: [{ required: true, message: '平台地址为必填项' }], |
| 103 | componentProps: { | 103 | componentProps: { |
| 104 | + maxLength: 36, | ||
| 104 | placeholder: '请输入平台地址', | 105 | placeholder: '请输入平台地址', |
| 105 | }, | 106 | }, |
| 106 | }, | 107 | }, |
| @@ -110,6 +111,7 @@ export const formDetailSchema: FormSchema[] = [ | @@ -110,6 +111,7 @@ export const formDetailSchema: FormSchema[] = [ | ||
| 110 | component: 'Input', | 111 | component: 'Input', |
| 111 | rules: [{ required: true, message: '用户Key为必填项' }], | 112 | rules: [{ required: true, message: '用户Key为必填项' }], |
| 112 | componentProps: { | 113 | componentProps: { |
| 114 | + maxLength: 36, | ||
| 113 | placeholder: '请输入用户Key', | 115 | placeholder: '请输入用户Key', |
| 114 | }, | 116 | }, |
| 115 | }, | 117 | }, |
| @@ -122,6 +124,7 @@ export const formDetailSchema: FormSchema[] = [ | @@ -122,6 +124,7 @@ export const formDetailSchema: FormSchema[] = [ | ||
| 122 | { required: true, min: 20, message: '用户密钥不能少于20位字符' }, | 124 | { required: true, min: 20, message: '用户密钥不能少于20位字符' }, |
| 123 | ], | 125 | ], |
| 124 | componentProps: { | 126 | componentProps: { |
| 127 | + maxLength: 36, | ||
| 125 | placeholder: '请输入用户密钥', | 128 | placeholder: '请输入用户密钥', |
| 126 | }, | 129 | }, |
| 127 | }, | 130 | }, |
| @@ -25,7 +25,7 @@ export const step1Schemas: FormSchema[] = [ | @@ -25,7 +25,7 @@ export const step1Schemas: FormSchema[] = [ | ||
| 25 | colProps: { span: 14 }, | 25 | colProps: { span: 14 }, |
| 26 | componentProps: { | 26 | componentProps: { |
| 27 | placeholder: '设备名称', | 27 | placeholder: '设备名称', |
| 28 | - maxLength: 255, | 28 | + maxLength: 36, |
| 29 | }, | 29 | }, |
| 30 | }, | 30 | }, |
| 31 | { | 31 | { |
| @@ -135,12 +135,10 @@ export const step1Schemas: FormSchema[] = [ | @@ -135,12 +135,10 @@ export const step1Schemas: FormSchema[] = [ | ||
| 135 | required: true, | 135 | required: true, |
| 136 | component: 'Input', | 136 | component: 'Input', |
| 137 | colProps: { span: 14 }, | 137 | colProps: { span: 14 }, |
| 138 | - componentProps() { | ||
| 139 | - return { | ||
| 140 | - disabled: false, | ||
| 141 | - ength: 255, | ||
| 142 | - placeholder: '请输入产品名称', | ||
| 143 | - }; | 138 | + componentProps: { |
| 139 | + disabled: false, | ||
| 140 | + maxLength: 63, | ||
| 141 | + placeholder: '请输入产品名称', | ||
| 144 | }, | 142 | }, |
| 145 | }, | 143 | }, |
| 146 | { | 144 | { |
| @@ -87,7 +87,7 @@ export const formSchema: FormSchema[] = [ | @@ -87,7 +87,7 @@ export const formSchema: FormSchema[] = [ | ||
| 87 | component: 'Input', | 87 | component: 'Input', |
| 88 | componentProps: { | 88 | componentProps: { |
| 89 | placeholder: '请输入标题', | 89 | placeholder: '请输入标题', |
| 90 | - maxLength: 200, | 90 | + maxLength: 36, |
| 91 | }, | 91 | }, |
| 92 | }, | 92 | }, |
| 93 | { | 93 | { |
| @@ -96,6 +96,9 @@ export const formSchema: FormSchema[] = [ | @@ -96,6 +96,9 @@ export const formSchema: FormSchema[] = [ | ||
| 96 | colProps: { span: 24 }, | 96 | colProps: { span: 24 }, |
| 97 | label: '通知内容', | 97 | label: '通知内容', |
| 98 | required: true, | 98 | required: true, |
| 99 | + componentProps: { | ||
| 100 | + maxLength: 255, | ||
| 101 | + }, | ||
| 99 | render: ({ model, field }) => { | 102 | render: ({ model, field }) => { |
| 100 | return h(Tinymce, { | 103 | return h(Tinymce, { |
| 101 | value: model[field], | 104 | value: model[field], |
| @@ -59,6 +59,7 @@ export const formSchema: FormSchema[] = [ | @@ -59,6 +59,7 @@ export const formSchema: FormSchema[] = [ | ||
| 59 | const { setFieldsValue } = formActionType; | 59 | const { setFieldsValue } = formActionType; |
| 60 | return { | 60 | return { |
| 61 | placeholder: '请输入标题', | 61 | placeholder: '请输入标题', |
| 62 | + maxLength: 36, | ||
| 62 | onChange: (value: Event) => { | 63 | onChange: (value: Event) => { |
| 63 | setFieldsValue({ | 64 | setFieldsValue({ |
| 64 | [PackageField.VERSION_TAG]: getVersionTag( | 65 | [PackageField.VERSION_TAG]: getVersionTag( |
| @@ -79,6 +80,7 @@ export const formSchema: FormSchema[] = [ | @@ -79,6 +80,7 @@ export const formSchema: FormSchema[] = [ | ||
| 79 | const { setFieldsValue } = formActionType; | 80 | const { setFieldsValue } = formActionType; |
| 80 | return { | 81 | return { |
| 81 | placeholder: '请输入版本', | 82 | placeholder: '请输入版本', |
| 83 | + maxLength: 36, | ||
| 82 | onChange: (value: Event) => { | 84 | onChange: (value: Event) => { |
| 83 | setFieldsValue({ | 85 | setFieldsValue({ |
| 84 | [PackageField.VERSION_TAG]: getVersionTag( | 86 | [PackageField.VERSION_TAG]: getVersionTag( |
| @@ -97,6 +99,7 @@ export const formSchema: FormSchema[] = [ | @@ -97,6 +99,7 @@ export const formSchema: FormSchema[] = [ | ||
| 97 | helpMessage: ['自定义标签应与您设备报告的软件包版本相匹配'], | 99 | helpMessage: ['自定义标签应与您设备报告的软件包版本相匹配'], |
| 98 | componentProps: () => { | 100 | componentProps: () => { |
| 99 | return { | 101 | return { |
| 102 | + maxLength: 36, | ||
| 100 | placeholder: '请输入版本标签', | 103 | placeholder: '请输入版本标签', |
| 101 | }; | 104 | }; |
| 102 | }, | 105 | }, |
| @@ -191,6 +194,7 @@ export const formSchema: FormSchema[] = [ | @@ -191,6 +194,7 @@ export const formSchema: FormSchema[] = [ | ||
| 191 | }, | 194 | }, |
| 192 | rules: [{ required: true, message: '外部URL为必填项' }], | 195 | rules: [{ required: true, message: '外部URL为必填项' }], |
| 193 | componentProps: { | 196 | componentProps: { |
| 197 | + maxLength: 36, | ||
| 194 | placeholder: '请输入外部URL', | 198 | placeholder: '请输入外部URL', |
| 195 | }, | 199 | }, |
| 196 | }, | 200 | }, |
| @@ -238,6 +242,7 @@ export const formSchema: FormSchema[] = [ | @@ -238,6 +242,7 @@ export const formSchema: FormSchema[] = [ | ||
| 238 | }, | 242 | }, |
| 239 | helpMessage: ['如果校验和为空,会自动生成'], | 243 | helpMessage: ['如果校验和为空,会自动生成'], |
| 240 | componentProps: { | 244 | componentProps: { |
| 245 | + maxLength: 36, | ||
| 241 | placeholder: '请输入校验和', | 246 | placeholder: '请输入校验和', |
| 242 | }, | 247 | }, |
| 243 | }, | 248 | }, |
| @@ -246,6 +251,7 @@ export const formSchema: FormSchema[] = [ | @@ -246,6 +251,7 @@ export const formSchema: FormSchema[] = [ | ||
| 246 | label: '描述', | 251 | label: '描述', |
| 247 | component: 'InputTextArea', | 252 | component: 'InputTextArea', |
| 248 | componentProps: { | 253 | componentProps: { |
| 254 | + maxLength: 255, | ||
| 249 | placeholder: '请输入描述', | 255 | placeholder: '请输入描述', |
| 250 | }, | 256 | }, |
| 251 | }, | 257 | }, |
| @@ -30,6 +30,7 @@ export enum SchemaFiled { | @@ -30,6 +30,7 @@ export enum SchemaFiled { | ||
| 30 | ORDER_BY = 'orderBy', | 30 | ORDER_BY = 'orderBy', |
| 31 | } | 31 | } |
| 32 | export const organizationId = ref(''); | 32 | export const organizationId = ref(''); |
| 33 | + | ||
| 33 | // 表格配置 | 34 | // 表格配置 |
| 34 | export const columns: BasicColumn[] = [ | 35 | export const columns: BasicColumn[] = [ |
| 35 | { | 36 | { |
| @@ -147,7 +148,7 @@ export const formSchema: QFormSchema[] = [ | @@ -147,7 +148,7 @@ export const formSchema: QFormSchema[] = [ | ||
| 147 | required: true, | 148 | required: true, |
| 148 | component: 'Input', | 149 | component: 'Input', |
| 149 | componentProps: { | 150 | componentProps: { |
| 150 | - maxLength: 255, | 151 | + maxLength: 64, |
| 151 | placeholder: '请输入报表名称', | 152 | placeholder: '请输入报表名称', |
| 152 | }, | 153 | }, |
| 153 | }, | 154 | }, |
| @@ -185,6 +186,11 @@ export const formSchema: QFormSchema[] = [ | @@ -185,6 +186,11 @@ export const formSchema: QFormSchema[] = [ | ||
| 185 | { | 186 | { |
| 186 | field: 'executeWay', | 187 | field: 'executeWay', |
| 187 | component: 'RadioGroup', | 188 | component: 'RadioGroup', |
| 189 | + helpMessage: [ | ||
| 190 | + `立即执行,在创建完报表配置后,启用配置即执行。 | ||
| 191 | + 定时执行,用户定义执行时间,启用后, | ||
| 192 | + 在满足执行时间条件后,自动执行。`, | ||
| 193 | + ], | ||
| 188 | label: '执行方式', | 194 | label: '执行方式', |
| 189 | colProps: { | 195 | colProps: { |
| 190 | span: 24, | 196 | span: 24, |
| @@ -225,6 +231,8 @@ export const formSchema: QFormSchema[] = [ | @@ -225,6 +231,8 @@ export const formSchema: QFormSchema[] = [ | ||
| 225 | }); | 231 | }); |
| 226 | } else { | 232 | } else { |
| 227 | setFieldsValue({ queryMode: QueryWay.LATEST }); | 233 | setFieldsValue({ queryMode: QueryWay.LATEST }); |
| 234 | + setFieldsValue({ startTs: 5000 }); | ||
| 235 | + setFieldsValue({ interval: 1000 }); | ||
| 228 | dataCompareOpions = [{ label: '固定周期', value: QueryWay.LATEST }]; | 236 | dataCompareOpions = [{ label: '固定周期', value: QueryWay.LATEST }]; |
| 229 | updateSchema({ | 237 | updateSchema({ |
| 230 | defaultValue: QueryWay.LATEST, | 238 | defaultValue: QueryWay.LATEST, |
| @@ -313,7 +321,6 @@ export const formSchema: QFormSchema[] = [ | @@ -313,7 +321,6 @@ export const formSchema: QFormSchema[] = [ | ||
| 313 | { | 321 | { |
| 314 | field: 'devices', | 322 | field: 'devices', |
| 315 | label: '设备', | 323 | label: '设备', |
| 316 | - helpMessage: ['报表配置只对拥有"数值型"属性的设备才能配置'], | ||
| 317 | component: 'Select', | 324 | component: 'Select', |
| 318 | slot: 'devices', | 325 | slot: 'devices', |
| 319 | colProps: { span: 24 }, | 326 | colProps: { span: 24 }, |
| @@ -437,7 +444,7 @@ export const formSchema: QFormSchema[] = [ | @@ -437,7 +444,7 @@ export const formSchema: QFormSchema[] = [ | ||
| 437 | }, | 444 | }, |
| 438 | { | 445 | { |
| 439 | field: SchemaFiled.START_TS, | 446 | field: SchemaFiled.START_TS, |
| 440 | - label: '时间周期', | 447 | + label: '最近时间', |
| 441 | component: 'Select', | 448 | component: 'Select', |
| 442 | required: true, | 449 | required: true, |
| 443 | ifShow({ values }) { | 450 | ifShow({ values }) { |
| @@ -447,7 +454,7 @@ export const formSchema: QFormSchema[] = [ | @@ -447,7 +454,7 @@ export const formSchema: QFormSchema[] = [ | ||
| 447 | const { setFieldsValue } = formActionType; | 454 | const { setFieldsValue } = formActionType; |
| 448 | return { | 455 | return { |
| 449 | defaultValue: 1000, | 456 | defaultValue: 1000, |
| 450 | - placeholder: '请选择时间周期', | 457 | + placeholder: '请选择近期时间', |
| 451 | options: intervalOption, | 458 | options: intervalOption, |
| 452 | onChange() { | 459 | onChange() { |
| 453 | setFieldsValue({ [SchemaFiled.INTERVAL]: null }); | 460 | setFieldsValue({ [SchemaFiled.INTERVAL]: null }); |
| @@ -43,7 +43,7 @@ | @@ -43,7 +43,7 @@ | ||
| 43 | <div | 43 | <div |
| 44 | v-show="!item.notFoundData" | 44 | v-show="!item.notFoundData" |
| 45 | :id="`chart-${item.device}`" | 45 | :id="`chart-${item.device}`" |
| 46 | - :style="{ height, width }" | 46 | + style="width: 100%; height: 400px" |
| 47 | ></div> | 47 | ></div> |
| 48 | </div> | 48 | </div> |
| 49 | </div> | 49 | </div> |
| @@ -279,19 +279,28 @@ export const trigger_condition_schema: FormSchema[] = [ | @@ -279,19 +279,28 @@ export const trigger_condition_schema: FormSchema[] = [ | ||
| 279 | component: 'ApiSelect', | 279 | component: 'ApiSelect', |
| 280 | componentProps: ({ formModel }) => { | 280 | componentProps: ({ formModel }) => { |
| 281 | const deviceProfileId = formModel['deviceProfileId']; | 281 | const deviceProfileId = formModel['deviceProfileId']; |
| 282 | - if (unref(organizationId)) { | ||
| 283 | - return { | ||
| 284 | - placeholder: '请选择设备', | ||
| 285 | - mode: 'multiple', | ||
| 286 | - api: byOrganizationIdGetMasterDevice, | ||
| 287 | - params: { | ||
| 288 | - organizationId: unref(organizationId), | ||
| 289 | - deviceProfileId, | ||
| 290 | - }, | ||
| 291 | - labelField: 'name', | ||
| 292 | - valueField: 'tbDeviceId', | ||
| 293 | - }; | ||
| 294 | - } | 282 | + return { |
| 283 | + mode: 'multiple', | ||
| 284 | + api: async () => { | ||
| 285 | + if (unref(organizationId)) { | ||
| 286 | + try { | ||
| 287 | + const data = await byOrganizationIdGetMasterDevice({ | ||
| 288 | + organizationId: unref(organizationId), | ||
| 289 | + deviceProfileId, | ||
| 290 | + }); | ||
| 291 | + if (data) | ||
| 292 | + return data.map((item) => ({ | ||
| 293 | + ...item, | ||
| 294 | + label: item.alias || item.name, | ||
| 295 | + value: item.tbDeviceId, | ||
| 296 | + })); | ||
| 297 | + } catch (error) {} | ||
| 298 | + } | ||
| 299 | + return []; | ||
| 300 | + }, | ||
| 301 | + placeholder: '请选择设备', | ||
| 302 | + getPopupContainer: () => document.body, | ||
| 303 | + }; | ||
| 295 | }, | 304 | }, |
| 296 | ifShow: ({ values }) => isPart(values.device), | 305 | ifShow: ({ values }) => isPart(values.device), |
| 297 | colProps: { span: 6 }, | 306 | colProps: { span: 6 }, |
| @@ -473,19 +482,28 @@ export const actionSchema: FormSchema[] = [ | @@ -473,19 +482,28 @@ export const actionSchema: FormSchema[] = [ | ||
| 473 | component: 'ApiSelect', | 482 | component: 'ApiSelect', |
| 474 | componentProps: ({ formModel }) => { | 483 | componentProps: ({ formModel }) => { |
| 475 | const deviceProfileId = formModel['deviceProfileId']; | 484 | const deviceProfileId = formModel['deviceProfileId']; |
| 476 | - if (unref(organizationId)) { | ||
| 477 | - return { | ||
| 478 | - placeholder: '请选择设备', | ||
| 479 | - mode: 'multiple', | ||
| 480 | - api: byOrganizationIdGetMasterDevice, | ||
| 481 | - params: { | ||
| 482 | - organizationId: unref(organizationId), | ||
| 483 | - deviceProfileId, | ||
| 484 | - }, | ||
| 485 | - labelField: 'name', | ||
| 486 | - valueField: 'tbDeviceId', | ||
| 487 | - }; | ||
| 488 | - } | 485 | + return { |
| 486 | + mode: 'multiple', | ||
| 487 | + api: async () => { | ||
| 488 | + if (unref(organizationId)) { | ||
| 489 | + try { | ||
| 490 | + const data = await byOrganizationIdGetMasterDevice({ | ||
| 491 | + organizationId: unref(organizationId), | ||
| 492 | + deviceProfileId, | ||
| 493 | + }); | ||
| 494 | + if (data) | ||
| 495 | + return data.map((item) => ({ | ||
| 496 | + ...item, | ||
| 497 | + label: item.alias || item.name, | ||
| 498 | + value: item.tbDeviceId, | ||
| 499 | + })); | ||
| 500 | + } catch (error) {} | ||
| 501 | + } | ||
| 502 | + return []; | ||
| 503 | + }, | ||
| 504 | + placeholder: '请选择设备', | ||
| 505 | + getPopupContainer: () => document.body, | ||
| 506 | + }; | ||
| 489 | }, | 507 | }, |
| 490 | ifShow: ({ values }) => isPart(values.device) && isDeviceOut(values.outTarget), | 508 | ifShow: ({ values }) => isPart(values.device) && isDeviceOut(values.outTarget), |
| 491 | colProps: { span: 6 }, | 509 | colProps: { span: 6 }, |
| @@ -59,7 +59,7 @@ export const formSchema: FormSchema[] = [ | @@ -59,7 +59,7 @@ export const formSchema: FormSchema[] = [ | ||
| 59 | required: true, | 59 | required: true, |
| 60 | component: 'Input', | 60 | component: 'Input', |
| 61 | componentProps: { | 61 | componentProps: { |
| 62 | - maxLength: 36, | 62 | + maxLength: 32, |
| 63 | placeholder: '请输入名称', | 63 | placeholder: '请输入名称', |
| 64 | }, | 64 | }, |
| 65 | }, | 65 | }, |
| @@ -13,7 +13,12 @@ | @@ -13,7 +13,12 @@ | ||
| 13 | :name="ifAdd ? 'name' : 'params'" | 13 | :name="ifAdd ? 'name' : 'params'" |
| 14 | :rules="[{ required: true, message: ifAdd ? '请输入脚本名称' : '请输入参数' }]" | 14 | :rules="[{ required: true, message: ifAdd ? '请输入脚本名称' : '请输入参数' }]" |
| 15 | > | 15 | > |
| 16 | - <a-input v-if="ifAdd" v-model:value="scriptForm.name" placeholder="请输入脚本名称" /> | 16 | + <a-input |
| 17 | + v-if="ifAdd" | ||
| 18 | + :maxlength="36" | ||
| 19 | + v-model:value="scriptForm.name" | ||
| 20 | + placeholder="请输入脚本名称" | ||
| 21 | + /> | ||
| 17 | <a-input | 22 | <a-input |
| 18 | @change="handleInputChange" | 23 | @change="handleInputChange" |
| 19 | v-else | 24 | v-else |
| @@ -65,12 +70,14 @@ | @@ -65,12 +70,14 @@ | ||
| 65 | v-if="ifAdd" | 70 | v-if="ifAdd" |
| 66 | v-model:value="scriptForm.description" | 71 | v-model:value="scriptForm.description" |
| 67 | placeholder="请输入备注" | 72 | placeholder="请输入备注" |
| 73 | + :maxlength="255" | ||
| 68 | /> | 74 | /> |
| 69 | <a-textarea | 75 | <a-textarea |
| 70 | :rows="3" | 76 | :rows="3" |
| 71 | v-else | 77 | v-else |
| 72 | v-model:value="scriptForm.output" | 78 | v-model:value="scriptForm.output" |
| 73 | placeholder="输出参数为服务端返回的内容" | 79 | placeholder="输出参数为服务端返回的内容" |
| 80 | + :maxlength="255" | ||
| 74 | /> | 81 | /> |
| 75 | </a-form-item> | 82 | </a-form-item> |
| 76 | </a-form> | 83 | </a-form> |
| @@ -109,7 +116,7 @@ | @@ -109,7 +116,7 @@ | ||
| 109 | typeOptions: [], | 116 | typeOptions: [], |
| 110 | originalOptions: [], | 117 | originalOptions: [], |
| 111 | }); | 118 | }); |
| 112 | - const { typeOptions, originalOptions } = toRefs(reportTypeOptions); | 119 | + const { originalOptions, typeOptions } = toRefs(reportTypeOptions); |
| 113 | const { createMessage } = useMessage(); | 120 | const { createMessage } = useMessage(); |
| 114 | const { clipboardRef, copiedRef } = useCopyToClipboard(); | 121 | const { clipboardRef, copiedRef } = useCopyToClipboard(); |
| 115 | const aceEditor = ref(); | 122 | const aceEditor = ref(); |
| @@ -149,7 +156,7 @@ | @@ -149,7 +156,7 @@ | ||
| 149 | }); | 156 | }); |
| 150 | aceEditor.value.setValue(); | 157 | aceEditor.value.setValue(); |
| 151 | beautify(aceEditor.value.session); | 158 | beautify(aceEditor.value.session); |
| 152 | - scriptForm.convertJs = aceEditor.value.getValue(); | 159 | + // scriptForm.convertJs = aceEditor.value.getValue(); |
| 153 | }; | 160 | }; |
| 154 | const handleCopy = () => { | 161 | const handleCopy = () => { |
| 155 | const valueRef = aceEditor.value.getValue(); | 162 | const valueRef = aceEditor.value.getValue(); |
| @@ -184,6 +191,10 @@ | @@ -184,6 +191,10 @@ | ||
| 184 | const trimParams = scriptForm.params.replace(/\s*/g, ''); | 191 | const trimParams = scriptForm.params.replace(/\s*/g, ''); |
| 185 | Reflect.set(value, 'params', trimParams); | 192 | Reflect.set(value, 'params', trimParams); |
| 186 | } | 193 | } |
| 194 | + if (scriptForm.convertJs.length > 1000) { | ||
| 195 | + createMessage.error('脚本内容长度不能大于1000'); | ||
| 196 | + throw '脚本内容长度不能大于1000'; | ||
| 197 | + } | ||
| 187 | return { | 198 | return { |
| 188 | ...value, | 199 | ...value, |
| 189 | ...{ convertJs: props.ifAdd ? scriptForm.convertJs : null }, | 200 | ...{ convertJs: props.ifAdd ? scriptForm.convertJs : null }, |
| @@ -127,7 +127,7 @@ export const accountFormSchema: FormSchema[] = [ | @@ -127,7 +127,7 @@ export const accountFormSchema: FormSchema[] = [ | ||
| 127 | colProps: { span: 12 }, | 127 | colProps: { span: 12 }, |
| 128 | required: true, | 128 | required: true, |
| 129 | componentProps: { | 129 | componentProps: { |
| 130 | - maxLength: 255, | 130 | + maxLength: 10, |
| 131 | }, | 131 | }, |
| 132 | }, | 132 | }, |
| 133 | { | 133 | { |
| @@ -224,6 +224,10 @@ export const accountFormSchema: FormSchema[] = [ | @@ -224,6 +224,10 @@ export const accountFormSchema: FormSchema[] = [ | ||
| 224 | label: '备注', | 224 | label: '备注', |
| 225 | component: 'InputTextArea', | 225 | component: 'InputTextArea', |
| 226 | colProps: { span: 24 }, | 226 | colProps: { span: 24 }, |
| 227 | + componentProps: { | ||
| 228 | + maxLength: 255, | ||
| 229 | + placeholder: '请输入备注', | ||
| 230 | + }, | ||
| 227 | }, | 231 | }, |
| 228 | { | 232 | { |
| 229 | field: 'organizationIds', | 233 | field: 'organizationIds', |
| @@ -47,7 +47,7 @@ export const formSchema: FormSchema[] = [ | @@ -47,7 +47,7 @@ export const formSchema: FormSchema[] = [ | ||
| 47 | component: 'Input', | 47 | component: 'Input', |
| 48 | required: true, | 48 | required: true, |
| 49 | componentProps: { | 49 | componentProps: { |
| 50 | - maxLength: 255, | 50 | + maxLength: 36, |
| 51 | }, | 51 | }, |
| 52 | }, | 52 | }, |
| 53 | { | 53 | { |