11 changed files with 2541 additions and 0 deletions
-
20src/api/cdc/collect.js
-
9src/api/cdc/device.js
-
2src/main.js
-
6src/utils/system.js
-
725src/views/modules/cdc/collect.vue
-
303src/views/modules/cdc/collect/collectError.vue
-
334src/views/modules/cdc/collectHistory.vue
-
250src/views/modules/cdc/collectRecord.vue
-
425src/views/modules/cdc/device.vue
-
299src/views/modules/quotation/sellForQuotation/customerContact.vue
-
168src/views/modules/quotation/sellForQuotation/customerInfo.vue
@ -0,0 +1,20 @@ |
|||
import {createAPI} from "../../utils/httpRequest"; |
|||
|
|||
export const selectCollectList = (data)=>createAPI(`/collect/info/list`,'post',data) |
|||
|
|||
export const saveCollect = (data)=>createAPI(`/collect/info/save`,'post',data) |
|||
|
|||
export const removeCollect = (data)=>createAPI(`/collect/info/remove`,'post',data) |
|||
|
|||
export const editCollect = (data)=>createAPI(`/collect/info/edit`,'post',data) |
|||
export const selectCollectListDetail = (data)=>createAPI(`/collect/detail/list`,'post',data) |
|||
|
|||
export const saveCollectDetail = (data)=>createAPI(`/collect/detail/save`,'post',data) |
|||
|
|||
export const removeCollectDetail = (data)=>createAPI(`/collect/detail/remove`,'post',data) |
|||
|
|||
export const editCollectDetail = (data)=>createAPI(`/collect/detail/edit`,'post',data) |
|||
|
|||
export const selectCollectRecordList = (data)=>createAPI(`/collect/record/list`,'post',data) |
|||
export const selectCollectHistoryList = (data)=>createAPI(`/collect/history/list`,'post',data) |
|||
export const selectCollectHistoryDetailList = (data)=>createAPI(`/collect/history/detail/list`,'post',data) |
|||
@ -0,0 +1,9 @@ |
|||
import {createAPI} from "../../utils/httpRequest"; |
|||
|
|||
export const selectDeviceList = (data)=>createAPI(`/device/info/list`,'post',data) |
|||
|
|||
export const saveDevice = (data)=>createAPI(`/device/info/save`,'post',data) |
|||
|
|||
export const removeDevice = (data)=>createAPI(`/device/info/remove`,'post',data) |
|||
|
|||
export const editDevice = (data)=>createAPI(`/device/info/edit`,'post',data) |
|||
@ -0,0 +1,6 @@ |
|||
// 表单重置
|
|||
export function resetForm(refName) { |
|||
if (this.$refs[refName]) { |
|||
this.$refs[refName].resetFields(); |
|||
} |
|||
} |
|||
@ -0,0 +1,725 @@ |
|||
<script> |
|||
import { |
|||
selectCollectList, |
|||
editCollect, |
|||
removeCollect, |
|||
saveCollect, |
|||
selectCollectListDetail |
|||
} from "../../../api/cdc/collect"; |
|||
import dayjs from "dayjs"; |
|||
import CollectError from "./collect/collectError.vue"; |
|||
|
|||
const tableId = "2000002" |
|||
const tableName = "采集数据定义" |
|||
const table1 = "2000002Table1" |
|||
const table2 = "2000002Table2" |
|||
const table3 = "2000002Table3" |
|||
export default { |
|||
name: "collect", |
|||
components: {CollectError}, |
|||
props:{ |
|||
height:{ |
|||
type:Number, |
|||
default:700 |
|||
}, |
|||
component:{ |
|||
type:Boolean, |
|||
default: false |
|||
} |
|||
}, |
|||
data(){ |
|||
return{ |
|||
// 异常预警弹出层 |
|||
errorVisible: false, |
|||
// 遮罩层 |
|||
loading: true, |
|||
// 设备信息表格数据 |
|||
infoList: [], |
|||
// 弹出层标题 |
|||
title: tableName, |
|||
// 是否显示弹出层 |
|||
open: false, |
|||
// 查询参数 |
|||
queryParams: { |
|||
collectId: '', |
|||
collectDesc: null, |
|||
active: "", |
|||
}, |
|||
// 表单参数 |
|||
form: {}, |
|||
// 表单校验 |
|||
rules: { |
|||
collectDesc: [ |
|||
{ required: true, message: "数据标识描述不能为空", trigger: "blur" } |
|||
], |
|||
collectId: [ |
|||
{ required: true, message: "数据标识ID不能为空", trigger: "blur" } |
|||
], |
|||
maxValue: [ |
|||
{ required: true, message: "上限值不能为空", trigger: "blur" } |
|||
], |
|||
minValue: [ |
|||
{ required: true, message: "下限值不能为空", trigger: "blur" } |
|||
], |
|||
}, |
|||
deviceColumns:[ |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CollectId`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'collectId', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '数据标识ID', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CollectDesc`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'collectDesc', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '数据标识描述', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}MaxValue`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'maxValue', |
|||
headerAlign: 'center', |
|||
align: 'right', |
|||
columnLabel: '上限值', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}MinValue`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'minValue', |
|||
headerAlign: 'center', |
|||
align: 'right', |
|||
columnLabel: '下限值', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}PhoneInfoFlag`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'phoneInfoFlag', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '短信预警', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}MailInfoFlag`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'mailInfoFlag', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '邮箱预警', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}Remark`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'remark', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '备注', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 140 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}Active`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'active', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '在用', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
}, |
|||
], |
|||
// 异常预警 header |
|||
header:{}, |
|||
detailList:[], |
|||
|
|||
mailColumns:[ |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table2}Username`, |
|||
tableId: table2, |
|||
tableName: tableName, |
|||
columnProp: 'username', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '人员', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table2}itemValue`, |
|||
tableId: table2, |
|||
tableName: tableName, |
|||
columnProp: 'itemValue', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '邮箱', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table2}Active`, |
|||
tableId: table2, |
|||
tableName: tableName, |
|||
columnProp: 'active', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '在用', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table2}CreateBy`, |
|||
tableId: table2, |
|||
tableName: tableName, |
|||
columnProp: 'createBy', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '创建人', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table2}CreateTime`, |
|||
tableId: table2, |
|||
tableName: tableName, |
|||
columnProp: 'createTime', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '创建时间', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table2}UpdateBy`, |
|||
tableId: table2, |
|||
tableName: tableName, |
|||
columnProp: 'updateBy', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '修改人', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table2}UpdateTime`, |
|||
tableId: table2, |
|||
tableName: tableName, |
|||
columnProp: 'updateTime', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '修改时间', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
}, |
|||
], |
|||
phoneColumns:[ |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table3}Username`, |
|||
tableId: table3, |
|||
tableName: tableName, |
|||
columnProp: 'username', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '人员', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table3}itemValue`, |
|||
tableId: table3, |
|||
tableName: tableName, |
|||
columnProp: 'itemValue', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '手机号', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table3}Active`, |
|||
tableId: table3, |
|||
tableName: tableName, |
|||
columnProp: 'active', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '在用', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table3}CreateBy`, |
|||
tableId: table3, |
|||
tableName: tableName, |
|||
columnProp: 'createBy', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '创建人', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table3}CreateTime`, |
|||
tableId: table3, |
|||
tableName: tableName, |
|||
columnProp: 'createTime', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '创建时间', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table3}UpdateBy`, |
|||
tableId: table3, |
|||
tableName: tableName, |
|||
columnProp: 'updateBy', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '修改人', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table3}UpdateTime`, |
|||
tableId: table3, |
|||
tableName: tableName, |
|||
columnProp: 'updateTime', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '修改时间', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
}, |
|||
], |
|||
} |
|||
}, |
|||
methods:{ |
|||
/** 查询设备信息列表 */ |
|||
getList() { |
|||
let params = { |
|||
...this.queryParams, |
|||
site:this.$store.state.user.site |
|||
} |
|||
this.loading = true; |
|||
selectCollectList(params).then(({data}) => { |
|||
if (data && data.code === 0){ |
|||
this.infoList = data.rows; |
|||
} |
|||
this.loading = false; |
|||
}).catch(() => { |
|||
this.loading = false; |
|||
}); |
|||
}, |
|||
// 取消按钮 |
|||
cancel() { |
|||
this.open = false; |
|||
this.reset(); |
|||
}, |
|||
// 表单重置 |
|||
reset() { |
|||
this.form = { |
|||
collectId: '', |
|||
site: null, |
|||
collectDesc: null, |
|||
minValue: null, |
|||
maxValue: null, |
|||
phoneInfoFlag: 'N', |
|||
mailInfoFlag: 'N', |
|||
remark: null, |
|||
active: 'Y', |
|||
createBy: null, |
|||
createTime: null |
|||
}; |
|||
this.resetForm("form"); |
|||
}, |
|||
/** 搜索按钮操作 */ |
|||
handleQuery() { |
|||
this.getList(); |
|||
}, |
|||
/** 新增按钮操作 */ |
|||
handleAdd() { |
|||
this.reset(); |
|||
this.open = true; |
|||
}, |
|||
/** 修改按钮操作 */ |
|||
handleUpdate(row) { |
|||
this.reset(); |
|||
this.form = {...row} |
|||
this.form.newCollectId = this.form.collectId; |
|||
this.open = true; |
|||
}, |
|||
/** 提交按钮 */ |
|||
submitForm() { |
|||
this.$refs["form"].validate((valid,obj) => { |
|||
if (valid) { |
|||
if (!this.form.newCollectId) { |
|||
this.form.site = this.$store.state.user.site; |
|||
this.form.createBy = this.$store.state.user.name; |
|||
this.form.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss"); |
|||
saveCollect(this.form).then(({data}) => { |
|||
this.form.site = null; |
|||
if (data && data.code === 0){ |
|||
this.$message.success(data.msg); |
|||
this.open = false; |
|||
this.getList(); |
|||
}else { |
|||
this.$message.warning(data.msg); |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error); |
|||
}); |
|||
} else { |
|||
editCollect(this.form).then(({data}) => { |
|||
if (data && data.code === 0){ |
|||
this.$message.success(data.msg); |
|||
this.open = false; |
|||
this.getList(); |
|||
}else { |
|||
this.$message.warning(data.msg); |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error); |
|||
}); |
|||
} |
|||
}else { |
|||
Object.keys(obj).forEach((key)=>{ |
|||
this.$message.warning(obj[key][0].message); |
|||
return |
|||
}) |
|||
} |
|||
}); |
|||
}, |
|||
handleDelete(row) { |
|||
this.$confirm('此操作将永久删除该数据标识, 是否继续?', '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(() => { |
|||
removeCollect(row).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.$message.success(data.msg); |
|||
this.getList(); |
|||
}else { |
|||
this.$message.success(data.msg); |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error); |
|||
}) |
|||
}).catch(() => { |
|||
}); |
|||
}, |
|||
handleError(row){ |
|||
this.header = {...row} |
|||
this.getDetailList(); |
|||
this.errorVisible = true; |
|||
}, |
|||
getDetailList(){ |
|||
this.detailList = []; |
|||
selectCollectListDetail(this.header).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.detailList = data.rows; |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
computed:{ |
|||
mailList:{ |
|||
get(){ |
|||
return this.detailList.filter(item => item.type === 'mail') |
|||
} |
|||
}, |
|||
phoneList: { |
|||
get() { |
|||
return this.detailList.filter(item => item.type === 'phone') |
|||
} |
|||
} |
|||
}, |
|||
watch:{ |
|||
"queryParams.collectId"(newVal, oldVal){ |
|||
this.queryParams.collectId = newVal.toUpperCase(); |
|||
}, |
|||
"form.collectId"(newVal, oldVal){ |
|||
this.form.collectId = newVal.toUpperCase(); |
|||
}, |
|||
}, |
|||
created() { |
|||
this.getList(); |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<div class="app-container"> |
|||
<el-form :model="queryParams" label-position="top" ref="queryForm" :inline="true" label-width="68px"> |
|||
<el-form-item label="数据标识ID" prop="collectId"> |
|||
<el-input |
|||
v-model="queryParams.collectId" |
|||
placeholder=" " |
|||
clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="数据标识描述" prop="collectDesc"> |
|||
<el-input |
|||
v-model="queryParams.collectDesc" |
|||
placeholder=" " |
|||
clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="在用" prop="active"> |
|||
<el-select v-model="queryParams.active" placeholder="请选择在用" > |
|||
<el-option label="全部" value=""/> |
|||
<el-option label="在用" value="Y"/> |
|||
<el-option label="停用" value="N"/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label=" "> |
|||
<el-button type="primary" @click="handleQuery" plain>查询</el-button> |
|||
<el-button type="primary" @click="handleAdd" v-if="!component">新增</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="loading" border :data="infoList" :height="height"> |
|||
<el-table-column label="操作" align="center" v-if="!component"> |
|||
<template slot-scope="scope"> |
|||
<el-link @click="handleUpdate(scope.row)">编辑</el-link> |
|||
<el-link @click="handleDelete(scope.row)">删除</el-link> |
|||
<el-link @click="handleError(scope.row)">异常预警</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
v-for="(item,index) in deviceColumns" :key="index" |
|||
:sortable="item.columnSortable" |
|||
:prop="item.columnProp" |
|||
:header-align="item.headerAlign" |
|||
:show-overflow-tooltip="item.showOverflowTooltip" |
|||
:align="item.align" |
|||
:fixed="item.fixed === ''?false:item.fixed" |
|||
:min-width="item.columnWidth" |
|||
:label="item.columnLabel"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> |
|||
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
<!-- 添加或修改设备信息对话框 --> |
|||
<el-dialog :title="title" v-if="!component" v-drag :visible.sync="open" width="600px" append-to-body> |
|||
<el-form ref="form" label-position="top" :model="form" :rules="rules" label-width="80px"> |
|||
<el-row :gutter="10"> |
|||
<el-col :span="6"> |
|||
<el-form-item label="数据标识ID" prop="collectId" :show-message="false"> |
|||
<el-input v-model="form.collectId" :disabled="form.newCollectId" placeholder=" " /> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="14"> |
|||
<el-form-item label="数据标识描述" prop="collectDesc" :show-message="false"> |
|||
<el-input v-model="form.collectDesc" placeholder=" " /> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="4"> |
|||
<el-form-item label=" " prop="phoneInfoFlag" :show-message="false"> |
|||
<el-checkbox v-model="form.phoneInfoFlag" true-label="Y" false-label="N">短信预警</el-checkbox> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="上限值" prop="maxValue" :show-message="false"> |
|||
<el-input-number :controls="false" :step="0" v-model="form.maxValue" placeholder=" " /> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="下限值" prop="minValue" :show-message="false"> |
|||
<el-input-number :controls="false" :step="0" v-model="form.minValue" placeholder=" " /> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6" :offset="2"> |
|||
<el-form-item label=" " prop="active" :show-message="false"> |
|||
<el-checkbox v-model="form.active" true-label="Y" false-label="N">在用</el-checkbox> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="4"> |
|||
<el-form-item label=" " prop="mailInfoFlag" :show-message="false"> |
|||
<el-checkbox v-model="form.mailInfoFlag" true-label="Y" false-label="N">邮箱预警</el-checkbox> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="24"> |
|||
<el-form-item label="备注" prop="remark" :show-message="false"> |
|||
<el-input v-model="form.remark"></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button type="primary" @click="submitForm">确 定</el-button> |
|||
<el-button @click="cancel">取 消</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
|
|||
<collect-error v-if="errorVisible" |
|||
:visible.sync="errorVisible" |
|||
:collect="header" |
|||
:mail-data-list="mailList" :mail-columns="mailColumns" |
|||
:phone-data-list="phoneList" :phone-columns="phoneColumns" |
|||
@refresh="getDetailList"></collect-error> |
|||
</div> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
</style> |
|||
@ -0,0 +1,303 @@ |
|||
<script> |
|||
import { |
|||
selectCollectListDetail, |
|||
editCollectDetail, |
|||
removeCollectDetail, |
|||
saveCollectDetail, |
|||
removeCollect |
|||
} from "../../../../api/cdc/collect"; |
|||
export default { |
|||
name: "collectError", |
|||
props:{ |
|||
collect:{ |
|||
type: Object, |
|||
default: () => {}, |
|||
}, |
|||
phoneColumns:{ |
|||
type:Array, |
|||
default: () => [], |
|||
}, |
|||
phoneDataList:{ |
|||
type:Array, |
|||
default: () => [], |
|||
}, |
|||
mailColumns:{ |
|||
type:Array, |
|||
default: () => [], |
|||
}, |
|||
mailDataList:{ |
|||
type:Array, |
|||
default: () => [], |
|||
}, |
|||
visible:{ |
|||
type:Boolean, |
|||
default: false, |
|||
}, |
|||
height:{ |
|||
type:Number, |
|||
default: 400, |
|||
} |
|||
}, |
|||
data(){ |
|||
return{ |
|||
active:'mail', |
|||
title:'', |
|||
// 表单参数 |
|||
form: {}, |
|||
// 是否显示弹出层 |
|||
open: false, |
|||
// 表单校验 |
|||
rules: { |
|||
username: [ |
|||
{ required: true, message: "人员不能为空", trigger: "blur" } |
|||
], |
|||
itemValue: [ |
|||
{ required: true, message: "不能为空", trigger: "blur" } |
|||
], |
|||
}, |
|||
} |
|||
}, |
|||
methods:{ |
|||
handleBeforeClose(done){ |
|||
this.$emit("update:visible",false); |
|||
done(); |
|||
}, |
|||
handleAdd(type){ |
|||
if(type === 'phone') { |
|||
this.title = '短信'; |
|||
}else { |
|||
this.title = '邮件'; |
|||
} |
|||
this.reset(); |
|||
this.form.type = type; |
|||
this.open = true; |
|||
}, |
|||
// 表单重置 |
|||
reset() { |
|||
this.form = { |
|||
type: null, |
|||
collectId: this.collect.collectId, |
|||
site:this.collect.site, |
|||
username: null, |
|||
active: 'Y', |
|||
itemNo: null, |
|||
itemValue: null, |
|||
createBy: null, |
|||
createTime: null, |
|||
updateBy: null, |
|||
updateTime: null, |
|||
} |
|||
this.resetForm("form"); |
|||
}, |
|||
// 取消按钮 |
|||
cancel() { |
|||
this.open = false; |
|||
this.reset(); |
|||
}, |
|||
submitForm(){ |
|||
this.$refs.form.validate((valid,obj)=>{ |
|||
if (valid){ |
|||
if (!this.form.itemNo){ |
|||
this.form.createBy = this.$store.state.user.name; |
|||
saveCollectDetail(this.form).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.$emit("refresh") |
|||
this.open = false; |
|||
this.$message.success(data.msg) |
|||
}else { |
|||
this.$message.warning(data.msg) |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error) |
|||
}) |
|||
}else { |
|||
this.form.updateBy = this.$store.state.user.name; |
|||
editCollectDetail(this.form).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.$emit("refresh") |
|||
this.open = false; |
|||
this.$message.success(data.msg) |
|||
}else { |
|||
this.$message.warning(data.msg) |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error) |
|||
}) |
|||
} |
|||
}else { |
|||
Object.keys(obj).forEach(key => { |
|||
let msg = obj[key][0].message; |
|||
if (key === 'itemValue'){ |
|||
msg = (this.title==='短信'?'手机号':'邮箱') + msg |
|||
} |
|||
this.$message.warning(msg) |
|||
return |
|||
}); |
|||
} |
|||
}) |
|||
}, |
|||
handleUpdate(row){ |
|||
this.reset(); |
|||
this.form = {...row} |
|||
this.open = true; |
|||
}, |
|||
handleDelete(row) { |
|||
this.$confirm('此操作将永久删除, 是否继续?', '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(() => { |
|||
removeCollectDetail(row).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.$emit("refresh") |
|||
this.$message.success(data.msg); |
|||
}else { |
|||
this.$message.success(data.msg); |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error); |
|||
}) |
|||
}).catch(() => { |
|||
}); |
|||
}, |
|||
handleRefresh(){ |
|||
this.$emit("refresh") |
|||
} |
|||
}, |
|||
created() { |
|||
this.active = this.collect.mailInfoFlag === 'Y'?'mail' : 'phone'; |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<div> |
|||
<el-dialog title="预警配置" :visible.sync="visible" append-to-body :before-close="handleBeforeClose" width="1100px" v-drag> |
|||
<el-form label-position="top"> |
|||
<el-row :gutter="10"> |
|||
<el-col :span="4"> |
|||
<el-form-item label="数据标识ID"> |
|||
<el-input disabled v-model="collect.collectId" readonly></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="数据标识描述"> |
|||
<el-input disabled v-model="collect.collectDesc" readonly></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="3"> |
|||
<el-form-item label="上限值"> |
|||
<el-input-number disabled :controls="false" v-model="collect.maxValue" readonly></el-input-number> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="3"> |
|||
<el-form-item label="下限值"> |
|||
<el-input-number disabled :controls="false" v-model="collect.minValue" readonly></el-input-number> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2"> |
|||
<el-form-item label=" " prop="phoneInfoFlag" :show-message="false"> |
|||
<el-checkbox disabled v-model="collect.phoneInfoFlag" true-label="Y" false-label="N">短信预警</el-checkbox> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2"> |
|||
<el-form-item label=" " prop="mailInfoFlag" :show-message="false"> |
|||
<el-checkbox disabled v-model="collect.mailInfoFlag" true-label="Y" false-label="N">邮箱预警</el-checkbox> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="2" > |
|||
<el-form-item label=" " :show-message="false"> |
|||
<el-button type="primary" @click="handleRefresh">刷新</el-button> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<el-tabs v-model="active" v-if="collect.mailInfoFlag === 'Y' || collect.phoneInfoFlag === 'Y'"> |
|||
<el-tab-pane label="邮件" name="mail" v-if="collect.mailInfoFlag === 'Y'"> |
|||
<el-button size="small" @click="handleAdd('mail')">添加</el-button> |
|||
<el-table :data="mailDataList" border style="margin-top: 5px" :height="height"> |
|||
<el-table-column label="操作" align="center" v-if="!component"> |
|||
<template slot-scope="scope"> |
|||
<el-link @click="handleUpdate(scope.row)">编辑</el-link> |
|||
<el-link @click="handleDelete(scope.row)">删除</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
v-for="(item,index) in mailColumns" :key="index" |
|||
:sortable="item.columnSortable" |
|||
:prop="item.columnProp" |
|||
:header-align="item.headerAlign" |
|||
:show-overflow-tooltip="item.showOverflowTooltip" |
|||
:align="item.align" |
|||
:fixed="item.fixed === ''?false:item.fixed" |
|||
:min-width="item.columnWidth" |
|||
:label="item.columnLabel"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> |
|||
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</el-tab-pane> |
|||
<el-tab-pane label="短信" name="phone" v-if="collect.phoneInfoFlag === 'Y'"> |
|||
<el-button size="small" @click="handleAdd('phone')">添加</el-button> |
|||
<el-table :data="phoneDataList" border style="margin-top: 5px" :height="height"> |
|||
<el-table-column label="操作" align="center" v-if="!component"> |
|||
<template slot-scope="scope"> |
|||
<el-link @click="handleUpdate(scope.row)">编辑</el-link> |
|||
<el-link @click="handleDelete(scope.row)">删除</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
v-for="(item,index) in phoneColumns" :key="index" |
|||
:sortable="item.columnSortable" |
|||
:prop="item.columnProp" |
|||
:header-align="item.headerAlign" |
|||
:show-overflow-tooltip="item.showOverflowTooltip" |
|||
:align="item.align" |
|||
:fixed="item.fixed === ''?false:item.fixed" |
|||
:min-width="item.columnWidth" |
|||
:label="item.columnLabel"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> |
|||
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</el-tab-pane> |
|||
</el-tabs> |
|||
</el-dialog> |
|||
|
|||
<el-dialog :title="`${title}-异常预警`" v-drag append-to-body :visible.sync="open" width="500px" top="25vh"> |
|||
<el-form :model="form" ref="form" :rules="rules" label-position="top"> |
|||
<el-row :gutter="10"> |
|||
<el-col :span="8"> |
|||
<el-form-item label="人员" prop="username" :show-message="false"> |
|||
<el-input v-model="form.username" placeholder=" "></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="10"> |
|||
<el-col :span="16" > |
|||
<el-form-item :label="title==='短信'?'手机号':'邮箱'" prop="itemValue" :show-message="false"> |
|||
<el-input v-model="form.itemValue" placeholder=" "></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<el-form-item label=" " prop="active" :show-message="false"> |
|||
<el-checkbox v-model="form.active" true-label="Y" false-label="N">在用</el-checkbox> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button type="primary" @click="submitForm">确 定</el-button> |
|||
<el-button @click="cancel">取 消</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
@ -0,0 +1,334 @@ |
|||
<script> |
|||
|
|||
import {selectCollectHistoryDetailList, selectCollectHistoryList} from "../../../api/cdc/collect"; |
|||
|
|||
const tableId = "2000004" |
|||
const table1 = tableId + "Table1" |
|||
const tableName = "数据预警历史" |
|||
export default { |
|||
name: "collectRecord", |
|||
props:{ |
|||
height:{ |
|||
type:Number, |
|||
default:700 |
|||
}, |
|||
component:{ |
|||
type:Boolean, |
|||
default:false |
|||
} |
|||
}, |
|||
data(){ |
|||
return{ |
|||
// 遮罩层 |
|||
loading: true, |
|||
// 设备信息表格数据 |
|||
infoList: [], |
|||
// 弹出层标题 |
|||
title: tableName, |
|||
// 是否显示弹出层 |
|||
open: false, |
|||
// 查询参数 |
|||
queryParams: { |
|||
deviceNo: '', |
|||
deviceDesc: null, |
|||
deviceType: "", |
|||
collectType: "", |
|||
startDate: "", |
|||
endDate: "", |
|||
}, |
|||
form:{ |
|||
|
|||
}, |
|||
collectHistoryColumns:[ |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CollectType`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'collectType', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '预警类型', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CreateTime`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'createTime', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '预警时间', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}DeviceNo`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'deviceNo', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '设备号', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}DeviceDesc`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'deviceDesc', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '设备描述', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CollectId`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'collectId', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '数据标识ID', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CollectDesc`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'collectDesc', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '数据标识描述', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}ItemValue`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'itemValue', |
|||
headerAlign: 'center', |
|||
align: 'right', |
|||
columnLabel: '数据实测值', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
}, |
|||
], |
|||
detailList:[], |
|||
} |
|||
}, |
|||
methods:{ |
|||
handleQuery(){ |
|||
let params = { |
|||
...this.queryParams, |
|||
site:this.$store.state.user.site, |
|||
} |
|||
this.loading = true |
|||
this.infoList = [] |
|||
selectCollectHistoryList(params).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.infoList = data.rows |
|||
}else { |
|||
this.$message.warning(data.msg) |
|||
} |
|||
this.loading = false |
|||
}).catch(error=>{ |
|||
this.loading = false |
|||
this.$message.error(error) |
|||
}) |
|||
}, |
|||
handleDetail(row){ |
|||
this.form = {...row} |
|||
let params = { |
|||
...row, |
|||
collectHistoryId: row.itemNo, |
|||
} |
|||
this.detailList = []; |
|||
selectCollectHistoryDetailList(params).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.open = true |
|||
this.detailList = data.rows |
|||
}else { |
|||
this.$message.warning(data.msg) |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error) |
|||
}) |
|||
}, |
|||
}, |
|||
watch:{ |
|||
"queryParams.deviceNo"(newVal, oldVal){ |
|||
this.queryParams.deviceNo = newVal.toUpperCase() |
|||
} |
|||
}, |
|||
created() { |
|||
this.handleQuery(); |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<div class="app-container"> |
|||
<el-form :model="queryParams" label-position="top" ref="queryForm" :inline="true" label-width="68px"> |
|||
<el-form-item label="设备类型" prop="deviceType"> |
|||
<el-select v-model="queryParams.deviceType" placeholder="请选择设备类型" > |
|||
<el-option label="全部" value=""/> |
|||
<el-option label="涂布机器" value="涂布机器"/> |
|||
<el-option label="配胶间设备" value="配胶间设备"/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="设备号" prop="deviceNo"> |
|||
<el-input |
|||
v-model="queryParams.deviceNo" |
|||
placeholder=" " |
|||
clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="设备描述" prop="deviceDesc"> |
|||
<el-input |
|||
v-model="queryParams.deviceDesc" |
|||
style="width: 200px" |
|||
placeholder=" " |
|||
clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="采集日期" prop="startDate"> |
|||
<el-date-picker |
|||
type="date" |
|||
style="width: 100%" |
|||
value-format="yyyy-MM-dd" |
|||
v-model="queryParams.startDate" |
|||
placeholder=" " |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label=" "> |
|||
<i class="el-icon-right"></i> |
|||
</el-form-item> |
|||
<el-form-item label=" " prop="endDate"> |
|||
<el-date-picker |
|||
type="date" |
|||
style="width: 100%" |
|||
v-model="queryParams.endDate" |
|||
value-format="yyyy-MM-dd" |
|||
placeholder=" " |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="预警类型" prop="endDate"> |
|||
<el-select v-model="queryParams.collectType" placeholder=" "> |
|||
<el-option label="全部" value=""/> |
|||
<el-option label="手机短信" value="手机短信"/> |
|||
<el-option label="邮箱" value="邮箱"/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label=" "> |
|||
<el-button type="primary" @click="handleQuery" plain>查询</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="loading" border :data="infoList" :height="height"> |
|||
<el-table-column |
|||
v-for="(item,index) in collectHistoryColumns" :key="index" |
|||
:sortable="item.columnSortable" |
|||
:prop="item.columnProp" |
|||
:header-align="item.headerAlign" |
|||
:show-overflow-tooltip="item.showOverflowTooltip" |
|||
:align="item.align" |
|||
:fixed="item.fixed === ''?false:item.fixed" |
|||
:min-width="item.columnWidth" |
|||
:label="item.columnLabel"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> |
|||
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="操作" width="100" align="center"> |
|||
<template slot-scope="scope"> |
|||
<el-link @click="handleDetail(scope.row)">人员</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
<el-dialog :title="title+'-人员'" v-drag :visible.sync="open" width="600px"> |
|||
<el-form :model="form" label-position="top" ref="form"> |
|||
<el-row :gutter="10"> |
|||
<el-col :span="5"> |
|||
<el-form-item label="数据标识ID"> |
|||
<el-input v-model="form.collectId" disabled></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="9"> |
|||
<el-form-item label="数据标识描述"> |
|||
<el-input v-model="form.collectDesc" disabled></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="5"> |
|||
<el-form-item label="上限值"> |
|||
<el-input-number :controls="false" v-model="form.maxValue" disabled></el-input-number> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="5"> |
|||
<el-form-item label="下限值"> |
|||
<el-input-number :controls="false" v-model="form.minValue" disabled></el-input-number> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<el-table :data="detailList" border :height="300"> |
|||
<el-table-column label="人员" min-width="100" header-align="center" align="left" prop="username"></el-table-column> |
|||
<el-table-column label="邮件/手机号" min-width="200" header-align="center" align="left" prop="itemValue"></el-table-column> |
|||
<el-table-column label="类型" min-width="100" header-align="center" align="left" prop="collectType"></el-table-column> |
|||
</el-table> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
@ -0,0 +1,250 @@ |
|||
<script> |
|||
|
|||
import {selectCollectRecordList} from "../../../api/cdc/collect"; |
|||
|
|||
const tableId = "2000003" |
|||
const table1 = tableId + "Table1" |
|||
const tableName = "数据采集历史" |
|||
export default { |
|||
name: "collectRecord", |
|||
props:{ |
|||
height:{ |
|||
type:Number, |
|||
default:700 |
|||
}, |
|||
component:{ |
|||
type:Boolean, |
|||
default:false |
|||
} |
|||
}, |
|||
data(){ |
|||
return{ |
|||
// 遮罩层 |
|||
loading: true, |
|||
// 设备信息表格数据 |
|||
infoList: [], |
|||
// 弹出层标题 |
|||
title: "数据采集历史", |
|||
// 是否显示弹出层 |
|||
open: false, |
|||
// 查询参数 |
|||
queryParams: { |
|||
deviceNo: '', |
|||
deviceDesc: null, |
|||
deviceType: "", |
|||
startDate: "", |
|||
endDate: "", |
|||
}, |
|||
|
|||
collectRecordColumns:[ |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CreateTime`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'createTime', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '录入时间', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}DeviceNo`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'deviceNo', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '设备号', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}DeviceDesc`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'deviceDesc', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '设备描述', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CollectId`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'collectId', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '数据标识ID', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CollectDesc`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'collectDesc', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '数据标识描述', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}ItemValue`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'itemValue', |
|||
headerAlign: 'center', |
|||
align: 'right', |
|||
columnLabel: '数据实测值', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
}, |
|||
], |
|||
} |
|||
}, |
|||
methods:{ |
|||
handleQuery(){ |
|||
let params = { |
|||
...this.queryParams, |
|||
site:this.$store.state.user.site, |
|||
} |
|||
this.loading = true |
|||
this.infoList = [] |
|||
selectCollectRecordList(params).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.infoList = data.rows |
|||
}else { |
|||
this.$message.warning(data.msg) |
|||
} |
|||
this.loading = false |
|||
}).catch(error=>{ |
|||
this.loading = false |
|||
this.$message.error(error) |
|||
}) |
|||
} |
|||
}, |
|||
watch:{ |
|||
"queryParams.deviceNo"(newVal, oldVal){ |
|||
this.queryParams.deviceNo = newVal.toUpperCase() |
|||
} |
|||
}, |
|||
created() { |
|||
this.handleQuery(); |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<div class="app-container"> |
|||
<el-form :model="queryParams" label-position="top" ref="queryForm" :inline="true" label-width="68px"> |
|||
<el-form-item label="设备类型" prop="deviceType"> |
|||
<el-select v-model="queryParams.deviceType" placeholder="请选择设备类型" > |
|||
<el-option label="全部" value=""/> |
|||
<el-option label="涂布机器" value="涂布机器"/> |
|||
<el-option label="配胶间设备" value="配胶间设备"/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="设备号" prop="deviceNo"> |
|||
<el-input |
|||
v-model="queryParams.deviceNo" |
|||
placeholder=" " |
|||
clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="设备描述" prop="deviceDesc"> |
|||
<el-input |
|||
v-model="queryParams.deviceDesc" |
|||
style="width: 200px" |
|||
placeholder=" " |
|||
clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="采集日期" prop="startDate"> |
|||
<el-date-picker |
|||
type="date" |
|||
style="width: 100%" |
|||
value-format="yyyy-MM-dd" |
|||
v-model="queryParams.startDate" |
|||
placeholder=" " |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label=" "> |
|||
<i class="el-icon-right"></i> |
|||
</el-form-item> |
|||
<el-form-item label=" " prop="endDate"> |
|||
<el-date-picker |
|||
type="date" |
|||
style="width: 100%" |
|||
v-model="queryParams.endDate" |
|||
value-format="yyyy-MM-dd" |
|||
placeholder=" " |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label=" "> |
|||
<el-button type="primary" @click="handleQuery" plain>查询</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="loading" border :data="infoList" :height="height"> |
|||
<el-table-column |
|||
v-for="(item,index) in collectRecordColumns" :key="index" |
|||
:sortable="item.columnSortable" |
|||
:prop="item.columnProp" |
|||
:header-align="item.headerAlign" |
|||
:show-overflow-tooltip="item.showOverflowTooltip" |
|||
:align="item.align" |
|||
:fixed="item.fixed === ''?false:item.fixed" |
|||
:min-width="item.columnWidth" |
|||
:label="item.columnLabel"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> |
|||
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
@ -0,0 +1,425 @@ |
|||
<script> |
|||
import {selectDeviceList,editDevice, removeDevice, saveDevice} from "../../../api/cdc/device"; |
|||
import dayjs from "dayjs"; |
|||
|
|||
const tableId = "2000001" |
|||
const tableName = "设备信息" |
|||
const table1 = "2000001Table1" |
|||
export default { |
|||
name: "device", |
|||
props:{ |
|||
height:{ |
|||
type:Number, |
|||
default:700 |
|||
}, |
|||
component:{ |
|||
type:Boolean, |
|||
default: false |
|||
} |
|||
}, |
|||
data(){ |
|||
return{ |
|||
// 遮罩层 |
|||
loading: true, |
|||
// 设备信息表格数据 |
|||
infoList: [], |
|||
// 弹出层标题 |
|||
title: "设备信息", |
|||
// 是否显示弹出层 |
|||
open: false, |
|||
// 查询参数 |
|||
queryParams: { |
|||
deviceNo: '', |
|||
deviceDesc: null, |
|||
deviceType: "", |
|||
}, |
|||
// 表单参数 |
|||
form: {}, |
|||
// 表单校验 |
|||
rules: { |
|||
deviceDesc: [ |
|||
{ required: true, message: "设备描述不能为空", trigger: "blur" } |
|||
], |
|||
deviceType: [ |
|||
{ required: true, message: "设备类型不能为空", trigger: "change" } |
|||
], |
|||
deviceIp: [ |
|||
{ required: true, message: "采集HTTP信息不能为空", trigger: "blur" } |
|||
], |
|||
deviceNo: [ |
|||
{ required: true, message: "设备号不能为空", trigger: "blur" } |
|||
], |
|||
}, |
|||
deviceColumns:[ |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}DeviceNo`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'deviceNo', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '设备号', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}DeviceDesc`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'deviceDesc', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '设备描述', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}DeviceType`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'deviceType', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '设备类型', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}AddressDesc`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'addressDesc', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '位置描述', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}DeviceIp`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'deviceIp', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '采集HTTP信息', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}Active`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'active', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '在用', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CreateBy`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'createBy', |
|||
headerAlign: 'center', |
|||
align: 'left', |
|||
columnLabel: '录入人', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 100 |
|||
},{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: tableId, |
|||
serialNumber: `${table1}CreateTime`, |
|||
tableId: table1, |
|||
tableName: tableName, |
|||
columnProp: 'createTime', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '录入时间', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
}, |
|||
], |
|||
} |
|||
}, |
|||
methods:{ |
|||
/** 查询设备信息列表 */ |
|||
getList() { |
|||
let params = { |
|||
...this.queryParams, |
|||
site:this.$store.state.user.site |
|||
} |
|||
this.loading = true; |
|||
selectDeviceList(params).then(({data}) => { |
|||
if (data && data.code === 0){ |
|||
this.infoList = data.rows; |
|||
} |
|||
this.loading = false; |
|||
}).catch(() => { |
|||
this.loading = false; |
|||
}); |
|||
}, |
|||
// 取消按钮 |
|||
cancel() { |
|||
this.open = false; |
|||
this.reset(); |
|||
}, |
|||
// 表单重置 |
|||
reset() { |
|||
this.form = { |
|||
deviceNo: '', |
|||
site: null, |
|||
deviceDesc: null, |
|||
deviceType: '涂布机器', |
|||
addressDesc: null, |
|||
deviceIp: null, |
|||
deviceAddress: null, |
|||
active: 'Y', |
|||
createBy: null, |
|||
createTime: null |
|||
}; |
|||
this.resetForm("form"); |
|||
}, |
|||
/** 搜索按钮操作 */ |
|||
handleQuery() { |
|||
this.getList(); |
|||
}, |
|||
/** 新增按钮操作 */ |
|||
handleAdd() { |
|||
this.reset(); |
|||
this.open = true; |
|||
}, |
|||
/** 修改按钮操作 */ |
|||
handleUpdate(row) { |
|||
this.reset(); |
|||
this.form = {...row} |
|||
this.form.newDeviceNo = this.form.deviceNo; |
|||
this.open = true; |
|||
}, |
|||
/** 提交按钮 */ |
|||
submitForm() { |
|||
this.$refs["form"].validate((valid,obj) => { |
|||
if (valid) { |
|||
if (!this.form.newDeviceNo) { |
|||
this.form.site = this.$store.state.user.site; |
|||
this.form.createBy = this.$store.state.user.name; |
|||
this.form.createTime = dayjs().format("YYYY-MM-DD HH:mm:ss"); |
|||
saveDevice(this.form).then(({data}) => { |
|||
this.form.site = null; |
|||
if (data && data.code === 0){ |
|||
this.$message.success(data.msg); |
|||
this.open = false; |
|||
this.getList(); |
|||
}else { |
|||
this.$message.warning(data.msg); |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error); |
|||
}); |
|||
} else { |
|||
editDevice(this.form).then(({data}) => { |
|||
if (data && data.code === 0){ |
|||
this.$message.success(data.msg); |
|||
this.open = false; |
|||
this.getList(); |
|||
}else { |
|||
this.$message.warning(data.msg); |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error); |
|||
}); |
|||
} |
|||
}else { |
|||
Object.keys(obj).forEach((key)=>{ |
|||
this.$message.warning(obj[key][0].message); |
|||
return |
|||
}) |
|||
} |
|||
}); |
|||
}, |
|||
handleDelete(row) { |
|||
this.$confirm('此操作将永久删除该设备信息, 是否继续?', '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(() => { |
|||
removeDevice(row).then(({data})=>{ |
|||
if (data && data.code === 0){ |
|||
this.$message.success(data.msg); |
|||
this.getList(); |
|||
}else { |
|||
this.$message.success(data.msg); |
|||
} |
|||
}).catch((error)=>{ |
|||
this.$message.error(error); |
|||
}) |
|||
}).catch(() => { |
|||
}); |
|||
}, |
|||
}, |
|||
watch:{ |
|||
"queryParams.deviceNo"(newVal, oldVal){ |
|||
this.queryParams.deviceNo = newVal.toUpperCase(); |
|||
}, |
|||
"form.deviceNo"(newVal, oldVal){ |
|||
this.form.deviceNo = newVal.toUpperCase(); |
|||
}, |
|||
}, |
|||
created() { |
|||
this.getList(); |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<template> |
|||
<div class="app-container"> |
|||
<el-form :model="queryParams" label-position="top" ref="queryForm" :inline="true" label-width="68px"> |
|||
<el-form-item label="设备号" prop="deviceNo"> |
|||
<el-input |
|||
v-model="queryParams.deviceNo" |
|||
placeholder="请输入设备号" |
|||
clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="设备描述" prop="deviceDesc"> |
|||
<el-input |
|||
v-model="queryParams.deviceDesc" |
|||
placeholder="请输入设备描述" |
|||
clearable |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="设备类型" prop="deviceType"> |
|||
<el-select v-model="queryParams.deviceType" placeholder="请选择设备类型" > |
|||
<el-option label="全部" value=""/> |
|||
<el-option label="涂布机器" value="涂布机器"/> |
|||
<el-option label="配胶间设备" value="配胶间设备"/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label=" "> |
|||
<el-button type="primary" @click="handleQuery" plain>查询</el-button> |
|||
<el-button type="primary" @click="handleAdd" v-if="!component">新增</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
<el-table v-loading="loading" border :data="infoList" :height="height"> |
|||
<el-table-column label="操作" align="center" v-if="!component"> |
|||
<template slot-scope="scope"> |
|||
<el-link @click="handleUpdate(scope.row)">编辑</el-link> |
|||
<el-link @click="handleDelete(scope.row)">删除</el-link> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column |
|||
v-for="(item,index) in deviceColumns" :key="index" |
|||
:sortable="item.columnSortable" |
|||
:prop="item.columnProp" |
|||
:header-align="item.headerAlign" |
|||
:show-overflow-tooltip="item.showOverflowTooltip" |
|||
:align="item.align" |
|||
:fixed="item.fixed === ''?false:item.fixed" |
|||
:min-width="item.columnWidth" |
|||
:label="item.columnLabel"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span> |
|||
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" style="width: 100px; height: 80px"/></span> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
<!-- 添加或修改设备信息对话框 --> |
|||
<el-dialog :title="title" v-if="!component" v-drag :visible.sync="open" width="500px" append-to-body> |
|||
<el-form ref="form" label-position="top" :model="form" :rules="rules" label-width="80px"> |
|||
<el-row :gutter="10"> |
|||
<el-col :span="6"> |
|||
<el-form-item label="设备号" prop="deviceNo" :show-message="false"> |
|||
<el-input v-model="form.deviceNo" :disabled="form.newDeviceNo" placeholder="请输入设备号" /> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="18"> |
|||
<el-form-item label="设备描述" prop="deviceDesc" :show-message="false"> |
|||
<el-input v-model="form.deviceDesc" placeholder="请输入设备描述" /> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label="设备类型" prop="deviceType" :show-message="false"> |
|||
<el-select v-model="form.deviceType" placeholder="请选择设备类型"> |
|||
<el-option label="涂布机器" value="涂布机器"/> |
|||
<el-option label="配胶间设备" value="配胶间设备"/> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="18"> |
|||
<el-form-item label="位置描述" prop="addressDesc" :show-message="false"> |
|||
<el-input v-model="form.addressDesc" placeholder="请输入位置描述" /> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="18"> |
|||
<el-form-item label="采集HTTP信息" prop="deviceIp" :show-message="false"> |
|||
<el-input v-model="form.deviceIp" placeholder="请输入采集HTTP信息" /> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<el-form-item label=" " prop="active" :show-message="false"> |
|||
<el-checkbox v-model="form.active" true-label="Y" false-label="N">在用</el-checkbox> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button type="primary" @click="submitForm">确 定</el-button> |
|||
<el-button @click="cancel">取 消</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
@ -0,0 +1,299 @@ |
|||
<template> |
|||
<div class="mode-config"> |
|||
<el-row> |
|||
<el-col> |
|||
<el-form label-position="top" style="margin-top: 1px; margin-left: 0px;"> |
|||
<el-form :inline="true" label-position="top" style="margin-top: 0px"> |
|||
<download-excel |
|||
:fields="fields2()" |
|||
:data="exportData2" |
|||
type="xls" |
|||
:name="exportName2" |
|||
:header="exportHeader2" |
|||
:footer="exportFooter2" |
|||
:fetch="createExportData2" |
|||
worksheet="导出信息" |
|||
class="el-button el-button--primary el-button--medium"> |
|||
{{ '导出' }} |
|||
</download-excel> |
|||
</el-form> |
|||
</el-form> |
|||
</el-col> |
|||
</el-row> |
|||
<el-table |
|||
:data="dataList" |
|||
:height="height" |
|||
border |
|||
v-loading="dataListLoading" |
|||
style="width: 100%;margin-top: 10px "> |
|||
<el-table-column |
|||
v-for="(item,index) in columnList2" :key="index" |
|||
:sortable="item.columnSortable" |
|||
:prop="item.columnProp" |
|||
:header-align="item.headerAlign" |
|||
:show-overflow-tooltip="item.showOverflowTooltip" |
|||
:align="item.align" |
|||
:fixed="item.fixed==''?false:item.fixed" |
|||
:min-width="item.columnWidth" |
|||
:label="item.columnLabel"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="!item.columnHidden"> {{ scope.row[item.columnProp] }}</span> |
|||
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]" |
|||
style="width: 100px; height: 80px"/></span> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import { |
|||
getCustomerContactData, |
|||
} from "@/api/project/project.js" |
|||
export default { |
|||
name: "customerContact", |
|||
props: { |
|||
height: { |
|||
type: Number, |
|||
default: 300 |
|||
}, |
|||
dataList:{ |
|||
type: Array, |
|||
default: () => [] |
|||
} |
|||
}, |
|||
data(){ |
|||
return{ |
|||
quotationData: {}, |
|||
exportData2: [], |
|||
exportName2: "项目客户联系人" + this.dayjs().format('YYYYMMDDHHmmss'), |
|||
exportHeader2: ["项目客户联系人"], |
|||
exportFooter2: [], |
|||
exportList2:[], |
|||
dataListLoading: false, |
|||
|
|||
columnList2: [ |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99ContactName', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'contactName', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '联系人', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99ContactPhoneNumber1', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'contactPhoneNumber1', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '联系电话', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99ContactLandlineNumber', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'contactLandlineNumber', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '座机', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99Position', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'position', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '公司职务', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99Mailbox', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'mailbox', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '邮箱', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99PrimaryContact', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'primaryContact', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '默认联系人', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 40 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99ContactStatus', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'contactStatus', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '状态', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 40 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99CreateDate', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'createDate', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '创建时间', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99CreateBy', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'createBy', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '创建人', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99UpdateDate', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'updateDate', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '更新时间', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 120 |
|||
}, |
|||
{ |
|||
userId: this.$store.state.user.name, |
|||
functionId: 102003, |
|||
serialNumber: '102003Table99UpdateBy', |
|||
tableId: '102003Table99', |
|||
tableName: '项目联系人表', |
|||
columnProp: 'updateBy', |
|||
headerAlign: 'center', |
|||
align: 'center', |
|||
columnLabel: '更新人', |
|||
columnHidden: false, |
|||
columnImage: false, |
|||
columnSortable: false, |
|||
sortLv: 0, |
|||
status: true, |
|||
fixed: '', |
|||
columnWidth: 80 |
|||
} |
|||
], |
|||
} |
|||
}, |
|||
methods:{ |
|||
//导出excel |
|||
async createExportData2() { |
|||
return this.dataList; |
|||
}, |
|||
fields2() { |
|||
let json = "{" |
|||
this.columnList2.forEach((item, index) => { |
|||
if (index == this.columnList2.length - 1) { |
|||
json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" |
|||
} else { |
|||
json += "\"" + item.columnLabel + "\"" + ":" + "\"" + item.columnProp + "\"" + "," |
|||
} |
|||
}) |
|||
json += "}" |
|||
let s = eval("(" + json + ")") |
|||
return s |
|||
}, |
|||
}, |
|||
} |
|||
</script> |
|||
<style scoped> |
|||
|
|||
</style> |
|||
@ -0,0 +1,168 @@ |
|||
<template> |
|||
<div class="mode-config"> |
|||
<el-form label-position="top" :model="customer" style="margin-left: 10px;margin-top: 5px;margin-right: 10px;width: 60%"> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="客户代码"> |
|||
<el-input v-model="customer.customerNo" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="客户名称"> |
|||
<el-input v-model="customer.customerDesc" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="重要程度"> |
|||
<el-input v-model="customer.importantCustomer" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="客户币种"> |
|||
<el-input v-model="customer.customerCurrency" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="年营业额"> |
|||
<el-input v-model="customer.turnoverOfYear" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="年潜在投入"> |
|||
<el-input v-model="customer.potentialRevenueOfYear" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="客户状态"> |
|||
<el-input v-model="customer.customerStatus" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="行业"> |
|||
<el-input v-model="customer.customerIndustry" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="公司名称"> |
|||
<el-input v-model="customer.companyName" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="客户联系人"> |
|||
<el-input v-model="customer.contactName" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="联系人电话"> |
|||
<el-input v-model="customer.contactPhoneNumber1" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="8"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="联系人职务"> |
|||
<el-input v-model="customer.position" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="12"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="客户描述"> |
|||
<el-input v-model="customer.customerDescription" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="12"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="客户联系地址"> |
|||
<el-input v-model="customer.addressName" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="地址类型"> |
|||
<el-input v-model="customer.addressType" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="6"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="创建时间"> |
|||
<el-input v-model="customer.createDate" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="创建人"> |
|||
<el-input v-model="customer.createBy" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="更新时间"> |
|||
<el-input v-model="customer.updateDate" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
<el-col :span="6"> |
|||
<div class="grid-content bg-purple"> |
|||
<el-form-item label="更新人"> |
|||
<el-input v-model="customer.updateBy" readonly></el-input> |
|||
</el-form-item> |
|||
</div> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
export default { |
|||
name: "customerInfo", |
|||
props: { |
|||
customer:{ |
|||
type: Object, |
|||
default: () => {} |
|||
} |
|||
}, |
|||
} |
|||
</script> |
|||
|
|||
<style scoped> |
|||
|
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue