main
			
			
		
		
							parent
							
								
									e66c6f116d
								
							
						
					
					
						commit
						581846d228
					
				| 
						 | 
					@ -14,7 +14,7 @@
 | 
				
			||||||
        "axios": "^0.21.1",
 | 
					        "axios": "^0.21.1",
 | 
				
			||||||
        "echarts": "^5.4.2",
 | 
					        "echarts": "^5.4.2",
 | 
				
			||||||
        "element-plus": "^2.3.4",
 | 
					        "element-plus": "^2.3.4",
 | 
				
			||||||
        "js-base64": "^3.7.5",
 | 
					        "js-base64": "^3.7.7",
 | 
				
			||||||
        "js-md5": "^0.7.3",
 | 
					        "js-md5": "^0.7.3",
 | 
				
			||||||
        "moment": "^2.29.4",
 | 
					        "moment": "^2.29.4",
 | 
				
			||||||
        "protobufjs": "^7.2.4",
 | 
					        "protobufjs": "^7.2.4",
 | 
				
			||||||
| 
						 | 
					@ -3928,9 +3928,9 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/js-base64": {
 | 
					    "node_modules/js-base64": {
 | 
				
			||||||
      "version": "3.7.5",
 | 
					      "version": "3.7.7",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz",
 | 
					      "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.7.tgz",
 | 
				
			||||||
      "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA=="
 | 
					      "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "node_modules/js-md5": {
 | 
					    "node_modules/js-md5": {
 | 
				
			||||||
      "version": "0.7.3",
 | 
					      "version": "0.7.3",
 | 
				
			||||||
| 
						 | 
					@ -9882,9 +9882,9 @@
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "js-base64": {
 | 
					    "js-base64": {
 | 
				
			||||||
      "version": "3.7.5",
 | 
					      "version": "3.7.7",
 | 
				
			||||||
      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.5.tgz",
 | 
					      "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-3.7.7.tgz",
 | 
				
			||||||
      "integrity": "sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA=="
 | 
					      "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw=="
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "js-md5": {
 | 
					    "js-md5": {
 | 
				
			||||||
      "version": "0.7.3",
 | 
					      "version": "0.7.3",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@
 | 
				
			||||||
    "axios": "^0.21.1",
 | 
					    "axios": "^0.21.1",
 | 
				
			||||||
    "echarts": "^5.4.2",
 | 
					    "echarts": "^5.4.2",
 | 
				
			||||||
    "element-plus": "^2.3.4",
 | 
					    "element-plus": "^2.3.4",
 | 
				
			||||||
    "js-base64": "^3.7.5",
 | 
					    "js-base64": "^3.7.7",
 | 
				
			||||||
    "js-md5": "^0.7.3",
 | 
					    "js-md5": "^0.7.3",
 | 
				
			||||||
    "moment": "^2.29.4",
 | 
					    "moment": "^2.29.4",
 | 
				
			||||||
    "protobufjs": "^7.2.4",
 | 
					    "protobufjs": "^7.2.4",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,7 +36,7 @@ export default {
 | 
				
			||||||
      addForm: {},
 | 
					      addForm: {},
 | 
				
			||||||
      rules: {
 | 
					      rules: {
 | 
				
			||||||
        name: [
 | 
					        name: [
 | 
				
			||||||
          { required: true, message: "请输入模板名称", trigger: "blur" }
 | 
					          { required: true, message: "请输入模板名称", trigger: "blur" },
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        description: [
 | 
					        description: [
 | 
				
			||||||
          { required: true, message: "请输入模板描述", trigger: "blur" }
 | 
					          { required: true, message: "请输入模板描述", trigger: "blur" }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@
 | 
				
			||||||
        <el-input v-model="addForm.name" placeholder="请输入点位名称" clearable :disabled="type !== 'I'" />
 | 
					        <el-input v-model="addForm.name" placeholder="请输入点位名称" clearable :disabled="type !== 'I'" />
 | 
				
			||||||
      </el-form-item>
 | 
					      </el-form-item>
 | 
				
			||||||
      <el-form-item label="点位地址:" prop="address">
 | 
					      <el-form-item label="点位地址:" prop="address">
 | 
				
			||||||
        <el-input v-model="addForm.address" placeholder="请输入点位地址" clearable type="number" />
 | 
					        <el-input v-model="addForm.address" placeholder="请输入点位地址:0-19999或30000-49999" clearable type="number" />
 | 
				
			||||||
      </el-form-item>
 | 
					      </el-form-item>
 | 
				
			||||||
      <el-form-item label="点位类型:" prop="type">
 | 
					      <el-form-item label="点位类型:" prop="type">
 | 
				
			||||||
        <el-select v-model="addForm.type" size="mini" placeholder="请选择点位类型">
 | 
					        <el-select v-model="addForm.type" size="mini" placeholder="请选择点位类型">
 | 
				
			||||||
| 
						 | 
					@ -48,6 +48,14 @@ export default {
 | 
				
			||||||
  props: ["formData", "dialogVisible", "pointData", "type"],
 | 
					  props: ["formData", "dialogVisible", "pointData", "type"],
 | 
				
			||||||
  emits: ["dialogClose", "dialogSuccess"],
 | 
					  emits: ["dialogClose", "dialogSuccess"],
 | 
				
			||||||
  setup(props, ctx) {
 | 
					  setup(props, ctx) {
 | 
				
			||||||
 | 
					    const checkAddress = (rule, value, callback) => {
 | 
				
			||||||
 | 
					      let num = Number(value);
 | 
				
			||||||
 | 
					      if (value && (num >= 0 && num <= 19999) || (num >= 30000 && num <= 49999)) {
 | 
				
			||||||
 | 
					        callback();
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        callback(new Error("点位地址:0-19999,30000-49999"));
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
    const ruleFormRef = ref(null);
 | 
					    const ruleFormRef = ref(null);
 | 
				
			||||||
    const state = reactive({
 | 
					    const state = reactive({
 | 
				
			||||||
      addForm: {
 | 
					      addForm: {
 | 
				
			||||||
| 
						 | 
					@ -141,7 +149,10 @@ export default {
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
      rules: {
 | 
					      rules: {
 | 
				
			||||||
        name: [{ required: true, message: "请输入点位名称", trigger: "blur" }],
 | 
					        name: [{ required: true, message: "请输入点位名称", trigger: "blur" }],
 | 
				
			||||||
        address: [{ required: true, message: "请输入点位地址", trigger: "blur" }],
 | 
					        address: [
 | 
				
			||||||
 | 
					          { required: true, message: "请输入点位地址", trigger: "blur" },
 | 
				
			||||||
 | 
					          { required: true, validator: checkAddress, trigger: "blur" }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
        type: [{ required: true, message: "请选择点位类型", trigger: "blur" }],
 | 
					        type: [{ required: true, message: "请选择点位类型", trigger: "blur" }],
 | 
				
			||||||
        byte_order: [{ required: true, message: "请选择字节顺序", trigger: "blur" }],
 | 
					        byte_order: [{ required: true, message: "请选择字节顺序", trigger: "blur" }],
 | 
				
			||||||
        multiplier: [{ required: true, message: "请输入缩放系数", trigger: "blur" }],
 | 
					        multiplier: [{ required: true, message: "请输入缩放系数", trigger: "blur" }],
 | 
				
			||||||
| 
						 | 
					@ -174,7 +185,7 @@ export default {
 | 
				
			||||||
            address: Number(state.addForm.address),
 | 
					            address: Number(state.addForm.address),
 | 
				
			||||||
            multiplier: Number(state.addForm.multiplier)
 | 
					            multiplier: Number(state.addForm.multiplier)
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
          const res = props.type === 'I' ? await infoApi.addP(param): await infoApi.editP(param);
 | 
					          const res = props.type === 'I' ? await infoApi.addP(param) : await infoApi.editP(param);
 | 
				
			||||||
          if (res.code == 0) {
 | 
					          if (res.code == 0) {
 | 
				
			||||||
            ElMessage.success(res.message || "请求成功");
 | 
					            ElMessage.success(res.message || "请求成功");
 | 
				
			||||||
            ctx.emit("dialogSuccess");
 | 
					            ctx.emit("dialogSuccess");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,262 +0,0 @@
 | 
				
			||||||
<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>通讯主机:{{ addForm.host }}</span>
 | 
					 | 
				
			||||||
   </el-card>
 | 
					 | 
				
			||||||
   <div class="btns">
 | 
					 | 
				
			||||||
     <div>
 | 
					 | 
				
			||||||
         <el-button type="primary" @click="saveSet"> 保存 </el-button>
 | 
					 | 
				
			||||||
         <el-button @click="closeDialog">取消</el-button>
 | 
					 | 
				
			||||||
     </div>
 | 
					 | 
				
			||||||
     <div>
 | 
					 | 
				
			||||||
         <el-button type="primary" @click="scanData"> 扫描 </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="ID"
 | 
					 | 
				
			||||||
         label="设备id"
 | 
					 | 
				
			||||||
         align="center"
 | 
					 | 
				
			||||||
         show-overflow-tooltip
 | 
					 | 
				
			||||||
       >
 | 
					 | 
				
			||||||
         <template #default="scope">
 | 
					 | 
				
			||||||
           <el-input
 | 
					 | 
				
			||||||
             v-model="scope.row.ID"
 | 
					 | 
				
			||||||
             clearable
 | 
					 | 
				
			||||||
           />
 | 
					 | 
				
			||||||
         </template>
 | 
					 | 
				
			||||||
       </el-table-column>
 | 
					 | 
				
			||||||
       <el-table-column
 | 
					 | 
				
			||||||
         prop="template"
 | 
					 | 
				
			||||||
         label="数据模板"
 | 
					 | 
				
			||||||
         align="center"
 | 
					 | 
				
			||||||
         show-overflow-tooltip
 | 
					 | 
				
			||||||
       >
 | 
					 | 
				
			||||||
         <template #default="scope">
 | 
					 | 
				
			||||||
           <el-select v-model="scope.row.template" clearable placeholder="请选择模板" size="mini">
 | 
					 | 
				
			||||||
             <el-option
 | 
					 | 
				
			||||||
               v-for="item in modelArr"
 | 
					 | 
				
			||||||
               :key="item.name"
 | 
					 | 
				
			||||||
               :label="item.name"
 | 
					 | 
				
			||||||
               :value="item.name"
 | 
					 | 
				
			||||||
               
 | 
					 | 
				
			||||||
             />
 | 
					 | 
				
			||||||
           </el-select>
 | 
					 | 
				
			||||||
         </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 { mb_list, tx_info, response, m_device, m_properties, tx_add_device} from '../proto/data/pd'
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
 props: ["formData", "dialogVisible"],
 | 
					 | 
				
			||||||
 emits: ["dialogClose", "dialogSuccess"],
 | 
					 | 
				
			||||||
 setup(props, ctx) {
 | 
					 | 
				
			||||||
   const state = reactive({
 | 
					 | 
				
			||||||
     addForm: {},
 | 
					 | 
				
			||||||
     propertiesData: [],
 | 
					 | 
				
			||||||
     modelArr: []
 | 
					 | 
				
			||||||
   });
 | 
					 | 
				
			||||||
   const visible = computed(() => {
 | 
					 | 
				
			||||||
     return props.dialogVisible;
 | 
					 | 
				
			||||||
   });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   onMounted(() => {
 | 
					 | 
				
			||||||
     state.addForm = props.formData;
 | 
					 | 
				
			||||||
     console.log(123, props.formData)
 | 
					 | 
				
			||||||
    // 获取模板数据
 | 
					 | 
				
			||||||
    getMbData();
 | 
					 | 
				
			||||||
    // 获取点位列表
 | 
					 | 
				
			||||||
    getSetList();
 | 
					 | 
				
			||||||
   });
 | 
					 | 
				
			||||||
   const getMbData = async () => {
 | 
					 | 
				
			||||||
      const res = await infoApi.getMb();
 | 
					 | 
				
			||||||
      const ret = response.decode(new Uint8Array(res));
 | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
      if (ret.code == 0) {
 | 
					 | 
				
			||||||
          // 获取数据
 | 
					 | 
				
			||||||
          state.modelArr = mb_list.decode(ret.data).mb;
 | 
					 | 
				
			||||||
          console.log(mb_list.decode(ret.data).mb);
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
          console.log(res);
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
   const getSetList = async() => {
 | 
					 | 
				
			||||||
     const parm = tx_info.encode({
 | 
					 | 
				
			||||||
         name: state.addForm.name
 | 
					 | 
				
			||||||
     }).finish();
 | 
					 | 
				
			||||||
     // 截取有效长度
 | 
					 | 
				
			||||||
     const parm_data = parm.slice(0, parm.length);
 | 
					 | 
				
			||||||
     const res = await infoApi.getSet(parm_data);
 | 
					 | 
				
			||||||
     const ret = response.decode(new Uint8Array(res));
 | 
					 | 
				
			||||||
     if (ret.code == 0) {
 | 
					 | 
				
			||||||
        console.log(99, tx_info.decode(ret.data).device);
 | 
					 | 
				
			||||||
        const propArr = tx_info.decode(ret.data).device;
 | 
					 | 
				
			||||||
        state.propertiesData = [];
 | 
					 | 
				
			||||||
        propArr.forEach(v => {
 | 
					 | 
				
			||||||
          state.propertiesData.push({
 | 
					 | 
				
			||||||
            name: v.name,
 | 
					 | 
				
			||||||
            ID: v.properties[0].value,
 | 
					 | 
				
			||||||
            template: v.properties[1].value,
 | 
					 | 
				
			||||||
            description: v.properties[2].value,
 | 
					 | 
				
			||||||
          })
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
         
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
     } else {
 | 
					 | 
				
			||||||
        console.log(res);
 | 
					 | 
				
			||||||
     }
 | 
					 | 
				
			||||||
   };
 | 
					 | 
				
			||||||
   const closeDialog = () => {
 | 
					 | 
				
			||||||
     ctx.emit("dialogClose");
 | 
					 | 
				
			||||||
   };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   const scanData = () => {};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
   const saveSet = async () => {
 | 
					 | 
				
			||||||
    if (state.propertiesData.length < 1) {
 | 
					 | 
				
			||||||
        return ElMessage.error("请至少添加一条数据");
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      const newArr = [];
 | 
					 | 
				
			||||||
      state.propertiesData.forEach(item => {
 | 
					 | 
				
			||||||
        newArr.push({
 | 
					 | 
				
			||||||
          name: item.name,
 | 
					 | 
				
			||||||
          properties: [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
            name: 'ID', value: item.ID
 | 
					 | 
				
			||||||
            },{
 | 
					 | 
				
			||||||
              name: 'template', value: item.template
 | 
					 | 
				
			||||||
            },{
 | 
					 | 
				
			||||||
              name: 'description', value: item.description
 | 
					 | 
				
			||||||
            }]
 | 
					 | 
				
			||||||
        })
 | 
					 | 
				
			||||||
      })
 | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
      const req_databuf = tx_add_device.encode({
 | 
					 | 
				
			||||||
          name: state.addForm.name,
 | 
					 | 
				
			||||||
          device: newArr
 | 
					 | 
				
			||||||
      }).finish();
 | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
      // 截取有效长度
 | 
					 | 
				
			||||||
      const req_data = req_databuf.slice(0, req_databuf.length);
 | 
					 | 
				
			||||||
      const res = await infoApi.addSet(req_data);
 | 
					 | 
				
			||||||
      const ret = response.decode(new Uint8Array(res));
 | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
      if (ret.code == 0) {
 | 
					 | 
				
			||||||
        console.log(new TextDecoder().decode(ret.data));
 | 
					 | 
				
			||||||
        ElMessage.success(new TextDecoder().decode(ret.data) || "请求成功");
 | 
					 | 
				
			||||||
        // 获取数据
 | 
					 | 
				
			||||||
        getSetList();
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
         
 | 
					 | 
				
			||||||
   };
 | 
					 | 
				
			||||||
   const addRow = () => {
 | 
					 | 
				
			||||||
     let newRow = { 
 | 
					 | 
				
			||||||
       name: '', 
 | 
					 | 
				
			||||||
       address: '', 
 | 
					 | 
				
			||||||
       datatype: 'bool',
 | 
					 | 
				
			||||||
       byteorder: 'null', 
 | 
					 | 
				
			||||||
       multplier: '', 
 | 
					 | 
				
			||||||
       unit: '',
 | 
					 | 
				
			||||||
       description: ''
 | 
					 | 
				
			||||||
      };
 | 
					 | 
				
			||||||
     state.propertiesData.push(newRow);
 | 
					 | 
				
			||||||
   }
 | 
					 | 
				
			||||||
   const delData = (index) => {
 | 
					 | 
				
			||||||
      state.propertiesData.splice(index, 1);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
   return {
 | 
					 | 
				
			||||||
     ...toRefs(state),
 | 
					 | 
				
			||||||
     visible,
 | 
					 | 
				
			||||||
     closeDialog,
 | 
					 | 
				
			||||||
     scanData,
 | 
					 | 
				
			||||||
     addRow,
 | 
					 | 
				
			||||||
     saveSet,
 | 
					 | 
				
			||||||
     delData,
 | 
					 | 
				
			||||||
     getMbData
 | 
					 | 
				
			||||||
   };
 | 
					 | 
				
			||||||
 },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
</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,11 +1,11 @@
 | 
				
			||||||
<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-form :model="addForm" label-width="100px" :rules="rules" ref="ruleFormRef">
 | 
					    <el-form :model="addForm" label-width="100px" :rules="rules" ref="ruleFormRef">
 | 
				
			||||||
      <el-form-item label="设备名称:" prop="name">
 | 
					      <el-form-item label="设备名称:" prop="name">
 | 
				
			||||||
        <el-input v-model="addForm.name" placeholder="请输入点位名称" clearable :disabled="type!=='I'"/>
 | 
					        <el-input v-model="addForm.name" placeholder="请输入点位名称" clearable :disabled="type!=='I'"/>
 | 
				
			||||||
      </el-form-item>
 | 
					      </el-form-item>
 | 
				
			||||||
      <el-form-item label="设备id:" prop="id">
 | 
					      <el-form-item label="设备id:" prop="id">
 | 
				
			||||||
        <el-input v-model="addForm.id" placeholder="请输入设备id" clearable type="number" />
 | 
					        <el-input v-model="addForm.id" placeholder="请输入设备id:1-255" clearable type="number" />
 | 
				
			||||||
      </el-form-item>
 | 
					      </el-form-item>
 | 
				
			||||||
      <el-form-item label="模板名称:" prop="template_name">
 | 
					      <el-form-item label="模板名称:" prop="template_name">
 | 
				
			||||||
        <el-select v-model="addForm.template_name" size="mini" placeholder="请选择模板名称">
 | 
					        <el-select v-model="addForm.template_name" size="mini" placeholder="请选择模板名称">
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,14 @@ export default {
 | 
				
			||||||
  props: ["formData", "dialogVisible", "setData", "type"],
 | 
					  props: ["formData", "dialogVisible", "setData", "type"],
 | 
				
			||||||
  emits: ["dialogClose", "dialogSuccess"],
 | 
					  emits: ["dialogClose", "dialogSuccess"],
 | 
				
			||||||
  setup(props, ctx) {
 | 
					  setup(props, ctx) {
 | 
				
			||||||
 | 
					    const checkSetId = (rule, value, callback) => {
 | 
				
			||||||
 | 
					      let num = Number(value);
 | 
				
			||||||
 | 
					      if (value && (num >= 1 && num <= 255)) {
 | 
				
			||||||
 | 
					        callback();
 | 
				
			||||||
 | 
					      } else {
 | 
				
			||||||
 | 
					        callback(new Error("设备ID:1-255"));
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
    const ruleFormRef = ref(null);
 | 
					    const ruleFormRef = ref(null);
 | 
				
			||||||
    const state = reactive({
 | 
					    const state = reactive({
 | 
				
			||||||
      addForm: {
 | 
					      addForm: {
 | 
				
			||||||
| 
						 | 
					@ -42,7 +50,10 @@ export default {
 | 
				
			||||||
      rules: {
 | 
					      rules: {
 | 
				
			||||||
        name: [{ required: true, message: "请输入设备名称", trigger: "blur" }],
 | 
					        name: [{ required: true, message: "请输入设备名称", trigger: "blur" }],
 | 
				
			||||||
        template_name: [{ required: true, message: "请选择模板名称", trigger: "blur" }],
 | 
					        template_name: [{ required: true, message: "请选择模板名称", trigger: "blur" }],
 | 
				
			||||||
        id: [{ required: true, message: "请输入设备ID", trigger: "blur" }],
 | 
					        id: [
 | 
				
			||||||
 | 
					        { required: true, message: "请输入设备ID", trigger: "blur" },
 | 
				
			||||||
 | 
					        { required: true, validator: checkSetId, trigger: "blur" }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
    const visible = computed(() => {
 | 
					    const visible = computed(() => {
 | 
				
			||||||
| 
						 | 
					@ -73,10 +84,9 @@ export default {
 | 
				
			||||||
        state.modelArr.push(obj);
 | 
					        state.modelArr.push(obj);
 | 
				
			||||||
        console.log(33,state.modelArr);
 | 
					        console.log(33,state.modelArr);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
        console.log(state.modelArr);
 | 
					 | 
				
			||||||
        state.addForm.template_name = state.modelArr[0].name;
 | 
					        state.addForm.template_name = state.modelArr[0].name;
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        ElMessage.error(res.message || "请求失败");
 | 
					        ElMessage.error(res.data || res.messgae);
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    const closeDialog = () => {
 | 
					    const closeDialog = () => {
 | 
				
			||||||
| 
						 | 
					@ -99,7 +109,7 @@ export default {
 | 
				
			||||||
            ElMessage.success(res.message || "请求成功");
 | 
					            ElMessage.success(res.message || "请求成功");
 | 
				
			||||||
            ctx.emit("dialogSuccess");
 | 
					            ctx.emit("dialogSuccess");
 | 
				
			||||||
          } else {
 | 
					          } else {
 | 
				
			||||||
            ElMessage.error(res.message);
 | 
					            ElMessage.error(res.data || res.message);
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
          console.log("error submit!");
 | 
					          console.log("error submit!");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@
 | 
				
			||||||
                <el-button type="primary" @click="exportData"> 导出 </el-button>
 | 
					                <el-button type="primary" @click="exportData"> 导出 </el-button>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <el-table :data="propertiesData" height="740" style="width: 100%" border stripe
 | 
					        <el-table :data="propertiesData" height="640" style="width: 100%" border stripe
 | 
				
			||||||
            :header-cell-style="{ background: '#F6F7FC' }">
 | 
					            :header-cell-style="{ background: '#F6F7FC' }">
 | 
				
			||||||
            <el-table-column type="index" label="序号" width="80" align="center" />
 | 
					            <el-table-column type="index" label="序号" width="80" align="center" />
 | 
				
			||||||
            <el-table-column prop="name" label="点位名称" align="center" show-overflow-tooltip>
 | 
					            <el-table-column prop="name" label="点位名称" align="center" show-overflow-tooltip>
 | 
				
			||||||
| 
						 | 
					@ -126,7 +126,7 @@ export default {
 | 
				
			||||||
                    state.propertiesData.push(pointData[i]);
 | 
					                    state.propertiesData.push(pointData[i]);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                console.log(res);
 | 
					                ElMessage.error(res.data || res.message);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
        const closeDialog = () => {
 | 
					        const closeDialog = () => {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@
 | 
				
			||||||
                <el-button type="primary" @click="exportData"> 导出 </el-button>
 | 
					                <el-button type="primary" @click="exportData"> 导出 </el-button>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
        <el-table :data="propertiesData" height="230" style="width: 100%" border stripe
 | 
					        <el-table :data="propertiesData" height="640" style="width: 100%" border stripe
 | 
				
			||||||
            :header-cell-style="{ background: '#F6F7FC' }">
 | 
					            :header-cell-style="{ background: '#F6F7FC' }">
 | 
				
			||||||
            <el-table-column prop="name" label="设备名称" align="center" show-overflow-tooltip>
 | 
					            <el-table-column prop="name" label="设备名称" align="center" show-overflow-tooltip>
 | 
				
			||||||
            </el-table-column>
 | 
					            </el-table-column>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,12 +6,10 @@ import router from "@/router/index";
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  localSet,
 | 
					  localSet,
 | 
				
			||||||
  localGet,
 | 
					  localGet,
 | 
				
			||||||
  localRemove
 | 
					  localRemove,
 | 
				
			||||||
} from "./index";
 | 
					} from "./index";
 | 
				
			||||||
import config from "~/config";
 | 
					import config from "~/config";
 | 
				
			||||||
import {
 | 
					import {Base64} from 'js-base64';
 | 
				
			||||||
  response
 | 
					 | 
				
			||||||
} from '../proto/data/pd';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
axios.defaults.baseURL = config[
 | 
					axios.defaults.baseURL = config[
 | 
				
			||||||
  import.meta.env.MODE].baseUrl;
 | 
					  import.meta.env.MODE].baseUrl;
 | 
				
			||||||
| 
						 | 
					@ -57,7 +55,7 @@ axios.interceptors.response.use(
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
// post请求
 | 
					// post请求
 | 
				
			||||||
export function postPBRequest(url, params, actionNum,name) {
 | 
					export function postPBRequest(url, params, actionNum,name) {
 | 
				
			||||||
  const title = url === '/driver' ? {'driver_name': name }: {'template_name': name}
 | 
					  const title = url === '/driver' ? {'driver_name': Base64.encode(name) }: {'template_name': Base64.encode(name)}
 | 
				
			||||||
  return axios({
 | 
					  return axios({
 | 
				
			||||||
    method: "post",
 | 
					    method: "post",
 | 
				
			||||||
    url: url,
 | 
					    url: url,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue