|
@@ -156,7 +156,10 @@
|
|
|
:visible="true"
|
|
|
class="data-link-dialog"
|
|
|
header="动态数据设置"
|
|
|
- @close="dataBindDialog.show = false"
|
|
|
+ @close="
|
|
|
+ dataBindDialog.datasetList = undefined;
|
|
|
+ dataBindDialog.show = false;
|
|
|
+ "
|
|
|
@confirm="dataBindonConfirm"
|
|
|
:top="70"
|
|
|
:width="700"
|
|
@@ -179,7 +182,30 @@
|
|
|
</div>
|
|
|
<div class="label gray" v-else>无</div>
|
|
|
</div>
|
|
|
- <div class="form-item mt-8">
|
|
|
+ <div class="form-item flex middle mt-8">
|
|
|
+ <t-input
|
|
|
+ v-if="dataBindDialog.url"
|
|
|
+ v-model="dataBindDialog.device"
|
|
|
+ placeholder="设备"
|
|
|
+ style="width: 200px"
|
|
|
+ />
|
|
|
+ <t-select
|
|
|
+ v-else
|
|
|
+ class="mr-16"
|
|
|
+ style="width: 200px"
|
|
|
+ v-model="dataBindDialog.device"
|
|
|
+ clearable
|
|
|
+ placeholder="设备"
|
|
|
+ @change="getDataset"
|
|
|
+ >
|
|
|
+ <t-option
|
|
|
+ v-for="(item, i) in dataBindDialog.devices"
|
|
|
+ :key="item"
|
|
|
+ :value="item"
|
|
|
+ :label="item"
|
|
|
+ />
|
|
|
+ </t-select>
|
|
|
+
|
|
|
<t-input
|
|
|
placeholder="搜索"
|
|
|
v-model="dataBindDialog.input"
|
|
@@ -233,7 +259,7 @@
|
|
|
</li>
|
|
|
<li class="mt-4">
|
|
|
<label class="inline" style="width: 80px">随机值:</label>
|
|
|
- {值1,值2,...}。例如:{1,2,3,4,5}
|
|
|
+ 值1,值2,...。例如:1,2,3,4,5
|
|
|
</li>
|
|
|
<li class="mt-4">
|
|
|
<label class="inline" style="width: 80px">范围数字:</label>
|
|
@@ -551,6 +577,11 @@ const dataSetColumns = [
|
|
|
type: 'single',
|
|
|
width: 50,
|
|
|
},
|
|
|
+ {
|
|
|
+ colKey: 'device',
|
|
|
+ title: '设备',
|
|
|
+ ellipsis: { theme: 'light', trigger: 'context-menu' },
|
|
|
+ },
|
|
|
{
|
|
|
colKey: 'label',
|
|
|
title: '数据点名称',
|
|
@@ -727,31 +758,53 @@ const getDataset = async () => {
|
|
|
if (data.dataset.url) {
|
|
|
const ret: any = await axios.get(data.dataset.url, {
|
|
|
params: {
|
|
|
+ device: dataBindDialog.device || '',
|
|
|
q: dataBindDialog.input,
|
|
|
current: query.current,
|
|
|
pageSize: query.pageSize,
|
|
|
},
|
|
|
});
|
|
|
dataBindDialog.dataset = ret;
|
|
|
+ dataBindDialog.url = true;
|
|
|
query.total = ret.total;
|
|
|
} else {
|
|
|
- const ret = await axios.post(`/api/data/datasources/get`, {
|
|
|
- id: data.dataset.id,
|
|
|
- });
|
|
|
- if (ret?.data) {
|
|
|
- data.dataset.data = ret.data;
|
|
|
- }
|
|
|
- if (dataBindDialog.input) {
|
|
|
- dataBindDialog.dataset = data.dataset.data.filter((item: any) => {
|
|
|
- return (
|
|
|
- searchPinyin(item.label, dataBindDialog.input) ||
|
|
|
- item.id.indexOf(dataBindDialog.input) > -1
|
|
|
- );
|
|
|
+ dataBindDialog.url = false;
|
|
|
+ if (!dataBindDialog.datasetList) {
|
|
|
+ const ret = await axios.post(`/api/data/datasources/get`, {
|
|
|
+ id: data.dataset.id,
|
|
|
});
|
|
|
- query.total = dataBindDialog.dataset.length;
|
|
|
+ if (ret?.data) {
|
|
|
+ data.dataset.data = ret.data;
|
|
|
+ dataBindDialog.datasetList = data.dataset.data;
|
|
|
+ const set = new Set<string>();
|
|
|
+ for (const item of dataBindDialog.datasetList) {
|
|
|
+ set.add(item.device);
|
|
|
+ }
|
|
|
+ dataBindDialog.devices = Array.from(set);
|
|
|
+ } else {
|
|
|
+ dataBindDialog.dataset = [];
|
|
|
+ dataBindDialog.devices = [];
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (dataBindDialog.device || dataBindDialog.input) {
|
|
|
+ dataBindDialog.dataset = dataBindDialog.datasetList.filter(
|
|
|
+ (item: any) => {
|
|
|
+ if (dataBindDialog.device && item.device !== dataBindDialog.device) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ return (
|
|
|
+ searchPinyin(item.label, dataBindDialog.input) ||
|
|
|
+ item.id.indexOf(dataBindDialog.input) > -1
|
|
|
+ );
|
|
|
+ }
|
|
|
+ );
|
|
|
+ query.total = dataBindDialog.datasetList.length;
|
|
|
} else {
|
|
|
- dataBindDialog.dataset = data.dataset.data;
|
|
|
- query.total = dataBindDialog.dataset.length;
|
|
|
+ dataBindDialog.dataset = [...dataBindDialog.datasetList];
|
|
|
+ query.total = dataBindDialog.datasetList.length;
|
|
|
}
|
|
|
}
|
|
|
dataBindDialog.loading = false;
|
|
@@ -800,6 +853,7 @@ const doBindInit = () => {
|
|
|
|
|
|
const dataBindonConfirm = () => {
|
|
|
dataBindDialog.show = false;
|
|
|
+ dataBindDialog.datasetList = undefined;
|
|
|
meta2d.initBinds();
|
|
|
};
|
|
|
|
|
@@ -991,7 +1045,7 @@ onUnmounted(() => {
|
|
|
}
|
|
|
|
|
|
& > div {
|
|
|
- width: 110px;
|
|
|
+ width: 90px;
|
|
|
&.t-switch {
|
|
|
width: fit-content;
|
|
|
margin-left: 4px;
|