licp
2024-09-02 811bbc3feb318238214d022cb3a7458176f28e55
src/components/view/b1-inspect-order-plan.vue
@@ -97,6 +97,10 @@
   .view-self-checkbox {
      margin-left: 50px;
   }
  .draggable-row {
    cursor: move;
    position: relative;
  }
</style>
<style>
   .ins-order-plan-main .el-form-item__label{
@@ -154,10 +158,101 @@
                  </el-col>
               </el-row>
            </div>
            <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan"
            <!-- <ValueTable :tableRowClassName="changeRowClass" class="value-table" ref="insOrderPlan"
                    :isColumnWidth="true"
               :url="$api.insOrderPlan.selectInsOrderPlanList" :upUrl="$api.user.updateUser" :componentData="componentData" @handleInspection="handleInspection"
               :key="upIndex"/>
               :key="upIndex"/> -->
          <el-table
          :data="tableData"
          ref="table"
          border
          style="width: 100%;"
          height="calc(100% - 80px)"
          :row-class-name="rowClassName"
          v-loading="tableLoading"
        >
          <el-table-column
            prop="entrustCode"
            label="委托编号"
            width="140px"
          >
            <template slot-scope="scope">
              <el-button @click="selectAllByOne(scope.row)" type="text" size="small">{{ scope.row.entrustCode }}</el-button>
            </template>
          </el-table-column>
          <el-table-column
            prop="sample"
            label="样品名称"
            width="100px"
          ></el-table-column>
          <el-table-column
            prop="type"
            label="紧急程度"
            width="100px"
          >
            <template slot-scope="scope">
              <el-tag :type="typeList.find(m=>m.value==scope.row.type).type" size="small">{{ typeList.find(m=>m.value==scope.row.type).label }}</el-tag>
            </template>
          </el-table-column>
          <el-table-column
            prop="insState"
            label="状态"
            width="100px"
          >
          <template slot-scope="scope">
              <el-tag :type="typeList.find(m=>m.value==scope.row.insState).type" size="small">{{ typeList.find(m=>m.value==scope.row.insState).label }}</el-tag>
            </template></el-table-column>
          <el-table-column
            prop="userName"
            label="检验人"
            width="140px"
          ></el-table-column>
          <el-table-column
            prop="checkName"
            label="复核人"
            width="100px"
          ></el-table-column>
          <el-table-column
            prop="appointed"
            label="约定时间"
            width="120px"
          ></el-table-column>
          <el-table-column
            prop="sendTime"
            label="下发时间"
            width="160px"
          ></el-table-column>
          <el-table-column
            prop="insTime"
            label="检验开始时间"
            width="160px"
          ></el-table-column>
          <el-table-column
            prop="verifyTell"
            label="理由"
            width="150px"
          ></el-table-column>
          <el-table-column
            fixed="right"
            align="center" label="操作"
            width="250px"
          >
          <template slot-scope="scope">
            <el-button @click="handleDataLook(scope.row)" type="text" size="small">数据查看</el-button>
            <el-button @click="handleInspection(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState == 3 || scope.row.insState == 5||scope.row.insState == 6||(scope.row.userName&&!scope.row.userName.includes(userName))">检验</el-button>
            <el-button @click="handleConnect(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState == 5  || scope.row.insState == 3||scope.row.insState == 6||(scope.row.userName&&!scope.row.userName.includes(userName))">交接</el-button>
            <el-button @click="handleReview(scope.row)" type="text" size="small" :disabled="scope.row.userName == null || scope.row.insState != 3 ||(scope.row.checkName&&!scope.row.checkName.includes(userName))">复核</el-button>
            <el-button @click="claimFun(scope.row)" type="text" size="small" :disabled="scope.row.userName != null || scope.row.checkName!=null">认领</el-button>
          </template>
          </el-table-column>
        </el-table>
        <div style="display: flex;justify-content: flex-end;width: 100%;margin-top: 10px;">
          <span></span>
          <el-pagination @size-change="refreshTable" @current-change="refreshTable" :current-page="page.current"
            :page-sizes="[10, 20, 30, 50, 100]" :page-size="page.size" layout="total, sizes, prev, pager, next, jumper"
            :total="total">
          </el-pagination>
        </div>
         </div>
      </div>
      <el-dialog title="提示" :visible.sync="claimVisible" width="400px">
@@ -219,7 +314,7 @@
      getYearAndMonthAndDays
   } from '../../util/date'
   import Add from '../do/b1-ins-order/add.vue'
import { CellGroup } from 'iview'
  import Sortable from 'sortablejs';
   export default {
      components: {
         ValueTable,
@@ -299,6 +394,7 @@
                  insState: null,
                  userId: null
               },
          sortable:true,
               isIndex: true,
               showSelect: false,
               select: false,
@@ -387,6 +483,7 @@
               requiredAdd: [],
               requiredUp: []
            },
        userName:JSON.parse(localStorage.getItem("user")).name,
            upIndex: 0,
            planTotal: 0,
            insStateList: [],
@@ -403,7 +500,29 @@
        },
        loading:false,
        currentTime: null,
        sonLaboratoryList:[]
        sonLaboratoryList:[],
        tableData: [],
        page:{
          current:1,
          size:20,
        },
        total:0,
        tableLoading:false,
        jumpTeam:false,
        insResultList:[{
          value: 0,
          label: '不合格',
          type: 'danger'
        },{
          value: 1,
          label: '合格',
          type: 'success'
        },{
          value: '',
          label: '未出结果',
          type: 'info'
        }],
        typeList:[]
         }
      },
      created() {
@@ -416,8 +535,43 @@
      mounted() {
         this.entityCopy = this.HaveJson(this.componentData.entity)
      this.getPower()
      if(this.jumpTeam){
        this.initializeSortable();
      }
      },
      methods: {
      initializeSortable() {
        const tableBody = this.$refs.table.$el.querySelector('.el-table__body-wrapper > table > tbody');
        if (tableBody) {
          Sortable.create(tableBody, {
            handle: '.el-table__row', // 拖动手柄
            animation: 150,
            onEnd: this.handleSortEnd,
          });
        } else {
          console.error('Table body not found.');
        }
      },
      handleSortEnd(evt) {
        const oldIndex = evt.oldIndex;
        const newIndex = evt.newIndex;
        const movedItem = this.tableData[oldIndex];
        this.$axios.post(this.$api.insOrderPlan.jumpTeam,
          {
            id: movedItem.id,
            sort: newIndex+1,
            ...this.page
          }, {
          headers: {
            'Content-Type': 'application/json'
          }
        }
        ).then(res => {})
      },
      rowClassName({ row, rowIndex }) {
        return 'draggable-row';
      },
         // 数据查看
         handleDataLook(row) {
            this.componentDataDataLook.entity.id = row.id
@@ -430,6 +584,7 @@
            let connect = false
            let review = false
        let claim = false
        let jumpTeam = false
            for (var i = 0; i < power.length; i++) {
               if (power[i].menuMethod == 'doInsOrder') {
                  inspection = true
@@ -442,6 +597,9 @@
               }
          if (power[i].menuMethod == 'claimInsOrderPlan') {
                  claim = true
               }
          if (power[i].menuMethod == 'jumpTeam') {
                  jumpTeam = true
               }
            }
            if (!claim) {
@@ -456,6 +614,7 @@
            if (!inspection) {
               this.componentData.do.splice(0, 1)
            }
        this.jumpTeam = jumpTeam
         },
         changeCheckBox(val) {
            this.componentData.entity.userId = val?0:null
@@ -499,8 +658,20 @@
          this.loading = false;
            })
         },
         refreshTable(e) {
            this.$refs.insOrderPlan.selectList(e)
         refreshTable() {
            this.tableLoading = true
        this.$axios.post(this.$api.insOrderPlan.selectInsOrderPlanList,{
          entity:this.componentData.entity,
          page:this.page
        }, {
          headers: {
            'Content-Type': 'application/json'
          }
        }).then((res) => {
          this.tableLoading = false
          this.total = res.data.body.total
          this.tableData = res.data.body.records
        })
         },
         changeRowClass({
            row,
@@ -549,6 +720,7 @@
                  }
               })
               this.componentData.tagField.type.select = data
          this.typeList = data
            })
         },
         getInsStateDicts() {