value
2023-09-23 f2a44bae17300adf473b89d30c85d399b5d050fd
src/components/view/standard-table/technology.vue
@@ -1,7 +1,225 @@
<template>
  <div class="standard">
    <div style="width: 100%;height: 68vh;overflow-x: auto;">
          <el-table :data="tableData"  row-key="rowId" border height="calc(90vh - 200px)"
          @select-all="selectAll" @select="selectTr" ref="multipleTable"
          :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'left'}"
            @selection-change="handleSelectionChange" default-expand-all
            :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
            <el-table-column type="selection" width="55">
            </el-table-column>
            <el-table-column type="index" width="60" label="序号" :resizable="false">
            </el-table-column>
            <el-table-column prop="father" label="工序" width="200" :resizable="false">
              <template slot-scope="scope">
                    <el-tag class="tag" v-if="scope.row.children" type="primary">01</el-tag>
                    <span style="color: black">
                      {{ scope.row.father }}
                    </span>
            </template>
            </el-table-column>
            <el-table-column label="工艺名称" width="200" :resizable="false">
              <template slot-scope="scope">
                <el-tag class="tag" type="success" v-if="!scope.row.children">02</el-tag>
                <span style="color: black">{{ scope.row.name  }}</span>
              </template>
            </el-table-column>
            <el-table-column prop="dg" label="设备组" width="200" :resizable="false">
              <template slot-scope="scope">
                <div class="showDiv">
                  <span>{{scope.row.dg}}</span>
                  <div @click="showDialog(scope.row)">选择</div>
                </div>
              </template>
            </el-table-column>
            <el-table-column prop="pq" label="生产效率(个/天)" :resizable="false">
              <template slot-scope="scope">
                  <el-input v-model="scope.row.pq"
                  v-if="scope.row.dg != null" size="small"
                  @blur="updatePq(scope.row)"
                  ></el-input>
              </template>
            </el-table-column>
          </el-table>
        </div>
        <el-dialog
          title="选择设备组"
          :visible.sync="deviceGroupDialog"
          width="30%">
          <el-form :model="formData">
            <el-form-item prop="deviceGroup" label="设备组:"
            :rules="{required:true,message:'设备组不能为空',trigger:'change'}">
                <el-select placeholder="请选择设备组" size="small"
                v-model="formData.deviceGroup">
                <el-option :value="item.father"
                v-for="(item,index) in deviceList" :key="index" :label="item.father"></el-option>
                </el-select>
            </el-form-item>
          </el-form>
          <span slot="footer" class="dialog-footer">
            <el-button type="primary" @click="confirmUpdate()">确 定</el-button>
            <el-button @click="deviceGroupDialog = false">取 消</el-button>
          </span>
        </el-dialog>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        deviceGroupDialog:false,
        formData:{
          deviceGroup:''
        },
        row:{},
        selects: [],
        deviceList:[],
        isAllSelect:false,
      }
    },
    props:['tableData','tableType'],
    created() {},
    mounted() {
    },
    methods: {
      //工艺路线--获取设备组列表
      getDeviceList(){
        this.$axios.get(this.$api.url.chooseDevice).then(res=>{
          this.deviceList = res.data;
        }).catch(error=>{
          this.$message.error(error.message);
        })
      },
      showDialog(row){
          this.getDeviceList();
          this.formData.deviceGroup = row.dg;
          this.row = row;
          this.deviceGroupDialog = true
      },
      confirmUpdate(){
        this.$axios.post(this.$api.url.writeDevice,{
          id : this.row.id,
          deviceGroup : this.formData.deviceGroup
        }).then(res=>{
          this.$emit("updateDevice",true);
          this.$message.success(res.message);
          this.deviceGroupDialog = false
        }).catch(error=>{
        })
      },
      // 表格树全部选中配置
      // 全选/取消选操作
      //选择某行
        selectTr(selection, row) {
        this.$set(row, "isChecked", !row.isChecked);
        this.$nextTick(() => {
          this.isAllSelect = row.isChecked;
          this.toggleSelect(row, row.isChecked, "tr");
        });
      },
      //递归子级
      toggleSelect(data, flag, type) {
        if (type === "all") {
          if (data.length > 0) {
            data.forEach((item) => {
              this.toggleSelection(item, flag);
              if (item.children && item.children.length > 0) {
                this.toggleSelect(item.children, flag, type);
              }
            });
          }
        } else {
          if (data.children && data.children.length > 0) {
            data.children.forEach((item) => {
              item.isChecked = !item.isChecked;
              this.$refs.multipleTable.toggleRowSelection(item, flag);
              this.toggleSelect(item, flag, type);
            });
          }
        }
      },
      //改变选中
      toggleSelection(row, flag) {
        this.$set(row, "isChecked", flag);
        this.$nextTick(() => {
          if (flag) {
            this.$refs.multipleTable.toggleRowSelection(row, flag);
          } else {
            this.$refs.multipleTable.clearSelection();
          }
        });
      },
      selectAll(val) {
        this.isAllSelect = !this.isAllSelect;
        let data = this.tableData;
        this.toggleSelect(data, this.isAllSelect, "all");
      },
      handleSelectionChange(val) {
        this.deleteList = [];
        val.forEach((v) => {
          this.searchIdFun(v);
        });
        this.$emit("childData",this.deleteList);
      },
      //递归查找选中数据id
      searchIdFun(data){
        let obj = data;
        if(obj.children != undefined){
          this.searchIdFun(obj.children);
        }else{
          this.deleteList.push(obj.id);
        }
      },
      // 表格树全部选中配置  结束
      updatePq(row){
        this.$axios.post(this.$api.url.technologyWrite,{
            id : row.id,
            productionQuota : row.pq
        }).then(res=>{
          this.$message.success(res.message);
        }).catch(error=>{
          this.$message.error(error.message);
        })
      },
    }
  }
