|
|
|
import { dateUtil } from '/nerv-lib/util/date-util';
|
|
|
|
import data from './mock.json';
|
|
|
|
import { http } from '/nerv-lib/util';
|
|
|
|
import { ref } from 'vue';
|
|
|
|
import { group } from '/@/api/deviceManage';
|
|
|
|
import { dict } from '/@/api';
|
|
|
|
const tableKeyMap = [
|
|
|
|
{
|
|
|
|
title: '来源企业',
|
|
|
|
dataIndex: 'id',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '设备id',
|
|
|
|
dataIndex: 'deviceCode',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '设备编号',
|
|
|
|
dataIndex: 'deviceName',
|
|
|
|
textNumber: 8,
|
|
|
|
textEllipsis: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '分组名称',
|
|
|
|
dataIndex: 'position',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '设备品牌/型号',
|
|
|
|
dataIndex: 'position',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '设备状态',
|
|
|
|
dataIndex: 'position',
|
|
|
|
},
|
|
|
|
];
|
|
|
|
const tableCalKeyMap = [
|
|
|
|
{
|
|
|
|
title: '来源企业',
|
|
|
|
dataIndex: 'id',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '节点编号',
|
|
|
|
dataIndex: 'deviceName',
|
|
|
|
textNumber: 8,
|
|
|
|
textEllipsis: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
title: '节点路径',
|
|
|
|
dataIndex: 'position',
|
|
|
|
},
|
|
|
|
];
|
|
|
|
const doWnload = (url) => {
|
|
|
|
const a = document.createElement('a');
|
|
|
|
document.body.appendChild(a);
|
|
|
|
a.href = encodeURI(url);
|
|
|
|
//设置下载的文件名
|
|
|
|
// a.download = fileName.value;
|
|
|
|
//触发a标签的点击事件,进行下载
|
|
|
|
a.click();
|
|
|
|
};
|
|
|
|
|
|
|
|
const mockData = ref(data.listData);
|
|
|
|
export const formSchema = [
|
|
|
|
{
|
|
|
|
field: 'isCreate',
|
|
|
|
component: 'NsCheck',
|
|
|
|
show: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'isCreatSon',
|
|
|
|
component: 'NsCheck',
|
|
|
|
show: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'orgId',
|
|
|
|
component: 'NsInput',
|
|
|
|
show: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'id',
|
|
|
|
component: 'NsInput',
|
|
|
|
show: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'pid',
|
|
|
|
component: 'NsInput',
|
|
|
|
show: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: '节点名称',
|
|
|
|
field: 'pointName',
|
|
|
|
component: 'NsInput',
|
|
|
|
componentProps: {
|
|
|
|
placeholder: '请输入节点名称(必填)',
|
|
|
|
},
|
|
|
|
rules: [
|
|
|
|
{
|
|
|
|
required: true,
|
|
|
|
message: '请输入节点名称',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: '节点类型',
|
|
|
|
field: 'pointType',
|
|
|
|
component: 'NsSelectApi',
|
|
|
|
componentProps: {
|
|
|
|
placeholder: '请选择节点类型(必填)',
|
|
|
|
api: () => dict({ params: { dicKey: 'COUNT_POINT' } }),
|
|
|
|
// params: { dicKey: 'COUNT_POINT' },
|
|
|
|
immediate: true,
|
|
|
|
// resultField: 'data.COUNT_POINT',
|
|
|
|
labelField: 'cnValue',
|
|
|
|
valueField: 'cnValue',
|
|
|
|
},
|
|
|
|
rules: [
|
|
|
|
{
|
|
|
|
required: true,
|
|
|
|
message: '请输入节点类型',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
];
|
|
|
|
export const treeConfig = (orgId) => {
|
|
|
|
return {
|
|
|
|
defaultExpandAll: true,
|
|
|
|
header: {
|
|
|
|
icon: 'orgLink',
|
|
|
|
title: '能耗分组',
|
|
|
|
},
|
|
|
|
params: { orgId },
|
|
|
|
showLine: { showLeafIcon: false },
|
|
|
|
api: group.queryDeviceGroupTree,
|
|
|
|
// api: () => {
|
|
|
|
// return new Promise((resolve) => {
|
|
|
|
// setTimeout(() => {
|
|
|
|
// resolve({ data: [{ title: '全部', key: 'all', children: data.data }] });
|
|
|
|
// }, 100);
|
|
|
|
// });
|
|
|
|
// },
|
|
|
|
transform: (data) => {
|
|
|
|
return [{ pointName: '全部', id: 'all', selectable: false, children: data }];
|
|
|
|
},
|
|
|
|
formConfig: {
|
|
|
|
schemas: [
|
|
|
|
{
|
|
|
|
field: 'energyType',
|
|
|
|
label: '',
|
|
|
|
component: 'NsSelectApi',
|
|
|
|
autoSubmit: true,
|
|
|
|
componentProps: {
|
|
|
|
api: () => dict({ params: { dicKey: 'ENERGY_TYPE' } }),
|
|
|
|
// params: { dicKey: 'ENERGY_TYPE' },
|
|
|
|
immediate: true,
|
|
|
|
// resultField: 'data.ENERGY_TYPE',
|
|
|
|
labelField: 'cnValue',
|
|
|
|
valueField: 'cnValue',
|
|
|
|
placeholder: '请选择能耗种类',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'pointName',
|
|
|
|
label: '',
|
|
|
|
component: 'NsInput',
|
|
|
|
autoSubmit: true,
|
|
|
|
componentProps: {
|
|
|
|
placeholder: '请输入节点名称',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
};
|
|
|
|
};
|
|
|
|
export const tableConfig = (el, elGroup, elFormula) => {
|
|
|
|
return {
|
|
|
|
title: '点位信息',
|
|
|
|
// api: '/carbon_emission/device/getDeviceList',
|
|
|
|
value: mockData.value,
|
|
|
|
|
|
|
|
headerActions: [
|
|
|
|
{
|
|
|
|
label: '编辑',
|
|
|
|
name: 'groupEdit',
|
|
|
|
type: 'primary',
|
|
|
|
handle: (a, b) => {
|
|
|
|
el.value.toggle();
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: '批量删除',
|
|
|
|
name: 'groupTemDownload',
|
|
|
|
type: 'primary',
|
|
|
|
dynamicDisabled: (data: any) => {
|
|
|
|
return data.list.length === 0;
|
|
|
|
},
|
|
|
|
handle: () => {
|
|
|
|
mockData.value.splice(0, 2);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: '批量导出',
|
|
|
|
name: 'groupExports',
|
|
|
|
type: 'primary',
|
|
|
|
dynamicDisabled: (data: any) => {
|
|
|
|
return data.list.length === 0;
|
|
|
|
},
|
|
|
|
extra: {
|
|
|
|
xlsxMap: tableKeyMap,
|
|
|
|
xlsxName: '分组信息YYYY-MM-DD',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: '批量导入',
|
|
|
|
name: 'groupImport',
|
|
|
|
type: 'primary',
|
|
|
|
extra: {
|
|
|
|
// api: props.postImportApi, // 导入接口名
|
|
|
|
title: '设备信息', // 弹窗title
|
|
|
|
templateName: 'whiteListUser', // 所使用的文件名称
|
|
|
|
indexName: '设备id', // 匹配类型字段
|
|
|
|
message: [
|
|
|
|
{ label: '1、若必填项未填写,则不能进行导入操作' },
|
|
|
|
{ label: `2、当重复时,则更新数据。` },
|
|
|
|
{ label: '3、数据将从模版的第五行进行导入。' },
|
|
|
|
{ label: '4、文件导入勿超过5MB。' },
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
label: '模板下载',
|
|
|
|
name: 'groupTemDownload',
|
|
|
|
type: 'primary',
|
|
|
|
handle: () => {
|
|
|
|
// http.get('/asset/file/whiteListUser.xlsx');
|
|
|
|
doWnload('/hx-ai-intelligent/asset/file/whiteListUser.xlsx');
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
label: '批量分组',
|
|
|
|
name: 'groupTemDownload',
|
|
|
|
type: 'primary',
|
|
|
|
handle: () => {
|
|
|
|
elGroup.value.toggle();
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: '公式编辑',
|
|
|
|
name: 'groupTemDownload',
|
|
|
|
type: 'primary',
|
|
|
|
handle: () => {
|
|
|
|
elFormula.value.toggle();
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
columns: tableKeyMap,
|
|
|
|
columnActions: {
|
|
|
|
title: '操作',
|
|
|
|
actions: [
|
|
|
|
{
|
|
|
|
label: '删除',
|
|
|
|
name: 'FeedBackDetail',
|
|
|
|
dynamicParams: ['uuid', 'appealType'],
|
|
|
|
confirm: true,
|
|
|
|
handle: () => {
|
|
|
|
mockData.value.splice(0, 1);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
|
|
|
|
formConfig: {
|
|
|
|
schemas: [
|
|
|
|
{
|
|
|
|
field: 'name',
|
|
|
|
label: '设备名称',
|
|
|
|
component: 'NsInput',
|
|
|
|
componentProps: {
|
|
|
|
placeholder: '请输入',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'provider',
|
|
|
|
label: '设备厂商',
|
|
|
|
component: 'NsInput',
|
|
|
|
componentProps: {
|
|
|
|
placeholder: '请输入',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'payWay',
|
|
|
|
label: '设备区域',
|
|
|
|
component: 'NsSelect',
|
|
|
|
componentProps: {
|
|
|
|
placeholder: '请选择',
|
|
|
|
options: [
|
|
|
|
{
|
|
|
|
label: '全部',
|
|
|
|
value: '',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'createTime',
|
|
|
|
label: '生产日期',
|
|
|
|
component: 'NsRangePicker',
|
|
|
|
fieldMap: ['queryStartDate', 'queryEndDate'],
|
|
|
|
componentProps: {
|
|
|
|
valueFormat: 'YYYY-MM-DD',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'createTime1',
|
|
|
|
label: '采购日期',
|
|
|
|
component: 'NsRangePicker',
|
|
|
|
fieldMap: ['queryStartDate', 'queryEndDate'],
|
|
|
|
componentProps: {
|
|
|
|
valueFormat: 'YYYY-MM-DD',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'createTime2',
|
|
|
|
label: '启用日期',
|
|
|
|
component: 'NsRangePicker',
|
|
|
|
fieldMap: ['queryStartDate', 'queryEndDate'],
|
|
|
|
componentProps: {
|
|
|
|
valueFormat: 'YYYY-MM-DD',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
// pagination: { pageSizeOptions: false },
|
|
|
|
rowKey: 'id',
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
export const tableConfigCal = (el, elGroup, elFormula) => {
|
|
|
|
return {
|
|
|
|
title: '点位信息',
|
|
|
|
// api: '/carbon_emission/device/getDeviceList',
|
|
|
|
value: mockData.value,
|
|
|
|
|
|
|
|
headerActions: [
|
|
|
|
{
|
|
|
|
label: '编辑',
|
|
|
|
name: 'groupEdit',
|
|
|
|
type: 'primary',
|
|
|
|
handle: (a, b) => {
|
|
|
|
el.value.toggle();
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: '批量删除',
|
|
|
|
name: 'groupTemDownload',
|
|
|
|
type: 'primary',
|
|
|
|
dynamicDisabled: (data: any) => {
|
|
|
|
return data.list.length === 0;
|
|
|
|
},
|
|
|
|
handle: () => {
|
|
|
|
mockData.value.splice(0, 2);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: '批量导出',
|
|
|
|
name: 'groupExports',
|
|
|
|
type: 'primary',
|
|
|
|
dynamicDisabled: (data: any) => {
|
|
|
|
return data.list.length === 0;
|
|
|
|
},
|
|
|
|
extra: {
|
|
|
|
xlsxMap: tableKeyMap,
|
|
|
|
xlsxName: '分组信息YYYY-MM-DD',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: '批量导入',
|
|
|
|
name: 'groupImport',
|
|
|
|
type: 'primary',
|
|
|
|
extra: {
|
|
|
|
// api: props.postImportApi, // 导入接口名
|
|
|
|
title: '设备信息', // 弹窗title
|
|
|
|
templateName: 'whiteListUser', // 所使用的文件名称
|
|
|
|
indexName: '设备id', // 匹配类型字段
|
|
|
|
message: [
|
|
|
|
{ label: '1、若必填项未填写,则不能进行导入操作' },
|
|
|
|
{ label: `2、当重复时,则更新数据。` },
|
|
|
|
{ label: '3、数据将从模版的第五行进行导入。' },
|
|
|
|
{ label: '4、文件导入勿超过5MB。' },
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
label: '模板下载',
|
|
|
|
name: 'groupTemDownload',
|
|
|
|
type: 'primary',
|
|
|
|
handle: () => {
|
|
|
|
// http.get('/asset/file/whiteListUser.xlsx');
|
|
|
|
doWnload('/hx-ai-intelligent/asset/file/whiteListUser.xlsx');
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
columns: tableCalKeyMap,
|
|
|
|
columnActions: {
|
|
|
|
title: '操作',
|
|
|
|
actions: [
|
|
|
|
{
|
|
|
|
label: '删除',
|
|
|
|
name: 'FeedBackDetail',
|
|
|
|
dynamicParams: ['uuid', 'appealType'],
|
|
|
|
confirm: true,
|
|
|
|
handle: () => {
|
|
|
|
mockData.value.splice(0, 1);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
|
|
|
|
formConfig: {
|
|
|
|
schemas: [
|
|
|
|
{
|
|
|
|
field: 'name',
|
|
|
|
label: '设备名称',
|
|
|
|
component: 'NsInput',
|
|
|
|
componentProps: {
|
|
|
|
placeholder: '请选择公司',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
field: 'provider',
|
|
|
|
component: 'NsInput',
|
|
|
|
componentProps: {
|
|
|
|
placeholder: '请输入节点编号',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
// pagination: { pageSizeOptions: false },
|
|
|
|
rowKey: 'id',
|
|
|
|
};
|
|
|
|
};
|