update: 组件更换测试

This commit is contained in:
JiangQiming 2023-03-14 10:47:43 +08:00
parent 318a5cecaf
commit f584141950
1 changed files with 56 additions and 41 deletions

View File

@ -9,32 +9,50 @@
:confirmLoading="btnLoading" :confirmLoading="btnLoading"
width="660px" width="660px"
> >
<j-form layout="vertical"> <j-form ref="formRef" :model="formData" layout="vertical">
<j-form-item label="产品名称" v-bind="validateInfos.name"> <j-form-item
label="产品名称"
name="name"
:rules="{ required: true, message: '请输入产品名称' }"
>
<j-input <j-input
v-model:value="formData.name" v-model:value="formData.name"
placeholder="请输入名称" placeholder="请输入名称"
/> />
</j-form-item> </j-form-item>
<template v-if="channel === 'gb28181-2016' && formData.accessId"> <template v-for="(item, index) in extendFormItem" :key="index">
<j-form-item <j-form-item
label="接入密码" :name="item.name"
v-bind="validateInfos['configuration.access_pwd']" :label="item.label"
:rules="{
required: item.required,
message: item.message,
trigger: 'change',
}"
> >
<j-input-password
v-model:value="formData.configuration.access_pwd"
placeholder="请输入接入密码"
/>
</j-form-item>
<j-form-item label="流传输模式">
<j-select <j-select
v-model:value="formData.configuration.stream_mode" v-if="item.type === 'enum'"
placeholder="请选择流传输模式" v-model:value="formData[item.name[0]][item.name[1]]"
:options="streamMode" :options="item.options"
:placeholder="item.message"
/>
<j-input-password
v-else-if="item.type === 'password'"
v-model:value="formData[item.name[0]][item.name[1]]"
:placeholder="item.message"
/>
<j-input
v-else
v-model:value="formData[item.name[0]][item.name[1]]"
:placeholder="item.message"
/> />
</j-form-item> </j-form-item>
</template> </template>
<j-form-item label="接入网关" v-bind="validateInfos.accessId"> <j-form-item
label="接入网关"
name="accessId"
:rules="{ required: true, message: '请选择接入网关' }"
>
<div class="gateway-box"> <div class="gateway-box">
<div v-if="!gatewayList.length"> <div v-if="!gatewayList.length">
暂无数据请先 暂无数据请先
@ -119,16 +137,12 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { Form, message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { PropType } from 'vue';
import { streamMode } from '@/views/media/Device/const';
import DeviceApi from '@/api/media/device'; import DeviceApi from '@/api/media/device';
import { getImage } from '@/utils/comm'; import { getImage } from '@/utils/comm';
import { gatewayType } from '@/views/media/Device/typings'; import { gatewayType } from '@/views/media/Device/typings';
import { providerType } from '../const'; import { providerType } from '../const';
const useForm = Form.useForm;
type Emits = { type Emits = {
(e: 'update:visible', data: boolean): void; (e: 'update:visible', data: boolean): void;
(e: 'update:productId', data: string): void; (e: 'update:productId', data: string): void;
@ -166,6 +180,7 @@ const getGatewayList = async () => {
* @param e * @param e
*/ */
const _selectedRowKeys = ref<string[]>([]); const _selectedRowKeys = ref<string[]>([]);
const extendFormItem = ref<any[]>();
const handleClick = async (e: any) => { const handleClick = async (e: any) => {
_selectedRowKeys.value = [e.id]; _selectedRowKeys.value = [e.id];
formData.value.accessId = e.id; formData.value.accessId = e.id;
@ -179,7 +194,22 @@ const handleClick = async (e: any) => {
props.channel, props.channel,
e.transport, e.transport,
); );
console.log('result: ', result);
extendFormItem.value = result.properties.map((item: any) => ({
name: ['configuration', item.property],
label: item.name,
type: item.type?.type,
value: item.type.expands?.defaultValue,
options: item.type.elements?.map((e: any) => ({
label: e.text,
value: e.value,
})),
required: !!item.type.expands?.required,
message:
item.type?.type === 'enum'
? `请选择${item.name}`
: `请输入${item.name}`,
}));
}; };
watch( watch(
@ -187,10 +217,6 @@ watch(
(val) => { (val) => {
if (val) { if (val) {
getGatewayList(); getGatewayList();
formRules.value['configuration.access_pwd'][0].required =
props.channel === 'gb28181-2016';
validate();
} else { } else {
emit('close'); emit('close');
} }
@ -198,6 +224,7 @@ watch(
); );
// //
const formRef = ref();
const formData = ref({ const formData = ref({
accessId: '', accessId: '',
accessName: '', accessName: '',
@ -213,25 +240,13 @@ const formData = ref({
transportProtocol: '', transportProtocol: '',
}); });
//
const formRules = ref({
name: [{ required: true, message: '请输入产品名称' }],
'configuration.access_pwd': [{ required: true, message: '请输入接入密码' }],
accessId: [{ required: true, message: '请选择接入网关' }],
});
const { resetFields, validate, validateInfos, clearValidate } = useForm(
formData.value,
formRules.value,
);
/** /**
* 提交 * 提交
*/ */
const btnLoading = ref(false); const btnLoading = ref(false);
const handleOk = () => { const handleOk = () => {
// console.log('formData.value: ', formData.value); formRef.value
validate() ?.validate()
.then(async () => { .then(async () => {
btnLoading.value = true; btnLoading.value = true;
const res = await DeviceApi.saveProduct(formData.value); const res = await DeviceApi.saveProduct(formData.value);
@ -247,14 +262,14 @@ const handleOk = () => {
} }
btnLoading.value = false; btnLoading.value = false;
}) })
.catch((err) => { .catch((err: any) => {
console.log('err: ', err); console.log('err: ', err);
}); });
}; };
const handleCancel = () => { const handleCancel = () => {
_vis.value = false; _vis.value = false;
resetFields(); formRef.value.resetFields();
}; };
</script> </script>