Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
051a5082f3
|
@ -43,7 +43,7 @@ export default {
|
|||
server.post<recordsItemType[]>(`/media/device/${deviceId}/${channelId}/records/in-server/files`, data),
|
||||
|
||||
// 播放云端回放
|
||||
playbackStart: (recordId: string) => `${BASE_API_PATH}/record/${recordId}.mp4?:X_Access_Token=${LocalStore.get(TOKEN_KEY)}`,
|
||||
playbackStart: (recordId: string) => `${BASE_API_PATH}/media/record/${recordId}.mp4?:X_Access_Token=${LocalStore.get(TOKEN_KEY)}`,
|
||||
|
||||
downLoadFile: (recordId: string) => `${BASE_API_PATH}/record/${recordId}.mp4?download=true&:X_Access_Token=${LocalStore.get(TOKEN_KEY)}`
|
||||
downLoadFile: (recordId: string) => `${BASE_API_PATH}/media/record/${recordId}.mp4?download=true&:X_Access_Token=${LocalStore.get(TOKEN_KEY)}`
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
:visible="true"
|
||||
width="700px"
|
||||
@cancel="handleCancel"
|
||||
:destroyOnClose="true"
|
||||
>
|
||||
<div class="sizeText">
|
||||
将批量修改
|
||||
|
@ -86,7 +87,6 @@
|
|||
<script lang="ts" setup>
|
||||
import type { FormInstance } from 'ant-design-vue';
|
||||
import { savePointBatch } from '@/api/data-collect/collector';
|
||||
import { Rule } from 'ant-design-vue/lib/form';
|
||||
import { cloneDeep, isObject } from 'lodash';
|
||||
import { regOnlyNumber } from '../../../data';
|
||||
|
||||
|
@ -107,15 +107,6 @@ const formData = ref({
|
|||
features: [],
|
||||
});
|
||||
|
||||
const checkLength = (_rule: Rule, value: string): Promise<any> =>
|
||||
new Promise(async (resolve, reject) => {
|
||||
if (value) {
|
||||
return String(value).length > 64
|
||||
? reject('最多可输入64个字符')
|
||||
: resolve('');
|
||||
}
|
||||
});
|
||||
|
||||
const handleOk = async () => {
|
||||
const data = cloneDeep(formData.value);
|
||||
const { accessModes, features, interval } = data;
|
||||
|
@ -136,7 +127,11 @@ const handleOk = async () => {
|
|||
);
|
||||
}
|
||||
}
|
||||
features.length !== 0 && (i.features = data.features);
|
||||
if(features.length !== 0) {
|
||||
i.features = data.features
|
||||
} else {
|
||||
i.features = i.features.map((it: any) =>it.value)
|
||||
}
|
||||
if (!!interval || Number(interval) === 0) {
|
||||
i.interval = data.interval;
|
||||
i.configuration = {
|
||||
|
@ -157,10 +152,6 @@ const handleOk = async () => {
|
|||
const handleCancel = () => {
|
||||
emit('change', false);
|
||||
};
|
||||
|
||||
const filterOption = (input: string, option: any) => {
|
||||
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
|
|
@ -10,22 +10,28 @@
|
|||
message: '请选择指令类型',
|
||||
}"
|
||||
>
|
||||
<j-select
|
||||
placeholder="请选择指令类型"
|
||||
<MSelect
|
||||
v-model:value="modelRef.messageType"
|
||||
show-search
|
||||
:options="_options"
|
||||
@change="onTypeChange"
|
||||
>
|
||||
<j-select-option value="READ_PROPERTY"
|
||||
>读取属性</j-select-option
|
||||
>
|
||||
<j-select-option value="WRITE_PROPERTY"
|
||||
>修改属性</j-select-option
|
||||
>
|
||||
<j-select-option value="INVOKE_FUNCTION"
|
||||
>调用功能</j-select-option
|
||||
>
|
||||
</j-select>
|
||||
type="messageType"
|
||||
/>
|
||||
<!-- // <j-select
|
||||
// placeholder="请选择指令类型"
|
||||
// v-model:value="modelRef.messageType"
|
||||
// show-search
|
||||
// @change="onTypeChange"
|
||||
// >
|
||||
// <j-select-option value="READ_PROPERTY"
|
||||
// >读取属性</j-select-option
|
||||
// >
|
||||
// <j-select-option value="WRITE_PROPERTY"
|
||||
// >修改属性</j-select-option
|
||||
// >
|
||||
// <j-select-option value="INVOKE_FUNCTION"
|
||||
// >调用功能</j-select-option
|
||||
// >
|
||||
// </j-select> -->
|
||||
</j-form-item>
|
||||
</j-col>
|
||||
<j-col
|
||||
|
@ -89,7 +95,11 @@
|
|||
:itemType="
|
||||
property.valueType?.type || property.type || 'int'
|
||||
"
|
||||
:placeholder="property.valueType?.type === 'array' ? '多个数据用英文,分割' : ''"
|
||||
:placeholder="
|
||||
property.valueType?.type === 'array'
|
||||
? '多个数据用英文,分割'
|
||||
: ''
|
||||
"
|
||||
:options="
|
||||
property.valueType?.type === 'enum'
|
||||
? (property?.valueType?.elements || []).map(
|
||||
|
@ -102,15 +112,25 @@
|
|||
)
|
||||
: property.valueType?.type === 'boolean'
|
||||
? [
|
||||
{ label: property.valueType?.trueText, value: property.valueType?.trueValue },
|
||||
{ label: property.valueType?.falseText, value: property.valueType?.falseValue },
|
||||
{
|
||||
label: property.valueType?.trueText,
|
||||
value: property.valueType?.trueValue,
|
||||
},
|
||||
{
|
||||
label: property.valueType?.falseText,
|
||||
value: property.valueType?.falseValue,
|
||||
},
|
||||
]
|
||||
: undefined
|
||||
"
|
||||
/>
|
||||
</j-form-item>
|
||||
</j-col>
|
||||
<j-col :span="24" v-if="modelRef.messageType === 'INVOKE_FUNCTION'" class="inputs">
|
||||
<j-col
|
||||
:span="24"
|
||||
v-if="modelRef.messageType === 'INVOKE_FUNCTION'"
|
||||
class="inputs"
|
||||
>
|
||||
<j-form-item
|
||||
:name="['message', 'functionId']"
|
||||
label="功能"
|
||||
|
@ -164,6 +184,7 @@
|
|||
|
||||
<script lang="ts" setup>
|
||||
import EditTable from './EditTable.vue';
|
||||
import MSelect from '../../../components/MSelect/index.vue';
|
||||
|
||||
const formRef = ref();
|
||||
|
||||
|
@ -187,7 +208,7 @@ const props = defineProps({
|
|||
},
|
||||
});
|
||||
|
||||
const emit = defineEmits(['update:modelValue'])
|
||||
const emit = defineEmits(['update:modelValue']);
|
||||
|
||||
const editRef = ref();
|
||||
|
||||
|
@ -210,11 +231,25 @@ const onPropertyChange = (val: string, flag?: boolean) => {
|
|||
);
|
||||
property.value = _item || {};
|
||||
}
|
||||
if(!flag){
|
||||
modelRef.message.value = undefined
|
||||
if (!flag) {
|
||||
modelRef.message.value = undefined;
|
||||
}
|
||||
};
|
||||
|
||||
const _options = [
|
||||
{
|
||||
id: 'READ_PROPERTY',
|
||||
name: '读取属性',
|
||||
},
|
||||
{
|
||||
id: 'WRITE_PROPERTY',
|
||||
name: '修改属性',
|
||||
},
|
||||
{
|
||||
id: 'INVOKE_FUNCTION',
|
||||
name: '调用功能',
|
||||
},
|
||||
];
|
||||
const onTypeChange = () => {
|
||||
// 需要记住之前的选择, 所以注释了该代码
|
||||
// modelRef.message = {
|
||||
|
@ -231,14 +266,14 @@ const funcChange = (val: string, _inputs?: any[]) => {
|
|||
props.metadata?.functions.find((item: any) => item.id === val)
|
||||
?.inputs || [];
|
||||
const list = arr.map((item: any) => {
|
||||
const _item = _inputs?.find(i => i.id === item.id)
|
||||
const _item = _inputs?.find((i) => i.id === item.id);
|
||||
return {
|
||||
id: item.id,
|
||||
name: item.name,
|
||||
value: undefined,
|
||||
valueType: item?.valueType?.type,
|
||||
..._item,
|
||||
required: item?.expands?.required
|
||||
required: item?.expands?.required,
|
||||
};
|
||||
});
|
||||
modelRef.message.inputs = list;
|
||||
|
@ -254,7 +289,10 @@ watch(
|
|||
onPropertyChange(newVal?.message?.properties, true);
|
||||
}
|
||||
if (newVal?.message?.functionId) {
|
||||
funcChange(newVal?.message?.functionId, newVal?.message?.inputs);
|
||||
funcChange(
|
||||
newVal?.message?.functionId,
|
||||
newVal?.message?.inputs,
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -273,7 +311,7 @@ const saveBtn = () =>
|
|||
resolve(false);
|
||||
});
|
||||
}
|
||||
emit('update:modelValue', _data)
|
||||
emit('update:modelValue', _data);
|
||||
resolve(_data);
|
||||
})
|
||||
.catch((err: any) => {
|
||||
|
|
|
@ -112,7 +112,7 @@
|
|||
collapsible="header"
|
||||
>
|
||||
<j-collapse-panel
|
||||
:key="(cluster.serverId || '') + index"
|
||||
:key="index + 1"
|
||||
:show-arrow="!formData.shareCluster"
|
||||
>
|
||||
<template #header v-if="!shareCluster">
|
||||
|
|
|
@ -132,6 +132,16 @@ const validateAddress = (_rule: any, value: string): Promise<any> => {
|
|||
});
|
||||
};
|
||||
|
||||
const sizeValidator = (_rule:any, value: number):Promise<any> =>{
|
||||
return new Promise(async(resolve,reject)=>{
|
||||
const posReg = /^\d+$/;
|
||||
if(posReg.test(value.toString()) && value >= 0 && value <=65535 ){
|
||||
return resolve('');
|
||||
}else {
|
||||
return reject(_rule.message);
|
||||
}
|
||||
})
|
||||
}
|
||||
export const Rules = {
|
||||
name: [
|
||||
{
|
||||
|
@ -313,6 +323,11 @@ export const Rules = {
|
|||
required: true,
|
||||
message: '请输入长度值',
|
||||
},
|
||||
{
|
||||
validator:sizeValidator,
|
||||
message:'请输入0~65535之间的正整数',
|
||||
trigger:'change'
|
||||
}
|
||||
],
|
||||
length: [
|
||||
{
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
</j-space>
|
||||
</j-tooltip>
|
||||
</template>
|
||||
<template #channelId="slotProps">
|
||||
<template #gbChannelId="slotProps">
|
||||
<div style="display: flex; align-items: center;">
|
||||
<Ellipsis style="width: 150px">
|
||||
{{ slotProps.gbChannelId }}
|
||||
|
@ -180,8 +180,8 @@ const columns = [
|
|||
},
|
||||
{
|
||||
title: '国标ID',
|
||||
dataIndex: 'channelId',
|
||||
key: 'channelId',
|
||||
dataIndex: 'gbChannelId',
|
||||
key: 'gbChannelId',
|
||||
scopedSlots: true,
|
||||
width: 200,
|
||||
headerCell: 'gbChannelIdHeader', // 表头单元格插槽
|
||||
|
|
|
@ -77,7 +77,7 @@ const handleHeader= (data:any) =>{
|
|||
})
|
||||
}
|
||||
const dataSource = reactive({
|
||||
table:props.headers.length > 0 ? handleHeader(props.headers) : ''
|
||||
table:props.headers.length > 0 ? handleHeader(props.headers) : []
|
||||
});
|
||||
|
||||
watch(()=>JSON.stringify(props.headers),()=>{
|
||||
|
@ -102,12 +102,17 @@ const handleAdd = () => {
|
|||
};
|
||||
const validate = () =>{
|
||||
return new Promise((resolve:any,reject:any)=>{
|
||||
if(dataSource.table){
|
||||
tableRef.value.validate().then(()=>{
|
||||
valueChange()
|
||||
resolve(data.value)
|
||||
}).catch((err:any)=>{
|
||||
console.log(err);
|
||||
reject(false)
|
||||
})
|
||||
}else{
|
||||
resolve([])
|
||||
}
|
||||
})
|
||||
}
|
||||
defineExpose({
|
||||
|
|
|
@ -191,20 +191,26 @@ const formModel = reactive<{
|
|||
const variableRef = ref();
|
||||
const formRef = ref();
|
||||
|
||||
const _getType = computed(() => {
|
||||
if(['notifier-dingTalk'].includes(props.data?.channelProvider)) {
|
||||
return ['user', 'tag']
|
||||
} else {
|
||||
return ['user', 'org', 'tag']
|
||||
}
|
||||
})
|
||||
|
||||
const _variableDefinitions = computed(() => {
|
||||
const arr = ['user', 'org', 'tag'];
|
||||
return variable.value.filter((item: any) => {
|
||||
const _type = item.expands?.businessType || item.type || '';
|
||||
return !arr.includes(_type);
|
||||
return !['user', 'org', 'tag'].includes(_type);
|
||||
});
|
||||
});
|
||||
|
||||
const handleVariable = (obj: any) => {
|
||||
const arr = ['user', 'org', 'tag'];
|
||||
const _array = variable.value
|
||||
.filter((item: any) => {
|
||||
const _type = item.expands?.businessType || item.type || '';
|
||||
return arr.includes(_type);
|
||||
return _getType.value.includes(_type);
|
||||
})
|
||||
.map((i: any) => i?.id);
|
||||
const _variable = variableMap.get(formModel.channelProvider);
|
||||
|
|
Loading…
Reference in New Issue