@@ -319,6 +313,7 @@
:data="current"
@change="saveChange"
/>
+
@@ -340,11 +335,12 @@ import SaveModBus from './Save/SaveModBus.vue';
import SaveOPCUA from './Save/SaveOPCUA.vue';
import Scan from './Scan/index.vue';
import { colorMap } from '../data';
-import { cloneDeep, isNumber, throttle } from 'lodash-es';
+import { cloneDeep, isBoolean, isNumber, throttle } from 'lodash-es';
import { getWebSocket } from '@/utils/websocket';
import { map } from 'rxjs/operators';
import dayjs from 'dayjs';
import { responsiveArray } from 'ant-design-vue/lib/_util/responsiveObserve';
+import SaveS7 from './Save/SaveS7.vue';
const props = defineProps({
data: {
@@ -357,12 +353,22 @@ const tableRef = ref>({});
const params = ref>({});
const opcImage = getImage('/DataCollect/device-opcua.png');
const modbusImage = getImage('/DataCollect/device-modbus.png');
+const s7Image = getImage('/DataCollect/s7.png')
+const gatewayImage = getImage('/DataCollect/gateway.png')
+const ImageMap = new Map()
+ImageMap.set('OPC_UA',opcImage)
+ImageMap.set('MODBUS_TCP',modbusImage)
+ImageMap.set('snap7',s7Image)
+ImageMap.set('COLLECTOR_GATEWAY',gatewayImage)
+
+
const visible = reactive({
saveModBus: false,
saveOPCUA: false,
writePoint: false,
batchUpdate: false,
scan: false,
+ saveS7:false
});
const current: any = ref({});
const accessModesOption = ref();
@@ -474,19 +480,35 @@ const clickBatch = () => {
};
const handlAdd = () => {
- visible.saveModBus = true;
- current.value = {
- collectorId: props.data?.id,
- provider: props.data?.provider || 'MODBUS_TCP',
- };
+ if( props.data?.provider === 'snap7'){
+ console.log(props.data)
+ visible.saveS7 = true
+ current.value = {
+ collectorId: props.data?.id,
+ provider: props.data?.provider,
+ deviceType:props.data?.configuration.type,
+ }
+ }else{
+ visible.saveModBus = true;
+ current.value = {
+ collectorId: props.data?.id,
+ provider: props.data?.provider || 'MODBUS_TCP',
+ };
+ }
+
};
const handlEdit = (data: any) => {
if (data?.provider === 'OPC_UA') {
visible.saveOPCUA = true;
- } else {
+ } else if(data?.provider === 'snap7'){
+ visible.saveS7 = true
+ }else{
visible.saveModBus = true;
}
- current.value = cloneDeep(data);
+ current.value = cloneDeep({
+ ...data,
+ deviceType:props.data?.configuration.type,
+ });
};
const handlDelete = async (id: string | undefined = undefined) => {
@@ -526,11 +548,13 @@ const clickEdit = async (data: object) => {
// ReadIdMap
const clickRead = async (data: any) => {
+ console.log('------')
const res: any = await readPoint(data?.collectorId, [data?.id]);
if (res.status === 200) {
const readData: any = res.result[0];
const _data = ReadIdMap.get(data?.id);
ReadIdMap.set(data?.id, { ..._data, ...readData });
+ console.log('====',ReadIdMap.get(data.id))
cancelSelect();
tableRef.value?.reload();
onlyMessage('操作成功', 'success');
@@ -574,7 +598,12 @@ const getReadParseData = (item: any) => {
let _data = '--';
if (ReadIdMap.has(item.id)) {
const { parseData, dataType } = ReadIdMap.get(item.id);
- _data = !!parseData ? `${parseData}(${dataType || '-'}) ` : '--';
+ if(isBoolean(parseData)){
+ _data = `${parseData}(${dataType || '-'}) `;
+ }else{
+ _data = !!parseData ? `${parseData}(${dataType || '-'}) ` : '--';
+ }
+
}
return _data;
};
diff --git a/src/views/DataCollect/Collector/Tree/Save/index.vue b/src/views/DataCollect/Collector/Tree/Save/index.vue
index 9f05d88c..71ccb285 100644
--- a/src/views/DataCollect/Collector/Tree/Save/index.vue
+++ b/src/views/DataCollect/Collector/Tree/Save/index.vue
@@ -39,6 +39,33 @@
placeholder="请输入采集器名称"
v-model:value="formData.name"
/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+ 并行
+ 串行
+
@@ -196,6 +224,14 @@ const props = defineProps({
const emit = defineEmits(['change']);
+const typeOptions = ref([
+ {value: 'S200', label: 'S7-200'},
+ {value: 'S300', label: 'S7-300'},
+ {value: 'S400', label: 'S7-400'},
+ {value: 'S1200', label: 'S7-1200'},
+ {value: 'S1500', label: 'S7-1500'},
+])
+
const id = props.data.id;
const formRef = ref();
const provider = ref()
@@ -248,16 +284,17 @@ const endianData = computed(() => {
}
});
-const formData = ref({
+const formData = ref({
channelId: undefined,
name: '',
collectorProvider: undefined,
configuration: {
unitId: '',
- type: 'LowerFrequency',
+ type: undefined,
endian: 'BIG',
endianIn: 'BIG',
requestTimeout: 2000,
+ serializable:false,
inheritBreakerSpec: {
type: 'LowerFrequency',
}
@@ -347,10 +384,16 @@ const filterOption = (input: string, option: any) => {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
};
+const typeChange = (val:any)=>{
+ if(val == 'S200' || val == 'S1200') {
+ formData.value.configuration.slot = 1
+ }
+}
+
watch(
() => formData.value.channelId,
(value) => {
- const dt = _channelListAll.value.find((item) => item.id === value);
+ const dt:any = _channelListAll.value.find((item:any) => item.id === value);
visibleUnitId.value = visibleEndian.value =
dt?.provider && ['MODBUS_TCP', 'COLLECTOR_GATEWAY'].includes(dt?.provider);
},
diff --git a/src/views/DataCollect/Collector/data.ts b/src/views/DataCollect/Collector/data.ts
index 79b179cc..06f6fd08 100644
--- a/src/views/DataCollect/Collector/data.ts
+++ b/src/views/DataCollect/Collector/data.ts
@@ -22,6 +22,28 @@ export const getState = (record: any) => {
};
export const regOnlyNumber = new RegExp(/^\d+$/);
+export const regular = {
+ // IPV4 IPV6 域名
+ IP_Domain: /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$|^(?:(?:(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):){6})(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):(?:(?:[0-9a-fA-F]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:::(?:(?:(?:[0-9a-fA-F]{1,4})):){5})(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):(?:(?:[0-9a-fA-F]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})))?::(?:(?:(?:[0-9a-fA-F]{1,4})):){4})(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):(?:(?:[0-9a-fA-F]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):){0,1}(?:(?:[0-9a-fA-F]{1,4})))?::(?:(?:(?:[0-9a-fA-F]{1,4})):){3})(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):(?:(?:[0-9a-fA-F]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):){0,2}(?:(?:[0-9a-fA-F]{1,4})))?::(?:(?:(?:[0-9a-fA-F]{1,4})):){2})(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):(?:(?:[0-9a-fA-F]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):){0,3}(?:(?:[0-9a-fA-F]{1,4})))?::(?:(?:[0-9a-fA-F]{1,4})):)(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):(?:(?:[0-9a-fA-F]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):){0,4}(?:(?:[0-9a-fA-F]{1,4})))?::)(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):(?:(?:[0-9a-fA-F]{1,4})))|(?:(?:(?:(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9]))\.){3}(?:(?:25[0-5]|(?:[1-9]|1[0-9]|2[0-4])?[0-9])))))))|(?:(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):){0,5}(?:(?:[0-9a-fA-F]{1,4})))?::)(?:(?:[0-9a-fA-F]{1,4})))|(?:(?:(?:(?:(?:(?:[0-9a-fA-F]{1,4})):){0,6}(?:(?:[0-9a-fA-F]{1,4})))?::))))$/,
+ // IP地址
+ IP_URL: /^((2((5[0-5])|([0-4]\d)))|([0-1]?\d{1,2}))(\.((2((5[0-5])|([0-4]\d)))|([0-1]?\d{1,2}))){3}$/,
+ // 英文或者数字或者-或者_
+ EN_NUMBER: /^[A-Za-z0-9_-]+$/,
+ // 服务器地址
+ HTTP_URL: /^http:|https:\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?$/,
+ // 域名
+ DOMAIN_NAME: /^(?:(?:(?:[a-zA-z\-]+)\:\/{1,3})?(?:[a-zA-Z0-9])(?:[a-zA-Z0-9-\.]){1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+|\[(?:(?:(?:[a-fA-F0-9]){1,4})(?::(?:[a-fA-F0-9]){1,4}){7}|::1|::)\]|(?:(?:[0-9]{1,3})(?:\.[0-9]{1,3}){3}))(?:\:[0-9]{1,5})?$/,
+ // 数字
+ // NUMBER: /^[0-9]*[1-9][0-9]*$/,
+ NUMBER: /^([1-9]\d*|[0]{1,1})$/,
+ // 正数、负数、小数
+ ASSIGNMENT: /^(\-)?\d+(\.\d+)?$/,
+ //密码验证
+ PASSWORD: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,}$/,
+ //IP子网掩码
+ IP_MASK: /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(\/\d{1,2})?$/,
+ CronRegEx: new RegExp('^\\s*($|#|\\w+\\s*=|(\\?|\\*|(?:[0-5]?\\d)(?:(?:-|\\/|\\,)(?:[0-5]?\\d))?(?:,(?:[0-5]?\\d)(?:(?:-|\\/|\\,)(?:[0-5]?\\d))?)*)\\s+(\\?|\\*|(?:[0-5]?\\d)(?:(?:-|\\/|\\,)(?:[0-5]?\\d))?(?:,(?:[0-5]?\\d)(?:(?:-|\\/|\\,)(?:[0-5]?\\d))?)*)\\s+(\\?|\\*|(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?(?:,(?:[01]?\\d|2[0-3])(?:(?:-|\\/|\\,)(?:[01]?\\d|2[0-3]))?)*)\\s+(\\?|\\*|(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?(?:,(?:0?[1-9]|[12]\\d|3[01])(?:(?:-|\\/|\\,)(?:0?[1-9]|[12]\\d|3[01]))?)*)\\s+(\\?|\\*|(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W)?(?:,(?:[1-9]|1[012])(?:(?:-|\\/|\\,)(?:[1-9]|1[012]))?(?:L|W)?)*|\\?|\\*|(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?(?:,(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)(?:(?:-)(?:JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC))?)*)\\s+(\\?|\\*|(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?(?:,(?:[0-6])(?:(?:-|\\/|\\,|#)(?:[0-6]))?(?:L)?)*|\\?|\\*|(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?(?:,(?:MON|TUE|WED|THU|FRI|SAT|SUN)(?:(?:-)(?:MON|TUE|WED|THU|FRI|SAT|SUN))?)*)(|\\s)+(\\?|\\*|(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?(?:,(?:|\\d{4})(?:(?:-|\\/|\\,)(?:|\\d{4}))?)*))$',)
+ }
export const checkProviderData = {
int8: 1,
@@ -150,6 +172,73 @@ export const OPCUARules = {
description: [{ max: 200, message: '最多可输入200个字符' }],
};
+const validatorUrl = (rule:any, value:any, callback:any) => {
+ const reg = regular.DOMAIN_NAME
+ const reg1 = regular.IP_URL
+ if(value === undefined || value === '' || value === null) {
+ return Promise.reject("请输入通道Ip")
+ } else {
+ if(reg.test(value) === false && reg1.test(value) === false) {
+ return Promise.reject("请输入正确的域名或ip地址")
+ }
+ return Promise.resolve()
+ }
+ }
+ /**
+ * 校验通道端口
+ */
+const validator1 = (rule:any, value:any, callback:any) => {
+ if(value === undefined || value === '' || value === null) {
+ return Promise.reject("请输入通道端口")
+ } else {
+ if(value < 0 || value > 65535) {
+ return Promise.reject("请输入0~65535的整数")
+ }
+ return Promise.resolve()
+ }
+ }
+
+ /**
+ * 校验机架号
+ */
+ const validator2 = (rule:any, value:any, callback:any) => {
+ if(value === undefined || value === '' || value === null) {
+ return Promise.reject("请输入机架号")
+ } else {
+ if(value < 0 || value > 65535) {
+ return Promise.reject("请输入0~65535的整数")
+ }
+ return Promise.resolve()
+ }
+ }
+
+ /**
+ * 校验槽位
+ */
+ const validator3 = (rule:any, value:any, callback:any) => {
+ if(value === undefined || value === '' || value === null) {
+ return Promise.reject("请输入槽位")
+ } else {
+ if(value < 0 || value > 65535) {
+ return Promise.reject("请输入0~65535的整数")
+ }
+ return Promise.resolve()
+ }
+ }
+
+ /**
+ * 校验超时时间
+ */
+ const validator4 = (rule:any, value:any, callback:any) => {
+ if(value === undefined || value === '' || value === null) {
+ return Promise.reject("请输入超时时间")
+ } else {
+ if(value < 0 || value > 65535) {
+ return Promise.reject("请输入0~65535的整数")
+ }
+ return Promise.resolve()
+ }
+ }
export const LeftTreeRules = {
channelId: [{ required: true, message: '请选择所属通道', trigger: 'blur' }],
name: [
@@ -163,7 +252,7 @@ export const LeftTreeRules = {
message: '请输入0-255之间的正整数',
},
],
- type: [{ required: true, message: '请选择处理方式', trigger: 'blur' }],
+ // type: [{ required: true, message: '请选择处理方式', trigger: 'blur' }],
endian: [
{ required: true, message: '请选择双字高低位切换', trigger: 'blur' },
],
@@ -172,7 +261,16 @@ export const LeftTreeRules = {
],
requestTimeout:[
{ pattern: /^\d+$/, message:'请输入2000-60000的正整数',trigger: 'change'}
- ]
+ ],
+ host: [
+ { required: true, trigger: 'blur', validator: validatorUrl, },
+ ],
+ port: [{ required: true, trigger: 'blur' , validator: validator1}],
+ rack: [{ required: true, trigger: 'blur', validator: validator2 }],
+ slot: [{ required: true, trigger: 'blur', validator: validator3 }],
+ timeout: [{ required: true, trigger: 'blur', validator: validator4 }],
+ type: [{required: true, trigger: 'change', message: '请选择型号'}],
+ serializable: [{required: true, trigger: 'change', message: '请选择型号'}],
};
export const FormTableColumns = [
@@ -216,3 +314,5 @@ export const FormTableColumns = [
width: 50,
},
];
+
+
diff --git a/src/views/account/Center/components/StationMessage/components/NotificationRecord/index.vue b/src/views/account/Center/components/StationMessage/components/NotificationRecord/index.vue
index 9218d357..031fcffc 100644
--- a/src/views/account/Center/components/StationMessage/components/NotificationRecord/index.vue
+++ b/src/views/account/Center/components/StationMessage/components/NotificationRecord/index.vue
@@ -109,7 +109,7 @@ const getType = computed(() => {
return ['system-event'];
} else if(props.type === 'workflow-notification'){
return ['workflow-task-cc','workflow-task-todo','workflow-task-reject', 'workflow-process-finish', 'workflow-process-repealed']
- }
+ }
else {
return [
'alarm',
@@ -128,6 +128,7 @@ const columns = [
key: 'topicProvider',
search: {
type: 'select',
+ termFilter: ['in', 'nin'],
options: () =>
getTypeList_api().then((resp: any) => {
return resp.result
diff --git a/src/views/init-home/data/baseMenu.ts b/src/views/init-home/data/baseMenu.ts
index 3deb3e25..0547d948 100644
--- a/src/views/init-home/data/baseMenu.ts
+++ b/src/views/init-home/data/baseMenu.ts
@@ -1675,119 +1675,199 @@ export default [
permissions: [],
buttons: [
{
- id: 'view',
- name: '查看',
- permissions: [
+ "id": "view",
+ "name": "查看",
+ "permissions": [
{
- permission: 'data-collect-channel',
- actions: ['query'],
+ "permission": "data-collect-channel",
+ "actions": [
+ "query"
+ ]
},
{
- permission: 'data-collector',
- actions: ['query'],
+ "permission": "data-collector",
+ "actions": [
+ "query"
+ ]
},
{
- permission: 'data-collect-opc',
- actions: ['query'],
+ "permission": "data-collect-opc",
+ "actions": [
+ "query"
+ ]
},
{
- permission: 'things-collector',
- actions: ['query'],
+ "permission": "things-collector",
+ "actions": [
+ "query"
+ ]
},
- ],
+ {
+ "permission": "s7-client",
+ "actions": [
+ "query"
+ ]
+ }
+ ]
},
{
- id: 'add',
- name: '新增',
- permissions: [
+ "id": "add",
+ "name": "新增",
+ "permissions": [
{
- permission: 'data-collect-channel',
- actions: ['save', 'query'],
+ "permission": "data-collect-channel",
+ "actions": [
+ "query",
+ "save"
+ ]
},
{
- permission: 'data-collector',
- actions: ['save', 'query'],
+ "permission": "data-collector",
+ "actions": [
+ "query",
+ "save"
+ ]
},
{
- permission: 'data-collect-opc',
- actions: ['save', 'query'],
+ "permission": "data-collect-opc",
+ "actions": [
+ "query",
+ "save"
+ ]
},
{
- permission: 'things-collector',
- actions: ['save', 'query'],
+ "permission": "things-collector",
+ "actions": [
+ "query",
+ "save"
+ ]
},
- ],
+ {
+ "permission": "s7-client",
+ "actions": [
+ "query"
+ ]
+ }
+ ]
},
{
- id: 'update',
- name: '编辑',
- permissions: [
+ "id": "update",
+ "name": "编辑",
+ "permissions": [
{
- permission: 'data-collect-channel',
- actions: ['save', 'query'],
+ "permission": "data-collect-channel",
+ "actions": [
+ "query",
+ "save"
+ ]
},
{
- permission: 'data-collector',
- actions: ['save', 'query'],
+ "permission": "data-collector",
+ "actions": [
+ "query",
+ "save"
+ ]
},
{
- permission: 'data-collect-opc',
- actions: ['save', 'query'],
+ "permission": "data-collect-opc",
+ "actions": [
+ "query",
+ "save"
+ ]
},
{
- permission: 'things-collector',
- actions: ['save', 'query'],
+ "permission": "things-collector",
+ "actions": [
+ "query",
+ "save"
+ ]
},
{
- permission: 'certificate',
- actions: ['query'],
+ "permission": "certificate",
+ "actions": [
+ "query"
+ ]
},
- ],
+ {
+ "permission": "s7-client",
+ "actions": [
+ "query"
+ ]
+ }
+ ]
},
{
- id: 'action',
- name: '禁用/启用',
- permissions: [
+ "id": "action",
+ "name": "禁用/启用",
+ "permissions": [
{
- permission: 'data-collect-channel',
- actions: ['save', 'query'],
+ "permission": "data-collect-channel",
+ "actions": [
+ "query",
+ "save"
+ ]
},
{
- permission: 'data-collector',
- actions: ['save', 'query'],
+ "permission": "data-collector",
+ "actions": [
+ "query",
+ "save"
+ ]
},
{
- permission: 'data-collect-opc',
- actions: ['save', 'query'],
+ "permission": "data-collect-opc",
+ "actions": [
+ "query",
+ "save"
+ ]
},
{
- permission: 'things-collector',
- actions: ['save', 'query'],
+ "permission": "things-collector",
+ "actions": [
+ "query",
+ "save"
+ ]
},
- ],
+ {
+ "permission": "s7-client",
+ "actions": []
+ }
+ ]
},
{
- id: 'delete',
- name: '删除',
- permissions: [
+ "id": "delete",
+ "name": "删除",
+ "permissions": [
{
- permission: 'data-collect-channel',
- actions: ['delete', 'query'],
+ "permission": "data-collect-channel",
+ "actions": [
+ "query",
+ "delete"
+ ]
},
{
- permission: 'data-collector',
- actions: ['delete', 'query'],
+ "permission": "data-collector",
+ "actions": [
+ "query",
+ "delete"
+ ]
},
{
- permission: 'data-collect-opc',
- actions: ['delete', 'query'],
+ "permission": "data-collect-opc",
+ "actions": [
+ "query",
+ "delete"
+ ]
},
{
- permission: 'things-collector',
- actions: ['delete', 'query'],
- },
- ],
- },
+ "permission": "things-collector",
+ "actions": [
+ "query",
+ "delete"
+ ]
+ }
+ ]
+ }
],
accessSupport: { text: "支持", value: "support" },
supportDataAccess: true,
@@ -4633,7 +4713,7 @@ export default [
"sortIndex": 6,
"level": 1,
"owner": "iot",
- "name": "工作流",
+ "name": "流程引擎",
"code": "process",
"url": "/workflow",
"icon": "MenuUnfoldOutlined",
@@ -4652,10 +4732,14 @@ export default [
{
"permission": "process-runtime",
"actions": [
+ "transfer",
"reject",
+ "query",
"start",
+ "save",
"self",
"claim",
+ "delete-ready",
"complete",
"createAndStart",
"repeal"
@@ -4806,6 +4890,12 @@ export default [
"actions": [
"query"
]
+ },
+ {
+ "permission": "dictionary",
+ "actions": [
+ "query"
+ ]
}
],
"accessSupport": {
@@ -4971,6 +5061,12 @@ export default [
"actions": [
"query"
]
+ },
+ {
+ "permission": "dictionary",
+ "actions": [
+ "query"
+ ]
}
],
"accessSupport": {
@@ -5149,6 +5245,12 @@ export default [
"actions": [
"query"
]
+ },
+ {
+ "permission": "dictionary",
+ "actions": [
+ "query"
+ ]
}
],
"accessSupport": {
@@ -5234,10 +5336,14 @@ export default [
{
"permission": "process-runtime",
"actions": [
+ "transfer",
"reject",
+ "query",
"start",
+ "save",
"self",
"claim",
+ "delete-ready",
"complete",
"createAndStart",
"repeal"
@@ -5326,6 +5432,12 @@ export default [
"actions": [
"query"
]
+ },
+ {
+ "permission": "dictionary",
+ "actions": [
+ "query"
+ ]
}
],
"accessSupport": {
@@ -5373,10 +5485,14 @@ export default [
{
"permission": "process-runtime",
"actions": [
+ "transfer",
"reject",
+ "query",
"start",
+ "save",
"self",
"claim",
+ "delete-ready",
"complete",
"createAndStart",
"repeal"
@@ -5465,6 +5581,12 @@ export default [
"actions": [
"query"
]
+ },
+ {
+ "permission": "dictionary",
+ "actions": [
+ "query"
+ ]
}
],
"accessSupport": {
@@ -5512,10 +5634,14 @@ export default [
{
"permission": "process-runtime",
"actions": [
+ "transfer",
"reject",
+ "query",
"start",
+ "save",
"self",
"claim",
+ "delete-ready",
"complete",
"createAndStart",
"repeal"
@@ -5604,6 +5730,12 @@ export default [
"actions": [
"query"
]
+ },
+ {
+ "permission": "dictionary",
+ "actions": [
+ "query"
+ ]
}
],
"accessSupport": {
@@ -5651,10 +5783,14 @@ export default [
{
"permission": "process-runtime",
"actions": [
+ "transfer",
"reject",
+ "query",
"start",
+ "save",
"self",
"claim",
+ "delete-ready",
"complete",
"createAndStart",
"repeal"
@@ -5743,6 +5879,12 @@ export default [
"actions": [
"query"
]
+ },
+ {
+ "permission": "dictionary",
+ "actions": [
+ "query"
+ ]
}
],
"accessSupport": {
@@ -5779,10 +5921,14 @@ export default [
{
"permission": "process-runtime",
"actions": [
+ "transfer",
"reject",
+ "query",
"start",
+ "save",
"self",
"claim",
+ "delete-ready",
"complete",
"createAndStart",
"repeal"
@@ -5883,6 +6029,12 @@ export default [
"actions": [
"query"
]
+ },
+ {
+ "permission": "dictionary",
+ "actions": [
+ "query"
+ ]
}
],
"accessSupport": {
diff --git a/src/views/link/DashBoard/components/Cpu.vue b/src/views/link/DashBoard/components/Cpu.vue
index f908ecdb..f029db0c 100644
--- a/src/views/link/DashBoard/components/Cpu.vue
+++ b/src/views/link/DashBoard/components/Cpu.vue
@@ -99,7 +99,7 @@ const pickerTimeChange = () => {
};
const echartsOptions = computed(() => {
- console.log(serverActive.value)
+ console.log(serverActive.value,'---')
const series = serverActive.value.length
? serverActive.value.map((key) => setOptions(serverData.data, key))
: typeDataLine
@@ -173,7 +173,7 @@ const getCPUEcharts = async (val: any) => {
const setOptions = (optionsData: any, key: string) => ({
data: arrayReverse(optionsData[key]),
- name: key,
+ name: key != 'undefined' ? key : '',
type: 'line',
smooth: true,
symbol: 'none',
diff --git a/src/views/link/DashBoard/components/Jvm.vue b/src/views/link/DashBoard/components/Jvm.vue
index c65dd94a..a025485f 100644
--- a/src/views/link/DashBoard/components/Jvm.vue
+++ b/src/views/link/DashBoard/components/Jvm.vue
@@ -140,7 +140,7 @@ const getJVMEcharts = async (val: any) => {
const setOptions = (optionsData: any, key: string) => ({
data: arrayReverse(optionsData[key]),
- name: key,
+ // name: key!= 'undefined' ? key : '',
type: 'line',
smooth: true,
symbol: 'none',