From 811bbc3feb318238214d022cb3a7458176f28e55 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 02 九月 2024 17:17:18 +0800 Subject: [PATCH] 新增插队、扫码枪等功能 --- src/components/view/b1-inspect-order-plan.vue | 184 ++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 178 insertions(+), 6 deletions(-) diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue index 2bd248c..5aa83ee 100644 --- a/src/components/view/b1-inspect-order-plan.vue +++ b/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() { -- Gitblit v1.9.3