You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
278 lines
8.0 KiB
278 lines
8.0 KiB
import { device } from './../../../api/deviceManage';
|
|
import { dateUtil } from '/nerv-lib/util/date-util';
|
|
import { device } from '/@/api/deviceManage';
|
|
import { ref } from 'vue';
|
|
import { http } from '/nerv-lib/util';
|
|
|
|
export const tableConfig = (orgId) => {
|
|
return ref({
|
|
title: '设备信息',
|
|
api: device.queryDevicePage,
|
|
params: { orgId },
|
|
treeConfig: {
|
|
header: {
|
|
icon: 'deviceType',
|
|
title: '设备类别',
|
|
},
|
|
params: { orgId },
|
|
dynamicParams: { deviceCode: 'code' },
|
|
defaultExpandAll: true,
|
|
api: device.queryDeviceTree,
|
|
fieldNames: { title: 'deviceType', key: 'code' },
|
|
formConfig: {
|
|
schemas: [
|
|
{
|
|
field: 'deviceType',
|
|
label: '设备名称',
|
|
component: 'NsInput',
|
|
autoSubmit: true,
|
|
componentProps: {
|
|
placeholder: '请输入设备类型',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
rowSelection: null,
|
|
// scroll: { x: 2000 },
|
|
columns: [
|
|
{
|
|
title: '设备名称',
|
|
dataIndex: 'deviceName',
|
|
},
|
|
{
|
|
title: '设备型号',
|
|
dataIndex: 'deviceModel',
|
|
},
|
|
{
|
|
title: 'SN码',
|
|
dataIndex: 'snCode',
|
|
textNumber: 5,
|
|
textEllipsis: true,
|
|
},
|
|
{
|
|
title: '设备一级区域',
|
|
dataIndex: 'device1Area',
|
|
textWidth: 88,
|
|
// width: 130,
|
|
textEllipsis: true,
|
|
},
|
|
{
|
|
title: '设备二级区域',
|
|
dataIndex: 'device2Area',
|
|
textWidth: 88,
|
|
// width: 130,
|
|
textEllipsis: true,
|
|
},
|
|
{
|
|
title: '设备详细位置',
|
|
dataIndex: 'deviceAddress',
|
|
textNumber: 5,
|
|
textEllipsis: true,
|
|
},
|
|
{
|
|
title: '设备规格',
|
|
dataIndex: 'deviceTp',
|
|
textNumber: 4,
|
|
},
|
|
{
|
|
title: '设备厂商纳税人识别号',
|
|
dataIndex: 'deviceRatepay',
|
|
textNumber: 9,
|
|
textEllipsis: true,
|
|
},
|
|
{
|
|
title: '设备厂商',
|
|
textNumber: 4,
|
|
dataIndex: 'manufacturer',
|
|
},
|
|
{
|
|
title: '厂商联系人',
|
|
dataIndex: 'contactPerson',
|
|
},
|
|
{
|
|
title: '设备描述',
|
|
dataIndex: 'deviceDesc',
|
|
textWidth: 88,
|
|
|
|
textEllipsis: true,
|
|
},
|
|
{
|
|
title: 'IP地址',
|
|
dataIndex: 'ipAddress',
|
|
},
|
|
{
|
|
title: '生产日期',
|
|
dataIndex: 'manufactureDate',
|
|
},
|
|
{
|
|
title: '采购日期',
|
|
dataIndex: 'purchaseDate',
|
|
},
|
|
{
|
|
title: '启用日期',
|
|
dataIndex: 'startDate',
|
|
},
|
|
{
|
|
title: '设备成本(元)',
|
|
dataIndex: 'equipmentCost',
|
|
textNumber: 6,
|
|
},
|
|
{
|
|
title: '使用期限',
|
|
dataIndex: 'usagePeriod',
|
|
textNumber: 4,
|
|
customRender: ({ value }) => `${value}年`,
|
|
},
|
|
{
|
|
title: '额定功率',
|
|
dataIndex: 'ratedPower',
|
|
textNumber: 4,
|
|
// customRender: ({ value }) => `${value}年`,
|
|
},
|
|
{
|
|
title: '特殊参数',
|
|
textNumber: 4,
|
|
dataIndex: 'specialParameters',
|
|
},
|
|
],
|
|
|
|
formConfig: {
|
|
schemas: [
|
|
{
|
|
field: 'deviceName',
|
|
label: '设备名称',
|
|
component: 'NsSelectApi',
|
|
componentProps: {
|
|
placeholder: '请选择设备名称',
|
|
api: (params) => {
|
|
return http.post(device.dropArea, params).then((res) => {
|
|
const result = res.data?.reduce((pre, cur) => {
|
|
!pre.includes(cur.deviceName) && pre.push(cur.deviceName);
|
|
return pre;
|
|
}, []);
|
|
return { data: result };
|
|
});
|
|
},
|
|
resultField: 'data',
|
|
params: { orgId, filterField: 'DEVICE_NAME_FACTORY' },
|
|
// labelField: 'deviceName',
|
|
// valueField: 'deviceName',
|
|
filterOption: (input: string, option: any) => {
|
|
return option.deviceName.toLowerCase().indexOf(input.toLowerCase()) >= 0;
|
|
},
|
|
showSearch: true,
|
|
immediate: true,
|
|
dropdownReload: true,
|
|
allowClear: true,
|
|
},
|
|
},
|
|
{
|
|
field: 'areas',
|
|
label: '设备区域',
|
|
component: 'NsCascader',
|
|
format: (record) => {
|
|
console.log(record);
|
|
|
|
return record?.reduce(
|
|
(pre, cur) => {
|
|
const len = cur?.length - 1;
|
|
pre[len].push(cur[len]);
|
|
return pre;
|
|
},
|
|
[[], []],
|
|
);
|
|
},
|
|
fieldMap: ['area1', 'area2'],
|
|
componentProps: {
|
|
placeholder: '请选择设备区域',
|
|
multiple: true,
|
|
loadData: (selectedOptions, options) => {
|
|
const targetOption = selectedOptions[selectedOptions.length - 1];
|
|
if (!selectedOptions.length) {
|
|
http.post(device.dropArea, { orgId, filterField: 'DEVICE_AREA' }).then((res) => {
|
|
options.value = res.data?.map((item) => {
|
|
return { label: item, value: item, children: [], isLeaf: false };
|
|
});
|
|
});
|
|
}
|
|
const value = targetOption?.value;
|
|
if (targetOption) {
|
|
targetOption.loading = true;
|
|
http
|
|
.post(device.dropArea, { device1Area: value, orgId, filterField: 'DEVICE_AREA' })
|
|
.then((res) => {
|
|
targetOption.loading = false;
|
|
targetOption.children = res.data?.map((item) => {
|
|
return { label: item, value: item, children: [], isLeaf: true };
|
|
});
|
|
});
|
|
}
|
|
},
|
|
},
|
|
},
|
|
{
|
|
field: 'manufacturer',
|
|
label: '设备厂商',
|
|
component: 'NsSelectApi',
|
|
componentProps: {
|
|
placeholder: '请选择设备厂商',
|
|
api: (params) => {
|
|
return http.post(device.dropArea, params).then((res) => {
|
|
const result = res.data?.reduce((pre, cur) => {
|
|
!pre.includes(cur.manufacturer) && pre.push(cur.manufacturer);
|
|
return pre;
|
|
}, []);
|
|
return { data: result };
|
|
});
|
|
},
|
|
resultField: 'data',
|
|
params: { orgId, filterField: 'DEVICE_NAME_FACTORY' },
|
|
// labelField: 'manufacturer',
|
|
// valueField: 'manufacturer',
|
|
filterOption: (input: string, option: any) => {
|
|
return option.manufacturer.toLowerCase().indexOf(input.toLowerCase()) >= 0;
|
|
},
|
|
showSearch: true,
|
|
immediate: true,
|
|
dropdownReload: true,
|
|
allowClear: true,
|
|
},
|
|
},
|
|
{
|
|
field: 'createTime',
|
|
label: '生产日期',
|
|
component: 'NsRangePicker',
|
|
fieldMap: ['manufactureBeginDate', 'manufactureEndDate'],
|
|
componentProps: {
|
|
valueFormat: 'YYYY-MM-DD',
|
|
placeholder: ['生产开始日期', '生产结束日期'],
|
|
},
|
|
},
|
|
{
|
|
field: 'createTime1',
|
|
label: '采购日期',
|
|
component: 'NsRangePicker',
|
|
fieldMap: ['purchaseBeginDate', 'purchaseEndDate'],
|
|
componentProps: {
|
|
valueFormat: 'YYYY-MM-DD',
|
|
placeholder: ['采购开始日期', '采购结束日期'],
|
|
},
|
|
},
|
|
{
|
|
field: 'createTime2',
|
|
label: '启用日期',
|
|
component: 'NsRangePicker',
|
|
fieldMap: ['startBeginDate', 'startEndDate'],
|
|
componentProps: {
|
|
valueFormat: 'YYYY-MM-DD',
|
|
placeholder: ['启用开始日期', '启用结束日期'],
|
|
},
|
|
},
|
|
],
|
|
params: {},
|
|
},
|
|
// pagination: { pageSizeOptions: false },
|
|
rowKey: 'uuid',
|
|
});
|
|
};
|
|
|