liuchengxin
2022-06-06 4001279159dd37942b3cf4c83ab537f95832a82d
src/views/device/peripheralUnit/index.vue
@@ -29,23 +29,24 @@
        />
      </el-form-item>
      <el-form-item label="生产厂商" prop="manufacturer">
        <el-input
          v-model="queryParams.manufacturer"
          placeholder="请输入生产厂商"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
        <el-select v-model="queryParams.manufacturer" placeholder="请选择生产厂商" clearable size="small">
          <el-option
            v-for="item in manufacturerList"
            :key="item.id"
            :label="item.name"
            :value="item.id"
          />
        </el-select>
      </el-form-item>
      <el-form-item label="厂商代码" prop="vendorCode">
        <el-input
          v-model="queryParams.vendorCode"
          placeholder="请输入厂商代码"
          clearable
          size="small"
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
<!--      <el-form-item label="厂商代码" prop="vendorCode">-->
<!--        <el-input-->
<!--          v-model="queryParams.vendorCode"-->
<!--          placeholder="请输入厂商代码"-->
<!--          clearable-->
<!--          size="small"-->
<!--          @keyup.enter.native="handleQuery"-->
<!--        />-->
<!--      </el-form-item>-->
      <el-form-item label="波特率" prop="baudRate">
        <el-select v-model="queryParams.baudRate" placeholder="请选择波特率" clearable size="small">
          <el-option
@@ -118,25 +119,26 @@
          <span>{{ scope.$index + (queryParams.pageNum - 1) * queryParams.pageSize + 1 }} </span>
        </template>
      </el-table-column>
      <el-table-column label="外设代码" align="center" prop="code"/>
      <el-table-column label="外设名称" align="center" prop="name"/>
      <el-table-column label="规格型号" align="center" prop="model"/>
      <el-table-column label="生产厂商" align="center" prop="manufacturer"/>
      <el-table-column label="厂商代码" align="center" prop="vendorCode"/>
      <el-table-column label="波特率" align="center" prop="baudRate">
      <el-table-column label="外设代码" width="80" align="center" prop="code" show-overflow-tooltip/>
      <el-table-column label="外设名称" align="center" min-width="180" prop="name" show-overflow-tooltip/>
      <el-table-column label="规格型号" align="center" prop="model" min-width="120" show-overflow-tooltip/>
      <el-table-column label="生产厂商" align="center" prop="manufacturer_dictText" min-width="200" show-overflow-tooltip/>
      <el-table-column label="厂商代码" width="100" align="center" prop="vendorCode_dictText" show-overflow-tooltip/>
      <el-table-column label="波特率" width="100" align="center" prop="baudRate" show-overflow-tooltip>
        <template slot-scope="scope">
          <dict-tag :options="dict.type.DICT103" :value="scope.row.baudRate"/>
        </template>
      </el-table-column>
      <el-table-column label="读数指令" align="center" prop="readInstruction"/>
      <el-table-column label="回数长度" align="center" prop="loopLength"/>
      <el-table-column label="功能描述" align="center" prop="description"/>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
      <el-table-column label="问询指令" align="center" width="220" prop="readInstruction" show-overflow-tooltip/>
      <el-table-column label="指令长度" width="80" align="center" prop="orderLength" show-overflow-tooltip/>
      <el-table-column label="返回长度" width="80" align="center" prop="loopLength" show-overflow-tooltip/>
<!--      <el-table-column label="解析说明" align="center" min-width="300" show-overflow-tooltip prop="description"/>-->
      <el-table-column label="操作" align="center" fixed="right" width="240" class-name="small-padding fixed-width">
        <template slot-scope="scope">
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            icon="el-icon-view"
            @click="handleInfo(scope.row)"
            v-hasPermi="['oa:peripheralUnit:info']"
          >查看
@@ -152,17 +154,18 @@
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['oa:peripheralUnit:remove']"
          >删除
            icon="el-icon-document"
            @click="handleUpload(scope.row)"
          >附件
          </el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleUpload(scope.row)"
          >附件
            class="del-btn"
            @click="handleDelete(scope.row)"
            v-hasPermi="['oa:peripheralUnit:remove']"
          >删除
          </el-button>
        </template>
      </el-table-column>
@@ -177,7 +180,7 @@
    />
    <!-- 添加或修改外设单元对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
    <Dialog :title="title" :visible.sync="open" width="50%" :append-to-body="true" :close-on-click-modal="false">
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="外设代码" prop="code">
          <el-input v-model="form.code" placeholder="请输入外设代码" :disabled="disabled"/>
@@ -189,11 +192,18 @@
          <el-input v-model="form.model" placeholder="请输入规格型号" :disabled="disabled"/>
        </el-form-item>
        <el-form-item label="生产厂商" prop="manufacturer">
          <el-input v-model="form.manufacturer" placeholder="请输入生产厂商" :disabled="disabled"/>
          <el-select v-model="form.manufacturer" placeholder="请选择生产厂商" clearable size="small" :disabled="disabled">
            <el-option
              v-for="item in manufacturerList"
              :key="item.id"
              :label="item.name"
              :value="item.id"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="厂商代码" prop="vendorCode">
          <el-input v-model="form.vendorCode" placeholder="请输入厂商代码" :disabled="disabled"/>
        </el-form-item>
<!--        <el-form-item label="厂商代码" prop="vendorCode">-->
<!--          <el-input v-model="form.vendorCode" placeholder="请输入厂商代码" :disabled="disabled"/>-->
<!--        </el-form-item>-->
        <el-form-item label="波特率" prop="baudRate">
          <el-select v-model="form.baudRate" placeholder="请选择波特率" :disabled="disabled">
            <el-option
@@ -204,37 +214,40 @@
            ></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="读数指令" prop="readInstruction">
          <el-input v-model="form.readInstruction" placeholder="请输入读数指令" :disabled="disabled"/>
        <el-form-item label="问询指令" prop="readInstruction">
          <el-input v-model="form.readInstruction" placeholder="请输入问询指令" :disabled="disabled"/>
        </el-form-item>
        <el-form-item label="回数长度" prop="loopLength">
          <el-input v-model="form.loopLength" placeholder="请输入回数长度" :disabled="disabled"/>
        <el-form-item label="指令长度" prop="orderLength">
          <el-input v-model="form.orderLength" type="number" placeholder="请输入指令长度" :disabled="disabled"/>
        </el-form-item>
        <el-form-item label="功能描述" prop="description">
          <el-input v-model="form.description" type="textarea" placeholder="请输入内容" :disabled="disabled"/>
        <el-form-item label="返回长度" prop="loopLength">
          <el-input v-model="form.loopLength" type='number' placeholder="请输入返回长度" :disabled="disabled"/>
        </el-form-item>
        <el-form-item label="解析说明" prop="description">
          <el-input v-model="form.description" type="textarea" placeholder="请输入内容" maxlength="512" show-word-limit :disabled="disabled"/>
        </el-form-item>
        <el-form-item label="附件">
          <fileUpload v-model="form.filePath" :disabled="disabled"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
        <el-button :loading="buttonLoading" type="primary" @click="submitForm" :disabled="disabled">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
    </Dialog>
    <!-- 附件窗体 -->
    <el-dialog :title="title" :visible.sync="uploadFlag" width="500px" append-to-body>
    <Dialog :title="title" :visible.sync="uploadFlag" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
        <el-form-item label="附件">
          <fileUpload v-model="form.filePath" limit="1"/>
          <fileUpload v-model="form.filePath" :limit="1"/>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
    </Dialog>
  </div>
</template>
@@ -246,11 +259,28 @@
  addPeripheralUnit,
  updatePeripheralUnit
} from "@/api/oa/peripheralUnit";
import {Base64} from 'js-base64';
import { listManufacturer } from "@/api/common/common"
export default {
  name: "PeripheralUnit",
  dicts: ['DICT103'],
  data() {
    var validateModel = (rule, value, callback) => {
      if (!value) {
        callback(new Error('规格型号不能为空'));
        return
      }
      if (value.length > 32) {
        callback(new Error('最多输入32个字符'));
        return
      }
      // if (!(/^[A-Za-z]+$/.test(value))) {
      //   callback(new Error('只能输入英文字符'));
      //   return
      // }
      callback();
    };
    return {
      // 按钮loading
      buttonLoading: false,
@@ -282,7 +312,7 @@
        model: undefined,
        manufacturer: undefined,
        vendorCode: undefined,
        baudRate: undefined,
        baudRate: undefined
      },
      // 表单参数
      form: {},
@@ -295,37 +325,54 @@
          {required: true, message: "外设代码不能为空", trigger: "blur"}
        ],
        name: [
          {required: true, message: "外设名称不能为空", trigger: "blur"}
          {required: true, message: "外设名称不能为空", trigger: "blur"},
          {max: 32, message: '最多输入32个字符', trigger: 'blur' }
        ],
        model: [
          {required: true, message: "规格型号不能为空", trigger: "blur"}
          {required: true, validator: validateModel, trigger: "blur"}
        ],
        manufacturer: [
          {required: true, message: "生产厂商不能为空", trigger: "blur"}
        ],
        vendorCode: [
          {required: true, message: "厂商代码不能为空", trigger: "blur"}
          {required: true, message: "厂商代码不能为空", trigger: "blur"},
          {max: 32, message: '最多输入32个字符', trigger: 'blur' }
        ],
        baudRate: [
          {required: true, message: "波特率不能为空", trigger: "change"}
        ],
        readInstruction: [
          {required: true, message: "读数指令不能为空", trigger: "blur"}
          {required: true, message: "问询指令不能为空", trigger: "blur"},
          {max: 128, message: '最多输入128个字符', trigger: 'blur' }
        ],
        orderLength: [
          {required: true, message: "指令长度不能为空", trigger: "blur"}
        ],
        loopLength: [
          {required: true, message: "回数长度不能为空", trigger: "blur"}
          {required: true, message: "返回长度不能为空", trigger: "blur"}
        ],
        filePath: [
          {required: true, message: "附件不能为空", trigger: "blur"}
        ],
        description: [
          {max: 512, message: '最多输入512个字符', trigger: 'blur' }
        ]
      },
      disabled: false
      disabled: false,
      // 生产厂商
      manufacturerList: []
    };
  },
  created() {
    this.getList();
  },
  methods: {
    getManufacturerList() {
      listManufacturer().then(res => {
        this.manufacturerList = res.data;
      })
    },
    /** 查询外设单元列表 */
    getList() {
      this.loading = true;
@@ -333,6 +380,7 @@
        this.peripheralUnitList = response.rows;
        this.total = response.total;
        this.loading = false;
        this.getManufacturerList();
      });
    },
    // 取消按钮
@@ -367,11 +415,13 @@
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getManufacturerList();
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.getManufacturerList();
      this.handleQuery();
    },
    // 多选框选中数据
@@ -383,7 +433,9 @@
    /** 新增按钮操作 */
    handleAdd() {
      this.reset();
      this.form.baudRate = '3'
      this.getManufacturerList();
      this.form.baudRate = '04'
      this.disabled = false
      this.open = true;
      this.title = "添加外设单元";
    },
@@ -396,17 +448,20 @@
        this.loading = false;
        this.form = response.data;
        this.open = true;
        this.title = "修改外设单元";
        this.title = "查看外设单元";
      });
    },
    /** 修改按钮操作 */
    handleUpdate(row) {
      this.loading = true;
      this.disabled = false
      this.reset();
      //this.getManufacturerList();
      const id = row.id || this.ids
      getPeripheralUnit(id).then(response => {
        this.loading = false;
        this.form = response.data;
        this.form.manufacturer = parseInt(this.form.manufacturer);
        this.open = true;
        this.title = "修改外设单元";
      });
@@ -415,6 +470,12 @@
    submitForm() {
      this.$refs["form"].validate(valid => {
        if (valid) {
          // if(this.uploadFlag){
          //   if(!this.form.filePath){
          //     this.$modal.msgWarning("请选择上传附件");
          //     return;
          //   }
          // }
          this.buttonLoading = true;
          if (this.form.id != null) {
            updatePeripheralUnit(this.form).then(response => {
@@ -440,7 +501,7 @@
    /** 删除按钮操作 */
    handleDelete(row) {
      const ids = row.id || this.ids;
      this.$modal.confirm('是否确认删除外设单元编号为"' + ids + '"的数据项?').then(() => {
      this.$modal.confirm(`是否确认删除外设代码为${row.code}的外设单元?`).then(() => {
        this.loading = true;
        return delPeripheralUnit(ids);
      }).then(() => {