main
			
			
		
		
							parent
							
								
									972993be58
								
							
						
					
					
						commit
						e7d50d77bf
					
				| 
						 | 
					@ -82,6 +82,10 @@ const infoApi = {
 | 
				
			||||||
  getP(params) {
 | 
					  getP(params) {
 | 
				
			||||||
    return postPBRequest('/template', params, 56000)
 | 
					    return postPBRequest('/template', params, 56000)
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  // 删除点位
 | 
				
			||||||
 | 
					  detP(params) {
 | 
				
			||||||
 | 
					    return postPBRequest('/template', params, 56300)
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  //   // 获取设备列表
 | 
					  //   // 获取设备列表
 | 
				
			||||||
  //   getSet(params) {
 | 
					  //   getSet(params) {
 | 
				
			||||||
  //     return postJsonRequest('/tx/info', params)
 | 
					  //     return postJsonRequest('/tx/info', params)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,251 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <el-dialog v-model="visible" title="点位管理" width="60%" :before-close="closeDialog">
 | 
				
			||||||
 | 
					    <el-card class="top-title">
 | 
				
			||||||
 | 
					      <span>模板名称:{{ addForm.name }}</span>
 | 
				
			||||||
 | 
					      <span>模板描述:{{ addForm.description }}</span>
 | 
				
			||||||
 | 
					      <span>模板类型:{{ templateData[1] }}</span>
 | 
				
			||||||
 | 
					    </el-card>
 | 
				
			||||||
 | 
					    <div class="btns">
 | 
				
			||||||
 | 
					      <div>
 | 
				
			||||||
 | 
					        <el-button type="primary" @click="saveP"> 保存 </el-button>
 | 
				
			||||||
 | 
					        <el-button @click="closeDialog">取消</el-button>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					      <!-- <div>
 | 
				
			||||||
 | 
					        <el-button type="primary" @click="importData"> 导入 </el-button>
 | 
				
			||||||
 | 
					        <el-button type="primary" @click="exportData"> 导出 </el-button>
 | 
				
			||||||
 | 
					      </div> -->
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div>
 | 
				
			||||||
 | 
					      <el-table :data="propertiesData" height="230" style="width: 100%" border stripe
 | 
				
			||||||
 | 
					        :header-cell-style="{ background: '#F6F7FC' }">
 | 
				
			||||||
 | 
					        <el-table-column prop="name" label="点位名称" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					          <template #default="scope">
 | 
				
			||||||
 | 
					            <el-input v-model="scope.row.name" clearable />
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </el-table-column>
 | 
				
			||||||
 | 
					        <el-table-column prop="address" label="点位地址" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					          <template #default="scope">
 | 
				
			||||||
 | 
					            <el-input v-model="scope.row.address" clearable />
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </el-table-column>
 | 
				
			||||||
 | 
					        <el-table-column prop="type" label="点位类型" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					          <template #default="scope">
 | 
				
			||||||
 | 
					            <el-select v-model="scope.row.type" size="mini">
 | 
				
			||||||
 | 
					              <el-option v-for="item in datatypeArr" :key="item.value" :label="item.label" :value="item.value" />
 | 
				
			||||||
 | 
					            </el-select>
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </el-table-column>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <el-table-column prop="byte_order" label="字节顺序" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					          <template #default="scope">
 | 
				
			||||||
 | 
					            <el-select v-model="scope.row.byte_order" size="mini">
 | 
				
			||||||
 | 
					              <el-option v-for="item in byte_orderArr" :key="item.value" :label="item.label" :value="item.value" />
 | 
				
			||||||
 | 
					            </el-select>
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </el-table-column>
 | 
				
			||||||
 | 
					        <el-table-column prop="multplier" label="缩放系数" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					          <template #default="scope">
 | 
				
			||||||
 | 
					            <el-input v-model="scope.row.multplier" clearable />
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </el-table-column>
 | 
				
			||||||
 | 
					        <el-table-column prop="unit" label="点位单位" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					          <template #default="scope">
 | 
				
			||||||
 | 
					            <el-input v-model="scope.row.unit" clearable />
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </el-table-column>
 | 
				
			||||||
 | 
					        <el-table-column prop="description" label="点位描述" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					          <template #default="scope">
 | 
				
			||||||
 | 
					            <el-input v-model="scope.row.description" clearable />
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </el-table-column>
 | 
				
			||||||
 | 
					        <el-table-column label="操作" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					          <template #default="scope">
 | 
				
			||||||
 | 
					            <el-button type="danger" @click="delData(scope.$index)">
 | 
				
			||||||
 | 
					              删除
 | 
				
			||||||
 | 
					            </el-button>
 | 
				
			||||||
 | 
					          </template>
 | 
				
			||||||
 | 
					        </el-table-column>
 | 
				
			||||||
 | 
					      </el-table>
 | 
				
			||||||
 | 
					      <div class="flex-center" @click="addRow">
 | 
				
			||||||
 | 
					        +新增一行
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					  </el-dialog>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					import { onMounted, reactive, ref, toRefs, computed, nextTick } from "vue";
 | 
				
			||||||
 | 
					import infoApi from "@/api/infoApi.js";
 | 
				
			||||||
 | 
					import { ElMessage, ElMessageBox } from "element-plus";
 | 
				
			||||||
 | 
					// import { m_point, m_properties, mb_info, response} from '../proto/data/pd'
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  props: ["formData", "dialogVisible","templateData"],
 | 
				
			||||||
 | 
					  emits: ["dialogClose", "dialogSuccess"],
 | 
				
			||||||
 | 
					  setup(props, ctx) {
 | 
				
			||||||
 | 
					    const state = reactive({
 | 
				
			||||||
 | 
					      addForm: {},
 | 
				
			||||||
 | 
					      propertiesData: [],
 | 
				
			||||||
 | 
					      datatypeArr: [{
 | 
				
			||||||
 | 
					        label: 'bool',
 | 
				
			||||||
 | 
					        value: 'bool'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: 'int16',
 | 
				
			||||||
 | 
					        value: 'int16'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: 'int32',
 | 
				
			||||||
 | 
					        value: 'int32'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: 'unit16',
 | 
				
			||||||
 | 
					        value: 'unit16'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: 'unit32',
 | 
				
			||||||
 | 
					        value: 'unit32'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: 'float32',
 | 
				
			||||||
 | 
					        value: 'float32'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: 'float64',
 | 
				
			||||||
 | 
					        value: 'float64'
 | 
				
			||||||
 | 
					      }],
 | 
				
			||||||
 | 
					      byte_orderArr: [{
 | 
				
			||||||
 | 
					        label: 'null',
 | 
				
			||||||
 | 
					        value: 'null'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: '12',
 | 
				
			||||||
 | 
					        value: '12'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: '21',
 | 
				
			||||||
 | 
					        value: '21'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: '1234',
 | 
				
			||||||
 | 
					        value: '1234'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: '4321',
 | 
				
			||||||
 | 
					        value: '4321'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: 'ABCD',
 | 
				
			||||||
 | 
					        value: 'ABCD'
 | 
				
			||||||
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: 'DCBA',
 | 
				
			||||||
 | 
					        value: 'DCBA'
 | 
				
			||||||
 | 
					      }]
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    const visible = computed(() => {
 | 
				
			||||||
 | 
					      return props.dialogVisible;
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    onMounted(() => {
 | 
				
			||||||
 | 
					      state.addForm = props.formData;
 | 
				
			||||||
 | 
					      // 获取点位列表
 | 
				
			||||||
 | 
					      getPointList();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    const getPointList = async () => {
 | 
				
			||||||
 | 
					      const parm = {
 | 
				
			||||||
 | 
					        name: state.addForm.name
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      const res = await infoApi.getP(parm);
 | 
				
			||||||
 | 
					      if (res.code == 0) {
 | 
				
			||||||
 | 
					        const propArr = res.data || [];
 | 
				
			||||||
 | 
					        state.propertiesData = [];
 | 
				
			||||||
 | 
					        propArr.forEach(v => {
 | 
				
			||||||
 | 
					          state.propertiesData.push({
 | 
				
			||||||
 | 
					            name: v.name,
 | 
				
			||||||
 | 
					            address: v.properties[0].value,
 | 
				
			||||||
 | 
					            type: v.properties[1].value,
 | 
				
			||||||
 | 
					            byte_order: v.properties[2].value,
 | 
				
			||||||
 | 
					            multplier: v.properties[3].value,
 | 
				
			||||||
 | 
					            unit: v.properties[4].value,
 | 
				
			||||||
 | 
					            description: v.properties[5].value,
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        console.log(res);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    const closeDialog = () => {
 | 
				
			||||||
 | 
					      ctx.emit("dialogClose");
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const importData = () => { };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const exportData = () => { };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const saveP = async () => {
 | 
				
			||||||
 | 
					      if (state.propertiesData.length < 1) {
 | 
				
			||||||
 | 
					        return ElMessage.error("请添加一条点位");
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      // const newArr = [];
 | 
				
			||||||
 | 
					      // state.propertiesData.forEach(item => {
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					      // })
 | 
				
			||||||
 | 
					      // console.log(123, newArr)
 | 
				
			||||||
 | 
					      const param = {
 | 
				
			||||||
 | 
					        name: state.addForm.name,
 | 
				
			||||||
 | 
					        type: state.addForm.type,
 | 
				
			||||||
 | 
					        description: state.addForm.description,
 | 
				
			||||||
 | 
					        points: state.propertiesData
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      const res = await infoApi.addP(param);
 | 
				
			||||||
 | 
					      if (res.code == 0) {
 | 
				
			||||||
 | 
					        ElMessage.success(res.message || "请求成功");
 | 
				
			||||||
 | 
					        // 获取数据
 | 
				
			||||||
 | 
					        getPointList();
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        ElMessage.error(res.message);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    const addRow = () => {
 | 
				
			||||||
 | 
					      let newRow = {
 | 
				
			||||||
 | 
					        name: '',
 | 
				
			||||||
 | 
					        address: '',
 | 
				
			||||||
 | 
					        type: 'bool',
 | 
				
			||||||
 | 
					        byte_order: 'null',
 | 
				
			||||||
 | 
					        multplier: '',
 | 
				
			||||||
 | 
					        unit: '',
 | 
				
			||||||
 | 
					        description: ''
 | 
				
			||||||
 | 
					      };
 | 
				
			||||||
 | 
					      state.propertiesData.push(newRow);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    const delData = (index) => {
 | 
				
			||||||
 | 
					      state.propertiesData.splice(index, 1);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      ...toRefs(state),
 | 
				
			||||||
 | 
					      visible,
 | 
				
			||||||
 | 
					      closeDialog,
 | 
				
			||||||
 | 
					      importData,
 | 
				
			||||||
 | 
					      exportData,
 | 
				
			||||||
 | 
					      addRow,
 | 
				
			||||||
 | 
					      saveP,
 | 
				
			||||||
 | 
					      delData
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					<style lang="scss" scoped>
 | 
				
			||||||
 | 
					.top-title {
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ::v-deep .el-card__body {
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    justify-content: space-between;
 | 
				
			||||||
 | 
					    font-weight: 800;
 | 
				
			||||||
 | 
					    font-size: 16px;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.btns {
 | 
				
			||||||
 | 
					  padding: 15px 0;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: space-between;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.flex-center {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  padding: 10px 0;
 | 
				
			||||||
 | 
					  cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
| 
						 | 
					@ -1,166 +1,139 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <el-dialog v-model="visible" title="点位管理" width="60%" :before-close="closeDialog">
 | 
					  <el-dialog v-model="visible" title="点位管理" width="40%" :before-close="closeDialog">
 | 
				
			||||||
    <el-card class="top-title">
 | 
					    <el-form :model="addForm" label-width="100px" :rules="rules" ref="ruleFormRef">
 | 
				
			||||||
      <span>模板名称:{{ addForm.name }}</span>
 | 
					      <el-form-item label="点位名称:" prop="name">
 | 
				
			||||||
      <span>模板描述:{{ addForm.description }}</span>
 | 
					        <el-input v-model="addForm.name" placeholder="请输入点位名称" clearable />
 | 
				
			||||||
      <span>模板类型:{{ templateData[1] }}</span>
 | 
					      </el-form-item>
 | 
				
			||||||
    </el-card>
 | 
					      <el-form-item label="点位地址:" prop="address">
 | 
				
			||||||
    <div class="btns">
 | 
					        <el-input v-model="addForm.address" placeholder="请输入点位地址" clearable type="number"/>
 | 
				
			||||||
      <div>
 | 
					      </el-form-item>
 | 
				
			||||||
        <el-button type="primary" @click="saveP"> 保存 </el-button>
 | 
					      <el-form-item label="点位类型:" prop="type">
 | 
				
			||||||
 | 
					        <el-select v-model="addForm.type" size="mini" placeholder="请选择点位类型">
 | 
				
			||||||
 | 
					          <el-option v-for="item in datatypeArr" :key="item.value" :label="item.label" :value="item.value" />
 | 
				
			||||||
 | 
					        </el-select>
 | 
				
			||||||
 | 
					      </el-form-item>
 | 
				
			||||||
 | 
					      <el-form-item label="字节顺序:" prop="byte_order">
 | 
				
			||||||
 | 
					        <el-select v-model="addForm.byte_order" size="mini" placeholder="请选择字节顺序">
 | 
				
			||||||
 | 
					          <el-option v-for="item in byte_orderArr" :key="item.value" :label="item.label" :value="item.value" />
 | 
				
			||||||
 | 
					        </el-select>
 | 
				
			||||||
 | 
					      </el-form-item>
 | 
				
			||||||
 | 
					      <el-form-item label="点位描述:" prop="description">
 | 
				
			||||||
 | 
					        <el-input v-model="addForm.description" placeholder="请输入点位描述" clearable />
 | 
				
			||||||
 | 
					      </el-form-item>
 | 
				
			||||||
 | 
					    </el-form>
 | 
				
			||||||
 | 
					    <template #footer>
 | 
				
			||||||
 | 
					      <span class="dialog-footer">
 | 
				
			||||||
        <el-button @click="closeDialog">取消</el-button>
 | 
					        <el-button @click="closeDialog">取消</el-button>
 | 
				
			||||||
      </div>
 | 
					        <el-button type="primary" @click="saveP"> 保存 </el-button>
 | 
				
			||||||
      <!-- <div>
 | 
					      </span>
 | 
				
			||||||
        <el-button type="primary" @click="importData"> 导入 </el-button>
 | 
					    </template>
 | 
				
			||||||
        <el-button type="primary" @click="exportData"> 导出 </el-button>
 | 
					 | 
				
			||||||
      </div> -->
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
    <div>
 | 
					 | 
				
			||||||
      <el-table :data="propertiesData" height="230" style="width: 100%" border stripe
 | 
					 | 
				
			||||||
        :header-cell-style="{ background: '#F6F7FC' }">
 | 
					 | 
				
			||||||
        <el-table-column prop="name" label="点位名称" align="center" show-overflow-tooltip>
 | 
					 | 
				
			||||||
          <template #default="scope">
 | 
					 | 
				
			||||||
            <el-input v-model="scope.row.name" clearable />
 | 
					 | 
				
			||||||
          </template>
 | 
					 | 
				
			||||||
        </el-table-column>
 | 
					 | 
				
			||||||
        <el-table-column prop="address" label="点位地址" align="center" show-overflow-tooltip>
 | 
					 | 
				
			||||||
          <template #default="scope">
 | 
					 | 
				
			||||||
            <el-input v-model="scope.row.address" clearable />
 | 
					 | 
				
			||||||
          </template>
 | 
					 | 
				
			||||||
        </el-table-column>
 | 
					 | 
				
			||||||
        <el-table-column prop="type" label="点位类型" align="center" show-overflow-tooltip>
 | 
					 | 
				
			||||||
          <template #default="scope">
 | 
					 | 
				
			||||||
            <el-select v-model="scope.row.type" size="mini">
 | 
					 | 
				
			||||||
              <el-option v-for="item in datatypeArr" :key="item.value" :label="item.label" :value="item.value" />
 | 
					 | 
				
			||||||
            </el-select>
 | 
					 | 
				
			||||||
          </template>
 | 
					 | 
				
			||||||
        </el-table-column>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <el-table-column prop="byte_order" label="字节顺序" align="center" show-overflow-tooltip>
 | 
					 | 
				
			||||||
          <template #default="scope">
 | 
					 | 
				
			||||||
            <el-select v-model="scope.row.byte_order" size="mini">
 | 
					 | 
				
			||||||
              <el-option v-for="item in byte_orderArr" :key="item.value" :label="item.label" :value="item.value" />
 | 
					 | 
				
			||||||
            </el-select>
 | 
					 | 
				
			||||||
          </template>
 | 
					 | 
				
			||||||
        </el-table-column>
 | 
					 | 
				
			||||||
        <el-table-column prop="multplier" label="缩放系数" align="center" show-overflow-tooltip>
 | 
					 | 
				
			||||||
          <template #default="scope">
 | 
					 | 
				
			||||||
            <el-input v-model="scope.row.multplier" clearable />
 | 
					 | 
				
			||||||
          </template>
 | 
					 | 
				
			||||||
        </el-table-column>
 | 
					 | 
				
			||||||
        <el-table-column prop="unit" label="点位单位" align="center" show-overflow-tooltip>
 | 
					 | 
				
			||||||
          <template #default="scope">
 | 
					 | 
				
			||||||
            <el-input v-model="scope.row.unit" clearable />
 | 
					 | 
				
			||||||
          </template>
 | 
					 | 
				
			||||||
        </el-table-column>
 | 
					 | 
				
			||||||
        <el-table-column prop="description" label="点位描述" align="center" show-overflow-tooltip>
 | 
					 | 
				
			||||||
          <template #default="scope">
 | 
					 | 
				
			||||||
            <el-input v-model="scope.row.description" clearable />
 | 
					 | 
				
			||||||
          </template>
 | 
					 | 
				
			||||||
        </el-table-column>
 | 
					 | 
				
			||||||
        <el-table-column label="操作" align="center" show-overflow-tooltip>
 | 
					 | 
				
			||||||
          <template #default="scope">
 | 
					 | 
				
			||||||
            <el-button type="danger" @click="delData(scope.$index)">
 | 
					 | 
				
			||||||
              删除
 | 
					 | 
				
			||||||
            </el-button>
 | 
					 | 
				
			||||||
          </template>
 | 
					 | 
				
			||||||
        </el-table-column>
 | 
					 | 
				
			||||||
      </el-table>
 | 
					 | 
				
			||||||
      <div class="flex-center" @click="addRow">
 | 
					 | 
				
			||||||
        +新增一行
 | 
					 | 
				
			||||||
      </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					 | 
				
			||||||
  </el-dialog>
 | 
					  </el-dialog>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
<script>
 | 
					<script>
 | 
				
			||||||
import { onMounted, reactive, ref, toRefs, computed, nextTick } from "vue";
 | 
					import { onMounted, reactive, ref, toRefs, computed, nextTick } from "vue";
 | 
				
			||||||
import infoApi from "@/api/infoApi.js";
 | 
					import infoApi from "@/api/infoApi.js";
 | 
				
			||||||
import { ElMessage, ElMessageBox } from "element-plus";
 | 
					import { ElMessage, ElMessageBox } from "element-plus";
 | 
				
			||||||
// import { m_point, m_properties, mb_info, response} from '../proto/data/pd'
 | 
					 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  props: ["formData", "dialogVisible","templateData"],
 | 
					  props: ["formData", "dialogVisible"],
 | 
				
			||||||
  emits: ["dialogClose", "dialogSuccess"],
 | 
					  emits: ["dialogClose", "dialogSuccess"],
 | 
				
			||||||
  setup(props, ctx) {
 | 
					  setup(props, ctx) {
 | 
				
			||||||
 | 
					    const ruleFormRef = ref(null);
 | 
				
			||||||
    const state = reactive({
 | 
					    const state = reactive({
 | 
				
			||||||
      addForm: {},
 | 
					      addForm: {
 | 
				
			||||||
      propertiesData: [],
 | 
					        type: 1,
 | 
				
			||||||
 | 
					        byte_order: 1
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
      datatypeArr: [{
 | 
					      datatypeArr: [{
 | 
				
			||||||
        label: 'bool',
 | 
					        label: 'bool',
 | 
				
			||||||
        value: 'bool'
 | 
					        value: 1
 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
        label: 'int16',
 | 
					        label: 'int16',
 | 
				
			||||||
        value: 'int16'
 | 
					        value: 2
 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
        label: 'int32',
 | 
					        label: 'int32',
 | 
				
			||||||
        value: 'int32'
 | 
					        value: 3
 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
 | 
					        label: 'int64',
 | 
				
			||||||
 | 
					        value: 4
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
        label: 'unit16',
 | 
					        label: 'unit16',
 | 
				
			||||||
        value: 'unit16'
 | 
					        value: 5
 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
        label: 'unit32',
 | 
					        label: 'unit32',
 | 
				
			||||||
        value: 'unit32'
 | 
					        value: 6
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        label: 'unit64',
 | 
				
			||||||
 | 
					        value: 7
 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
        label: 'float32',
 | 
					        label: 'float32',
 | 
				
			||||||
        value: 'float32'
 | 
					        value: 8
 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
        label: 'float64',
 | 
					        label: 'float64',
 | 
				
			||||||
        value: 'float64'
 | 
					        value: 9
 | 
				
			||||||
      }],
 | 
					      }],
 | 
				
			||||||
      byte_orderArr: [{
 | 
					      byte_orderArr: [{
 | 
				
			||||||
        label: 'null',
 | 
					        label: 'null',
 | 
				
			||||||
        value: 'null'
 | 
					        value: 1
 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
        label: '12',
 | 
					        label: '12',
 | 
				
			||||||
        value: '12'
 | 
					        value: 2
 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
        label: '21',
 | 
					        label: '21',
 | 
				
			||||||
        value: '21'
 | 
					        value: 3
 | 
				
			||||||
      }, {
 | 
					 | 
				
			||||||
        label: '1234',
 | 
					 | 
				
			||||||
        value: '1234'
 | 
					 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
        label: '4321',
 | 
					        label: '4321',
 | 
				
			||||||
        value: '4321'
 | 
					        value: 4
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        label: '2143',
 | 
				
			||||||
 | 
					        value: 5
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        label: '1234',
 | 
				
			||||||
 | 
					        value: 6
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        label: '3412',
 | 
				
			||||||
 | 
					        value: 7
 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
        label: 'ABCD',
 | 
					        label: '4312',
 | 
				
			||||||
        value: 'ABCD'
 | 
					        value: 8
 | 
				
			||||||
      }, {
 | 
					      }, {
 | 
				
			||||||
        label: 'DCBA',
 | 
					        label: '3421',
 | 
				
			||||||
        value: 'DCBA'
 | 
					        value: 9
 | 
				
			||||||
      }]
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        label: '2134',
 | 
				
			||||||
 | 
					        value: 10
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        label: '1243',
 | 
				
			||||||
 | 
					        value: 11
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        label: 'BIG',
 | 
				
			||||||
 | 
					        value: 12
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        label: 'LIT',
 | 
				
			||||||
 | 
					        value: 13
 | 
				
			||||||
 | 
					      }],
 | 
				
			||||||
 | 
					      rules: {
 | 
				
			||||||
 | 
					        name: [{ required: true, message: "请输入点位名称", trigger: "blur" }],
 | 
				
			||||||
 | 
					        address: [{ required: true, message: "请输入点位地址", trigger: "blur" }],
 | 
				
			||||||
 | 
					        type: [{ required: true, message: "请选择点位类型", trigger: "blur" }],
 | 
				
			||||||
 | 
					        byte_order: [{ required: true, message: "请选择字节顺序", trigger: "blur" }],
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    const visible = computed(() => {
 | 
					    const visible = computed(() => {
 | 
				
			||||||
      return props.dialogVisible;
 | 
					      return props.dialogVisible;
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    onMounted(() => {
 | 
					    onMounted(() => {
 | 
				
			||||||
      state.addForm = props.formData;
 | 
					
 | 
				
			||||||
      // 获取点位列表
 | 
					 | 
				
			||||||
      getPointList();
 | 
					 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    const getPointList = async () => {
 | 
					 | 
				
			||||||
      const parm = {
 | 
					 | 
				
			||||||
        name: state.addForm.name
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      const res = await infoApi.getP(parm);
 | 
					 | 
				
			||||||
      if (res.code == 0) {
 | 
					 | 
				
			||||||
        const propArr = res.data || [];
 | 
					 | 
				
			||||||
        state.propertiesData = [];
 | 
					 | 
				
			||||||
        propArr.forEach(v => {
 | 
					 | 
				
			||||||
          state.propertiesData.push({
 | 
					 | 
				
			||||||
            name: v.name,
 | 
					 | 
				
			||||||
            address: v.properties[0].value,
 | 
					 | 
				
			||||||
            type: v.properties[1].value,
 | 
					 | 
				
			||||||
            byte_order: v.properties[2].value,
 | 
					 | 
				
			||||||
            multplier: v.properties[3].value,
 | 
					 | 
				
			||||||
            unit: v.properties[4].value,
 | 
					 | 
				
			||||||
            description: v.properties[5].value,
 | 
					 | 
				
			||||||
          })
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
        console.log(res);
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
    const closeDialog = () => {
 | 
					    const closeDialog = () => {
 | 
				
			||||||
      ctx.emit("dialogClose");
 | 
					      ctx.emit("dialogClose");
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
| 
						 | 
					@ -170,54 +143,40 @@ export default {
 | 
				
			||||||
    const exportData = () => { };
 | 
					    const exportData = () => { };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const saveP = async () => {
 | 
					    const saveP = async () => {
 | 
				
			||||||
      if (state.propertiesData.length < 1) {
 | 
					      console.log(ruleFormRef.value);
 | 
				
			||||||
        return ElMessage.error("请添加一条点位");
 | 
					      await ruleFormRef.value.validate(async (valid) => {
 | 
				
			||||||
      }
 | 
					        if (valid) {
 | 
				
			||||||
      // const newArr = [];
 | 
					          const param = {
 | 
				
			||||||
      // state.propertiesData.forEach(item => {
 | 
					            point_name: props.formData.name + '/' + state.addForm.name,
 | 
				
			||||||
       
 | 
					            point: {
 | 
				
			||||||
      // })
 | 
					              description: state.addForm.description,
 | 
				
			||||||
      // console.log(123, newArr)
 | 
					              address: Number(state.addForm.address),
 | 
				
			||||||
      const param = {
 | 
					              type: state.addForm.type,
 | 
				
			||||||
        name: state.addForm.name,
 | 
					              byte_order: state.addForm.byte_order
 | 
				
			||||||
        type: state.addForm.type,
 | 
					            }
 | 
				
			||||||
        description: state.addForm.description,
 | 
					          }
 | 
				
			||||||
        points: state.propertiesData
 | 
					          const res = await infoApi.addP(param);
 | 
				
			||||||
      }
 | 
					          if (res.code == 0) {
 | 
				
			||||||
      const res = await infoApi.addP(param);
 | 
					            ElMessage.success(res.message || "请求成功");
 | 
				
			||||||
      if (res.code == 0) {
 | 
					            ctx.emit("dialogClose");
 | 
				
			||||||
        ElMessage.success(res.message || "请求成功");
 | 
					          } else {
 | 
				
			||||||
        // 获取数据
 | 
					            ElMessage.error(res.message);
 | 
				
			||||||
        getPointList();
 | 
					          }
 | 
				
			||||||
      } else {
 | 
					        } else {
 | 
				
			||||||
        ElMessage.error(res.message);
 | 
					          console.log("error submit!");
 | 
				
			||||||
      }
 | 
					        }
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    const addRow = () => {
 | 
					 | 
				
			||||||
      let newRow = {
 | 
					 | 
				
			||||||
        name: '',
 | 
					 | 
				
			||||||
        address: '',
 | 
					 | 
				
			||||||
        type: 'bool',
 | 
					 | 
				
			||||||
        byte_order: 'null',
 | 
					 | 
				
			||||||
        multplier: '',
 | 
					 | 
				
			||||||
        unit: '',
 | 
					 | 
				
			||||||
        description: ''
 | 
					 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
      state.propertiesData.push(newRow);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    const delData = (index) => {
 | 
					 | 
				
			||||||
      state.propertiesData.splice(index, 1);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
      ...toRefs(state),
 | 
					      ...toRefs(state),
 | 
				
			||||||
      visible,
 | 
					      visible,
 | 
				
			||||||
      closeDialog,
 | 
					      closeDialog,
 | 
				
			||||||
      importData,
 | 
					      importData,
 | 
				
			||||||
      exportData,
 | 
					      exportData,
 | 
				
			||||||
      addRow,
 | 
					 | 
				
			||||||
      saveP,
 | 
					      saveP,
 | 
				
			||||||
      delData
 | 
					      ruleFormRef
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,154 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					    <el-dialog v-model="visible" title="点位管理" width="60%" :before-close="closeDialog">
 | 
				
			||||||
 | 
					        <el-table :data="propertiesData" height="230" style="width: 100%" border stripe
 | 
				
			||||||
 | 
					            :header-cell-style="{ background: '#F6F7FC' }">
 | 
				
			||||||
 | 
					            <el-table-column prop="name" label="点位名称" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					            </el-table-column>
 | 
				
			||||||
 | 
					            <el-table-column prop="address" label="点位地址" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					            </el-table-column>
 | 
				
			||||||
 | 
					            <el-table-column prop="type" label="点位类型" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					                <template #default="scope">
 | 
				
			||||||
 | 
					                    <span>{{ typeData[scope.row.type] }}</span>
 | 
				
			||||||
 | 
					                </template>
 | 
				
			||||||
 | 
					            </el-table-column>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <el-table-column prop="byte_order" label="字节顺序" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					                <template #default="scope">
 | 
				
			||||||
 | 
					                    <span>{{ byteData[scope.row.byte_order] }}</span>
 | 
				
			||||||
 | 
					                </template>
 | 
				
			||||||
 | 
					            </el-table-column>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <el-table-column prop="description" label="点位描述" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </el-table-column>
 | 
				
			||||||
 | 
					            <el-table-column label="操作" align="center" show-overflow-tooltip>
 | 
				
			||||||
 | 
					                <template #default="scope">
 | 
				
			||||||
 | 
					                    <el-button type="danger" @click="delData(scope.row)">
 | 
				
			||||||
 | 
					                        删除
 | 
				
			||||||
 | 
					                    </el-button>
 | 
				
			||||||
 | 
					                </template>
 | 
				
			||||||
 | 
					            </el-table-column>
 | 
				
			||||||
 | 
					        </el-table>
 | 
				
			||||||
 | 
					    </el-dialog>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					<script>
 | 
				
			||||||
 | 
					import { onMounted, reactive, ref, toRefs, computed, nextTick } from "vue";
 | 
				
			||||||
 | 
					import infoApi from "@/api/infoApi.js";
 | 
				
			||||||
 | 
					import { ElMessage, ElMessageBox } from "element-plus";
 | 
				
			||||||
 | 
					export default {
 | 
				
			||||||
 | 
					    props: ["formData", "dialogVisible"],
 | 
				
			||||||
 | 
					    emits: ["dialogClose", "dialogSuccess"],
 | 
				
			||||||
 | 
					    setup(props, ctx) {
 | 
				
			||||||
 | 
					        const state = reactive({
 | 
				
			||||||
 | 
					            propertiesData: [],
 | 
				
			||||||
 | 
					            typeData: {
 | 
				
			||||||
 | 
					                1: 'bool',
 | 
				
			||||||
 | 
					                2: 'int16',
 | 
				
			||||||
 | 
					                3: 'int32',
 | 
				
			||||||
 | 
					                4: 'int64',
 | 
				
			||||||
 | 
					                5: 'unit16',
 | 
				
			||||||
 | 
					                6: 'unit32',
 | 
				
			||||||
 | 
					                7: 'unit64',
 | 
				
			||||||
 | 
					                8: 'float32',
 | 
				
			||||||
 | 
					                9: 'float64'
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            byteData: {
 | 
				
			||||||
 | 
					                1: 'null',
 | 
				
			||||||
 | 
					                2: '12',
 | 
				
			||||||
 | 
					                3: '21',
 | 
				
			||||||
 | 
					                4: '4321',
 | 
				
			||||||
 | 
					                5: '2143',
 | 
				
			||||||
 | 
					                6: '1234',
 | 
				
			||||||
 | 
					                7: '3412',
 | 
				
			||||||
 | 
					                8: '4312',
 | 
				
			||||||
 | 
					                9: '3421',
 | 
				
			||||||
 | 
					                10: '2134',
 | 
				
			||||||
 | 
					                11: '1243',
 | 
				
			||||||
 | 
					                12: 'BIG',
 | 
				
			||||||
 | 
					                13: 'LIT'
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        const visible = computed(() => {
 | 
				
			||||||
 | 
					            return props.dialogVisible;
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        onMounted(() => {
 | 
				
			||||||
 | 
					            getPointList();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const getPointList = async () => {
 | 
				
			||||||
 | 
					            const parm = {
 | 
				
			||||||
 | 
					                name: props.formData.name
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            const res = await infoApi.getP(parm);
 | 
				
			||||||
 | 
					            if (res.code == 0) {
 | 
				
			||||||
 | 
					                state.propertiesData = res.data;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                console.log(res);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        const closeDialog = () => {
 | 
				
			||||||
 | 
					            ctx.emit("dialogClose");
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const delData = (item) => {
 | 
				
			||||||
 | 
					            ElMessageBox.confirm("确定删除该数据?", "提示", {
 | 
				
			||||||
 | 
					                confirmButtonText: "确定",
 | 
				
			||||||
 | 
					                cancelButtonText: "取消",
 | 
				
			||||||
 | 
					                type: "warning",
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					                .then(async () => {
 | 
				
			||||||
 | 
					                    let param = {
 | 
				
			||||||
 | 
					                        point_name: item.name
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    const res = await infoApi.detP(param);
 | 
				
			||||||
 | 
					                    if (res.code == 0) {
 | 
				
			||||||
 | 
					                        ElMessage.success(res.message || "删除成功");
 | 
				
			||||||
 | 
					                        getPointList();
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        ElMessage.error(res.message | "删除失败");
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                })
 | 
				
			||||||
 | 
					                .catch(() => {
 | 
				
			||||||
 | 
					                    ElMessage.info("已取消删除");
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return {
 | 
				
			||||||
 | 
					            ...toRefs(state),
 | 
				
			||||||
 | 
					            visible,
 | 
				
			||||||
 | 
					            closeDialog,
 | 
				
			||||||
 | 
					            delData
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					<style lang="scss" scoped>
 | 
				
			||||||
 | 
					.top-title {
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ::v-deep .el-card__body {
 | 
				
			||||||
 | 
					        width: 100%;
 | 
				
			||||||
 | 
					        display: flex;
 | 
				
			||||||
 | 
					        justify-content: space-between;
 | 
				
			||||||
 | 
					        font-weight: 800;
 | 
				
			||||||
 | 
					        font-size: 16px;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.btns {
 | 
				
			||||||
 | 
					    padding: 15px 0;
 | 
				
			||||||
 | 
					    width: 100%;
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    justify-content: space-between;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.flex-center {
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    justify-content: center;
 | 
				
			||||||
 | 
					    padding: 10px 0;
 | 
				
			||||||
 | 
					    cursor: pointer;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
| 
						 | 
					@ -17,7 +17,10 @@
 | 
				
			||||||
        <el-table-column label="模板管理" align="center" show-overflow-tooltip>
 | 
					        <el-table-column label="模板管理" align="center" show-overflow-tooltip>
 | 
				
			||||||
          <template #default="scope">
 | 
					          <template #default="scope">
 | 
				
			||||||
            <el-button type="info" @click="manageData(scope.row)">
 | 
					            <el-button type="info" @click="manageData(scope.row)">
 | 
				
			||||||
              点位
 | 
					              新增点位
 | 
				
			||||||
 | 
					            </el-button>
 | 
				
			||||||
 | 
					            <el-button type="info" @click="viewData(scope.row)">
 | 
				
			||||||
 | 
					              点位查询
 | 
				
			||||||
            </el-button>
 | 
					            </el-button>
 | 
				
			||||||
            <el-button type="primary" @click="editData(scope.row)">
 | 
					            <el-button type="primary" @click="editData(scope.row)">
 | 
				
			||||||
              编辑
 | 
					              编辑
 | 
				
			||||||
| 
						 | 
					@ -32,9 +35,12 @@
 | 
				
			||||||
    <AddMb :type="type" :formData="formData"  :dialogVisible="dialogVisible" v-if="dialogVisible"
 | 
					    <AddMb :type="type" :formData="formData"  :dialogVisible="dialogVisible" v-if="dialogVisible"
 | 
				
			||||||
      @dialogClose="dialogClose" @dialogSuccess="dialogSuccess">
 | 
					      @dialogClose="dialogClose" @dialogSuccess="dialogSuccess">
 | 
				
			||||||
    </AddMb>
 | 
					    </AddMb>
 | 
				
			||||||
    <AddPoint :formData="formData1" :templateData="templateData" :dialogVisible="dialogVisible1"  v-if="dialogVisible1" @dialogClose="dialogClose"
 | 
					    <AddPoint :formData="formData1" :dialogVisible="dialogVisible1"  v-if="dialogVisible1" @dialogClose="dialogClose"
 | 
				
			||||||
      @dialogSuccess="dialogSuccess">
 | 
					      @dialogSuccess="dialogSuccess">
 | 
				
			||||||
    </AddPoint>
 | 
					    </AddPoint>
 | 
				
			||||||
 | 
					    <ViewPoint :formData="formData1" :dialogVisible="dialogVisible2"  v-if="dialogVisible2" @dialogClose="dialogClose"
 | 
				
			||||||
 | 
					      @dialogSuccess="dialogSuccess">
 | 
				
			||||||
 | 
					    </ViewPoint>
 | 
				
			||||||
  </el-card>
 | 
					  </el-card>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,18 +49,20 @@ import { onMounted, reactive, ref, toRefs } from "vue";
 | 
				
			||||||
import { ElMessage, ElMessageBox } from "element-plus";
 | 
					import { ElMessage, ElMessageBox } from "element-plus";
 | 
				
			||||||
import AddMb from "@/components/AddMb.vue";
 | 
					import AddMb from "@/components/AddMb.vue";
 | 
				
			||||||
import infoApi from "@/api/infoApi.js";
 | 
					import infoApi from "@/api/infoApi.js";
 | 
				
			||||||
// import { response, mb_info, mb_list } from '../proto/data/pd'
 | 
					 | 
				
			||||||
import AddPoint from "@/components/AddPoint.vue";
 | 
					import AddPoint from "@/components/AddPoint.vue";
 | 
				
			||||||
 | 
					import ViewPoint from "@/components/ViewPoint.vue"
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  name: "model",
 | 
					  name: "model",
 | 
				
			||||||
  components: {
 | 
					  components: {
 | 
				
			||||||
    AddMb,
 | 
					    AddMb,
 | 
				
			||||||
    AddPoint
 | 
					    AddPoint,
 | 
				
			||||||
 | 
					    ViewPoint
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  setup() {
 | 
					  setup() {
 | 
				
			||||||
    const state = reactive({
 | 
					    const state = reactive({
 | 
				
			||||||
      dialogVisible: false,
 | 
					      dialogVisible: false,
 | 
				
			||||||
      dialogVisible1: false,
 | 
					      dialogVisible1: false,
 | 
				
			||||||
 | 
					      dialogVisible2: false,
 | 
				
			||||||
      tableData: [],
 | 
					      tableData: [],
 | 
				
			||||||
      formData: {
 | 
					      formData: {
 | 
				
			||||||
        name: '',
 | 
					        name: '',
 | 
				
			||||||
| 
						 | 
					@ -131,14 +139,21 @@ export default {
 | 
				
			||||||
      state.dialogVisible1 = true;
 | 
					      state.dialogVisible1 = true;
 | 
				
			||||||
      state.formData1 = item;
 | 
					      state.formData1 = item;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const viewData = (item) => {
 | 
				
			||||||
 | 
					      state.dialogVisible2 = true;
 | 
				
			||||||
 | 
					      state.formData1 = item;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    const dialogClose = () => {
 | 
					    const dialogClose = () => {
 | 
				
			||||||
      state.dialogVisible = false;
 | 
					      state.dialogVisible = false;
 | 
				
			||||||
      state.dialogVisible1 = false;
 | 
					      state.dialogVisible1 = false;
 | 
				
			||||||
 | 
					      state.dialogVisible2 = false;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const dialogSuccess = () => {
 | 
					    const dialogSuccess = () => {
 | 
				
			||||||
      state.dialogVisible = false;
 | 
					      state.dialogVisible = false;
 | 
				
			||||||
      state.dialogVisible1 = false;
 | 
					      state.dialogVisible1 = false;
 | 
				
			||||||
 | 
					      state.dialogVisible2 = false;
 | 
				
			||||||
      getTableData();
 | 
					      getTableData();
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
| 
						 | 
					@ -149,7 +164,8 @@ export default {
 | 
				
			||||||
      getTableData,
 | 
					      getTableData,
 | 
				
			||||||
      addData,
 | 
					      addData,
 | 
				
			||||||
      dialogSuccess,
 | 
					      dialogSuccess,
 | 
				
			||||||
      dialogClose
 | 
					      dialogClose,
 | 
				
			||||||
 | 
					      viewData
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue