GuoYuFu123 il y a 6 ans
Parent
commit
fe273aa6f7

+ 38 - 13
src/components/config_point/step3_edit/auto_handle.vue

@@ -1,11 +1,20 @@
 <template>
     <el-form ref='form' :rules='rules' :model='form' label-width='140px'>
-        <el-form-item v-if="devFlag"  ref='form' label='设备标识' prop='EquipmentMark'>
+        <el-form-item v-if='devFlag' ref='form' label='设备标识' prop='EquipmentMark'>
             <el-input v-model='form.EquipmentMark'></el-input>
         </el-form-item>
-        <el-form-item label='原始点位值单位' prop='unit'>
+        <el-form-item
+            label='原始点位值单位'
+            prop='unit'
+            :rules='[
+                { required: true, message: "请选择原始点位值单位" , trigger: ["change", "blur"]},
+                { validator: validateUnit, trigger: "change"},
+            ]'
+        >
             <el-cascader :options='options' v-model='form.unit' @change='handleChange'></el-cascader>
-            <p class='tip'>数据字典信息点-{{unitObj ? (unitObj.infoPointName || '--') : '--'}}({{unitObj ? (unitObj.unit || '--') : '--'}})</p>
+            <p
+                class='tip'
+            >数据字典信息点-{{unitObj ? (unitObj.infoPointName || '--') : '--'}}({{unitObj ? (unitObj.unit || '--') : '--'}})</p>
         </el-form-item>
     </el-form>
 </template>
@@ -20,11 +29,9 @@ export default {
             form: {
                 EquipmentMark: '',
                 unit: [],
-                unitStr: null,
             },
             rules: {
                 EquipmentMark: [{ required: true, message: '请输入设备标识', trigger: 'blur' }],
-                unit: [{ required: true, message: '请选择原始点位值单位', trigger: ['change', 'blur'] }]
             }
         }
     },