</script>
<style scoped>
  .standard {
    width: 100%;
    height: 100%;
  }
  .tag{
      line-height:24px;
      text-align:center;
      width:36px;
      height:24px;
      border-radius:12px;
    }
    .tag:nth-child(1){
      margin-left:20px;
    }
  .standard .showDiv{
    cursor: pointer;
  }
  .standard .showDiv div{
    color:#407ab9;
    display: none;
  }
  .showDiv span{
    cursor: pointer;
    display: block;
    width: 100%;
  }
  .showDiv:hover span{
    display: none;
  }
  .showDiv:hover div{
    display: block;
  }
</style>
<style>
@@ -30,161 +248,14 @@
    overflow: auto;
  }
  .standard .el-table__body-wrapper {
  /* .standard .el-table__body-wrapper {
    height: 100%;
  }
  } */
  .standard .el-table__body {
  /* .standard .el-table__body {
    height: 100%;
  }
  .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
  } */
  /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){
    padding-left: 23px !important;
   }
   } */
</style>
<template>
  <div class="standard">
    <el-table :data="tableData" border style="width: 100%" @selection-change="handleSelectionChange" row-key="id"
      default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
      <el-table-column type="selection" width="50">
      </el-table-column>
      <el-table-column type="index" label="序号" width="78">
      </el-table-column>
      <el-table-column prop="date" label="项目" width="350">
        <template slot-scope="scope">
          <span> <el-tag size="mini" :type="scope.row.children? '':'success'" :style="{borderRadius: '40%',marginRight: '12px'}">{{ scope.row.children? '01':'02' }}</el-tag> {{scope.row.date}}</span>
        </template>
      </el-table-column>
      <el-table-column prop="name" label="单位" width="180">
      </el-table-column>
      <el-table-column prop="address" label="标准值">
      </el-table-column>
      <el-table-column prop="address" label="内控值">
      </el-table-column>
    </el-table>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        tableData: [{
          id: 1,
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id: 2,
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        }, {
          id: 3,
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄',
          children: [{
              id: 31,
              date: '2016-05-01',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1519 弄'
            }, {
              id: 32,
              date: '2016-05-01',
              name: '王小虎',
              address: '上海市普陀区金沙江路 1519 弄'
          }]
        }, {
          id: 4,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },{
          id: 5,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          id: 6,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          id: 7,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          id: 8,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          id: 9,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          id: 10,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          id: 11,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        },
        {
          id: 12,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }
        ,{
          id: 13,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }
        ],
        tableData1: [{
          id: 1,
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          id: 2,
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        }, {
          id: 3,
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄',
          hasChildren: true
        }, {
          id: 4,
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }],
        selects: []
      }
    },
    mounted() {},
    methods: {
      handleSelectionChange(val) {
        this.selects = val;
      }
    }
  }
</script>