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