From 2bfe437d8b30fb7d80a38875b00ebf2b222ea05f Mon Sep 17 00:00:00 2001 From: spring <2396852758@qq.com> Date: 星期一, 17 三月 2025 17:54:03 +0800 Subject: [PATCH] 完成车间管理 --- src/components/Table/lims-table.vue | 13 vue.config.js | 2 src/views/business/reportPreparation/index.vue | 6 src/views/structural/capabilityAndLaboratory/workshop/components/fileList.vue | 161 ++++++++ src/views/login.vue | 2 src/api/structural/workshop.js | 46 ++ src/main.js | 2 src/api/structural/structureTestObjectPart.js | 66 +- src/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue | 31 src/views/structural/capabilityAndLaboratory/workshop/index.vue | 239 +++++++++++++ src/views/performance/manHour/workTimeConfig.vue | 4 src/views/structural/capabilityAndLaboratory/capability/index.vue | 332 +++++++++++------- src/api/structural/capability.js | 156 ++++---- 13 files changed, 792 insertions(+), 268 deletions(-) diff --git a/src/api/structural/capability.js b/src/api/structural/capability.js index 7dc11ab..4bfe518 100644 --- a/src/api/structural/capability.js +++ b/src/api/structural/capability.js @@ -1,151 +1,159 @@ -import request from '@/utils/request' +import request from "@/utils/request"; // 鑾峰彇妫�楠岄」鐩弬鏁� export function selectItemParameterList(query) { return request({ - url: '/capacityScope/selectItemParameterList', - method: 'get', - params: query - }) + url: "/capacityScope/selectItemParameterList", + method: "get", + params: query, + }); } // 鑾峰彇妫�娴嬪璞� export function selectTestObjectList(query) { return request({ - url: '/capacityScope/selectTestObjectList', - method: 'get', - params: query - }) + url: "/capacityScope/selectTestObjectList", + method: "get", + params: query, + }); } // 鏂板妫�楠岄」鐩弬鏁� export function addItemParameter(query) { return request({ - url: '/capacityScope/addItemParameter', - method: 'post', - data: query - }) + url: "/capacityScope/addItemParameter", + method: "post", + data: query, + }); } // 鍒犻櫎妫�楠岄」鐩弬鏁� export function delItemParameter(query) { return request({ - url: '/capacityScope/delItemParameter', - method: 'delete', - params: query - }) + url: "/capacityScope/delItemParameter", + method: "delete", + params: query, + }); } // 淇敼妫�楠岄」鐩弬鏁� export function upItemParameter(query) { return request({ - url: '/capacityScope/upItemParameter', - method: 'post', - data: query - }) + url: "/capacityScope/upItemParameter", + method: "post", + data: query, + }); } // 鑾峰彇妫�楠屽璞℃爲 export function getItemTree() { return request({ - url: '/capacityScope/getItemTree', - method: 'get' - }) + url: "/capacityScope/getItemTree", + method: "get", + }); } // 鏂板妫�娴嬪璞� export function addTestObject(query) { return request({ - url: '/capacityScope/addTestObject', - method: 'post', - data: query - }) + url: "/capacityScope/addTestObject", + method: "post", + data: query, + }); } // 鍒犻櫎妫�娴嬪璞� export function delTestObject(query) { return request({ - url: '/capacityScope/delTestObject', - method: 'delete', - params: query - }) + url: "/capacityScope/delTestObject", + method: "delete", + params: query, + }); } // 淇敼妫�娴嬪璞� export function upTestObject(query) { return request({ - url: '/capacityScope/upTestObject', - method: 'post', - data: query - }) + url: "/capacityScope/upTestObject", + method: "post", + data: query, + }); } // 鏌ヨ妫�楠屽璞$殑浜у搧缁存姢鍒楄〃 export function selectProductListByObjectId(query) { return request({ - url: '/capacityScope/selectProductListByObjectId', - method: 'get', - params: query - }) + url: "/capacityScope/selectProductListByObjectId", + method: "get", + params: query, + }); } // 鏂板浜у搧 export function addProduct(query) { return request({ - url: '/capacityScope/addProduct', - method: 'post', - data: query - }) + url: "/capacityScope/addProduct", + method: "post", + data: query, + }); } // 鍒犻櫎浜у搧 export function delProduct(query) { return request({ - url: '/capacityScope/delProduct', - method: 'delete', - params: query - }) + url: "/capacityScope/delProduct", + method: "delete", + params: query, + }); } // 淇敼浜у搧 export function upProduct(query) { return request({ - url: '/capacityScope/upProduct', - method: 'post', - data: query - }) + url: "/capacityScope/upProduct", + method: "post", + data: query, + }); } // 鑾峰彇瀹為獙瀹ゅ悕绉� export function obtainItemParameterList() { return request({ - url: '/laboratoryScope/obtainItemParameterList', - method: 'get', - }) + url: "/laboratoryScope/obtainItemParameterList", + method: "get", + }); } // 鏌ヨ鍘熷璁板綍妯℃澘鏋氫妇 export function getStandardTemplate() { return request({ - url: '/StandardTemplate/getStandardTemplate', - method: 'get', - }) + url: "/StandardTemplate/getStandardTemplate", + method: "get", + }); } // 鏍规嵁浜у搧id鏌ヨ鍘傚瀵嗗害缁戝畾 export function selectSupplierDensityByProductId(query) { return request({ - url: '/productSupplierDensity/selectSupplierDensityByProductId', - method: 'get', - params: query - }) + url: "/productSupplierDensity/selectSupplierDensityByProductId", + method: "get", + params: query, + }); } // 鏂板浜у搧鍘傚瀵嗗害缁戝畾 export function addProductSupplierDensity(query) { return request({ - url: '/productSupplierDensity/addProductSupplierDensity', - method: 'post', - data: query - }) + url: "/productSupplierDensity/addProductSupplierDensity", + method: "post", + data: query, + }); } // 淇敼浜у搧鍘傚瀵嗗害缁戝畾 export function updateProductSupplierDensity(query) { return request({ - url: '/productSupplierDensity/updateProductSupplierDensity', - method: 'post', - data: query - }) + url: "/productSupplierDensity/updateProductSupplierDensity", + method: "post", + data: query, + }); } // 鍒犻櫎浜у搧鍘傚瀵嗗害缁戝畾 export function deleteProductSupplierDensity(query) { return request({ - url: '/productSupplierDensity/deleteProductSupplierDensity', - method: 'delete', - params: query - }) + url: "/productSupplierDensity/deleteProductSupplierDensity", + method: "delete", + params: query, + }); +} +// 缁戝畾杞﹂棿 +export function updateWorkShop(query) { + return request({ + url: "/capacityScope/updateWorkShop", + method: "post", + data: query, + }); } diff --git a/src/api/structural/structureTestObjectPart.js b/src/api/structural/structureTestObjectPart.js index c0a9f0d..a2d9dce 100644 --- a/src/api/structural/structureTestObjectPart.js +++ b/src/api/structural/structureTestObjectPart.js @@ -1,66 +1,66 @@ -import request from '@/utils/request' +import request from "@/utils/request"; // 妫�楠屽璞℃牴鎹骇鍝乮d鏌ヨ闆朵欢 export function selectByTestObjectId(query) { return request({ - url: '/structureTestObjectPart/selectByTestObjectId', - method: 'get', - params: query - }) + url: "/structureTestObjectPart/selectByTestObjectId", + method: "get", + params: query, + }); } // 妫�楠屽璞℃柊澧炰骇鍝侀浂浠� export function addTestObjectPart(query) { return request({ - url: '/structureTestObjectPart/addTestObjectPart', - method: 'post', - data: query - }) + url: "/structureTestObjectPart/addTestObjectPart", + method: "post", + data: query, + }); } // 妫�楠屽璞′慨鏀逛骇鍝侀浂浠� export function updateTestObjectPart(query) { return request({ - url: '/structureTestObjectPart/updateTestObjectPart', - method: 'post', - data: query - }) + url: "/structureTestObjectPart/updateTestObjectPart", + method: "post", + data: query, + }); } // 妫�楠屽璞″垹闄や骇鍝侀浂浠� export function deleteTestObjectPart(query) { return request({ - url: '/structureTestObjectPart/deleteTestObjectPart', - method: 'delete', - params: query - }) + url: "/structureTestObjectPart/deleteTestObjectPart", + method: "delete", + params: query, + }); } // 鏍规嵁浜у搧id鏌ヨ闆朵欢 export function selectByProductId(query) { return request({ - url: '/productPart/selectByProductId', - method: 'get', - params: query - }) + url: "/productPart/selectByProductId", + method: "get", + params: query, + }); } // 鏂板浜у搧闆朵欢 export function addProductPart(query) { return request({ - url: '/productPart/addProductPart', - method: 'post', - data: query - }) + url: "/productPart/addProductPart", + method: "post", + data: query, + }); } // 淇敼浜у搧闆朵欢 export function updateProductPart(query) { return request({ - url: '/productPart/updateProductPart', - method: 'post', - data: query - }) + url: "/productPart/updateProductPart", + method: "post", + data: query, + }); } // 鍒犻櫎浜у搧闆朵欢 export function deleteProductPart(query) { return request({ - url: '/productPart/deleteProductPart', - method: 'post', - params: query - }) + url: "/productPart/deleteProductPart", + method: "post", + params: query, + }); } diff --git a/src/api/structural/workshop.js b/src/api/structural/workshop.js new file mode 100644 index 0000000..c32d07c --- /dev/null +++ b/src/api/structural/workshop.js @@ -0,0 +1,46 @@ +import request from "@/utils/request"; + +// 鏌ヨ杞﹂棿鍚嶇О +export function selectWorkShop(query) { + return request({ + url: "/workShop/selectWorkShop", + method: "get", + params: query, + }); +} + +// 鍒犻櫎妫�楠屽崟妯℃澘 +export function delWorkShop(query) { + return request({ + url: "/workShop/delWorkShop", + method: "delete", + params: query, + }); +} + +// 娣诲姞杞﹂棿鍚嶇О鏁版嵁 +export function addOrUpdateWorkShop(query) { + return request({ + url: "/workShop/addOrUpdateWorkShop", + method: "post", + data: query, + }); +} + +// 鏌ヨ杞﹂棿鏂囦欢 +export function fileList(query) { + return request({ + url: "/workShop/fileList", + method: "get", + params: query, + }); +} + +// 鍒犻櫎鏂囦欢 +export function delFile(query) { + return request({ + url: "/workShop/delFile", + method: "delete", + params: query, + }); +} diff --git a/src/components/Table/lims-table.vue b/src/components/Table/lims-table.vue index d71bc90..63c6f71 100644 --- a/src/components/Table/lims-table.vue +++ b/src/components/Table/lims-table.vue @@ -13,7 +13,8 @@ :filter-method="item.filterHandler" :filter-multiple="item.filterMultiple" :filtered-value="item.filteredValue" :filters="item.filters" :fixed="item.fixed" :label="item.label" :min-width="item.minWidth" :prop="item.prop" :show-overflow-tooltip="item.dataType === 'action' || item.dataType === 'slot' ? false : true" - :sortable="item.sortable ? true : false" :type="item.type" :width="item.dataType === 'action' ? getWidth(item.operation) : item.width" align="center"> + :sortable="item.sortable ? true : false" :type="item.type" + :width="item.dataType == 'action' ? btnWidth : item.width" align="center"> <!-- <div class="123" v-if="item.type == ''"> --> <template v-if="item.hasOwnProperty('colunmTemplate')" :slot="item.colunmTemplate" slot-scope="scope"> <slot v-if="item.theadSlot" :index="index" :name="item.theadSlot" :row="scope.row" /> @@ -62,7 +63,7 @@ </div> <!-- 鎸夐挳 --> - <div v-else-if="item.dataType == 'action'"> + <div v-else-if="item.dataType == 'action'" :style="`width:${getWidth(item.operation, scope.row)}`"> <template v-for="(o, key) in item.operation"> <el-button v-show="o.type != 'upload'" size="mini" v-if="o.showHide ? o.showHide(scope.row) : true" :disabled="o.disabled ? o.disabled(scope.row) : false" :icon="iconFn(o)" :plain="o.plain" @@ -257,6 +258,7 @@ data() { return { spanList: [], + btnWidth: '120px', }; }, mounted() { @@ -269,13 +271,14 @@ getWidth(row) { let count = 0; row.forEach((a) => { - if (a.showHide!==undefined && a.showHide()) { + if (a.showHide !== undefined && a.showHide()) { count += a.name.length; - } else if(!a.showHide) { + } else if (!a.showHide) { count += a.name.length; } }); - return count * 15 + 70 + "px"; + this.btnWidth = count * 15 + 80 + "px"; + return count * 15 + 80 + "px"; }, iconFn(row) { if (row.name === "缂栬緫" || row.name === "淇敼") { diff --git a/src/main.js b/src/main.js index aa78603..bfc35ed 100644 --- a/src/main.js +++ b/src/main.js @@ -66,7 +66,7 @@ Vue.prototype.HaveJson = (val) => { return JSON.parse(JSON.stringify(val)); }; -Vue.prototype.javaApi = "http://114.132.189.42:7012"; +Vue.prototype.javaApi = "http://10.21.10.74:8089"; Vue.prototype.checkPermi = checkPermi; Vue.prototype.uploadHeader = { Authorization: "Bearer " + getToken(), diff --git a/src/views/business/reportPreparation/index.vue b/src/views/business/reportPreparation/index.vue index 9dd603c..7e161aa 100644 --- a/src/views/business/reportPreparation/index.vue +++ b/src/views/business/reportPreparation/index.vue @@ -184,8 +184,8 @@ <el-button size="small" style="height: 38px" type="primary">闄勪欢涓婁紶</el-button> </el-upload> </div> - <lims-table :tableData="tableDataFile" :column="columnFile" height="500px" - key="tableDataFile" :tableLoading="tableLoadingFile"></lims-table> + <lims-table :tableData="tableDataFile" :column="columnFile" height="500px" key="tableDataFile" + :tableLoading="tableLoadingFile"></lims-table> </el-dialog> </div> </template> @@ -205,7 +205,7 @@ import { mapGetters } from "vuex"; import { selectUserCondition } from "@/api/business/inspectionTask"; import limsTable from "@/components/Table/lims-table.vue"; -import {delFile, downFile, getFileList} from "@/api/business/rawMaterialOrder"; +import { delFile, downFile, getFileList } from "@/api/business/rawMaterialOrder"; export default { name: 'ReportPreparation', components: { limsTable, onlyoffice }, diff --git a/src/views/login.vue b/src/views/login.vue index ee20b62..00dd1ea 100644 --- a/src/views/login.vue +++ b/src/views/login.vue @@ -38,7 +38,7 @@ <router-link class="link-type" :to="'/register'">绔嬪嵆娉ㄥ唽</router-link> </div> </el-form-item> - <el-button v-if="true" type="primary" plain @click="goLogin">闆嗗洟闆嗘垚鐧诲綍</el-button> + <el-button v-if="false" type="primary" plain @click="goLogin">闆嗗洟闆嗘垚鐧诲綍</el-button> </el-form> </div> <!-- 搴曢儴 --> diff --git a/src/views/performance/manHour/workTimeConfig.vue b/src/views/performance/manHour/workTimeConfig.vue index bcee42c..0ec72f6 100644 --- a/src/views/performance/manHour/workTimeConfig.vue +++ b/src/views/performance/manHour/workTimeConfig.vue @@ -277,8 +277,8 @@ }) .then(() => { deleteAuxiliaryWorkingHours({ id: row.id }).then((res) => { - console.log('res',res) - if (res.code == 200){ + console.log('res', res) + if (res.code == 200) { this.$message.success("鍒犻櫎鎴愬姛"); this.refresh(); } diff --git a/src/views/structural/capabilityAndLaboratory/capability/index.vue b/src/views/structural/capabilityAndLaboratory/capability/index.vue index 72cb9b8..046c120 100644 --- a/src/views/structural/capabilityAndLaboratory/capability/index.vue +++ b/src/views/structural/capabilityAndLaboratory/capability/index.vue @@ -9,11 +9,9 @@ </el-radio-group> </el-col> <el-col :span="12" style="text-align: right;"> - <el-upload v-if="radio === 0" ref='upload1' - style="display: inline;margin-right: 8px" - :action="uploadAction1" - :before-upload="beforeUpload1" :headers="token" :on-error="onError1" - :on-success="handleSuccessUp1" :show-file-list="false" accept='.doc,.docx,.xls,.xlsx'> + <el-upload v-if="radio === 0" ref='upload1' style="display: inline;margin-right: 8px" :action="uploadAction1" + :before-upload="beforeUpload1" :headers="token" :on-error="onError1" :on-success="handleSuccessUp1" + :show-file-list="false" accept='.doc,.docx,.xls,.xlsx'> <el-button size="small" type="primary">瀵煎叆</el-button> </el-upload> <el-button size="small" type="primary" v-if="radio === 1" @click="uploadDia = true">瀵煎叆</el-button> @@ -23,19 +21,19 @@ </div> <div> <el-form :model="itemParameterForm" ref="itemParameterForm" size="small" :inline="true"> - <el-form-item label="妫�楠岄」" prop="inspectionItem" v-if="radio===0"> - <el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="itemParameterForm.inspectionItem" @keyup.enter.native="refreshTable()"> + <el-form-item label="妫�楠岄」" prop="inspectionItem" v-if="radio === 0"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="itemParameterForm.inspectionItem" + @keyup.enter.native="refreshTable()"> </el-input> </el-form-item> - <el-form-item label="妫�楠屽瓙椤�" prop="inspectionItemSubclass" v-if="radio===0"> - <el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="itemParameterForm.inspectionItemSubclass" @keyup.enter.native="refreshTable()"> + <el-form-item label="妫�楠屽瓙椤�" prop="inspectionItemSubclass" v-if="radio === 0"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="itemParameterForm.inspectionItemSubclass" + @keyup.enter.native="refreshTable()"> </el-input> </el-form-item> <el-form-item label="妫�楠屽璞�" prop="sample"> - <el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="itemParameterForm.sample" @keyup.enter.native="refreshTable()"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="itemParameterForm.sample" + @keyup.enter.native="refreshTable()"> </el-input> </el-form-item> <el-form-item> @@ -43,24 +41,22 @@ <el-button icon="el-icon-refresh" size="mini" @click="refresh">閲� 缃�</el-button> </el-form-item> </el-form> -<!-- 妫�楠岄」鐩弬鏁拌〃鏍�--> - <div class="table" v-if="radio===0"> - <lims-table :tableData="tableData" :column="column" key="tableData" - @pagination="pagination" :height="'calc(100vh - 290px)'" - :page="page" :tableLoading="tableLoading"></lims-table> + <!-- 妫�楠岄」鐩弬鏁拌〃鏍�--> + <div class="table" v-if="radio === 0"> + <lims-table :tableData="tableData" :column="column" key="tableData" @pagination="pagination" + :height="'calc(100vh - 290px)'" :page="page" :tableLoading="tableLoading"></lims-table> </div> -<!-- 妫�楠屽璞¤〃鏍�--> - <div class="table" v-if="radio===1"> + <!-- 妫�楠屽璞¤〃鏍�--> + <div class="table" v-if="radio === 1"> <lims-table :tableData="testObjectTableData" :column="testObjectColumn" key="testObjectTableData" - @pagination="pagination" :height="'calc(100vh - 290px)'" - :page="testObjectPage" :tableLoading="tableLoading"></lims-table> + @pagination="pagination" :height="'calc(100vh - 290px)'" :page="testObjectPage" + :tableLoading="tableLoading"></lims-table> </div> </div> <!--浜у搧缁存姢寮规--> <el-dialog title="浜у搧缁存姢" :visible.sync="diaProduct" width="900px"> - <lims-table :tableData="productData" :column="productColumn" height="460" - @pagination="productPagination" - :page="productPage" :tableLoading="productableLoading"></lims-table> + <lims-table :tableData="productData" :column="productColumn" height="460" @pagination="productPagination" + :page="productPage" :tableLoading="productableLoading"></lims-table> <span slot="footer" class="dialog-footer"> <el-button @click="diaProduct = false">鍙� 娑�</el-button> <el-button type="primary" @click="editProduct('add')" :loading="productLoad">鏂� 澧�</el-button> @@ -68,7 +64,8 @@ </el-dialog> <!--浜у搧缁存姢缂栬緫--> <el-dialog title="鎿嶄綔浜у搧缁存姢" :visible.sync="productEditDia" width="400px"> - <el-form :model="productEditForm" ref="productEditForm" :rules="productRules" label-position="right" label-width="100px"> + <el-form :model="productEditForm" ref="productEditForm" :rules="productRules" label-position="right" + label-width="100px"> <el-form-item label="浜у搧鍚嶇О" prop="name"> <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="productEditForm.name"></el-input> </el-form-item> @@ -84,11 +81,9 @@ </el-dialog> <el-dialog :visible.sync="uploadDia" title="鏁版嵁瀵煎叆" width="500px"> <div style="margin: 0 auto;"> - <el-upload ref="upload" :action="uploadAction" - :auto-upload="false" :file-list="fileList" - :headers="token" :limit="1" - :on-change="beforeUpload" :on-error="onError" :on-success="onSuccess" accept=".xlsx" drag - name="file"> + <el-upload ref="upload" :action="uploadAction" :auto-upload="false" :file-list="fileList" :headers="token" + :limit="1" :on-change="beforeUpload" :on-error="onError" :on-success="onSuccess" accept=".xlsx" drag + name="file"> <i class="el-icon-upload"></i> <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> </el-upload> @@ -101,14 +96,26 @@ <!--妫�楠岄」鐩弬鏁�-缂栬緫寮规--> <EditForm ref="editForm" @refreshList="refreshList1"></EditForm> <testObjectEditForm ref="testObjectEditForm" @refreshList="refreshList"></testObjectEditForm> - <BindPartDialog v-if="bindPartDialog" :bindPartDialog="bindPartDialog" - :currentRow="currentRow" - :type="type" - @closeBindPartDialog="closeBindPartDialog"></BindPartDialog> - <BindSupplierDensityDialog v-if="bindSupplierDensityDialog" - :bindSupplierDensityDialog="bindSupplierDensityDialog" - :currentRow="currentSupplierDensityRow" - @closeBindPartDialog="closeBindSupplierDensityDialog"></BindSupplierDensityDialog> + <BindPartDialog v-if="bindPartDialog" :bindPartDialog="bindPartDialog" :currentRow="currentRow" :type="type" + @closeBindPartDialog="closeBindPartDialog"></BindPartDialog> + <BindSupplierDensityDialog v-if="bindSupplierDensityDialog" :bindSupplierDensityDialog="bindSupplierDensityDialog" + :currentRow="currentSupplierDensityRow" @closeBindPartDialog="closeBindSupplierDensityDialog"> + </BindSupplierDensityDialog> + <el-dialog title="杞﹂棿缁戝畾" :visible.sync="workshopVisible" width="400px"> + <el-form :model="workshopForm" ref="workshopForm" :rules="workshopRules" label-position="right" + label-width="100px"> + <el-form-item label="杞﹂棿鍚嶇О" prop="workShopId"> + <el-select v-model="workshopForm.workShopId" placeholder="璇烽�夋嫨" size="small"> + <el-option v-for="item in workshopList" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="workshopVisible = false">鍙� 娑�</el-button> + <el-button :loading="uploading" type="primary" @click="submitWorkshop">纭� 璁�</el-button> + </span> + </el-dialog> </div> </template> @@ -118,17 +125,17 @@ import { addProduct, delItemParameter, delProduct, delTestObject, selectItemParameterList, selectProductListByObjectId, - selectTestObjectList, upProduct, + selectTestObjectList, upProduct, updateWorkShop } from "@/api/structural/capability"; import limsTable from "@/components/Table/lims-table.vue"; import EditForm from "@/views/structural/capabilityAndLaboratory/capabilityComponents/EditForm.vue"; import testObjectEditForm from "@/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue"; -import {getToken} from "@/utils/auth"; +import { getToken } from "@/utils/auth"; import { obtainItemParameterList } from '@/api/structural/laboratoryScope' - +import { selectWorkShop } from "@/api/structural/workshop.js" export default { name: 'Capability', - components: {limsTable, EditForm, testObjectEditForm, BindPartDialog, BindSupplierDensityDialog}, + components: { limsTable, EditForm, testObjectEditForm, BindPartDialog, BindSupplierDensityDialog }, data() { return { uploadAction: process.env.VUE_APP_BASE_API + '/capacityScope/importExcel', @@ -136,24 +143,24 @@ tableData: [], tableLoading: false, column: [ - {label: '妫�楠岄」', prop: 'inspectionItem'}, - {label: '妫�楠岄」EN', prop: 'inspectionItemEn'}, - {label: '妫�楠屽瓙椤�', prop: 'inspectionItemSubclass'}, - {label: '妫�楠屽瓙椤笶N', prop: 'inspectionItemSubclassEn'}, - {label: '妫�楠岄」鍒嗙被', prop: 'inspectionItemClass'}, - {label: '妫�楠岄」鍒嗙被EN', prop: 'inspectionItemClassEn'}, - {label: '妫�楠屽璞�', prop: 'sample'}, - {label: '鍗曚环(鍏�)', prop: 'price'}, - {label: '璇曢獙瀹�', prop: 'sonLaboratory'}, - {label: '瑕佹眰鎻忚堪', prop: 'askTell'}, - {label: '瑕佹眰鍊�', prop: 'ask'}, - {label: '璁¢噺鍗曚綅', prop: 'unit'}, - {label: '宸ユ椂(H)', prop: 'manHour'}, - {label: '棰勮鏃堕棿(H)', prop: 'manDay'}, - {label: '宸ユ椂鍒嗙粍', prop: 'manHourGroup'}, - {label: '鍒涘缓鏃堕棿', prop: 'createTime'}, - {label: '淇敼鏃堕棿', prop: 'updateTime'}, - {label: '鏉′欢', prop: 'radiusList'}, + { label: '妫�楠岄」', prop: 'inspectionItem' }, + { label: '妫�楠岄」EN', prop: 'inspectionItemEn' }, + { label: '妫�楠屽瓙椤�', prop: 'inspectionItemSubclass' }, + { label: '妫�楠屽瓙椤笶N', prop: 'inspectionItemSubclassEn' }, + { label: '妫�楠岄」鍒嗙被', prop: 'inspectionItemClass' }, + { label: '妫�楠岄」鍒嗙被EN', prop: 'inspectionItemClassEn' }, + { label: '妫�楠屽璞�', prop: 'sample' }, + { label: '鍗曚环(鍏�)', prop: 'price' }, + { label: '璇曢獙瀹�', prop: 'sonLaboratory' }, + { label: '瑕佹眰鎻忚堪', prop: 'askTell' }, + { label: '瑕佹眰鍊�', prop: 'ask' }, + { label: '璁¢噺鍗曚綅', prop: 'unit' }, + { label: '宸ユ椂(H)', prop: 'manHour' }, + { label: '棰勮鏃堕棿(H)', prop: 'manDay' }, + { label: '宸ユ椂鍒嗙粍', prop: 'manHourGroup' }, + { label: '鍒涘缓鏃堕棿', prop: 'createTime' }, + { label: '淇敼鏃堕棿', prop: 'updateTime' }, + { label: '鏉′欢', prop: 'radiusList' }, { dataType: 'action', fixed: 'right', @@ -178,9 +185,9 @@ } ], page: { - total:0, - size:10, - current:1 + total: 0, + size: 10, + current: 1 }, testObjectTableData: [], testObjectColumn: [ @@ -191,9 +198,9 @@ minWidth: '130', formatData: (params) => { let index = this.laboratoryList.findIndex(item => item.value == params) - if(index > -1) { + if (index > -1) { return this.laboratoryList[index].label - }else { + } else { return null } // if (params == 1) { @@ -222,34 +229,24 @@ } } }, - {label: '妫�楠屽璞�', prop: 'specimenName'}, - {label: '妫�楠屽璞N', prop: 'specimenNameEn'}, - {label: '浜у搧', prop: 'product'}, - {label: '瀵硅薄浠e彿', prop: 'code'}, - {label: '瀵硅薄绫诲瀷', prop: 'objectType', + { label: '妫�楠屽璞�', prop: 'specimenName' }, + { label: '妫�楠屽璞N', prop: 'specimenNameEn' }, + { label: '浜у搧', prop: 'product' }, + { label: '瀵硅薄浠e彿', prop: 'code' }, + { + label: '瀵硅薄绫诲瀷', prop: 'objectType', dataType: 'tag', formatData: (params) => { - if (params == 1) { - return '鍘熸潗鏂�' - } else if (params == 2) { - return '鎴愬搧' - } else { - return '杈呮潗' + let obj = this.productClassification.find(m => params == m.value) + if (obj) { + return obj.label } }, - formatType: (params) => { - if (params == 1) { - return 'success' - } else if (params == 2) { - return 'info' - } else { - return 'warning' - } - }}, - {label: '鍒涘缓浜�', prop: 'createUserName'}, - {label: '鏇存柊浜�', prop: 'updateUserName'}, - {label: '鍒涘缓鏃堕棿', prop: 'createTime'}, - {label: '鏇存柊鏃堕棿', prop: 'updateTime'}, + }, + { label: '鍒涘缓浜�', prop: 'createUserName' }, + { label: '鏇存柊浜�', prop: 'updateUserName' }, + { label: '鍒涘缓鏃堕棿', prop: 'createTime' }, + { label: '鏇存柊鏃堕棿', prop: 'updateTime' }, { dataType: 'action', fixed: 'right', @@ -277,20 +274,20 @@ this.upProduct(row); }, }, - { - name: '闆朵欢缁戝畾', - type: 'text', - clickFun: (row) => { - this.bindPartFirst(row); - }, - }, + // { + // name: '闆朵欢缁戝畾', + // type: 'text', + // clickFun: (row) => { + // this.bindPartFirst(row); + // }, + // }, ] } ], testObjectPage: { - total:0, - size:10, - current:0 + total: 0, + size: 10, + current: 0 }, addOrUpdate: '', tree: null, @@ -304,8 +301,9 @@ productLoad: false, diaProduct: false, productColumn: [ - {label: '浜у搧鍚嶇О', prop: 'name'}, - {label: '浜у搧鍚嶇ОEN', prop: 'nameEn'}, + { label: '浜у搧鍚嶇О', prop: 'name' }, + { label: '浜у搧鍚嶇ОEN', prop: 'nameEn' }, + { label: '杞﹂棿鍚嶇О', prop: 'workShopName' }, { dataType: 'action', label: '鎿嶄綔', @@ -332,6 +330,20 @@ }, }, { + name: '杞﹂棿缁戝畾', + type: 'text', + clickFun: (row) => { + this.bindWokshop(row); + }, + showHide: (row) => { + if (this.currentObj.objectType != '鍘熸潗鏂�') { + return false + } else { + return true + } + } + }, + { name: '鍘傚瀵嗗害缁戝畾', type: 'text', clickFun: (row) => { @@ -343,9 +355,9 @@ ], productData: [], productPage: { - total:0, - size:10, - current:1, + total: 0, + size: 10, + current: 1, layout: 'total, prev, pager, next' }, productableLoading: false, @@ -364,19 +376,32 @@ }, uploadDia: false, fileList: [], - token: {Authorization: "Bearer " + getToken()}, + token: { Authorization: "Bearer " + getToken() }, uploading: false, currentRow: {}, // 閫夋嫨闆朵欢缁戝畾鏈潯鏁版嵁鐨勪俊鎭� currentSupplierDensityRow: {}, // 閫夋嫨闆朵欢缁戝畾鏈潯鏁版嵁鐨勪俊鎭� bindSupplierDensityDialog: false, bindPartDialog: false, type: null, // 闆朵欢缁戝畾鐨勭被鍨�--0锛氭楠屽璞★紝1锛氫骇鍝佺淮鎶�, - laboratoryList:[] + laboratoryList: [], + productClassification: [],//浜у搧绫诲瀷 + currentObj: {},//褰撳墠瀵硅薄 + currentProduct: {},//褰撳墠浜у搧 + workshopVisible: false, + workshopForm: {}, + workshopRules: { + workShopId: [{ required: true, message: '璇烽�夋嫨杞﹂棿', trigger: 'change' }] + }, + workshopList: [],//杞﹂棿鍒楄〃 } }, created() { this.getItemParameterList() this.refreshTable() + this.getDicts("product_classification").then((response) => { + this.productClassification = this.dictToValue(response.data); + }); + this.selectWorkShop() }, computed: { title() { @@ -384,6 +409,11 @@ } }, methods: { + selectWorkShop() { + selectWorkShop({ size: -1, current: -1 }).then(res => { + this.workshopList = res.data.records + }) + }, submitUpload() { if (this.$refs.upload.uploadFiles.length === 0) { this.$message.error('鏈�夋嫨鏂囦欢') @@ -432,7 +462,7 @@ return true; } }, - handleSuccessUp1 (response, file, fileList) { + handleSuccessUp1(response, file, fileList) { this.$refs.upload1.clearFiles() if (response.code !== 200) { this.$message.error(response.msg) @@ -441,16 +471,16 @@ this.$message.success('涓婁紶鎴愬姛') this.refreshTable() }, - refreshList () { + refreshList() { this.refreshTable() }, - refreshList1 () { + refreshList1() { this.refreshTable() }, refreshTable() { this.tableLoading = true if (this.radio === 0) { - selectItemParameterList({...this.page, ...this.itemParameterForm}).then(res => { + selectItemParameterList({ ...this.page, ...this.itemParameterForm }).then(res => { this.tableLoading = false if (res.code === 200) { this.tableData = res.data.records @@ -460,7 +490,7 @@ this.tableLoading = false }) } else { - selectTestObjectList({...this.testObjectPage, ...this.itemParameterForm}).then(res => { + selectTestObjectList({ ...this.testObjectPage, ...this.itemParameterForm }).then(res => { this.tableLoading = false if (res.code === 200) { this.testObjectTableData = res.data.records @@ -476,7 +506,7 @@ this.page.current = 1 this.refreshTable() }, - pagination (page) { + pagination(page) { this.page.size = page.limit this.refreshTable() }, @@ -489,17 +519,17 @@ } }, // 妫�楠岄」鐩弬鏁�-鎵撳紑淇敼寮规 - editForm (row) { + editForm(row) { this.$refs.editForm.openDia('edit', row) }, // 妫�楠岄」鐩弬鏁�-鍒犻櫎 - delete (row) { + delete(row) { this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => { - delItemParameter({id:row.id}).then(res => { + delItemParameter({ id: row.id }).then(res => { if (res.code === 200) { this.$message.success('鍒犻櫎鎴愬姛') this.refreshTable(); @@ -513,17 +543,17 @@ }) }, // 妫�楠屽璞�-鎵撳紑淇敼寮规 - editTestObjectForm (row) { + editTestObjectForm(row) { this.$refs.testObjectEditForm.openDia('edit', row) }, // 妫�楠岄」鐩弬鏁�-鍒犻櫎 - deleteTest (row) { + deleteTest(row) { this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => { - delTestObject({id:row.id}).then(res => { + delTestObject({ id: row.id }).then(res => { if (res.code === 200) { this.$message.success('鍒犻櫎鎴愬姛') this.refreshTable(); @@ -538,18 +568,28 @@ }, // 浜у搧缁存姢 upProduct(row) { + this.currentObj = row; + if (this.currentObj.objectType == '鍘熸潗鏂�') { + if (this.productColumn.length < 4) { + this.productColumn.splice(2, 0, { label: '杞﹂棿鍚嶇О', prop: 'workShopName' }) + } + } else { + if (this.productColumn.length == 4) { + this.productColumn.splice(2, 1) + } + } this.diaProduct = true this.objectId = row.id this.productPage.current = 1 this.getProductList(row) }, // 鏌ヨ浜у搧缁存姢鍒楄〃鏁版嵁 - getProductList () { + getProductList() { const params = { objectId: this.objectId, } this.productableLoading = true - selectProductListByObjectId({...params, ...this.productPage}).then(res => { + selectProductListByObjectId({ ...params, ...this.productPage }).then(res => { this.productableLoading = false this.productData = res.data.records this.productPage.total = res.data.total @@ -563,7 +603,7 @@ this.getProductList() }, // 浜у搧缁存姢-鏂板-缂栬緫 - editProduct (type, row) { + editProduct(type, row) { this.productEditDia = true this.operationType = type if (type === 'edit') { @@ -571,7 +611,7 @@ } }, // 鎻愪氦浜у搧缁存姢淇敼 - submitProduct () { + submitProduct() { this.$refs['productEditForm'].validate((valid) => { if (valid) { this.uploading = true @@ -607,13 +647,13 @@ this.productEditDia = false }, // 浜у搧缁存姢-鍒犻櫎 - deleteProduct (row) { + deleteProduct(row) { this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => { - delProduct({id:row.id}).then(res => { + delProduct({ id: row.id }).then(res => { if (res.code === 200) { this.$message.success('鍒犻櫎鎴愬姛') this.getProductList(); @@ -627,34 +667,38 @@ }) }, // 闆朵欢缁戝畾 - bindPartFirst (row) { + bindPartFirst(row) { this.bindPart(row, 0) }, - bindPartSecond (row) { + bindPartSecond(row) { this.bindPart(row, 1) }, + bindWokshop(row) { + this.currentProduct = row; + this.workshopVisible = true + }, // 鍘傚瀵嗗害缁戝畾 - bindSupplierDensitySecond (row) { + bindSupplierDensitySecond(row) { this.bindSupplierDensity(row) }, // 鎵撳紑鍘傚瀵嗗害缁戝畾寮规 - bindSupplierDensity (row) { + bindSupplierDensity(row) { this.currentSupplierDensityRow = row this.bindSupplierDensityDialog = true }, // 鎵撳紑闆朵欢缁戝畾寮规 - bindPart (row, index) { + bindPart(row, index) { this.type = index this.currentRow = row this.bindPartDialog = true }, - closeBindPartDialog () { + closeBindPartDialog() { this.bindPartDialog = false }, - closeBindSupplierDensityDialog () { + closeBindSupplierDensityDialog() { this.bindSupplierDensityDialog = false }, - getItemParameterList(){ + getItemParameterList() { obtainItemParameterList().then(res => { let data = [] res.data.forEach(a => { @@ -665,6 +709,28 @@ }) this.laboratoryList = data }) + }, + // 缁戝畾杞﹂棿 + submitWorkshop() { + this.$refs['workshopForm'].validate((valid) => { + if (valid) { + this.uploading = true + updateWorkShop({ + id: this.currentProduct.id, + workShopId: this.workshopForm.workShopId, + name: this.workshopList.find(m => m.id == this.workshopForm.workShopId).name + }).then(res => { + this.uploading = false + if (res.code === 200) { + this.$message.success('鏂板鎴愬姛') + this.getProductList(); + this.workshopVisible = false + } + }).catch(err => { + this.uploading = false + }) + } + }) } } } diff --git a/src/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue b/src/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue index e92119c..3a8bfe1 100644 --- a/src/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue +++ b/src/views/structural/capabilityAndLaboratory/capabilityComponents/testObjectEditForm.vue @@ -1,10 +1,12 @@ <template> <div> - <el-dialog :title="operationType === 'add' ? '鏂板' : '缂栬緫'" :visible.sync="editFormDia" width="500px" @close="closeDia"> + <el-dialog :title="operationType === 'add' ? '鏂板' : '缂栬緫'" :visible.sync="editFormDia" width="500px" + @close="closeDia"> <el-form ref="editForm" :model="editForm" :rules="editFormRules" label-width="120px" label-position="right"> <el-form-item label="鍦烘墍锛�" prop="laboratoryId"> <el-select v-model="editForm.laboratoryId" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%"> - <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value"></el-option> + <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" + :value="item.value"></el-option> </el-select> </el-form-item> <el-form-item label="妫�楠屽璞★細" prop="specimenName"> @@ -18,7 +20,8 @@ </el-form-item> <el-form-item label="瀵硅薄绫诲瀷锛�" prop="objectType"> <el-select v-model="editForm.objectType" clearable placeholder="璇烽�夋嫨" size="small" style="width: 100%"> - <el-option v-for="item in dict.type.object_type" :key="item.value" :label="item.label" :value="item.value"></el-option> + <el-option v-for="item in dict.type.product_classification" :key="item.value" :label="item.label" + :value="item.value"></el-option> </el-select> </el-form-item> </el-form> @@ -32,13 +35,13 @@ <script> -import {obtainItemParameterList} from "@/api/structural/laboratoryScope"; -import {addTestObject, upTestObject} from "@/api/structural/capability"; +import { obtainItemParameterList } from "@/api/structural/laboratoryScope"; +import { addTestObject, upTestObject } from "@/api/structural/capability"; export default { name: "EditForm", // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢� - dicts: ['object_type'], + dicts: ['product_classification'], components: {}, data() { // 杩欓噷瀛樻斁鏁版嵁 @@ -70,22 +73,22 @@ }, // 鏂规硶闆嗗悎 methods: { - openDia (type, row) { + openDia(type, row) { this.operationType = type this.obtainItemParameterList() this.editFormDia = true if (type === 'add') { this.resetForm("editForm"); } else { - this.editForm = {...row} + this.editForm = { ...row } } }, // 鎻愪氦缂栬緫 - handleEdit () { + handleEdit() { this.$refs.editForm.validate(valid => { if (valid) { this.editLoad = true - if(this.editForm.id){ + if (this.editForm.id) { // 淇敼 upTestObject(this.editForm).then(res => { this.editLoad = false @@ -98,7 +101,7 @@ }).catch(e => { this.editLoad = false }) - }else{ + } else { // 鏂板 addTestObject(this.editForm).then(res => { this.editLoad = false @@ -116,7 +119,7 @@ }) }, // 鍏抽棴寮规 - closeDia () { + closeDia() { this.editFormDia = false this.resetForm("editForm"); }, @@ -137,6 +140,4 @@ } </script> -<style scoped> - -</style> +<style scoped></style> diff --git a/src/views/structural/capabilityAndLaboratory/workshop/components/fileList.vue b/src/views/structural/capabilityAndLaboratory/workshop/components/fileList.vue new file mode 100644 index 0000000..5d420d3 --- /dev/null +++ b/src/views/structural/capabilityAndLaboratory/workshop/components/fileList.vue @@ -0,0 +1,161 @@ +<template> + <div> + <div style="margin-bottom: 10px"> + <el-upload ref='upload' :action="fileAction" :auto-upload="true" :before-upload="fileBeforeUpload" + :data="{ id: currentId }" :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" + :show-file-list="false" accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' + style="width: 80px !important;"> + <el-button size="small" style="height: 38px" type="primary">闄勪欢涓婁紶</el-button> + </el-upload> + </div> + <lims-table :tableData="tableDataFile" :column="columnFile" height="500px" key="tableDataFile" + :tableLoading="tableLoadingFile"></lims-table> + </div> +</template> + +<script> +import limsTable from "@/components/Table/lims-table.vue"; +import { fileList, delFile } from "@/api/structural/workshop.js" +export default { + components: { + limsTable, + }, + props: ['currentId'], + computed: { + fileAction() { + return this.javaApi + '/workShop/uploadFile' + }, + }, + data() { + return { + columnFile: [ + { + dataType: 'tag', + label: '绫诲瀷', + prop: 'type', + formatData: (params) => { + if (params == 1) { + return '鍥剧墖' + } else if (params == 2) { + return '鏂囦欢' + } else { + return '' + } + }, + formatType: (params) => { + if (params == 1) { + return 'success' + } else if (params == 2) { + return 'warning' + } else { + return '' + } + } + }, + { label: '闄勪欢鍚嶇О', prop: 'fileName' }, + { label: '涓婁紶浜�', prop: 'name' }, + { label: '涓婁紶鏃堕棿', prop: 'createTime' }, + { + dataType: 'action', + fixed: 'right', + label: '鎿嶄綔', + width: '170px', + operation: [ + { + name: '涓嬭浇', + type: 'text', + clickFun: (row) => { + this.handleDown(row); + } + }, + { + name: '鍒犻櫎', + type: 'text', + clickFun: (row) => { + this.delete(row); + } + }, + ] + } + ], + tableDataFile: [], + tableLoadingFile: false, + } + }, + mounted() { + this.getFileList() + }, + methods: { + // 鏌ヨ闄勪欢鏌ョ湅鍒楄〃鍥炶皟 + getFileList() { + this.tableLoadingFile = true + fileList({ id: this.currentId }).then(res => { + this.tableLoadingFile = false + if (res.code === 200) { + this.tableDataFile = res.data + } + }).catch(err => { + this.tableLoadingFile = false + }) + }, + fileBeforeUpload(file) { + let flag = true + console.log('file----', file) + if (file.size > 1024 * 1024 * 10) { + this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M'); + this.$refs.upload.clearFiles() + flag = false + } + if (!flag) { + return Promise.reject(flag); //姝g‘鐨勭粓姝� + } + }, + handleSuccessUp(response,) { + this.upLoading = false; + if (response.code == 200) { + this.$message.success('涓婁紶鎴愬姛'); + this.getFileList() + } + }, + // 涓嬭浇闄勪欢鐨勬枃浠� + handleDown(row) { + downFile({ + id: row.id, + }).then(res => { + this.$download.saveAs(res.data.fileUrl, row.fileName); + }).catch(error => { + + }) + }, + // 鍒犻櫎闄勪欢鏂囦欢 + delete(row) { + this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.tableLoadingFile = true + delFile({ id: row.id }).then(res => { + this.tableLoadingFile = false + this.$message.success('鍒犻櫎鎴愬姛') + this.getFileList() + }).catch(err => { + this.tableLoadingFile = false + console.log('err---', err); + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }) + }, + onError(err, file, fileList, type) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + }, + } +} +</script> + +<style scoped></style> \ No newline at end of file diff --git a/src/views/structural/capabilityAndLaboratory/workshop/index.vue b/src/views/structural/capabilityAndLaboratory/workshop/index.vue new file mode 100644 index 0000000..12e0053 --- /dev/null +++ b/src/views/structural/capabilityAndLaboratory/workshop/index.vue @@ -0,0 +1,239 @@ +<template> + <div class="workshop"> + <div class="search"> + <div class="search_thing"> + <div class="search_label">鍚嶇О锛�</div> + <div class="search_input"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="queryParams.name" + @keyup.enter.native="refreshTable()"></el-input> + </div> + </div> + <div class="search_thing" style="padding-left: 30px"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> + <el-button size="small" type="primary" style="position: absolute; right: 50px" @click="openAdd('鏂板')">鏂� + 澧�</el-button> + </div> + <div class="table"> + <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 260px)'" + :page="page" @pagination="pagination"></lims-table> + </div> + <!-- 鏂板/缂栬緫 --> + <el-dialog :title="title" :visible.sync="addDia" width="500px"> + <el-form :model="addForm" ref="addForm" :rules="addRules" label-position="right" label-width="120px"> + <el-form-item label="杞﹂棿鍚嶇О" prop="name"> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="addForm.name"></el-input> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="addDia = false">鍙� 娑�</el-button> + <el-button :loading="uploading" type="primary" @click="submitProduct('addForm')">纭� 璁�</el-button> + </span> + </el-dialog> + <el-dialog :visible.sync="filesDialogVisible" title="闄勪欢鏌ョ湅" width="80%"> + <fileList :currentId="id" /> + </el-dialog> + </div> +</template> + +<script> +import limsTable from "@/components/Table/lims-table.vue"; +import fileList from "./components/fileList.vue" +import { selectWorkShop, delWorkShop, addOrUpdateWorkShop } from "@/api/structural/workshop.js" +export default { + components: { + limsTable, + fileList, + }, + data() { + return { + queryParams: {}, + tableData: [], + column: [ + { label: "杞﹂棿", prop: "name" }, + { + dataType: "action", + fixed: "right", + label: "鎿嶄綔", + // handleDelete + operation: [ + { + name: "闄勪欢", + type: "text", + clickFun: (row) => { + this.handleLookFile(row); + }, + }, + { + name: "缂栬緫", + type: "text", + clickFun: (row) => { + this.openAdd('缂栬緫', row); + }, + }, + { + name: "鍒犻櫎", + type: "text", + clickFun: (row) => { + this.handleDelete(row); + }, + }, + ], + }, + ], + page: { + total: 0, + size: 10, + current: 0, + }, + tableLoading: false, + filesDialogVisible: false, + id: null, + addDia: false, + addRules: { + name: [{ required: true, message: "璇疯緭鍏ヨ溅闂村悕绉�", trigger: "blur" }], + }, + title: '鏂板', + addForm: {}, + uploading: false, + } + }, + mounted() { + this.getList() + }, + methods: { + // 鏌ョ湅闄勪欢 + handleLookFile(row) { + this.filesDialogVisible = true; + this.id = row.id + }, + // 鍒楄〃鍒嗛〉 + getList() { + this.tableLoading = true; + let param = { ...this.queryParams, ...this.page }; + delete param.total; + selectWorkShop({ ...param }) + .then((res) => { + this.tableLoading = false; + if (res.code === 200) { + this.tableData = res.data.records; + this.page.total = res.data.total; + } + }) + .catch((err) => { + this.tableLoading = false; + }); + }, + pagination({ page, limit }) { + this.page.current = page; + this.page.size = limit; + this.getList(); + }, + refresh() { + this.queryParams = {}; + this.page.current = 1; + this.getList(); + }, + refreshTable() { + this.page.current = 1; + this.getList(); + }, + // 鏂板/缂栬緫杞﹂棿 + openAdd(title, row) { + this.title = title; + if (row) { + this.addForm = row; + } else { + this.addForm = {}; + } + this.addDia = true; + }, + submitProduct(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + this.uploading = true; + if (this.title == "鏂板") { + addOrUpdateWorkShop(this.addForm) + .then((res) => { + this.uploading = false; + if (res.code != 200) { + return; + } + this.$message.success("鎻愪氦鎴愬姛"); + this.refresh(); + this.addDia = false; + }) + .catch((err) => { + this.uploading = false; + }); + } else { + addOrUpdateWorkShop(this.addForm) + .then((res) => { + this.uploading = false; + if (res.code != 200) { + return; + } + this.$message.success("鎻愪氦鎴愬姛"); + this.refresh(); + this.addDia = false; + }) + .catch((err) => { + this.uploading = false; + }); + } + } else { + return false; + } + }); + }, + handleDelete(row) { + this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }) + .then(() => { + delWorkShop({ id: row.id }).then((res) => { + console.log('res', res) + if (res.code == 200) { + this.$message.success("鍒犻櫎鎴愬姛"); + this.refresh(); + } + }); + }) + .catch(() => { }); + }, + } +} +</script> + +<style scoped> +.search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; +} + +.search_thing { + width: 250px; + display: flex; + align-items: center; +} + +.search_label { + width: 70px; + font-size: 14px; + text-align: right; +} + +.search_input { + width: calc(100% - 70px); +} + +.table { + padding: 10px; + padding-top: 0; +} +</style> \ No newline at end of file diff --git a/vue.config.js b/vue.config.js index 172f3c9..041f09c 100644 --- a/vue.config.js +++ b/vue.config.js @@ -36,7 +36,7 @@ proxy: { // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VUE_APP_BASE_API]: { - target: `http://localhost:8001`, + target: `http://10.21.10.74:8089`, changeOrigin: true, pathRewrite: { ["^" + process.env.VUE_APP_BASE_API]: "", -- Gitblit v1.9.3