From 0d452c10ee16e40a3ca3d176e5ebebcb4bd16a87 Mon Sep 17 00:00:00 2001 From: yuyu <1981343953@qq.com> Date: 星期二, 08 八月 2023 14:36:23 +0800 Subject: [PATCH] Merge branch 'master' of https://gitee.com/yuanchu_code/lims-front-end --- src/utils/request.js | 11 src/views/rawMaterials/reportForInspection/index.vue | 63 +- src/views/trialManagement/entrust.vue | 15 src/views/standardLibrary/index.vue | 692 ++++++++++------------------- src/api/standardLibrary.js | 157 ------ src/main.js | 3 src/views/standardLibrary/SpecificationDetails.vue | 19 package.json | 1 src/views/trialManagement/rawMaterials.vue | 228 +++++++++ src/views/rawMaterials/reportForInspection/forInspectionDetail.vue | 117 +++-- src/api/rawMaterials/reportForInspection.js | 18 11 files changed, 637 insertions(+), 687 deletions(-) diff --git a/package.json b/package.json index 07bc912..8f69471 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "test:ci": "npm run lint && npm run test:unit" }, "dependencies": { + "af-table-column": "^1.0.3", "amfe-flexible": "^2.2.1", "axios": "0.18.1", "core-js": "3.6.5", diff --git a/src/api/rawMaterials/reportForInspection.js b/src/api/rawMaterials/reportForInspection.js index 0b4d1b2..e110f2d 100644 --- a/src/api/rawMaterials/reportForInspection.js +++ b/src/api/rawMaterials/reportForInspection.js @@ -10,9 +10,23 @@ } // 娣诲姞妫�楠岀敵璇峰崟 -export function addInspection() { +export function addInspection(data) { return request({ url: '/inspection/addInspection', - method: 'post' + method: 'post', + headers: { + 'Content-Type': 'multipart/form-data' + }, + data }) } + +// 鏌ヨ鎵�鏈夌敵璇峰崟id鏌ヨ鏍峰搧鍒楄〃 +export function getInspectionMaterialListById(params) { + return request({ + url: '/inspectionMaterialList/selectInspectionMaterialListById/' + params.inspectionId, + method: 'get', + params + }) +} + diff --git a/src/api/standardLibrary.js b/src/api/standardLibrary.js index 19724bf..3a8ca84 100644 --- a/src/api/standardLibrary.js +++ b/src/api/standardLibrary.js @@ -1,88 +1,5 @@ import request from '@/utils/request' -// 鏌ヨ鎵�鏈夋爣鍑嗘暟鎹� -export function getStandardsList() { - return request({ - url: '/standards/list', - method: 'get' - }) -} - -// 鍒嗛〉鏌ヨ鎵�鏈夋爣鍑嗘暟鎹� -export function getStandardsListOfPage(params) { - return request({ - url: '/standards/list_page', - method: 'get', - params - }) -} - -// 娣诲姞绫诲瀷 -export function addStandards(data) { - return request({ - url: '/standards/add', - method: 'post', - data - }) -} - -// 鏍规嵁鏍囧噯鏌ヨ鎵�鏈夊瀷鍙� 鍙傛暟IdOrNameOfSerialNumber锛� standardsId -export function getSerialNumberList(params) { - return request({ - url: '/serial-number/list', - method: 'get', - params - }) -} - -// 娣诲姞鍨嬪彿 -export function addSerialNumber(data) { - return request({ - url: '/serial-number/add', - method: 'post', - data - }) -} - -// 鏍规嵁鍨嬪彿鏌ヨ鎵�鏈変骇鍝佽鏍� 鍙傛暟serialNumberId锛� specificationsName -export function getSpecificationsList(params) { - return request({ - url: '/specifications/list', - method: 'get', - params - }) -} - -// 娣诲姞浜у搧瑙勬牸 -export function addSpecifications(data) { - return request({ - url: '/specifications/add', - method: 'post', - data - }) -} - -// 缂栬緫浜у搧瑙勬牸 -export function updateSpecifications(data) { - return request({ - url: '/specifications/update', - method: 'put', - data - }) -} - -// 鏇存柊瑙勬牸鐘舵�� -export function updateSpeState(data) { - return request({ - url: '/specifications/update_spe_state', - method: 'put', - data - }) -} - -// 瑙勬牸璇︽儏椤垫帴鍙� - -// 鏍规嵁瑙勬牸id鏌ヨ鎵�鏈夌墿鏂� specificationsId export function getMaterialList(params) { return request({ url: '/material/list', @@ -91,10 +8,19 @@ }) } -// 鏍规嵁鐗╂枡id锛岃幏鍙栧搴旂殑鐗╂枡璇︽儏 -export function getMaterialDetail(params) { +// 鑾峰彇鎵�鏈夐」鐩� +export function getProductList(params) { return request({ - url: '/material/list_id', + url: '/product/page', + method: 'get', + params + }) +} + +// 鑾峰彇鎵�鏈夌埗椤圭洰瀵瑰簲鐨勫瓙椤圭洰 +export function getProductSonList(params) { + return request({ + url: '/product/father', method: 'get', params }) @@ -109,65 +35,20 @@ }) } -// 缂栬緫鐗╂枡淇℃伅 -export function updateMaterial(data) { +// 娣诲姞鏍囧噯 +export function addStandards(data) { return request({ - url: '/material/update', - method: 'put', - data - }) -} - -// 鍒犻櫎鐗╂枡淇℃伅 -export function deleteMaterial(params) { - return request({ - url: '/material/delete', - method: 'delete', - params - }) -} - -// 鏍规嵁鐗╂枡id鏌ヨ鎵�鏈夋爣鍑嗗垎绫� specificationsId -export function getProductList(params) { - return request({ - url: '/product/list', - method: 'get', - params - }) -} - -// 娣诲姞鏍囧噯鍒嗙被 -export function addProduct(data) { - return request({ - url: '/product/add', + url: '/standards/add', method: 'post', data }) } -// 鏌ヨ鏍囧噯鍒嗙被璇︽儏锛屽搴旂殑鏍囧噯璇︽儏 -export function getProductProductId(params) { +// 娣诲姞瑙勬牸 +export function addSpecifications(data) { return request({ - url: '/product/productId', - method: 'get', - params - }) -} - -// 缂栬緫瀛愰」鐩俊鎭� -export function updateProduct(data) { - return request({ - url: '/product/update', - method: 'put', + url: '/specifications/add', + method: 'post', data - }) -} - -// 鍒犻櫎瀛愰」鐩俊鎭� -export function deleteProduct(params) { - return request({ - url: '/product/delete', - method: 'delete', - params }) } diff --git a/src/main.js b/src/main.js index 5e53df6..6319eed 100644 --- a/src/main.js +++ b/src/main.js @@ -2,7 +2,8 @@ import 'normalize.css/normalize.css' // A modern alternative to CSS resets import 'amfe-flexible' - +import AFTableColumn from 'af-table-column' +Vue.use(AFTableColumn) import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' import locale from 'element-ui/lib/locale/lang/zh-CN' // lang i18n diff --git a/src/utils/request.js b/src/utils/request.js index 4a555c7..dacba5f 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -47,11 +47,12 @@ // if the custom code is not 20000, it is judged as an error. if (res.code !== 200) { - Message({ - message: res.message || 'Error', - type: 'error', - duration: 5 * 1000 - }) + console.log(res.message || 'Error') + // Message({ + // message: res.message || 'Error', + // type: 'error', + // duration: 5 * 1000 + // }) // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; if (res.code === 50008 || res.code === 50012 || res.code === 50014) { // to re-login diff --git a/src/views/rawMaterials/reportForInspection/forInspectionDetail.vue b/src/views/rawMaterials/reportForInspection/forInspectionDetail.vue index a032887..28d5f75 100644 --- a/src/views/rawMaterials/reportForInspection/forInspectionDetail.vue +++ b/src/views/rawMaterials/reportForInspection/forInspectionDetail.vue @@ -26,14 +26,18 @@ </div> --> </div> <div class="message"> - <div class="message-item"><span><i class="el-icon-edit" />璇曢獙鏂规硶锛�</span></div> + <!-- <div class="message-item"><span><i class="el-icon-edit" />璇曢獙鏂规硶锛�</span></div> --> <div class="message-item"> - <span><i class="el-icon-edit" />椤圭洰鍒嗙被锛�</span> + <span><i class="el-icon-edit" />妫�楠岀被鍨嬶細 + <span v-if="inspectionDetail.type===0">鍘熸潗鏂欐楠�</span> + <span v-else-if="inspectionDetail.type===1">鍗婃垚鍝佹楠�</span> + <span v-else-if="inspectionDetail.type===2">鎴愬搧妫�楠�</span> + </span> </div> <div class="message-item"> - <span><i class="el-icon-edit" />鏇存柊浜猴細</span></div> + <span><i class="el-icon-edit" />鐧昏浜猴細<el-tag>{{ inspectionDetail.userName }}</el-tag></span></div> <div class="message-item"> - <span><i class="el-icon-edit" />鏇存柊鏃堕棿锛�</span></div> + <span><i class="el-icon-edit" />鐧昏鏃ユ湡锛歿{ inspectionDetail.createTime }}</span></div> </div> </div> <div class="card-main sample-list"> @@ -57,53 +61,58 @@ style="width: 100%" > <el-table-column - prop="applicationOrdernumber" - label="鐢宠鍗曞彿" + prop="materialNum" + label="鐗╂枡缂栧彿" min-width="200" /> <el-table-column - prop="typeofInspection" - label="妫�楠岀被鍨�" + prop="materialName" + label="鐗╂枡鍚嶇О" min-width="200" /> <el-table-column prop="objectofInspection" - label="妫�楠屽璞�" + label="鐗╂枡灞炴��" min-width="200" /> <el-table-column - prop="palceofObject" - label="瀵硅薄浣嶇疆" + prop="materialBatch" + label="鎵规" min-width="200" /> <el-table-column - prop="name" - label="瀵硅薄鍚嶇О" + prop="materialReelNumber" + label="鐩樺彿" min-width="200" /> <el-table-column - prop="date" - label="鐧昏鏃ユ湡" + prop="specificationsSerialNumber" + label="鍨嬪彿" min-width="200" /> <el-table-column prop="registrant" - label="鐧昏浜�" + label="瑙勬牸" min-width="200" /> <el-table-column prop="applicationTime" - label="鐢宠鏃堕棿" + label="鍏ュ簱鏁伴噺" + min-width="200" + /> + <el-table-column + prop="materialNum" + label="閫佹牱鏁伴噺" min-width="200" /> <el-table-column label="鎿嶄綔" min-width="200" - :fixed="true" + fixed="right" > <template slot-scope="scope"> - <el-button type="text" size="small" @click="handleClick(scope.row)">鏌ョ湅</el-button> - <el-button type="text" size="small">浣滃簾</el-button> + <el-button type="text" size="small" @click="openChangeMaterial(scope.row)">缂栬緫</el-button> + <el-button type="text" size="small">鍒犻櫎</el-button> </template> </el-table-column> </el-table> @@ -165,7 +174,7 @@ </el-col> </el-row> </div> - <el-row gutter="100" :style="{marginTop:'24px'}"> + <el-row :gutter="100" :style="{marginTop:'24px'}"> <el-col :span="12"> <el-form-item label="鎵规"> <el-input placeholder="" /> @@ -177,7 +186,7 @@ </el-form-item> </el-col> </el-row> - <el-row gutter="100"> + <el-row :gutter="100"> <el-col :span="12"> <el-form-item label="鐩樺彿"> <el-input placeholder="" /> @@ -189,7 +198,7 @@ </el-form-item> </el-col> </el-row> - <el-row gutter="100"> + <el-row :gutter="100"> <el-col :span="12"> <el-form-item label="瑙勬牸/鍨嬪彿鍚嶇О"> <el-input placeholder="" /> @@ -201,7 +210,7 @@ </el-form-item> </el-col> </el-row> - <el-row gutter="100"> + <el-row :gutter="100"> <el-col :span="12"> <el-form-item label="鐢熶骇鎸囦护鍙�"> <el-input placeholder="" /> @@ -213,14 +222,14 @@ </el-form-item> </el-col> </el-row> - <el-row gutter="100"> + <el-row :gutter="100"> <el-col :span="12"> <el-form-item label="鐢靛帇绛夌骇"> <el-input placeholder="" /> </el-form-item> </el-col> </el-row> - <el-row gutter="100" :style="{flex:'1'}"> + <el-row :gutter="100" :style="{flex:'1'}"> <el-col :span="24"> <el-form-item label="澶囨敞"> <el-input @@ -232,7 +241,7 @@ </el-col> </el-row> <el-form-item> - <el-button type="primary" @click="onSubmit">绔嬪嵆鍒涘缓</el-button> + <el-button type="primary">绔嬪嵆鍒涘缓</el-button> <el-button>鍙栨秷</el-button> </el-form-item> </el-form> @@ -243,7 +252,7 @@ <!-- Left side tree structure --> <div class="tree-container"> <span class="all"> 鍏ㄩ儴</span> - <el-tree :data="treeData" @node-click="handleNodeClick" ></el-tree> + <el-tree :data="treeData" /> </div> <!-- Right side material list --> <div class="table-container"> @@ -252,38 +261,40 @@ :data="selectedNodeMaterials" style="width: 100%" highlight-current-row - @row-click="handleSelectionChange" :header-row-class-name="headerBg" - > + @row-click="handleSelectionChange" + > <el-table-column label="鐗╂枡缂栧彿" - prop="number"> + prop="number" + > <template slot-scope="scope"> - <el-radio v-model="radioSelected" :label="scope.row.number" @change.native='handleSelectionChange(scope.row)'> </el-radio> + <el-radio v-model="radioSelected" :label="scope.row.number" @change.native="handleSelectionChange(scope.row)"> </el-radio> </template> </el-table-column> - <el-table-column prop="name" label="鐗╂枡鍚嶇О"></el-table-column> - </el-table> - <el-pagination - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - :current-page="pageParams.pageNo" - :page-sizes="[10, 20, 30, 40]" - :page-size="pageParams.pageSize" - :total="pageParams.total" - layout="total, sizes, prev, pager, next, jumper" - /> - </div> + <el-table-column prop="name" label="鐗╂枡鍚嶇О" /> + </el-table> + <el-pagination + :current-page="pageParams.pageNo" + :page-sizes="[10, 20, 30, 40]" + :page-size="pageParams.pageSize" + :total="pageParams.total" + layout="total, sizes, prev, pager, next, jumper" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + </div> </div> <div slot="footer" class="dialog-footer"> <el-button @click="chooseMaterialVisible = false">鍙� 娑�</el-button> - <el-button type="primary" >纭畾閫夋嫨</el-button> + <el-button type="primary">纭畾閫夋嫨</el-button> </div> </el-dialog> </div> </template> <script> +import { getInspectionMaterialListById } from '@/api/rawMaterials/reportForInspection' export default { data() { return { @@ -337,10 +348,24 @@ name: '娴嬭瘯鏁版嵁2' }], radioSelected: null, - multipleSelection: '' + multipleSelection: '', + inspectionDetail: {} } }, + created() { + // console.log(this.$route.query) 浼犻�掔殑鐢宠鍗曞璞¤鎯� + this.inspectionDetail = JSON.parse(this.$route.query.inspectionDetail) + this.getMaterialList() + }, methods: { + openChangeMaterial(row) { + console.log(row) + }, + async getMaterialList() { + const res = await getInspectionMaterialListById({ inspectionId: this.inspectionDetail.id }) + // console.log(res) + this.sampleTable = res.data + }, handleSelectionChange(val) { console.log(val) this.radioSelected = val.number // 閫変腑琛岀殑number diff --git a/src/views/rawMaterials/reportForInspection/index.vue b/src/views/rawMaterials/reportForInspection/index.vue index 720e8d5..e1663e3 100644 --- a/src/views/rawMaterials/reportForInspection/index.vue +++ b/src/views/rawMaterials/reportForInspection/index.vue @@ -63,7 +63,13 @@ prop="type" label="妫�楠岀被鍨�" min-width="200" - /> + > + <template slot-scope="scope"> + <span v-if="scope.row.type===0">鍘熸潗鏂欐楠�</span> + <span v-else-if="scope.row.type===1">鍗婃垚鍝佹楠�</span> + <span v-else-if="scope.row.type===2">鎴愬搧妫�楠�</span> + </template> + </el-table-column> <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" @@ -75,7 +81,7 @@ min-width="200" /> <el-table-column - prop="registrant" + prop="inspectUserId" label="妫�楠屼汉" min-width="200" /> @@ -131,7 +137,7 @@ width="40%" > <div class="check-box"> - <el-radio-group v-model="type"> + <el-radio-group v-model="addInspectionType"> <el-radio :label="0" border>鍘熸潗鏂欐楠�</el-radio> <el-radio :label="1" border>鍗婃垚鍝佹楠�</el-radio> <el-radio :label="2" border>鎴愬搧妫�楠�</el-radio> @@ -152,7 +158,7 @@ </template> <script> -import { getInspectionList } from '@/api/rawMaterials/reportForInspection' +import { getInspectionList, addInspection } from '@/api/rawMaterials/reportForInspection' export default { data() { return { @@ -179,7 +185,7 @@ pageSize: 10, // 姣忛〉鐨勬暟鎹潯鏁� radioValue: '鍏ㄩ儴', checkTypeVisible: false, - type: 0 + addInspectionType: 0 } }, watch: { @@ -192,26 +198,6 @@ deep: true } }, - // beforeRouteEnter(to, from, next) { - // console.log(to, from) - // next() - // // 鍦ㄦ覆鏌撹缁勪欢鐨勫搴旇矾鐢辫 confirm 鍓嶈皟鐢� - // // 涓嶏紒鑳斤紒鑾峰彇缁勪欢瀹炰緥 `this` - // // 鍥犱负褰撻挬瀛愭墽琛屽墠锛岀粍浠跺疄渚嬭繕娌¤鍒涘缓 - // }, - // beforeRouteUpdate(to, from, next) { - // console.log(to, from) - // if (to.name === 'ForInspectionDetail') this.showDetail = true - // this.$nextTick(() => { - // console.log(1) - // this.showDetail = true - // }) - // next() - // // 鍦ㄥ綋鍓嶈矾鐢辨敼鍙橈紝浣嗘槸璇ョ粍浠惰澶嶇敤鏃惰皟鐢� - // // 涓句緥鏉ヨ锛屽浜庝竴涓甫鏈夊姩鎬佸弬鏁扮殑璺緞 /foo/:id锛屽湪 /foo/1 鍜� /foo/2 涔嬮棿璺宠浆鐨勬椂鍊欙紝 - // // 鐢变簬浼氭覆鏌撳悓鏍风殑 Foo 缁勪欢锛屽洜姝ょ粍浠跺疄渚嬩細琚鐢ㄣ�傝�岃繖涓挬瀛愬氨浼氬湪杩欎釜鎯呭喌涓嬭璋冪敤銆� - // // 鍙互璁块棶缁勪欢瀹炰緥 `this` - // }, created() { this.getInspectionTableData() }, @@ -223,12 +209,26 @@ const res = await getInspectionList({ pageSize: this.currentPage, countSize: this.pageSize }) // this.inspectionTable = data console.log(res) + this.inspectionTable = res.data }, - goToForInspectionDetail() { - this.$router.push('/rawMaterials/reportForInspection/forInspectionDetail') + async goToForInspectionDetail() { + try { + // + const form = new FormData() + form.append('type', this.addInspectionType) + let { data: inspectionDetail } = await addInspection(form) + // console.log(res) + inspectionDetail = JSON.stringify(inspectionDetail) + this.$message.success('娣诲姞鎴愬姛') + this.$router.push({ path: '/rawMaterials/reportForInspection/forInspectionDetail', query: { inspectionDetail }}) + } catch (error) { + this.$message.error('娣诲姞澶辫触') + } }, + // 鏌ョ湅瀵瑰簲鐢宠鍗曡鎯� handleClick(row) { - console.log(row) + const inspectionDetail = JSON.stringify(row) + this.$router.push({ path: '/rawMaterials/reportForInspection/forInspectionDetail', query: { inspectionDetail }}) }, // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 handleSizeChange(val) { @@ -281,6 +281,8 @@ height: 100%; display: flex; flex-direction: column; + min-height: calc(100vh - 88px); + padding: 15px; } .top-bar{ margin: -25px; @@ -333,6 +335,11 @@ flex-direction: column; .el-table { flex: 1; + display: flex; + flex-direction: column; + ::v-deep .el-table__body-wrapper{ + flex: 1; + } } >div:nth-child(2){ display: flex; diff --git a/src/views/standardLibrary/SpecificationDetails.vue b/src/views/standardLibrary/SpecificationDetails.vue index 5a8eeb7..8a2c75a 100644 --- a/src/views/standardLibrary/SpecificationDetails.vue +++ b/src/views/standardLibrary/SpecificationDetails.vue @@ -420,7 +420,7 @@ </template> <script> -import { getMaterialList, getProductList, getProductProductId, addMaterial, addProduct, getMaterialDetail, updateMaterial, updateProduct, deleteMaterial, deleteProduct } from '@/api/standardLibrary' +import { getMaterialList, getProductProductId, addMaterial, addProduct, getMaterialDetail, updateMaterial, updateProduct, deleteMaterial, deleteProduct } from '@/api/standardLibrary' export default { name: 'SpecificationDetail', data() { @@ -516,29 +516,12 @@ this.materialTreeDefault = [this.materialTree[0].id] console.log(this.materialTree, this.materialTreeDefault) }, - // 鑾峰彇椤圭洰tree - async getProjectTreeData(data) { - const { data: projectArr } = await getProductList({ materialId: data.id }) - // console.log(projectArr) - projectArr.map((item, index) => { - item.label = item.father - item.id = index - item.children = item.sonProduct.map(item => ({ ...item, label: item.name })) - }) - this.projectTree = projectArr - // 椤圭洰涓粯璁ら�変腑鐨勫瓙椤圭洰 - console.log(this.projectTree) - this.fatherOpetions = this.projectTree.map(item => ({ id: item.id, label: item.label })) - console.log(this.fatherOpetions) - this.projectTreeDefault = [this.projectTree[0]?.children[0]?.id] - }, // 鐗╂枡搴撶殑鑺傜偣鐐瑰嚮 materialTreeClick(data, node, element) { // 鐐瑰嚮鐗╂枡鑺傜偣锛屾煡璇㈠搴旂殑椤圭洰tree鏁版嵁 console.log(data) // 寰楀埌鐗╂枡Id this.materialId = data.id - this.getProjectTreeData(data) }, // 椤圭洰搴撶殑鑺傜偣鐐瑰嚮 async projectTreeClick(data, node, element) { diff --git a/src/views/standardLibrary/index.vue b/src/views/standardLibrary/index.vue index 2d03597..a447d44 100644 --- a/src/views/standardLibrary/index.vue +++ b/src/views/standardLibrary/index.vue @@ -6,12 +6,14 @@ v-model="filterText" placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" /> - <el-button type="text" @click="getAllStandard">鍏ㄩ儴</el-button> + <el-button type="text">鍏ㄩ儴</el-button> <el-tree ref="tree" class="filter-tree" :data="standardTree" :props="defaultProps" + node-key="id" + highlight-current default-expand-all :filter-node-method="filterNode" :render-content="renderContent" @@ -33,223 +35,68 @@ <el-form-item> <el-button type="primary" @click="filteredTableData">鏌ヨ</el-button> <el-button type="primary" plain @click="resetBtn">閲嶇疆</el-button> - <!-- <el-button type="text">楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right" /></el-button> --> </el-form-item> </el-form> </div> <div class="serve-btn"> - <el-button type="primary" icon="el-icon-plus" @click="showFormInfo">{{ selectedNodeType }}</el-button> + <el-button type="primary" icon="el-icon-plus" @click="addTreeFormVisible = true">鏂板</el-button> </div> </div> <div class="table-box"> <el-table ref="tableData" - :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" + row-key="id" + max-height="680" + :tree-props="{children: 'children', hasChildren: 'hasChildren'}" + :cell-style="{textAlign: 'left'}" + :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'left'}" :data="tableData" style="width: 100%" > <el-table-column type="index" label="搴忓彿" - min-width="50" - /> - <!-- 澶嶇敤 --> + width="100px" + > + <template v-if="scope.row.index+1" slot-scope="scope"> + {{ scope.row.index+1 }} + </template> + </el-table-column> <el-table-column - v-for="(item,index) in tablespecifications" - :key="index" - :prop="item.prop" - :label="item.label" - :min-width="item.minWidth" + prop="father" + label="鍚嶇О" + width="320px" + > + <template slot-scope="scope"> + <el-tag size="mini" :type="scope.row.father? '':'success'" :style="{borderRadius: '40%',marginRight: '12px'}">{{ scope.row.father? '01':'02' }}</el-tag> {{ scope.row.father || scope.row.name }} + </template> + </el-table-column> + <el-table-column + prop="unit" + label="鍗曚綅" + width="300px" /> - <template v-if="showTableCurrent===2"> - <el-table-column - prop="spe_state" - label="鐘舵��" - min-width="150" - > - <template slot-scope="scope"> - <el-tag - :type="scope.row.spe_state === 0 ? 'primary' : 'success'" - disable-transitions - >{{ scope.row.spe_state === 0 ? '宸插仠鐢�' : '宸插惎鐢�' }}</el-tag> - </template> - </el-table-column> - <el-table-column - label="鎿嶄綔" - min-width="150" - > - <template slot-scope="scope"> - <el-button - type="text" - size="small" - :style="{marginRight:'8px'}" - @click="specificationDetails(scope.row)" - >鏌ョ湅</el-button> - <el-popover - v-model="scope.row.visible" - placement="top" - width="30" - > - <div style="text-align: center; margin: 0" @click=" getRowID(scope.row)"> - <div> - <el-button size="mini" type="text" @click="dialogFormVisible4=true">缂栬緫</el-button> - </div> - <div> - <el-button size="mini" type="text" @click="dialogFormVisible5 = true">鍋滅敤</el-button> - </div> - </div> - <el-button slot="reference" type="text"><i class="el-icon-more" /></el-button> - </el-popover> - </template> - </el-table-column> - </template> + <el-table-column + prop="required" + label="鏍囧噯" + width="300px" + /> + <el-table-column + prop="internal" + label="鍐呮帶鍒�" + width="300px" + /> </el-table> <!-- 寮瑰嚭琛ㄥ崟椤� --> <div> - <!-- 娣诲姞鏍囧噯 --> - <el-dialog title="娣诲姞鏍囧噯" :visible.sync="dialogFormVisible1" width="33%"> - <el-form :model="standardForm" :rules="rulesStandard"> - <el-form-item label="鏍囧噯鍙�" label-width="100px" prop="standardnumber"> - <el-input v-model="standardForm.standardnumber" autocomplete="off" /> - </el-form-item> - <el-form-item label="鏍囧噯鍚嶇О" label-width="100px" prop="standardname"> - <el-input v-model="standardForm.standardname" autocomplete="off" /> - </el-form-item> - <el-form-item label="鑻辨枃鍚嶇О" label-width="100px" prop="standardenname"> - <el-input v-model="standardForm.engname" autocomplete="off" /> - </el-form-item> - <el-form-item label="鐖剁骇鍒嗙被" label-width="100px"> - <el-select v-model="standardForm.type" placeholder="璇烽�夋嫨"> - <el-option label="鍘熸潗鏂�" value="0" /> - <el-option label="鐢电嚎鐢电紗" value="1" /> - </el-select> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button @click="dialogFormVisible1 = false">鍙� 娑�</el-button> - <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> - </div> - </el-dialog> - <!-- 娣诲姞鍨嬪彿 --> - <el-dialog title="娣诲姞鍨嬪彿" :visible.sync="dialogFormVisible2" width="30%"> - <el-form ref="form" :model="modelForm" :rules="rulesModel"> - <el-form-item label="鍨嬪彿" :label-width="formLabelWidth" prop="model"> - <el-input v-model="modelForm.model" autocomplete="off" /> - </el-form-item> - <el-form-item label="鍨嬪彿鍚嶇О" :label-width="formLabelWidth" prop="modelname"> - <el-input v-model="modelForm.modelname" autocomplete="off" /> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button @click="dialogFormVisible2 = false">鍙� 娑�</el-button> - <el-button type="primary" @click="submitForm()">纭� 瀹�</el-button> - </div> - </el-dialog> - <!-- 娣诲姞瑙勬牸 --> - <el-dialog title="娣诲姞瑙勬牸" :visible.sync="dialogFormVisible3" width="30%"> - <el-form ref="form" :model="specificationForm" :rules="rulesspecification"> - <el-form-item label="瑙勬牸鍚嶇О" :label-width="formLabelWidth" prop="name"> - <el-input v-model="specificationForm.name" autocomplete="off" /> - </el-form-item> - <el-form-item label="瑙勬牸缂栧彿" :label-width="formLabelWidth" prop="number"> - <el-input v-model="specificationForm.number" autocomplete="off" /> - </el-form-item> - <el-form-item label="涓婃柟濉啓鐢熶骇鎸囦护鍙�" :label-width="formLabelWidth" prop="instruct"> - <el-input v-model="specificationForm.instruct" autocomplete="off" /> - </el-form-item> - <el-form-item label="鐢靛帇绛夌骇" :label-width="formLabelWidth"> - <el-select v-model="specificationForm.voltageLevel" placeholder="璇烽�夋嫨鐢靛帇绛夌骇"> - <el-option label="鍒嗙被1" value="test" /> - <el-option label="鍒嗙被2" value="2" /> - <el-option label="鍒嗙被3" value="3" /> - </el-select> - </el-form-item> - <el-form-item label="涓荤嚎鑺埅闈�" :label-width="formLabelWidth"> - <el-select v-model="specificationForm.crossSection" placeholder="璇烽�夋嫨涓荤嚎鑺埅闈�"> - <el-option label="鍒嗙被1" value="test" /> - <el-option label="鍒嗙被2" value="2" /> - <el-option label="鍒嗙被3" value="3" /> - </el-select> - </el-form-item> - <el-form-item label="涓荤嚎鑺姱鏁�" :label-width="formLabelWidth"> - <el-select v-model="specificationForm.numberOfCores" placeholder="璇烽�夋嫨涓荤嚎鑺姱鏁�"> - <el-option label="鍒嗙被1" value="test" /> - <el-option label="鍒嗙被2" value="2" /> - <el-option label="鍒嗙被3" value="3" /> - </el-select> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button @click="dialogFormVisible3 = false">鍙� 娑�</el-button> - <el-button type="primary" @click="submitForm()">纭� 瀹�</el-button> - </div> - </el-dialog> - <!-- 缂栬緫瑙勬牸 --> - <el-dialog title="缂栬緫瑙勬牸" :visible.sync="dialogFormVisible4" width="30%"> - <el-form ref="form" :model="editSpeForm" :rules="rulesspecification"> - <el-form-item label="瑙勬牸鍚嶇О" :label-width="formLabelWidth" prop="name"> - <el-input v-model="editSpeForm.name" autocomplete="off" /> - </el-form-item> - <el-form-item label="瑙勬牸缂栧彿" :label-width="formLabelWidth" prop="number"> - <el-input v-model="editSpeForm.number" autocomplete="off" /> - </el-form-item> - <el-form-item label="涓婃柟濉啓鐢熶骇鎸囦护鍙�" :label-width="formLabelWidth" prop="instruct"> - <el-input v-model="editSpeForm.instruct" autocomplete="off" /> - </el-form-item> - <el-form-item label="鐢靛帇绛夌骇" :label-width="formLabelWidth"> - <el-select v-model="editSpeForm.voltageLevel" placeholder="璇烽�夋嫨鐢靛帇绛夌骇"> - <el-option label="鍒嗙被1" value="test" /> - <el-option label="鍒嗙被2" value="2" /> - <el-option label="鍒嗙被3" value="3" /> - </el-select> - </el-form-item> - <el-form-item label="涓荤嚎鑺埅闈�" :label-width="formLabelWidth"> - <el-select v-model="editSpeForm.crossSection" placeholder="璇烽�夋嫨涓荤嚎鑺埅闈�"> - <el-option label="鍒嗙被1" value="test" /> - <el-option label="鍒嗙被2" value="2" /> - <el-option label="鍒嗙被3" value="3" /> - </el-select> - </el-form-item> - <el-form-item label="涓荤嚎鑺姱鏁�" :label-width="formLabelWidth"> - <el-select v-model="editSpeForm.numberOfCores" placeholder="璇烽�夋嫨涓荤嚎鑺姱鏁�"> - <el-option label="鍒嗙被1" value="test" /> - <el-option label="鍒嗙被2" value="2" /> - <el-option label="鍒嗙被3" value="3" /> - </el-select> - </el-form-item> - <el-form-item label="瑙勬牸鐘舵��" :label-width="formLabelWidth"> - <el-select v-model="editSpeForm.spe_state" placeholder="璇烽�夋嫨瑙勬牸鐘舵��"> - <el-option label="鍋滅敤" value="0" /> - <el-option label="姝e父" value="1" /> - <el-option label="鑽夌" value="-1" /> - </el-select> - </el-form-item> - </el-form> - <div slot="footer" class="dialog-footer"> - <el-button @click="dialogFormVisible4 = false">鍙� 娑�</el-button> - <el-button type="primary" @click="handleEdit">纭� 瀹�</el-button> - </div> - </el-dialog> - <!-- 鍋滅敤 --> - <el-dialog - title="鎻愮ず" - :visible.sync="dialogFormVisible5" - width="30%" - > - <span>纭鍋滅敤鍚楋紵</span> - <span slot="footer" class="dialog-footer"> - <el-button @click="dialogFormVisible5 = false">鍙� 娑�</el-button> - <el-button type="primary" @click="updateSpeState">纭� 瀹�</el-button> - </span> - </el-dialog> + <!-- --> </div> <div> <!-- 鍒嗛〉鍣� --> <el-pagination :current-page="pageParams.pageNo" :page-sizes="[10, 15, 20, 25]" - :page-size="pageParams.pageNo" + :page-size="pageParams.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="pageParams.total" @size-change="handleSizeChange" @@ -259,27 +106,51 @@ </div> </div> </div> + <el-dialog class="addTree" title="娣诲姞鎸囨爣" width="28%" :visible.sync="addTreeFormVisible" @close="closeAddTreeForm"> + <el-form v-model="addTreeForm" label-position="top"> + <el-form-item label="涓婄骇"> + <el-cascader + v-model="addTreeForm.addTypeArr" + :options="formTypeOptions" + :props="{ ...defaultProps,checkStrictly: true }" + clearable + @change="changeCascader" + /> + </el-form-item> + <el-form-item v-show="addTreeForm.addTypeArr.length<2" label="鐗╂枡鍚嶇О"> + <el-input v-model="addTreeForm.materialName" /> + </el-form-item> + <el-form-item v-show="addTreeForm.addTypeArr.length<3" label="鎵ц鏍囧噯"> + <el-input v-model="addTreeForm.standardName" /> + </el-form-item> + <el-form-item v-show="addTreeForm.addTypeArr.length<4" label="瑙勬牸鍨嬪彿"> + <el-input v-model="addTreeForm.specificationsName" /> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="subAddTreeForm">纭� 瀹�</el-button> + <el-button @click="addTreeFormVisible = false">鍙� 娑�</el-button> + </div> + </el-dialog> </div> </template> <script> -import { getStandardsList, getSerialNumberList, getSpecificationsList, getStandardsListOfPage, addStandards, addSerialNumber, addSpecifications, updateSpecifications, updateSpeState } from '@/api/standardLibrary' +import { getMaterialList, getProductList, getProductSonList, + addMaterial, addStandards, addSpecifications +} from '@/api/standardLibrary' export default { data() { return { - dialogFormVisible1: false, - dialogFormVisible2: false, - dialogFormVisible3: false, - dialogFormVisible4: false, - dialogFormVisible5: false, - visible: false, + addTreeFormVisible: false, filterText: '', // 鏍囧噯搴揵om鏍� standardTree: [], - // bom鐨�,榛樿鍊� + // bom鐨�,榛樿閰嶇疆鍊� defaultProps: { children: 'children', - label: 'label' + label: 'name', + value: 'id' }, // 鏌ヨ鏉′欢 searchData: { @@ -291,83 +162,17 @@ // 鍒嗛〉鍙傛暟 pageParams: { pageNo: 1, - pageSize: 10, + pageSize: 12, total: 0 }, tablespecifications: [ ], - // 閫変腑鑺傜偣瀵瑰簲鐨勮〃鏍� 0 鏄爣鍑嗚〃 1鏄瀷鍙疯〃 2瑙勬牸琛� - showTableCurrent: 0, // 閫変腑鐨勮妭鐐规暟鎹� - selectNode: {}, - selectedNodeType: '娣诲姞鏍囧噯', - standardForm: [{ - standardnumber: '', - standardname: '', - engname: '', - type: '' - }], - modelForm: [{ - model: '', - modelname: '' - }], - specificationForm: [{ - name: '', // 浜у搧瑙勬牸鍚嶇О - number: '', // 瑙勬牸缂栧彿 - crossSection: '', - numberOfCores: '', - instruct: '', - voltageLevel: '' - }], - editSpeForm: [{ - crossSection: '', - instruct: '', - name: '', // 瑙勬牸鍚嶇О - number: '', // 瑙勬牸缂栧彿 - numberOfCores: '', - serialId: '', // 鍨嬪彿ID - spe_state: '', - voltageLevel: '' - }], - formLabelWidth: '100px', - rulesStandard: { - standardnumber: [ - { - required: true, message: '璇疯緭鍏ユ爣鍑嗗彿', trigger: 'blur' - } - ], - standardname: [{ - required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�', trigger: 'blur' - }], - standardenname: [ - { required: false, message: '璇疯緭鍏ヨ嫳鏂囧悕绉�', trigger: 'blur' } - ] - }, - rulesModel: { - model: [ - { required: true, message: '璇疯緭鍏ュ瀷鍙�', trigger: 'blur' - }], - modelname: [{ - required: true, message: '璇疯緭鍏ュ瀷鍙峰悕绉�', trigger: 'blur' - }], - parentclassification: [ - { required: true, message: '璇疯緭鍏�', trigger: 'blur' } - ] - }, - rulesspecification: { - number: [ - { required: true, message: '璇疯緭鍏ヨ鏍肩紪鍙�', trigger: 'blur' - }], - name: [{ - required: true, message: '璇疯緭鍏ヨ鏍煎悕绉�', trigger: 'blur' - }], - instruct: [ - { required: true, message: '璇疯緭鍏ヤ笂鏂瑰~鍐欑敓浜ф寚浠ゅ彿', trigger: 'blur' } - ] - }, - standardId: '', // 鑾峰彇褰撳墠鏍囧噯ID - modelId: '', // 鑾峰彇褰撳墠鍨嬪彿ID - rowId: '' // 鑾峰彇褰撳墠瑙勬牸鎵�鍦ㄨID + selectData: {}, + formTypeOptions: [], + addTreeForm: { + addTypeArr: [] + } } }, watch: { @@ -377,7 +182,6 @@ }, created() { this.getStandardTree() - this.getAllStandard() }, methods: { filterNode(value, data) { @@ -386,175 +190,100 @@ }, // 鑾峰彇bom鏍戠殑鏍囧噯鏁版嵁 async getStandardTree() { - this.selectedNodeType = '娣诲姞鏍囧噯' - const { data: standard } = await getStandardsList()// 鑾峰彇鎵�鏈夋爣鍑� - // console.log(standard)// 鑾峰彇鎵�鏈夋爣鍑� - this.standardTree = standard.map(item => { - item.serialNumber = item.serialNumber?.map(childrenItem => ({ ...childrenItem, label: childrenItem.name })) - return { ...item, label: item.name, children: item.serialNumber } + const { data } = await getMaterialList() + console.log(data) + this.standardTree = data.map(item => { + let name = null + switch (item.type) { + case 1: + name = '鍘熸潗鏂�' + break + case 2: + name = '鍗婃垚鍝�' + break + case 3: + name = '鎴愬搧' + break + } + return { + ...item, id: item.type, name + } }) - // console.log(this.standardTree) + console.log(this.standardTree) + // formTypeOptions + // 榛樿绗竴涓洓绾ц妭鐐规悳绱紝鏂板閰嶇疆椤� + const treeOptions = JSON.parse(JSON.stringify(this.standardTree)) + this.getDefault(treeOptions, 0) + console.log(treeOptions) + this.formTypeOptions = treeOptions + this.$nextTick().then(() => { + const firstNode = document.querySelector('.el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node') + firstNode.click() + // console.log(firstNode) + }) + }, + getDefault(arr, index) { + for (const item of arr) { + if (item.children && item.children?.length > 0) { + // 鏈夊瓙鑺傜偣 + this.getDefault(item.children, index + 1) + if (index === 2) { + item.children = null + } + } + // else { + // // if ('children' in item) { + // // // + // // } else { + // // // console.log(index, item) + // // } + // } + } }, // 鐐瑰嚮bom鏍戣妭鐐规柟娉� async nodeClick(data, node, element) { // console.log('data', data) // console.log('children' in data) // 鏄瓙鑺傜偣 + if (node.level === 4) { + // console.log(data, node) + // 瀛樹笅閫変腑鑺傜偣 + this.selectData = data + // eslint-disable-next-line prefer-const + this.getTableByClick(data) + } if (!('children' in data)) { - // console.log('鐐瑰嚮瀛愯妭鐐�', data) - this.selectedNodeType = '娣诲姞瑙勬牸' - this.modelId = data.id - this.selectNode = data - // 鑾峰彇鐐瑰嚮瀛愯妭鐐圭殑琛ㄦ牸 - await this.getSpecifications(data) return } - // 涓嶆槸瀛愯妭鐐� - this.selectedNodeType = '娣诲姞鍨嬪彿' - this.standardId = data.id - this.selectNode = data - await this.getSerialNumber(data) + }, + async getTableByClick(data) { + // eslint-disable-next-line prefer-const + let { data: { row, total }} = await getProductList({ pageNo: this.pageParams.pageNo, pageSize: this.pageParams.pageSize, specificationsId: data.id }) + // console.log(row) + this.pageParams.total = total + row = row.map((item, index) => ({ ...item, index })) + for (const item of row) { + if (item.children) { + const res = await getProductSonList({ fatherName: item.father }) + item.children = res.data + item.id = item.father + } + } + this.tableData = row }, specificationDetails(row) { // 璺宠浆浜у搧瑙勬牸璇︽儏椤� this.$router.push(`/standardLibrary/SpecificationDetails/${row.id}`) }, - // 鑾峰彇褰撳墠瑙勬牸鐨勮id - getRowID(row) { - // console.log(row.id) - this.id = row.id - }, - // 鑾峰彇鎵�鏈夋爣鍑唗able - async getAllStandard() { - this.selectedNodeType = '娣诲姞鏍囧噯' - // console.log(this.pageParams) - const { data: { row, total }} = await getStandardsListOfPage({ ...this.pageParams }) - // console.log('寰楀埌鎵�鏈夋爣鍑�==>', row) - this.pageParams.total = total - this.tableData = row - this.tablespecifications = [ - { - prop: 'name', - label: '鏍囧噯鍚嶇О', - minWidth: '150px' - }, - { - prop: 'eng_name', - label: '鏍囧噯鑻辨枃鍚嶇О', - minWidth: '150px' - }, - { - prop: 'createTime', - label: '鍒涘缓鏃堕棿', - minWidth: '150px' - } - ] - this.showTableCurrent = 0 - }, - // 鑾峰彇瀵瑰簲鍨嬪彿涓嬬殑鎵�鏈夎鏍� - async getSerialNumber(data) { - const { data: { row, total }} = await getSerialNumberList({ standardsId: data.id, ...this.pageParams }) - console.log('鐐瑰嚮鐖惰妭鐐�', row)// 鏍规嵁鏍囧噯鑾峰彇瀵瑰簲鏍囧噯涓嬬殑瑙勬牸 - this.tableData = row - this.pageParams.total = total - this.tablespecifications = [ - { - prop: 'name', - label: '鍨嬪彿鍚嶇О', - minWidth: '150px' - } - ] - this.showTableCurrent = 1 - }, - // 鑾峰彇鏍囧噯涓嬪搴旂殑鎵�鏈夊瀷鍙� - async getSpecifications(data) { - const { data: { row, total }} = await getSpecificationsList({ serialNumberId: data.id, ...this.pageParams }) - // console.log(row) - this.tableData = row - this.pageParams.total = total - this.tablespecifications = [ - { - prop: 'name', - label: '浜у搧鍚嶇О', - minWidth: '150px' - }, - { - prop: 'username', - label: '鏇存柊浜�', - minWidth: '100px' - }, - { - prop: 'updateTime', - label: '鏇存柊鏃堕棿', - minWidth: '150px' - }, - { - prop: 'vel', - label: '鐗堟湰', - minWidth: '150px' - } - ] - this.showTableCurrent = 2 - }, - // 灞曠ず寮瑰嚭妗� - showFormInfo() { - if (this.selectedNodeType === '娣诲姞鏍囧噯') { - this.dialogFormVisible1 = true - } else if (this.selectedNodeType === '娣诲姞鍨嬪彿') { - this.dialogFormVisible2 = true - } else { - this.dialogFormVisible3 = true - } - }, - async submitForm() { - if (this.showTableCurrent === 0) { - await addStandards({ engName: this.standardForm.engname, - id: this.standardForm.standardnumber, - name: this.standardForm.standardname, - type: parseInt(this.standardForm.type) }) - this.dialogFormVisible1 = false - } else if (this.showTableCurrent === 1) { - await addSerialNumber({ id: this.modelForm.model, - name: this.modelForm.modelname, - standardsId: this.standardId // 鍏宠仈鏍囧噯ID - }) - this.dialogFormVisible2 = false - } else { - await addSpecifications({ crossSection: this.specificationForm.crossSection, - instruct: this.specificationForm.instruct, - name: this.specificationForm.name, - number: this.specificationForm.number, - numberOfCores: this.specificationForm.numberOfCores, - serialId: this.modelId, // 鍏宠仈鍨嬪彿ID - voltageLevel: this.specificationForm.voltageLevel - }) - this.dialogFormVisible3 = false - } - }, - - // 鍒嗛〉鏉′欢鏀瑰彉鏃跺垽鏂渶瑕佸垎椤垫煡璇㈢殑鏂规硶 - judgment() { - switch (this.showTableCurrent) { - case 0: - this.getAllStandard() - break - case 1: - this.getSerialNumber(this.selectNode) - break - case 2: - this.getSpecifications(this.selectNode) - break - } - }, handleSizeChange(val) { console.log(`姣忛〉 ${val} 鏉) this.pageParams.pageSize = val - this.judgment() + this.getTableByClick(this.selectData) }, handleCurrentChange(val) { console.log(`褰撳墠椤�: ${val}`) this.pageParams.pageNo = val - this.judgment() + this.getTableByClick(this.selectData) }, // 鏌ヨ鎸夐挳 filteredTableData() { @@ -571,33 +300,13 @@ this.searchData.keyword = '' this.tableData = this.oldtableData }, - // 澶勭悊缂栬緫瑙勬牸 - async handleEdit() { - // console.log(this.id) - await updateSpecifications({ crossSection: this.editSpeForm.crossSection, - id: this.rowId, - instruct: this.editSpeForm.instruct, - name: this.editSpeForm.name, - number: this.editSpeForm.number, - numberOfCores: this.editSpeForm.numberOfCores, - serialId: this.modelId, // 鍏宠仈鍨嬪彿ID - spe_state: this.editSpeForm.spe_state, - voltageLevel: this.editSpeForm.spe_state }) - this.dialogFormVisible4 = false - }, - // 鍋滅敤 - async updateSpeState() { - await updateSpeState({ id: this.rowId, - spe_state: '0' }) - this.dialogFormVisible5 = false - }, renderContent(h, { node, data, store }) { // console.log('data', data) // console.log('node', node) // 鍒ゆ柇鏄惁鏄埗鑺傜偣鎴栨枃浠跺す const isFolder = ('children') in data return ( - <span> + <span class='tree-node'> {isFolder ? ( <i class={node.expanded ? 'el-icon-folder-opened blue-folder' : 'el-icon-folder blue-folder'} @@ -605,15 +314,68 @@ ) : ( <i class='el-icon-document blue-folder'></i> )} - <span> {data.label}</span> + <div class='tree-lable'>[{node.level}] {data.name}</div> </span> ) + }, + async subAddTreeForm() { + this.addTreeFormVisible = false + console.log(this.addTreeForm.addTypeArr.length) + let res = null + try { + switch (this.addTreeForm.addTypeArr.length) { + case 1: + console.log(this.addTreeForm) + res = await addMaterial({ ...this.addTreeForm, type: this.addTreeForm.addTypeArr.pop() }) + break + case 2: + console.log(this.addTreeForm) + res = await addStandards({ ...this.addTreeForm, materialId: this.addTreeForm.addTypeArr.pop() }) + break + case 3: + console.log(this.addTreeForm) + res = await addSpecifications({ ...this.addTreeForm, standardId: this.addTreeForm.addTypeArr.pop() }) + break + } + } catch (error) { + this.$message.error('娣诲姞澶辫触') + } + + console.log(res) + this.$message.success('娣诲姞鎴愬姛') + this.addTreeForm = {} + this.getStandardTree() + this.getTableByClick(this.selectData) + }, + changeCascader(data) { + console.log(data) + this.addTreeForm.addTypeArr = data + }, + closeAddTreeForm() { + this.addTreeForm = { + addTypeArr: [] + } + console.log(this.addTreeForm) } + /** 琛ㄦ牸鏌愯鐐瑰嚮浜嬩欢 */ + // handleRowClick(row, column, event) { + // // 鍒ゆ柇褰撳墠琛屾槸鍚︽湁瀛愰泦锛岃嫢娌℃湁鍒欑粨鏉熷鐞� + // // console.log(row) + // if (!row.children) return + // this.$refs.tableData.toggleRowExpansion(row) + // } } } </script> <style lang="scss" scoped> + +// el-table琛ㄦ牸瀵归綈 +::v-deep .el-table__row:not([class*="el-table__row--level-"]) { + td:nth-child(2){ + padding-left: 23px !important; + } +} // .dialogform { // transform: translate(-50%, -50%); // top: 50% !important; @@ -629,6 +391,7 @@ display: flex; height: 100%; min-height: calc(100vh - 88px); + max-height: calc(100vh - 88px); padding: 15px; >div{ padding: 20px; @@ -636,15 +399,30 @@ } .library-bom{ flex: 2; + // width: 20%; + // height: 100%; + max-height: 100%; margin-right: 12px; + overflow-y: scroll; .el-tree { // margin-top: 12px; ::v-deep .el-tree-node__content{ height: 24px !important; - font-size: 16px; - display: inline-block !important; + font-size: 18px; + // display: inline-block !important; padding: 2px; - color: #333; + // color: #333; + .tree-node{ + display: flex; + align-items: center; + height: 20px; + } + .tree-lable{ + height: 100%; + line-height: 23px; + font-size: 12px; + padding-left: 8px; + } .blue-folder{ color: rgb(64, 158, 255) } @@ -674,11 +452,14 @@ // } } .library-table{ + // height: 100%; flex: 8; + max-height: 100%; + // flex: 8; margin-left: 12px; display: flex; flex-direction: column; - + // overflow-y: scroll; .table-header{ display: flex; justify-content: space-between; @@ -692,10 +473,15 @@ // padding: 20px 20px 10px 20px; display: flex; flex-direction: column; + justify-content: space-between; + .el-table { - flex: 1; + // flex: 1; + // max-height: 680px; + // overflow-y: scroll; } - >div:nth-child(2){ + >div:nth-child(3){ + // height: 20px; display: flex; justify-content: end; margin: 10px 0; @@ -703,5 +489,13 @@ } } } + .addTree{ + .el-form-item{ + margin-bottom: 10px; + } + .el-cascader{ + width: 100%; + } + } } </style> diff --git a/src/views/trialManagement/entrust.vue b/src/views/trialManagement/entrust.vue new file mode 100644 index 0000000..d0366cd --- /dev/null +++ b/src/views/trialManagement/entrust.vue @@ -0,0 +1,15 @@ +<template> + <div class="entrust"> + 濮旀墭妫�楠� + </div> +</template> + +<script> +export default { + +} +</script> + +<style> + +</style> diff --git a/src/views/trialManagement/rawMaterials.vue b/src/views/trialManagement/rawMaterials.vue new file mode 100644 index 0000000..bab0bb9 --- /dev/null +++ b/src/views/trialManagement/rawMaterials.vue @@ -0,0 +1,228 @@ +<template> + <div class="raw-materials"> + <div class="content-main"> + <div class="top-bar"> + <el-form ref="form" v-model="searchData" :inline="true"> + <el-form-item label="鏉愭枡缂栫爜"> + <el-input + v-model="searchData.keyword" + class="input-form" + placeholder="璇疯緭鍏ユ潗鏂欑紪鐮�" + > + <i slot="prefix" class="el-input__icon el-icon-search" /> + </el-input> + </el-form-item> + <el-form-item label="鏉愭枡鍚嶇О"> + <el-input + v-model="searchData.keyword" + class="input-form" + placeholder="璇疯緭鍏ユ潗鏂欏悕绉�" + > + <i slot="prefix" class="el-input__icon el-icon-search" /> + </el-input> + </el-form-item> + <el-form-item label="鐘舵��"> + <el-select + placeholder="璇烽�夋嫨鐘舵��" + /> + </el-form-item> + <el-form-item label="鏉ユ枡鏃ユ湡"> + <el-select + placeholder="璇烽�夋嫨鐘舵��" + /> + </el-form-item> + <el-form-item> + <el-button type="primary">鏌ヨ</el-button> + <el-button type="primary" plain>閲嶇疆</el-button> + </el-form-item> + </el-form> + </div> + <div class="raw-materials-table"> + <!-- <div class="table-header"> + <div class="search-bar"> + </div> + </div> --> + <div class="table-box"> + <el-table + ref="rawMaterialsTable" + :max-height="800" + :cell-style="{textAlign: 'center'}" + :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" + :data="rawMaterialsTable" + style="width: 100%" + > + <el-table-column + type="selection" + max-width="55" + /> + <el-table-column + type="index" + label="搴忓彿" + max-width="200" + /> + <el-table-column + prop="createTime" + label="鏉ユ枡鏃ユ湡" + max-width="200" + /> + <el-table-column + prop="userName" + label="渚涘簲鍟嗗悕绉�" + max-width="200" + /> + <el-table-column + prop="inspectUserId" + label="鏉愭枡缂栫爜" + max-width="200" + /> + <el-table-column + prop="inspectionStatus" + label="鏉愭枡鍚嶇О" + max-width="200" + /> + <el-table-column + prop="qualifiedState" + label="瑙勬牸鍨嬪彿" + max-width="200" + /> + <el-table-column + prop="inspectStartTime" + label="鍗曚綅" + max-width="200" + /> + <el-table-column + prop="inspectEndTime" + label="鏁伴噺" + max-width="200" + /> + <el-table-column + prop="inspectEndTime" + label="鎶ユ鏃ユ湡" + max-width="200" + /> + <el-table-column + prop="inspectEndTime" + label="妫�楠屼汉" + max-width="200" + /> + <el-table-column + prop="inspectEndTime" + label="妫�楠屾棩鏈�" + max-width="200" + /> + <el-table-column + prop="inspectEndTime" + label="鐘舵��" + max-width="200" + /> + </el-table> + <!-- 鍒嗛〉鍣� --> + <div> + <el-pagination + :current-page="currentPage" + :page-sizes="[100, 200, 300, 400]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + </div> + </div> + </div> + </div> + </div> +</template> + +<script> +export default { + data() { + return { + searchData: '', + rawMaterialsTable: [] + } + } +} +</script> + +<style lang="scss" scoped> +.content-main{ + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + min-height: calc(100vh - 88px); + padding: 15px; + } + .top-bar{ + margin: -25px; + background: #fff; + display: flex; + justify-content: space-between; + padding: 5px 24px 0px 24px; + .el-form{ + width: 100%; + display: flex; + >div{ + flex: 1; + } + } + } + .input-form{ + // width: 300px; + } + .retrieval{ + float: right; + font-size: 14px; + color: rgb(0, 120, 255); + line-height: 40px; + } + .rightBtn { + display: flex; + justify-content: flex-end; +} + +.getDataBtn, .createBtn { + margin-left: 10px; /* Optional: Add some space between the buttons */ +} +.raw-materials-table{ + background-color: #fff; + flex: 1; + max-width: 100%; + margin-left: 0px; + margin-right: 0px; + margin-top: 50px; + display: flex; + flex-direction: column; + .table-header{ + padding: 20px; + display: flex; + justify-content: space-between; + .el-form-item{ + margin-bottom: 30px !important; + } + } + .table-box{ + padding: 0px 20px; + margin-top: 20px; + flex: 1; + background: #fff; + // padding: 20px 20px 10px 20px; + display: flex; + flex-direction: column; + .el-table { + flex: 1; + display: flex; + flex-direction: column; + ::v-deep .el-table__body-wrapper{ + flex: 1; + } + } + >div:nth-child(2){ + display: flex; + justify-content: end; + margin: 10px 0; + } + } + } +</style> -- Gitblit v1.9.3