|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
<el-steps :active="activeName" align-center>
|
|
|
- <el-step title="步骤1" description="确定与数据字典中信息点得对应"></el-step>
|
|
|
+ <el-step title="步骤1" description="确定与数据字典中信息点对应"></el-step>
|
|
|
<el-step title="步骤2" description="确定值得处理方式"></el-step>
|
|
|
<el-step title="步骤3" description="确认并维护涉及到得原始点位对应得设备标识"></el-step>
|
|
|
</el-steps>
|
|
@@ -11,24 +11,30 @@
|
|
|
<el-cascader style="width: 100%;" :options="options" v-model="form1.dict" @change="handleChange" :props="props" filterable @active-item-change="handleItemChange"></el-cascader>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
- <div class="mess-main">
|
|
|
- <div>
|
|
|
- <p>原始点位说明</p>
|
|
|
+ <div class="flex-around">
|
|
|
+ <div class="point-despoint">
|
|
|
+ <p class="center">原始点位说明</p>
|
|
|
<p></p>
|
|
|
</div>
|
|
|
- <div>
|
|
|
- <p>数据字典值说明</p>
|
|
|
- <p></p>
|
|
|
+ <div class="point-despoint">
|
|
|
+ <p class="center">数据字典值说明</p>
|
|
|
+ <p class="content-view">{{unitObj.unit || '--'}}</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="center">
|
|
|
<el-button @click="next">下一步</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="collapse-item" v-show="activeName == 1">
|
|
|
+ <div class="collapse-item" v-show="activeName == 1">
|
|
|
<div class="flex-around">
|
|
|
- <div class="point-despoint"></div>
|
|
|
- <div class="point-despoint"></div>
|
|
|
+ <div class="point-despoint">
|
|
|
+ <p>原始点位说明</p>
|
|
|
+ <p></p>
|
|
|
+ </div>
|
|
|
+ <div class="point-despoint">
|
|
|
+ <p>数据字典值说明</p>
|
|
|
+ <p class="content-view">{{unitObj.unit || '--'}}</p>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<el-form class="form" :rules="rules" ref="form2" :model="form2" label-width="140px">
|
|
|
<el-form-item label='值处理方式' prop='DataRuleType'>
|
|
@@ -44,11 +50,18 @@
|
|
|
<split-handle :devFlag="false" ref='splitHandle' v-else></split-handle>
|
|
|
</el-form>
|
|
|
<div class="center">
|
|
|
- <el-button>下一步</el-button>
|
|
|
+ <el-button @click="undo">上一步</el-button>
|
|
|
+ <el-button @click="next">下一步</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="collapse-item" v-show="activeName == 2">
|
|
|
- <handsontable-component ref="handsontable"></handsontable-component>
|
|
|
+ <div style="height:150px;">
|
|
|
+ <handsontable-component ref="handsontable"></handsontable-component>
|
|
|
+ </div>
|
|
|
+ <div class="center">
|
|
|
+ <el-button @click="undo">上一步</el-button>
|
|
|
+ <el-button @click="save">保存</el-button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -61,14 +74,26 @@
|
|
|
import splitHandle from '@/components/config_point/step3_edit/split_handle'
|
|
|
import handsontableComponent from "@/components/common/handsontable"
|
|
|
import {
|
|
|
+ mapGetters,
|
|
|
+ mapActions
|
|
|
+ } from "vuex";
|
|
|
+ import {
|
|
|
getEquipmentAll,
|
|
|
getQueryProperty
|
|
|
} from '@/fetch/data_plat'
|
|
|
import {
|
|
|
- batchCreate
|
|
|
+ batchCreate,
|
|
|
+ queryDescription
|
|
|
} from '@/fetch/point_http'
|
|
|
export default {
|
|
|
name: "tempsThree",
|
|
|
+ computed: {
|
|
|
+ ...mapGetters("project", [
|
|
|
+ "projectId",
|
|
|
+ "datasourceId",
|
|
|
+ "protocolType"
|
|
|
+ ])
|
|
|
+ },
|
|
|
props: {
|
|
|
renderData: {
|
|
|
type: Array,
|
|
@@ -84,6 +109,7 @@
|
|
|
dict: []
|
|
|
},
|
|
|
options: [],
|
|
|
+ dataDict: {}, //数据字典
|
|
|
props: {
|
|
|
value: 'code',
|
|
|
label: 'name',
|
|
@@ -113,6 +139,7 @@
|
|
|
value: '需按拆分枚举转换'
|
|
|
}
|
|
|
],
|
|
|
+ dealType: {},//处理方式
|
|
|
form2: {
|
|
|
ValueDescription: '',
|
|
|
DataRuleType: '无需处理,直接使用'
|
|
@@ -140,37 +167,290 @@
|
|
|
handsontableComponent
|
|
|
},
|
|
|
methods: {
|
|
|
- collapseChange(val) {
|
|
|
- console.log(this.activeName)
|
|
|
- if (this.activeName == 3) {
|
|
|
- let setting = {
|
|
|
- data: this.renderData,
|
|
|
- maxRows: this.length,
|
|
|
- colHeaders: ['设备标识', '原始点位描述', '位置标签', '备注'],
|
|
|
- columns: [{
|
|
|
- data: 'EquipmentMark'
|
|
|
- },
|
|
|
- {
|
|
|
- data: 'Description',
|
|
|
- readOnly: true
|
|
|
- },
|
|
|
- {
|
|
|
- data: 'LocationFlag',
|
|
|
- readOnly: true
|
|
|
- },
|
|
|
- {
|
|
|
- data: 'Remarks',
|
|
|
- readOnly: true
|
|
|
- }
|
|
|
- ]
|
|
|
+ getMain(param) {
|
|
|
+ let params = {
|
|
|
+ data: {
|
|
|
+ DataSourceId: this.datasourceId,
|
|
|
+ KeyEquipmentParameter: param.EquipmentParameter,
|
|
|
+ KeyEquipmentType: param.EquipmentType
|
|
|
+ },
|
|
|
+ type: this.protocolType
|
|
|
+ }
|
|
|
+ console.log(params, 'params')
|
|
|
+ queryDescription(params, res => {
|
|
|
+ console.log(res)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //保存
|
|
|
+ save(){
|
|
|
+ let data = this.hot.getSourceData()
|
|
|
+ let params = data.map(item => {
|
|
|
+ console.log(item ,' item')
|
|
|
+ return Object.assign(this.dealType,{DataSourceId: this.datasourceId,PointId: item.Id,EquipmentMark:item.EquipmentMark})
|
|
|
+ }),sameFalg = false,magFalg = false;
|
|
|
+ params.map((item,index) => {
|
|
|
+ if(!item.EquipmentMark){
|
|
|
+ magFalg = true
|
|
|
}
|
|
|
- this.$nextTick(_ => {
|
|
|
- this.$refs.handsontable.init(setting)
|
|
|
+ params.map((child,childIndex) => {
|
|
|
+ if(childIndex != index && child.EquipmentMark == item.EquipmentMark){
|
|
|
+ sameFalg = true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ if(magFalg){
|
|
|
+ this.confirm("点位中存在空的设备标识",params)
|
|
|
+ }else if(sameFalg){
|
|
|
+ this.confirm("点位中存在设备标识相同的点位",params)
|
|
|
+ }else{
|
|
|
+ this.createParam(params)
|
|
|
+ }
|
|
|
+ console.log(params)
|
|
|
+ },
|
|
|
+ confirm(assage,params){
|
|
|
+ this.$confirm(assage).then(_ => {
|
|
|
+ this.createParam(params)
|
|
|
+ }).catch(_ => {})
|
|
|
+ },
|
|
|
+ createParam(params){
|
|
|
+ batchCreate(params,res => {
|
|
|
+ this.$message.success("处理成功")
|
|
|
+ this.$emit("changed")
|
|
|
+ })
|
|
|
+ },
|
|
|
+ undo() {
|
|
|
+ this.activeName -= 1
|
|
|
+ },
|
|
|
+ errMsg() {
|
|
|
+ this.$message({
|
|
|
+ message: '有必填项未填',
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+ },
|
|
|
+ next() {
|
|
|
+ if (this.activeName == 0) {
|
|
|
+ this.$refs.form.validate((isOk, obj) => {
|
|
|
+ console.log(isOk, obj)
|
|
|
+ if (isOk) {
|
|
|
+ console.log(this.form1)
|
|
|
+ this.form2 = Object.assign(this.form2,this.form1)
|
|
|
+ console.log(this.form2)
|
|
|
+ this.activeName += 1
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }else if (this.activeName == 1) {
|
|
|
+ this.$refs['form2'].validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ var flag = this.form2.DataRuleType
|
|
|
+ switch (flag) {
|
|
|
+ case '无需处理,直接使用':
|
|
|
+ // this.$refs.noHandle.getForm(noHandle => {
|
|
|
+ // if (noHandle) {
|
|
|
+ this.saveForm(this.form2, {})
|
|
|
+ // } else {
|
|
|
+ // this.errMsg()
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ break
|
|
|
+ case '需自动单位转换':
|
|
|
+ this.$refs.autoHandle.getForm(autoHandle => {
|
|
|
+ if (autoHandle) {
|
|
|
+ this.saveForm(this.form2, autoHandle)
|
|
|
+ } else {
|
|
|
+ this.errMsg()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ break
|
|
|
+ case '需按设置枚举转换':
|
|
|
+ this.$refs.enumHandle.getForm(enumHandle => {
|
|
|
+ if (enumHandle) {
|
|
|
+ this.saveForm(this.form2, enumHandle)
|
|
|
+ } else {
|
|
|
+ this.errMsg()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ break
|
|
|
+ case '需按公式转换':
|
|
|
+ this.$refs.formulaHandle.getForm(formulaHandle => {
|
|
|
+ if (formulaHandle) {
|
|
|
+ this.saveForm(this.form2, formulaHandle)
|
|
|
+ } else {
|
|
|
+ this.errMsg()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ break
|
|
|
+ case '需拆分处理':
|
|
|
+ this.$refs.splitHandle.getForm(splitHandle => {
|
|
|
+ if (splitHandle) {
|
|
|
+ this.saveForm(this.form2, splitHandle)
|
|
|
+ } else {
|
|
|
+ this.errMsg()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ break
|
|
|
+ }
|
|
|
+ this.activeName += 1
|
|
|
+ let setting = {
|
|
|
+ data: this.renderData,
|
|
|
+ maxRows: this.renderData.length,
|
|
|
+ colHeaders: ['设备标识', '原始点位描述', '位置标签', '备注'],
|
|
|
+ columns: [{
|
|
|
+ data: 'EquipmentMark'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ data: 'Description',
|
|
|
+ readOnly: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ data: 'LocationFlag',
|
|
|
+ readOnly: true
|
|
|
+ },
|
|
|
+ {
|
|
|
+ data: 'Remarks',
|
|
|
+ readOnly: true
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ this.$nextTick(_ => {
|
|
|
+ this.hot = this.$refs.handsontable.init(setting)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ this.errMsg()
|
|
|
+ return false
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
},
|
|
|
- next(){
|
|
|
- this.activeName += 1
|
|
|
+ saveForm(basic, other) {
|
|
|
+ console.log(basic.dict, other,'basic, other')
|
|
|
+ let type = basic.DataRuleType
|
|
|
+ let basicParams = {
|
|
|
+ SpecialtyCode: basic.dict[0],
|
|
|
+ SystemCode: basic.dict[1], //code
|
|
|
+ EquipmentTypeCode: basic.dict[2],
|
|
|
+ InfomationPointCode: basic.dict[3],
|
|
|
+ Specialty: this.dataDict[basic.dict[0]].name, //专业
|
|
|
+ System: this.dataDict[basic.dict[1]].name, //系统
|
|
|
+ EquipmentType: this.dataDict[basic.dict[2]].name, //设备
|
|
|
+ InfomationPoint: this.InfomationPoint, //信息点
|
|
|
+ DataRuleType: basic.DataRuleType, //值处理方式
|
|
|
+ // DataSourceId: '4',
|
|
|
+ // PointId: this.editData.Point.Id //点位ID
|
|
|
+ }
|
|
|
+ // console.log(basicParams,'basicParams')
|
|
|
+ let otherParams = {}
|
|
|
+ switch (type) {
|
|
|
+ case '无需处理,直接使用':
|
|
|
+ otherParams = {
|
|
|
+ EquipmentMark: other.EquipmentMark
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case '需自动单位转换':
|
|
|
+ let DataRuleContent1 = JSON.stringify([{
|
|
|
+ seq: 1,
|
|
|
+ ruletype: 'type1',
|
|
|
+ content: [{
|
|
|
+ from: other.unit[0] + '-' + other.unit[1],
|
|
|
+ to: this.unitObj.unit
|
|
|
+ }]
|
|
|
+ }])
|
|
|
+ otherParams = {
|
|
|
+ DataRuleContent: DataRuleContent1,
|
|
|
+ EquipmentMark: other.EquipmentMark
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case '需按设置枚举转换':
|
|
|
+ let DataRuleContent2 = other.pointArr.length ?
|
|
|
+ JSON.stringify([{
|
|
|
+ seq: 1,
|
|
|
+ ruletype: 'type2',
|
|
|
+ content: other.pointArr
|
|
|
+ }]) :
|
|
|
+ undefined
|
|
|
+ otherParams = {
|
|
|
+ EquipmentMark: other.EquipmentMark,
|
|
|
+ DataRuleContent: DataRuleContent2
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case '需按公式转换':
|
|
|
+ let subRule = other.from ?
|
|
|
+ {
|
|
|
+ seq: 1,
|
|
|
+ ruletype: 'type4',
|
|
|
+ content: [{
|
|
|
+ from: other.from,
|
|
|
+ to: other.to
|
|
|
+ }]
|
|
|
+ } :
|
|
|
+ undefined
|
|
|
+ let extractRule = {
|
|
|
+ seq: 2,
|
|
|
+ ruletype: 'type5',
|
|
|
+ content: other.extract ?
|
|
|
+ [{
|
|
|
+ extract: 'number'
|
|
|
+ }] :
|
|
|
+ []
|
|
|
+ }
|
|
|
+ let countRule = other.mark ?
|
|
|
+ {
|
|
|
+ seq: 3,
|
|
|
+ ruletype: 'type6',
|
|
|
+ content: [{
|
|
|
+ calculationtype: other.mark,
|
|
|
+ value: other.markValue
|
|
|
+ }]
|
|
|
+ } :
|
|
|
+ undefined
|
|
|
+ let DataRuleContent3 = []
|
|
|
+ if (subRule) {
|
|
|
+ DataRuleContent3.push(subRule)
|
|
|
+ }
|
|
|
+ DataRuleContent3.push(extractRule)
|
|
|
+ if (countRule) {
|
|
|
+ DataRuleContent3.push(countRule)
|
|
|
+ }
|
|
|
+ DataRuleContent3 = DataRuleContent3.length ? JSON.stringify(DataRuleContent3) : undefined
|
|
|
+ otherParams = {
|
|
|
+ EquipmentMark: other.EquipmentMark,
|
|
|
+ DataRuleContent: DataRuleContent3
|
|
|
+ }
|
|
|
+ break
|
|
|
+ case '需拆分处理':
|
|
|
+ let SplitPoints = other.devArr.length ? other.devArr : undefined
|
|
|
+ let DataRuleContent4 = undefined
|
|
|
+ var enum5 = null
|
|
|
+ if (other.tranfVal) {
|
|
|
+ enum5 = {
|
|
|
+ seq: 2,
|
|
|
+ ruletype: 'type2',
|
|
|
+ content: other.pointArr
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ enum5 = {
|
|
|
+ seq: 2,
|
|
|
+ ruletype: 'type2',
|
|
|
+ content: []
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SplitPoints.forEach(ele => {
|
|
|
+ let cutStr = {
|
|
|
+ seq: 1,
|
|
|
+ ruletype: 'type4',
|
|
|
+ content: [{
|
|
|
+ from: ele.SplitStart,
|
|
|
+ to: ele.SplitEnd
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ ele.DataRuleContent = JSON.stringify([cutStr, enum5])
|
|
|
+ })
|
|
|
+ otherParams = {
|
|
|
+ SplitPoints: SplitPoints
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
+ this.dealType = Object.assign(basicParams, otherParams)
|
|
|
+ // this.create(params)
|
|
|
},
|
|
|
validateDict(rule, value, cb) {
|
|
|
if (value.length < 4) {
|
|
@@ -228,8 +508,8 @@
|
|
|
}
|
|
|
if (arr[i].content && arr[i].content.length > 0) {
|
|
|
this.getOptionItem(arr[i].content, code)
|
|
|
- }else{
|
|
|
- this.$set(arr,'content',[])
|
|
|
+ } else {
|
|
|
+ this.$set(arr, 'content', [])
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -240,13 +520,25 @@
|
|
|
getEquipmentAll(params, res => {
|
|
|
if (res.Result == 'success') {
|
|
|
this.options = res.Content
|
|
|
+ this.getDataDict(this.options)
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ //缓存数据字典
|
|
|
+ getDataDict(arr) {
|
|
|
+ for (var i = 0; i < arr.length; i++) {
|
|
|
+ this.dataDict[arr[i].code] = arr[i]
|
|
|
+ if (arr[i].content && arr[i].content.length > 0) {
|
|
|
+ this.getDataDict(arr[i].content)
|
|
|
+ } else {
|
|
|
+ this.$set(arr[i], 'content', [])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
init() {
|
|
|
//获取所有的设备
|
|
|
this.getEqAll()
|
|
|
- }
|
|
|
+ },
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
@@ -254,10 +546,15 @@
|
|
|
.flex-around {
|
|
|
display: flex;
|
|
|
justify-content: space-around;
|
|
|
+ margin-bottom: 5px;
|
|
|
.point-despoint {
|
|
|
- width: 160px;
|
|
|
+ width: 180px;
|
|
|
border: 1px solid #DCDFE6;
|
|
|
height: 100px;
|
|
|
+ .content-view {
|
|
|
+ padding: 5px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
.collapse-item {
|