|
@@ -23,7 +23,8 @@
|
|
|
<a-card :bordered="false" class="section">
|
|
<a-card :bordered="false" class="section">
|
|
|
<a-table :columns="columns" :data-source="rows" :loading="loading" :pagination="pagination" row-key="id" :scroll="tableScroll" @change="handleTableChange">
|
|
<a-table :columns="columns" :data-source="rows" :loading="loading" :pagination="pagination" row-key="id" :scroll="tableScroll" @change="handleTableChange">
|
|
|
<template #bodyCell="{ column, record }">
|
|
<template #bodyCell="{ column, record }">
|
|
|
- <template v-if="column.key === 'operation'">
|
|
|
|
|
|
|
+ <a-switch v-if="isSwitchColumn(column)" :checked="record[column.dataIndex] === switchCheckedValue(column)" disabled size="small" />
|
|
|
|
|
+ <template v-else-if="column.key === 'operation'">
|
|
|
<a-space>
|
|
<a-space>
|
|
|
<a v-hasPermi="[moduleConfig.perm + ':edit']" @click="openForm(record)">编辑</a>
|
|
<a v-hasPermi="[moduleConfig.perm + ':edit']" @click="openForm(record)">编辑</a>
|
|
|
<a-popconfirm :title="'确认删除该' + moduleConfig.title + '?'" @confirm="removeRecord(record)">
|
|
<a-popconfirm :title="'确认删除该' + moduleConfig.title + '?'" @confirm="removeRecord(record)">
|
|
@@ -47,6 +48,7 @@
|
|
|
<a-form-item :label="item[1]" :name="item[0]">
|
|
<a-form-item :label="item[1]" :name="item[0]">
|
|
|
<a-select v-if="item[2] === 'select'" v-model:value="form[item[0]]" allow-clear :options="toOptions(item[4])" />
|
|
<a-select v-if="item[2] === 'select'" v-model:value="form[item[0]]" allow-clear :options="toOptions(item[4])" />
|
|
|
<a-select v-else-if="item[2] === 'device'" v-model:value="form[deviceFieldName]" allow-clear show-search :options="deviceOptions" :filter-option="filterOption" @change="handleDeviceChange" />
|
|
<a-select v-else-if="item[2] === 'device'" v-model:value="form[deviceFieldName]" allow-clear show-search :options="deviceOptions" :filter-option="filterOption" @change="handleDeviceChange" />
|
|
|
|
|
+ <a-switch v-else-if="item[2] === 'switch'" v-model:checked="form[item[0]]" :checked-value="item[4]?.[0]?.[1] ?? true" :un-checked-value="item[4]?.[1]?.[1] ?? false" />
|
|
|
<a-input-number v-else-if="item[2] === 'number'" v-model:value="form[item[0]]" class="full-input" />
|
|
<a-input-number v-else-if="item[2] === 'number'" v-model:value="form[item[0]]" class="full-input" />
|
|
|
<a-date-picker v-else-if="item[2] === 'date'" v-model:value="form[item[0]]" value-format="YYYY-MM-DD" class="full-input" />
|
|
<a-date-picker v-else-if="item[2] === 'date'" v-model:value="form[item[0]]" value-format="YYYY-MM-DD" class="full-input" />
|
|
|
<a-input v-else v-model:value="form[item[0]]" allow-clear />
|
|
<a-input v-else v-model:value="form[item[0]]" allow-clear />
|
|
@@ -89,13 +91,15 @@ const columns = computed(() => [
|
|
|
const tableScroll = computed(() => ({ x: columns.value.reduce((sum, col) => sum + (col.width || 140), 0) }));
|
|
const tableScroll = computed(() => ({ x: columns.value.reduce((sum, col) => sum + (col.width || 140), 0) }));
|
|
|
const rules = computed(() => ({
|
|
const rules = computed(() => ({
|
|
|
...(hasStation.value ? { stationId: [{ required: true, message: '请选择所属场站', trigger: 'change' }] } : {}),
|
|
...(hasStation.value ? { stationId: [{ required: true, message: '请选择所属场站', trigger: 'change' }] } : {}),
|
|
|
- ...Object.fromEntries(props.moduleConfig.fields.filter((item) => item[3]).map((item) => [item[0], [{ required: true, message: '请输入' + item[1], trigger: item[2] === 'select' || item[2] === 'device' ? 'change' : 'blur' }]]))
|
|
|
|
|
|
|
+ ...Object.fromEntries(props.moduleConfig.fields.filter((item) => item[3]).map((item) => [item[0], [{ required: true, message: '请输入' + item[1], trigger: item[2] === 'select' || item[2] === 'device' || item[2] === 'switch' ? 'change' : 'blur' }]]))
|
|
|
}));
|
|
}));
|
|
|
const deviceOptions = computed(() => allDevices.value
|
|
const deviceOptions = computed(() => allDevices.value
|
|
|
.filter((item) => !form.stationId || String(item.stationId) === String(form.stationId))
|
|
.filter((item) => !form.stationId || String(item.stationId) === String(form.stationId))
|
|
|
.map((item) => ({ label: item.deviceName || item.name || item.id, value: item.id, raw: item })));
|
|
.map((item) => ({ label: item.deviceName || item.name || item.id, value: item.id, raw: item })));
|
|
|
|
|
|
|
|
const toOptions = (items = []) => items.map((item) => ({ label: item[0], value: item[1] }));
|
|
const toOptions = (items = []) => items.map((item) => ({ label: item[0], value: item[1] }));
|
|
|
|
|
+const isSwitchColumn = (column) => fieldMap.value.get(column.dataIndex)?.[2] === 'switch';
|
|
|
|
|
+const switchCheckedValue = (column) => fieldMap.value.get(column.dataIndex)?.[4]?.[0]?.[1] ?? true;
|
|
|
const filterOption = (input, option) => String(option?.label || '').toLowerCase().includes(input.toLowerCase());
|
|
const filterOption = (input, option) => String(option?.label || '').toLowerCase().includes(input.toLowerCase());
|
|
|
const resetObject = (target, source = {}) => { Object.keys(target).forEach((key) => delete target[key]); Object.assign(target, source); };
|
|
const resetObject = (target, source = {}) => { Object.keys(target).forEach((key) => delete target[key]); Object.assign(target, source); };
|
|
|
|
|
|
|
@@ -140,6 +144,7 @@ const openForm = async (record) => {
|
|
|
} else {
|
|
} else {
|
|
|
resetObject(form, { stationId: queryParams.stationId });
|
|
resetObject(form, { stationId: queryParams.stationId });
|
|
|
}
|
|
}
|
|
|
|
|
+ props.moduleConfig.fields.filter((item) => item[2] === 'switch').forEach((item) => { if (form[item[0]] === undefined) form[item[0]] = item[4]?.[1]?.[1] ?? false; });
|
|
|
formOpen.value = true;
|
|
formOpen.value = true;
|
|
|
};
|
|
};
|
|
|
const handleStationChange = () => {
|
|
const handleStationChange = () => {
|