@@ -38,10 +45,21 @@ export default {
         }
     },
     methods: {
+        validateUnit(rule, value, callback) {
+            if(this.unitObj.unit) {
+                callback()
+            } else {
+                callback(new Error("无数据字典信息点单位"))
+            }
+        },
         getForm(cb) {
             this.$refs['form'].validate(valid => {
                 if (valid) {
-                    cb(this.form)
+                    if(this.unitObj.unit) {
+                        cb(this.form)
+                    } else {
+                        cb(false)
+                    }                    
                 } else {
                     cb(false)
                 }
@@ -49,19 +67,18 @@ export default {
         },
         handleChange(val) {
             console.log(val)
-            // this.form.unitStr = val.
         },
         getUnitList() {
-            batchQueryUnit({}, res=> {
-                if(res.Result == "Success") {
-                    let data = res.Content;
+            batchQueryUnit({}, res => {
+                if (res.Result == 'Success') {
+                    let data = res.Content
                     let arr = []
-                    data.forEach(item => { 
+                    data.forEach(item => {
                         let first = {
                             value: item.Type,
                             label: item.Type,
                             children: []
-                        }                        
+                        }
                         item.Units.forEach(ele => {
                             let second = {}
                             second = {
@@ -69,7 +86,7 @@ export default {
                                 label: ele.Name
                             }
                             first.children.push(second)
-                        })                       
+                        })
                         arr.push(first)
                     })
                     this.options = arr
@@ -83,6 +100,14 @@ export default {
     },
     created() {
         this.init()
+    },
+    watch: {
+        unitObj: {
+            deep: true,
+            handler() {
+                this.$refs['form'].validateField('unit')
+            }
+        }
     }
 }
 </script>

+ 51 - 44
src/components/config_point/step3_edit/enum_handle.vue

@@ -1,33 +1,36 @@
 <template>
     <div class='edit-box'>
         <el-form ref='form' :rules='rules' :model='form' label-width='140px'>
-            <el-form-item v-if="devFlag" label='设备标识' prop='EquipmentMark'>
+            <el-form-item v-if='devFlag' label='设备标识' prop='EquipmentMark'>
                 <el-input v-model='form.EquipmentMark'></el-input>
             </el-form-item>
+
+            <ul class='point-box'>
+                <span class='left'>如果</span>
+                <span class='right'>那么</span>
+                <li v-for='(item,index) in form.pointArr' :key='index'>
+                    <p>
+                        <el-form-item
+                            label='原始点位值'
+                            :prop='"pointArr." + index + ".from"'
+                            :rules='{
+      required: true, message: "不能为空", trigger: "blur"
+    }'
+                        >
+                            <el-input v-model='item.from'></el-input>
+                        </el-form-item>
+                    </p>
+                    <p>
+                        <el-form-item label='转换为标准值' :prop='"pointArr." + index + ".to"' :rules='{
+      required: true, message: "不能为空", trigger: "blur"
+    }'>
+                            <el-input v-model='item.to'></el-input>
+                        </el-form-item>
+                        <i v-if='index > 0' class='el-icon-delete delete' @click='deleteRow(index)'></i>
+                    </p>
+                </li>
+            </ul>
         </el-form>
-        <ul class='point-box' v-if='pointArr.length'>
-            <p class='character'>
-                <span>如果</span>
-            </p>
-            <p class='character nm'>
-                <span>那么</span>
-            </p>
-            <li v-for='(item,index) in pointArr' :key='index'>
-                <p>
-                    <span class='name'>原始点位值 =</span>
-                    <span class='value'>
-                        <el-input v-model='item.from'></el-input>
-                    </span>
-                </p>
-                <p>
-                    <span class='name'>转换为标准值 =</span>
-                    <span class='value'>
-                        <el-input v-model='item.to'></el-input>
-                    </span>
-                    <i class='el-icon-delete delete' @click='deleteRow(index)'></i>
-                </p>
-            </li>
-        </ul>
         <div class='add-btn-box'>
             <el-button type='primary' @click='addRules'>+添加新转换规则</el-button>
         </div>
@@ -40,12 +43,12 @@ export default {
     data() {
         return {
             form: {
-                EquipmentMark: ''
+                EquipmentMark: '',
+                pointArr: [{ from: '', to: '' }]
             },
             rules: {
                 EquipmentMark: [{ required: true, message: '请输入设备标识', trigger: 'blur' }]
-            },
-            pointArr: []
+            }
         }
     },
     props: {
@@ -56,9 +59,8 @@ export default {
     },
     methods: {
         getForm(cb) {
-            this.$refs["form"].validate((valid) => {
-                if(valid){
-                    this.form.pointArr = this.pointArr;
+            this.$refs['form'].validate(valid => {
+                if (valid) {
                     cb(this.form)
                 } else {
                     cb(false)
@@ -66,7 +68,7 @@ export default {
             })
         },
         addRules() {
-            this.pointArr.push(this.newRules())
+            this.form.pointArr.push(this.newRules())
         },
         newRules() {
             return { from: '', to: '' }
@@ -88,21 +90,25 @@ export default {
         margin-top: 45px;
         position: relative;
         width: 500px;
-        .character {
+        .left,
+        .right {
+            font-size: 20px;
+        }
+        .left {
             position: absolute;
             top: -25px;
-            left: -6px;
-            font-size: 22px;
-            width: 500px;
-            text-align: left;
+            left: -11px;
         }
-        .nm {
-            text-align: center;
+        .right {
+            position: absolute;
+            top: -25px;
+            left: 260px;
         }
         li {
             display: flex;
             justify-content: space-between;
             margin-top: 5px;
+            position: relative;
             p {
                 .name {
                     padding-left: 40px;
@@ -112,12 +118,13 @@ export default {
                     display: inline-block;
                     width: 80px;
                 }
-                .delete {
-                    margin-left: 5px;
-                    cursor: pointer;
-                    position: relative;
-                    z-index: 99999;
-                }
+            }
+            .delete {
+                top: 5px;
+                right: -20px;
+                cursor: pointer;
+                position: absolute;
+                z-index: 99999;
             }
         }
     }

+ 12 - 2
src/components/config_point/step3_edit/formula_handle.vue

@@ -74,9 +74,19 @@ export default {
                         this.form.to = this.to;
                     }
                     if(this.valCountVal) {
-                        this.form.mark = this.mark;
-                        this.form.markValue = this.markValue;
+                        if (!this.markValue) {
+                            this.$message({
+                            message: '请填写数值计算',
+                            type: 'warning'
+                            });
+                            return
+                        } else {
+                            this.form.mark = this.mark;
+                            this.form.markValue = this.markValue;
+                        }
+                            
                     }
+                    
                     cb(this.form)
                 } else {
                     cb(false)

+ 43 - 10
src/components/config_point/step3_edit/index.vue

@@ -95,6 +95,7 @@ export default {
             options: [],
             optionObj: {},
             infoDict: {}, //信息点字典
+            dataDict:{}, //数据字典
             InfomationPoint: null, //信息点
             unitObj: {}, //传给自动单位转换的obj
             props: {
@@ -159,10 +160,11 @@ export default {
         save() {
             this.$refs['form'].validate(valid => {
                 if (valid) {
-                    var flag = this.form.DataRuleType
+                    var flag = this.form.DataRuleType                    
                     switch (flag) {
                         case '无需处理,直接使用':
                             this.$refs['noHandle'].getForm(noHandle => {
+                                console.log(noHandle)
                                 if (noHandle) {
                                     this.saveForm(this.form, noHandle)
                                 } else {
@@ -172,6 +174,7 @@ export default {
                             break
                         case '需自动单位转换':
                             this.$refs['autoHandle'].getForm(autoHandle => {
+                                console.log(autoHandle)
                                 if (autoHandle) {
                                     this.saveForm(this.form, autoHandle)
                                 } else {
@@ -217,11 +220,15 @@ export default {
             console.log(basic, other)
             let type = basic.DataRuleType
             let basicParams = {
-                System: basic.dict[0], //系统
-                Specialty: basic.dict[1], //专业
-                EquipmentType: basic.dict[2], //设备类
-                Funcid: basic.dict[3], //信息点id
-                 InfomationPoint: this.InfomationPoint, //信息点
+                SpecialtyCode: basic.dict[0],
+                SystemCode: basic.dict[1], //code                
+                EquipmentTypeCode:basic.dict[2],
+                InfomationPointCode: basic.dict[3],
+                System: this.dataDict[basic.dict[0]].name, //系统
+                Specialty: this.dataDict[basic.dict[1]].name, //专业
+                EquipmentType: this.dataDict[basic.dict[2]].name, //设备类
+                Funcid: "1", //信息点id
+                InfomationPoint: this.InfomationPoint, //信息点
                 DataRuleType: basic.DataRuleType, //值处理方式
                 DataSourceId: '4',
                 PointId: this.editData.Id, //点位ID
@@ -234,7 +241,17 @@ export default {
                     }
                     break
                 case '需自动单位转换':
-                    otherParams = {}
+                    let DataRuleContent1 = JSON.stringify([{
+                        "seq": 1,
+                        "ruletype": "type1",
+                        "content": [{
+                            "from":other.unit[0] + '-' + other.unit[1] ,
+                            "to": this.unitObj.unit
+                        }]
+                    }]);
+                    otherParams = {
+                        DataRuleContent:DataRuleContent1
+                    }
                     break
                 case '需按设置枚举转换':
                     let DataRuleContent2 = other.pointArr.length
@@ -287,7 +304,7 @@ export default {
                 case '需按拆分枚举转换':
                     let SplitPoints = other.devArr.length ? other.devArr : undefined
                     let DataRuleContent4 = undefined;
-                    if (other.pointArr) {
+                    if (other.tranfVal) {
                         DataRuleContent4 = other.pointArr
                             ? JSON.stringify([
                                   {
@@ -308,6 +325,12 @@ export default {
             console.log(params)
             batchCreate(params, res=> {
                 console.log(res);
+                if(res.Result == 'Success') {
+                    this.$message({
+                        message: '保存成功',
+                        type: 'success'
+                    })
+                }
             })
         },
         errMsg() {
@@ -318,7 +341,7 @@ export default {
         },
         handleChange(arr) {
             this.unitObj = this.infoDict[arr[3]]
-            this.InfomationPoint = this.unitObj.infoPointName
+            this.InfomationPoint = this.unitObj.infoPointName || '--'
         },
         handleItemChange(val) {
             if (val.length == 3) {
@@ -362,11 +385,21 @@ export default {
                 }
             }
         },
+        //缓存数据字典
+        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)
+                }
+            }
+        },
         getEqAll() {
             let params = { format: true }
             getEquipmentAll(params, res => {
                 if (res.Result == 'success') {
-                    this.options = res.Content
+                    this.options = res.Content;
+                    this.getDataDict(this.options)
                 }
             })
         },

+ 86 - 62
src/components/config_point/step3_edit/split_handle.vue

@@ -3,7 +3,7 @@
         <el-form v-if='form.devArr.length' class='form' ref='form' :model='form' label-width='140px'>
             <div class='dev-know' v-for='(item,index) in form.devArr' :key='index'>
                 <el-form-item
-                v-if='devFlag'
+                    v-if='devFlag'
                     label='设备标识:'
                     :prop='"devArr." + index + ".EquipmentMark"'
                     :rules='{
@@ -17,36 +17,45 @@
                     <el-input-number v-model='item.SplitStart' :min='1' :max='10' label='描述文字'></el-input-number>位 - 第
                     <el-input-number v-model='item.SplitEnd' :min='1' :max='10' label='描述文字'></el-input-number>位(从1开始)
                 </p>
-                <i class='el-icon-minus del-sub-icon' @click="delDev(index)"></i>
+                <i v-if='index > 0' class='el-icon-minus del-sub-icon' @click='delDev(index)'></i>
             </div>
-        </el-form>
-        <p class='tranf-box'>
-            需要将截取值转换为标准值:
-            <el-switch v-model='tranfVal' active-color='#13ce66' inactive-color='#ff4949'></el-switch>
-        </p>
-        <ul class='point-box' v-if='pointArr.length'>
-            <p class='character'>
-                <span>如果</span>
-            </p>
-            <p class='character nm'>
-                <span>那么</span>
+            <div class='add-btn-box'>
+                <el-button type='primary' @click='addDevs'>+添加设备标识</el-button>
+            </div>
+            <p class='tranf-box'>
+                需要将截取值转换为标准值:
+                <el-switch v-model='tranfVal' active-color='#13ce66' inactive-color='#ff4949'></el-switch>
             </p>
-            <li v-for='(item,index) in pointArr' :key='index'>
-                <p>
-                    <span class='name'>原始点位值 =</span>
-                    <span class='value'>
-                        <el-input v-model='item.from' :disabled='!tranfVal'></el-input>
-                    </span>
-                </p>
-                <p>
-                    <span class='name'>转换为标准值 =</span>
-                    <span class='value'>
-                        <el-input v-model='item.to' :disabled='!tranfVal'></el-input>
-                    </span>
-                    <i class='el-icon-delete delete' @click='deleteRules(index)'></i>
-                </p>
-            </li>
-        </ul>
+            <ul class='point-box'>
+                <span class='left'>如果</span>
+                <span class='right'>那么</span>
+                <li v-for='(item,index) in form.pointArr' :key='index'>
+                    <p>
+                        <el-form-item
+                            label='原始点位值'
+                            :prop='"pointArr." + index + ".from"'
+                            :rules='{
+      required: tranfVal?true: false, message: "不能为空", trigger: "blur"
+    }'
+                        >
+                            <el-input v-model='item.from' :disabled='!tranfVal'></el-input>
+                        </el-form-item>
+                    </p>
+                    <p>
+                        <el-form-item
+                            label='转换为标准值'
+                            :prop='"pointArr." + index + ".to"'
+                            :rules='{
+      required: tranfVal?true: false, message: "不能为空", trigger: "blur"
+    }'
+                        >
+                            <el-input v-model='item.to' :disabled='!tranfVal'></el-input>
+                        </el-form-item>
+                        <i v-if='index > 0' class='el-icon-delete delete' @click='deleteRow(index)'></i>
+                    </p>
+                </li>
+            </ul>
+        </el-form>
         <div class='add-btn-box'>
             <el-button type='primary' @click='addRules' :disabled='!tranfVal'>+添加新转换规则</el-button>
         </div>
@@ -64,15 +73,11 @@ export default {
                         EquipmentMark: '',
                         SplitStart: 1,
                         SplitEnd: 2
-                    },{
-                        EquipmentMark: '',
-                        SplitStart: 1,
-                        SplitEnd: 2
                     }
-                ]
+                ],
+                pointArr: []
             },
-            tranfVal: true,
-            pointArr: []
+            tranfVal: true
         }
     },
     props: {
@@ -83,33 +88,47 @@ export default {
     },
     methods: {
         getForm(cb) {
-            this.$refs["form"].validate((valid) => {
-                if(valid){
-                    if(this.tranfVal && this.pointArr.length) {
-                        this.form.pointArr = this.pointArr;
-                    }
-                    cb(this.form)
+            this.$refs['form'].validate(valid => {
+                if (valid) {
+                    this.form.tranfVal = this.tranfVal;
+                    cb(this.form)                    
                 } else {
                     cb(false)
                 }
             })
         },
+        addDevs() {
+            this.form.devArr.push(this.newDevs())
+        },
+        newDevs() {
+            return {
+                EquipmentMark: '',
+                SplitStart: 1,
+                SplitEnd: 2
+            }
+        },
         delDev(index) {
-            this.form.devArr.splice(index,1);
+            this.form.devArr.splice(index, 1)
         },
         addRules() {
-            this.pointArr.push(this.newRules())
+            this.form.pointArr.push(this.newRules())
         },
         newRules() {
             return { from: '', to: '' }
         },
-        deleteRules(index) {
+        deleteRow(index) {
             if (!this.tranfVal) {
                 return false
             }
-            this.pointArr.splice(index, 1)
+            this.form.pointArr.splice(index, 1)
+        },
+        init() {
+            this.form.pointArr = [{ from: '', to: '' }]
         }
-    }
+    },
+    mounted() {
+     this.init()   
+    },
 }
 </script>
 
@@ -138,24 +157,28 @@ export default {
         line-height: 80px;
     }
     .point-box {
-        margin-top: 40px;
+        margin-top: 45px;
         position: relative;
         width: 500px;
-        .character {
+        .left,
+        .right {
+            font-size: 20px;
+        }
+        .left {
             position: absolute;
-            top: -40px;
-            left: 0;
-            font-size: 22px;
-            width: 500px;
-            text-align: left;
+            top: -25px;
+            left: -11px;
         }
-        .nm {
-            text-align: center;
+        .right {
+            position: absolute;
+            top: -25px;
+            left: 260px;
         }
         li {
             display: flex;
             justify-content: space-between;
             margin-top: 5px;
+            position: relative;
             p {
                 .name {
                     padding-left: 40px;
@@ -165,12 +188,13 @@ export default {
                     display: inline-block;
                     width: 80px;
                 }
-                .delete {
-                    margin-left: 5px;
-                    cursor: pointer;
-                    position: relative;
-                    z-index: 99999;
-                }
+            }
+            .delete {
+                top: 5px;
+                right: -20px;
+                cursor: pointer;
+                position: absolute;
+                z-index: 99999;
             }
         }
     }

+ 2 - 2
src/fetch/point_http.js

@@ -272,5 +272,5 @@ export function batchQueryUnit(param, success) {
 //批量创建对应关系
 export function batchCreate(param, success) {
     let data = param
-    return post(`${relation}/batch-create`, data, success)
-}
+    return post(`${point}/relation//batch-create`, data, success)
+}