From ef9ea2c97cdbe5bb5fcc21c7186a0dc61679f01d Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期二, 22 八月 2023 18:08:26 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.110.209:9001/r/lims-before --- src/views/experiment/passRateStatistics/index.vue | 240 +++- src/views/experiment/reportAuditing/index.vue | 56 src/views/laboratory/measure/index.vue | 157 +- src/views/basicData/index.vue | 551 +++++++++++ src/views/experiment/inspectionApplication/index.vue | 140 +- src/views/standardLibrary/index.vue | 582 ++++++++--- src/views/experiment/planAssignments/plan.vue | 46 src/views/CNAS/nonConformanceManage/index.vue | 213 ++++ src/api/experiment/passRateStatistics.js | 47 src/router/index.js | 23 src/styles/element-ui.scss | 5 src/api/laboratory/measure.js | 8 src/styles/sidebar.scss | 28 .env.staging | 2 src/api/basicData/index.js | 75 + src/views/message/message/index.vue | 242 ++++ src/layout/components/Sidebar/Logo.vue | 2 src/layout/components/AppMain.vue | 2 src/views/message/toDo/index.vue | 224 ++++ src/views/experiment/inspectionApplication/Viewdetails/index.vue | 280 +++++ 20 files changed, 2,482 insertions(+), 441 deletions(-) diff --git a/.env.staging b/.env.staging index 4b2b496..d5bc70f 100644 --- a/.env.staging +++ b/.env.staging @@ -5,6 +5,6 @@ # base api # VUE_APP_BASE_API = '/stage-api' -VUE_APP_BASE_API = 'http://192.168.110.254:1234/' +VUE_APP_BASE_API = 'http://192.168.110.87:1234/' diff --git a/src/api/basicData/index.js b/src/api/basicData/index.js new file mode 100644 index 0000000..4e00b7a --- /dev/null +++ b/src/api/basicData/index.js @@ -0,0 +1,75 @@ +import request from '@/utils/request' + +const Api = { + addStandardProjectGroup: "/productModel/selectfather", // 娣诲姞鏍囧噯-->閫夋嫨椤圭洰鍒嗙粍 + productModelSelectmater: "/productModel/selectmater", // 閫夋嫨鏍峰搧鍚嶇О + addproductModel: "/productModel/addproductModel", // 娣诲姞鏍囧噯 + selectproductModel: "/productModel/selectproductModel", // 鏌ヨ鏍囧噯妯$増鍒楄〃 + deleteProductModel: "/productModel/delproductModel", // 鍒犻櫎鏍囧噯妯$増 + selectproductModelById: "/productModel/selectproductModelById", // 鏍规嵁id鏌ヨ + updateProductModel: "/productModel/writeproductModel", // 鏇存柊鏍囧噯 -->缂栬緫 + deleteList: "/productModel/delAllproductModel", // 鎵归噺鍒犻櫎 + +} + +export function addStandardProjectGroupApi() { + return request({ + url: Api.addStandardProjectGroup, + method: 'get' + }) +} + +export function productModelSelectmaterApi() { + return request({ + url: Api.productModelSelectmater, + method: "get" + }) +} + +export function addproductModelApi(formData) { + return request({ + url: Api.addproductModel, + method: 'post', + data: formData + }) +} + +export function updateProductModelApi(formData) { + return request({ + url: Api.updateProductModel + '?id=' + formData.id, + method: 'post', + data: formData + }) +} + +export function selectproductModelApi(params) { + return request({ + url: Api.selectproductModel, + method: "get", + params: params + }) +} + +export function deleteProductModelApi(id){ + return request({ + url: Api.deleteProductModel, + method: "post", + params: {id: id} + }) +} + +export function selectproductModelByIdApi(id){ + return request({ + url: Api.selectproductModelById, + method: "get", + params: {id: id} + }) +} + +export function deleteListApi(id){ + return request({ + url: Api.deleteList, + method: "post", + params:{ids: id.toString()} + }) +} \ No newline at end of file diff --git a/src/api/experiment/passRateStatistics.js b/src/api/experiment/passRateStatistics.js new file mode 100644 index 0000000..daa6a86 --- /dev/null +++ b/src/api/experiment/passRateStatistics.js @@ -0,0 +1,47 @@ +import request from '@/utils/request' + +export function getSupplierList(params) { + return request({ + url: '/qualificationRate/getSupplierList', + method: 'get', + params + }) + } + + /** + * 鏍峰搧鍚堟牸鐜� + * @param {} params + * @returns + */ + export function getTestSampleStatistics(params) { + return request({ + url: '/qualificationRate/getTestSampleStatistics', + method: 'get', + params + }) + } + /** + * 渚涘簲鍟嗗悎鏍肩巼 + * @param {} params + * @returns + */ + export function getSupplierNoPassStatistics(params) { + return request({ + url: '/qualificationRate/getSupplierNoPassStatistics', + method: 'get', + params + }) + } + + /** + * 椤圭洰鍚堟牸鐜� + * @param {} params + * @returns + */ + export function getNoPassProjectStatistics(params) { + return request({ + url: '/qualificationRate/getNoPassProjectStatistics', + method: 'get', + params + }) + } \ No newline at end of file diff --git a/src/api/laboratory/measure.js b/src/api/laboratory/measure.js index cf5033a..dce0385 100644 --- a/src/api/laboratory/measure.js +++ b/src/api/laboratory/measure.js @@ -52,3 +52,11 @@ data }) } +//淇敼璁¢噺 +export function updateMetricalInformationInfo(data) { + return request({ + url: '/metrical-information/updateMetricalInformationInfo', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue index 48fea47..f0ae826 100644 --- a/src/layout/components/AppMain.vue +++ b/src/layout/components/AppMain.vue @@ -16,7 +16,7 @@ }, methods: { childMethod(){ - this.$refs.child.combackLookPlan() + this.$refs.child.combackLookPlan() }, triggerMainBtnPlan(){ this.$parent.triggerCombackBtn() diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue index d07b76a..096beb8 100644 --- a/src/layout/components/Sidebar/Logo.vue +++ b/src/layout/components/Sidebar/Logo.vue @@ -46,7 +46,7 @@ width: 100%; height: 50px; line-height: 50px; - background: #fff; + background: #f8f8f8; text-align: center; overflow: hidden; diff --git a/src/router/index.js b/src/router/index.js index ab7ed2d..7b83e21 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -192,10 +192,17 @@ children: [ { path: 'inspectionApplication', - name: 'InspectionApplication', + name: 'inspectionApplication', component: () => import('@/views/experiment/inspectionApplication/index'), meta: { title: '鏂板妫�楠�', icon: 'tree' } }, + { + path: 'Viewdetails', + name: 'Viewdetails', + hidden: true , + component: () => import('@/views/experiment/inspectionApplication/Viewdetails/index'), + meta: { title: '璇︽儏椤�', icon: 'tree' } + }, { path: 'planAssignments', name: 'PlanAssignments', @@ -443,6 +450,20 @@ } ] }, + { + path: '/baseData', + component: Layout, + redirect: '/baseData/basicDataMessage', + meta: { title: '鍩虹鏁版嵁', icon: 'el-icon-s-tools' }, + children: [ + { + path: '/basicDataMessage', + name: 'BasicDataMessage', + component: () => import('@/views/basicData/index'), + meta: { title: '鍩虹鏁版嵁', icon: 'el-icon-s-tools' } + } + ] + }, // 404 page must be placed at the end !!! { path: '*', redirect: '/404', hidden: true } ] diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss index a831e80..e788c56 100644 --- a/src/styles/element-ui.scss +++ b/src/styles/element-ui.scss @@ -13,7 +13,7 @@ .el-upload__input { display: none; - + } @@ -103,9 +103,6 @@ // .el-menu-popup{ // min-width: 100px !important; // } -.el-menu--vertical{ - max-width: 100px !important; -} .el-menu--collapse .el-menu .el-submenu, .el-menu--popup { min-width: 100px !important; diff --git a/src/styles/sidebar.scss b/src/styles/sidebar.scss index 5d56d60..42ae7b0 100644 --- a/src/styles/sidebar.scss +++ b/src/styles/sidebar.scss @@ -69,18 +69,18 @@ } // menu hover - + .el-submenu__title,.el-tooltip{ border-radius: 8px; overflow: hidden; &:hover { - background-color: $menuHover !important; + background-color: $menuHover !important; color: $menuActiveText !important; } } .submenu-title-noDropdown{ &:hover { - background-color:transparent !important; + background-color:transparent !important; // background-color: $menuBg !important; // border-radius: 8px; // overflow: hidden; @@ -103,22 +103,21 @@ } - + & .nest-menu .el-submenu>.el-submenu__title, & .el-submenu .el-menu-item { - min-width: $sideBarWidth !important; background-color: $subMenuBg !important; &:hover { - + background-color: $subMenuHover !important; } } // .is-active.el-submenu{ // color: $subMenuActiveText !important; - + // } .is-active.el-menu-item { // color: $subMenuActiveText !important; @@ -179,7 +178,7 @@ .el-submenu { overflow: hidden; - + &>.el-submenu__title{ // width: auto; // height: auto; @@ -234,7 +233,7 @@ margin: 0 auto; } } - + } } @@ -301,12 +300,11 @@ } .nest-menu .el-submenu>.el-submenu__title, .el-menu-item { - width: 100px; - height: 30px !important; - min-width: 100px !important; - line-height: 30px; - text-align: left !important; + height: 40px !important; + line-height: 40px; + padding-left: 20px !important; font-size: 10px; + width: 100% !important; justify-content: start !important; background-color: $subMenuBg !important; color: $subMenuHover !important; @@ -330,6 +328,8 @@ max-height: 100vh; overflow-y: auto; background-color: #fff; + width: 150px !important; + padding: 0 !important; &::-webkit-scrollbar-track-piece { background: #d3dce6; } diff --git a/src/views/CNAS/nonConformanceManage/index.vue b/src/views/CNAS/nonConformanceManage/index.vue index 884cce1..18c1c72 100644 --- a/src/views/CNAS/nonConformanceManage/index.vue +++ b/src/views/CNAS/nonConformanceManage/index.vue @@ -1,5 +1,214 @@ <template> - <div> - 涓嶇鍚堥」绠$悊 + <div class="content-main"> + <div class="top-bar"> + <el-form ref="form" :inline="true" :model="searchData"> + <el-form-item label="褰曞叆鏃ユ湡:" style="margin-right: 20px;"> + <el-date-picker + v-model="searchData.entry_date" + type="date" + placeholder="璇烽�夋嫨褰曞叆鏃ユ湡"> + </el-date-picker> + </el-form-item> + <el-form-item label="瀹℃牳鏃ユ湡:" style="margin-right: 20px;"> + <el-date-picker + v-model="searchData.check_date" + type="date" + placeholder="璇烽�夋嫨瀹℃牳鏃ユ湡"> + </el-date-picker> + </el-form-item> + <el-form-item label="鐘舵��:" style="margin-right: 20px;"> + <el-select v-model="searchData.state" placeholder="鍏ㄩ儴" style="width: 100px;"> + <el-option + v-for="item in stateoptions" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="閮ㄩ棬:" style="margin-right: 20px;"> + <el-input v-model="searchData.department" placeholder="璇疯緭鍏ラ儴闂�"> + </el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="searchInspections">鏌ヨ</el-button> + <el-button type="primary" plain @click="reset">閲嶇疆</el-button> + </el-form-item> + </el-form> + <el-form class="rightBtn"> + <el-form-item class="createBtn"> + <el-button type="primary" icon="el-icon-document-add" style="margin-right: 10px;">鏂板璁板綍</el-button> + </el-form-item> + <el-form-item class="getDataBtn"> + <el-button type="primary" icon="el-icon-download">瀵煎嚭</el-button> + </el-form-item> + </el-form> + </div> + <div class="library-table"> + <div class="table-header"> + <el-radio-group v-model="radioValue" @change="radioclick"> + <el-radio-button v-for="item in conditionsOptions" :key="item.value" :label="item.value"> + {{ item.label }} + </el-radio-button> + </el-radio-group> + </div> + <div class="table-box"> + <el-table + ref="recordTable" + :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="recordTable" + style="width: 100%" + > + <el-table-column + label="搴忓彿" + min-width="10%"> + <template slot-scope="scope"> + <el-checkbox v-model="checked"></el-checkbox> + </template> + </el-table-column> + <el-table-column + prop="title" + label="鏍囬" + min-width="12%" + /> + <el-table-column + prop="content" + label="鍐呭" + min-width="12%" + /> + <el-table-column + prop="level" + label="绛夌骇" + min-width="12%" + /> + <el-table-column + prop="type" + label="绫诲瀷" + min-width="8%" + /> + <el-table-column + prop="state" + label="鐘舵��" + min-width="12%"> + <template slot-scope="scope"> + <span v-if="scope.row.state === 1" style="color: red;">鏈</span> + <span v-if="scope.row.state === 2" style="color: green;">宸茶</span> + </template> + </el-table-column> + <el-table-column + prop="sender" + label="鍙戜欢浜�" + min-width="8%" + /> + <el-table-column + prop="create_time" + label="鍒涘缓鏃堕棿" + min-width="12%" + /> + <el-table-column + label="鎿嶄綔" + min-width="10%" + > + <template slot-scope="scope"> + <el-button type="text" size="small" @click="deleteRow(scope.row)">鍒犻櫎</el-button> + <el-button type="text" size="small" @click="readRow(scope.row)">鏍囦负宸茶</el-button> + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉鍣� --> + <div> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="currentPage" + :page-sizes="[5, 10, 15, 20]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </div> + </div> + </div> </div> </template> + +<script> +export default { + data(){ + return { + searchData:{ + entry_date: '', + check_date: '', + state: 0, + department: '' + }, + stateoptions:[{ + value: 0, + label: '宸插叧闂�' + },{ + value: 1, + label: '寰呭叧闂�' + }], + recordTable:[], + currentPage: 0, + pageSize:5, + total: 20 + } + } +} +</script> + +<style lang="scss" scoped> +.content-main{ + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + .top-bar{ + margin: -25px -15px; + background: #fff; + display: flex; + justify-content: space-between; + padding: 5px 24px 0px 24px; + .rightBtn{ + display: flex; + justify-content: space-between; + } + } + .library-table{ + background-color: #fff; + flex: 1; + margin: 0px -15px; + margin-top: 40px; + 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: 0px; + flex: 1; + background: #fff; + /* padding: 20px 20px 10px 20px; */ + display: flex; + flex-direction: column; + .el-table { + flex: 1; + } + >div:nth-child(2){ + display: flex; + justify-content: end; + margin: 10px 0; + } + } + } +} +</style> diff --git a/src/views/basicData/index.vue b/src/views/basicData/index.vue new file mode 100644 index 0000000..576920a --- /dev/null +++ b/src/views/basicData/index.vue @@ -0,0 +1,551 @@ +<template> + <div class="main_div"> + <div class="top_div"> + <span>鏍峰搧鍚嶇О锛�</span> + <el-select + v-model="params.material" + size="small" + placeholder="璇烽�夋嫨鏍峰搧鍚嶇О" + > + <el-option + v-for="item in productModelSelectmater" + :value="item" + :key="item.index" + :label="item" + ></el-option> + </el-select> + <span class="top_div_span">椤圭洰鍒嗙粍锛�</span> + <el-input + v-model="params.father" + placeholder="璇疯緭鍏ラ」鐩垎缁�" + style="width: 10%" + size="small " + ></el-input> + <span class="top_div_span">椤圭洰鍚嶇О锛�</span> + <el-input + v-model="params.name" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + style="width: 10%" + size="small " + ></el-input> + <el-button + type="primary" + class="top_div_button" + size="small" + @click="selectProductModelTable" + >鏌ヨ</el-button + > + <el-button class="top_div_button" size="small" @click="params = {}" + >閲嶇疆</el-button + > + <div style="float: right"> + <el-button + class="top_div_button" + type="primary" + size="small" + icon="el-icon-folder-add" + @click="centerDialogVisible = true" + >鏂板</el-button + > + <el-dialog + :visible.sync="centerDialogVisible" + width="30%" + right + :before-close="handleClose" + > + <template slot="title"> + <div class="addTop"> + <span>{{ isUpdate ? "鏇存柊" : "鏂板" }}鍩虹鏁版嵁</span> + </div> + </template> + <el-form :model="form" :rules="rules" ref="ruleForm" class="addForm"> + <el-form-item prop="material" required> + <span>鏍峰搧鍚嶇О锛�</span> + <el-select + v-model="form.material" + style="width: 85%" + placeholder="璇烽�夋嫨鏍峰搧鍚嶇О" + > + <el-option + v-for="(item, index) in productModelSelectmater" + :key="index" + :value="item" + :label="item" + ></el-option> + </el-select> + </el-form-item> + <el-form-item> + <span>椤圭洰鍒嗙粍锛�</span> + <el-select + v-model="form.father" + style="width: 85%" + placeholder="璇烽�夋嫨椤圭洰鍒嗙粍" + > + <el-option + v-for="(item, index) in projectGroupingOptions" + :key="index" + :value="item" + :label="item" + ></el-option> + </el-select> + </el-form-item> + <el-row :gutter="24"> + <el-col :span="12" + ><el-form-item prop="name" required + ><span>椤圭洰鍚嶇О锛�</span> + <el-input + style="width: 70%" + v-model="form.name" + placeholder="璇疯緭鍏ラ」鐩悕绉�" + ></el-input></el-form-item + ></el-col> + <el-col :span="12"> + <el-form-item prop="unit"> + <span + v-html="'鍗� 浣嶏細'" + ></span> + <el-input + style="width: 70%" + v-model="form.unit" + placeholder="璇疯緭鍏ュ崟浣�" + ></el-input></el-form-item + ></el-col> + </el-row> + </el-form> + + <span slot="footer" class="dialog-footer"> + <el-button @click="centerDialogVisible = false" size="small " + >鍙� 娑�</el-button + > + <el-button type="primary" @click="submitAdd" size="small ">{{ + isUpdate ? "鏇� 鏂�" : "淇� 瀛�" + }}</el-button> + </span> + </el-dialog> + <el-button + class="top_div_button" + icon="el-icon-delete-solid" + size="small" + style="color: #00a5ff" + @click="deleteListClick" + >鍒犻櫎</el-button + > + </div> + </div> + <div class="table_div"> + <el-table + :data="tableData" + style="width: 100%; margin-bottom: 20px" + row-key="name" + border + height="calc(100vh - 250px)" + default-expand-all + ref="multipleTable" + @select="selectTr" + @select-all="selectAll" + :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" + > + <el-table-column type="selection" label="搴忓彿"> </el-table-column> + <el-table-column + type="index" + width="50px" + label="搴忓彿" + ></el-table-column> + <el-table-column label="椤圭洰鍚嶇О" sortable> + <template scope="scope"> + <el-tag + ><div + class="firstDiv" + :style="`color: ${ + scope.row.code == '[1]' ? '#16a7ff' : '#58c173' + }`" + > + {{ scope.row.code == "[1]" ? "01" : "02" }} + </div> + <span style="color: black">{{ scope.row.name }}</span></el-tag + > + </template> + </el-table-column> + <el-table-column prop="unit" label="鍗曚綅" sortable></el-table-column> + <el-table-column label="鎿嶄綔"> + <template slot-scope="scope"> + <div v-if="scope.row.code == '[2]' || scope.row.edit == true"> + <el-button type="text" size="mini" @click="childrenClick(scope)" + >缂栬緫</el-button + > + <el-button + type="text" + size="mini" + @click="deleteTreeChildren(scope)" + >鍒犻櫎</el-button + > + </div> + </template> + </el-table-column> + </el-table> + </div> + </div> +</template> + +<script> +import { + addStandardProjectGroupApi, + productModelSelectmaterApi, + addproductModelApi, + selectproductModelApi, + deleteProductModelApi, + selectproductModelByIdApi, + updateProductModelApi, + deleteListApi, +} from "@/api/basicData/index"; +export default { + name: "BasicDataMessage", + data() { + return { + isAllSelect: false, + projectGroupingOptions: [], + productModelSelectmater: [], + value: "", + isUpdate: false, + projectName: "", + tableData: [], + centerDialogVisible: false, + deleteList: [], + form: { + material: "", // 鏍峰搧鍚嶇О + father: "", // 椤圭洰鍒嗙粍 + name: "", // 椤圭洰鍚嶇О + unit: "", // 鍗曚綅 + }, + params: { + material: "", + father: "", + name: "", + }, + rules: { + material: [ + { required: true, message: "璇烽�夋嫨鏍峰搧鍚嶇О", trigger: "change" }, + ], + name: [ + { required: true, message: "璇疯緭鍏ラ」鐩悕绉�", trigger: "blur" }, + { + min: 2, + max: 25, + message: "闀垮害鍦� 2 鍒� 25 涓瓧绗�", + trigger: "blur", + }, + ], + unit: [ + { required: true, message: "璇疯緭鍏ュ崟浣�", trigger: "blur" }, + { + min: 1, + max: 25, + message: "闀垮害鍦� 1 鍒� 25 涓瓧绗�", + trigger: "blur", + }, + ], + }, + }; + }, + methods: { + submitAdd() { + if (!this.isUpdate) { + this.$refs.ruleForm.validate((valid) => { + if (valid) { + addproductModelApi(this.form).then((res) => { + this.centerDialogVisible = false; + this.$message({ + message: res.message, + type: "success", + }); + this.selectProductModelTable(); + }); + } + }); + } else { + this.$refs.ruleForm.validate((valid) => { + if (valid) { + updateProductModelApi(this.form).then((res) => { + this.centerDialogVisible = false; + this.$message({ + message: res.message, + type: "success", + }); + this.selectProductModelTable(); + }); + } + }); + } + }, + async selectProductMaster() { + await productModelSelectmaterApi().then((res) => { + this.productModelSelectmater = res.data; + }); + }, + handleClose(done) { + this.$confirm("纭鍏抽棴锛�") + .then((_) => { + this.centerDialogVisible = false; + done(); + }) + .catch((_) => {}); + }, + selectProductModelTable() { + selectproductModelApi(this.params).then((res) => { + res.data.forEach((i) => { + if (i.name === undefined) { + i.name = i.children[0].name; + i.unit = i.children[0].unit; + i.id = i.children[0].id; + i.edit = true; + delete i.children; + } + }); + this.tableData = res.data; + this.selectDataList(); + }); + }, + childrenClick(scope) { + this.isUpdate = true; + let father = ""; + selectproductModelByIdApi(scope.row.id).then((res) => { + let result = res.data; + this.form.name = result.name; + this.form.material = result.material; + this.form.father = result.father; + this.form.unit = result.unit; + this.form.id = scope.row.id; + }); + this.centerDialogVisible = true; + }, + selectDataList() { + this.tableData.forEach((a) => { + a.code = "[1]"; + if (a.children != undefined) { + a.children.forEach((b) => { + b.code = "[2]"; + }); + } + }); + }, + deleteTreeChildren(scope) { + deleteProductModelApi(scope.row.id).then((res) => { + this.$message({ + message: res.message, + type: "success", + }); + this.selectProductModelTable(); + }); + }, + + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 + // 鍏ㄩ��/鍙栨秷閫夋搷浣� + selectAll(val) { + this.isAllSelect = !this.isAllSelect; + let data = this.tableData; + this.toggleSelect(data, this.isAllSelect, "all"); + // 鑷畾涔� + if (this.isAllSelect) { + val.forEach((i) => { + let isExist = false; + this.deleteList.findIndex((c) => { + if (c === i.id) { + isExist = true; + } + }); + if (!isExist && i.id !== undefined) { + this.deleteList.push(i.id); + } + }); + } else { + this.deleteList.splice(0, this.deleteList.length); + } + // 鑷畾涔夌粨鏉� + }, + //閫夋嫨鏌愯 + selectTr(selection, row) { + this.$set(row, "isChecked", !row.isChecked); + this.$nextTick(() => { + this.isAllSelect = row.isChecked; + this.toggleSelect(row, row.isChecked, "tr"); + }); + + if (row.isChecked === true) { + if (row.children !== undefined) { + row.children.forEach((i) => { + this.deleteList.push(i.id); + }); + } else { + this.deleteList.push(row.id); + } + } else if (row.isChecked === false) { + if (row.children !== undefined) { + row.children.forEach((i) => { + this.deleteList.findIndex((c, index) => { + if (c === i.id) { + this.deleteList.splice(index, 1); + return; + } + }); + }); + } + this.deleteList.findIndex((c, index) => { + if (c === row.id) { + this.deleteList.splice(index, 1); + return; + } + }); + } + }, + //閫掑綊瀛愮骇 + toggleSelect(data, flag, type) { + if (type === "all") { + if (data.length > 0) { + data.forEach((item) => { + this.toggleSelection(item, flag); + if (item.children && item.children.length > 0) { + this.toggleSelect(item.children, flag, type); + } + }); + } + } else { + if (data.children && data.children.length > 0) { + data.children.forEach((item) => { + item.isChecked = !item.isChecked; + this.$refs.multipleTable.toggleRowSelection(item, flag); + this.toggleSelect(item, flag, type); + }); + } + } + }, + //鏀瑰彉閫変腑 + toggleSelection(row, flag) { + this.$set(row, "isChecked", flag); + this.$nextTick(() => { + if (flag) { + this.$refs.multipleTable.toggleRowSelection(row, flag); + } else { + this.$refs.multipleTable.clearSelection(); + } + }); + }, + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 + deleteListClick() { + deleteListApi(this.deleteList).then((res) => { + this.$message({ + message: res.message, + type: "success", + }); + this.selectProductModelTable(); + }); + }, + }, + mounted() { + this.selectProductMaster().then((res) => { + this.params.material = this.productModelSelectmater[0]; + this.selectProductModelTable(); + }); + }, + watch: { + centerDialogVisible: { + handler(newVal, oldVal) { + if (newVal == true) { + addStandardProjectGroupApi().then((res) => { + this.projectGroupingOptions = res.data; + }); + } else { + // 璇锋眰鎴愬姛娓呴櫎鏁版嵁 + this.form = {}; + // 鎻愪氦鎴愬姛娓呴櫎妫�楠� + this.$refs.ruleForm.resetFields(); + this.isUpdate = false; + } + }, + }, + }, +}; +</script> + +<style> +.el-tag.el-tag { + border-color: transparent; + background-color: transparent; +} +.el-tag.el-tag:hover { + border-color: transparent; + background-color: transparent; +} +.firstDiv { + float: left; + width: 20px; + height: 20px; + border-radius: 50%; + background-color: #eff5ff; + margin-top: 5px; + justify-content: center; + display: flex; + align-items: center; + margin-right: 8px; +} +.main_div { + width: 100%; + position: relative; + padding: 0 10px 10px 10px; +} +.el-dialog__header { + padding: 0; +} +.el-dialog__headerbtn { + top: 0; +} +.el-dialog__close { + padding: 8px 0; + color: #ffffff !important; +} +.addForm { + padding: 20px 20px 0 20px; +} +.addForm .el-form-item__error { + left: 66px; +} +.el-dialog { + border-radius: 10px; +} +.el-dialog__body { + padding: 30px 20px 0 20px; +} +.addTop { + border-top-left-radius: 10px; + border-top-right-radius: 10px; + background-color: #00a5ff; + color: #ffffff; + padding: 8px 20px; + float: left; + height: 30px; + width: 100%; +} +.addTop span { + font-size: 16px; + font-weight: 700; +} +.table_div { + margin-top: 10px; + width: 100%; + height: calc(100vh - 230px); + background-color: #ffffff; + padding: 10px; +} + +.top_div { + height: 120px; + width: 100%; + padding: 30px 40px; + background-color: #ffffff; +} +.top_div_span { + margin-left: 50px; +} +.top_div_button { + margin-left: 20px; +} +</style> diff --git a/src/views/experiment/inspectionApplication/Viewdetails/index.vue b/src/views/experiment/inspectionApplication/Viewdetails/index.vue new file mode 100644 index 0000000..dd8a167 --- /dev/null +++ b/src/views/experiment/inspectionApplication/Viewdetails/index.vue @@ -0,0 +1,280 @@ +<template> +<div> + <div style="overflow: hidden;"> + <el-card style="margin: 10px;" v-model="searchData" > + <div slot="header" class="clearfix"> + <span> + <i slot="prefix" class="el-icon-s-home" /> + 瀹為獙绠$悊/鍘熸潗鏂欐楠屽崟</span> + </div> + <div class="card-content"> + <el-row :gutter="80"> + <el-form ref="form" :model="searchData" label-width="80px"> + <el-col :span="6"> + <el-form-item label="鏉ユ枡鏃ユ湡:" > + <el-input :disabled="true" v-model="searchData.from_time"></el-input> + + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="渚涘簲鍟嗗悕绉�:" > + <el-input :disabled="true" v-model="searchData.supplier"></el-input> + </el-form-item> + </el-col> + <el-col :span="6"> + <el-form-item label="浜у搧缂栧彿:"> + <el-input :disabled="true" v-model="searchData.mcode"></el-input> + </el-form-item> + </el-col> + </el-form> + </el-row> + <el-row :gutter="80"> + <el-form ref="form" :model="searchData" label-width="80px"> + <el-col :span="6"> + <el-form-item label="鍘熸潗鏂欏悕绉�:"> + <el-input :disabled="true" v-model="searchData.name"></el-input> + </el-form-item> + </el-col> + <el-col :span="6"> + + <el-form-item label="瑙勬牸鍨嬪彿:"> + <el-input :disabled="true" v-model="searchData.specifications"></el-input> + </el-form-item> + </el-col> + + <el-col :span="6"> + + <el-form-item label="鍗曚綅:"> + <el-input :disabled="true" v-model="searchData.unit"></el-input> + </el-form-item> + </el-col> + </el-form> + </el-row> + <el-row :gutter="80"> + <el-form ref="form" :model="searchData" label-width="80px"> + <el-col :span="6"> + <el-form-item label="鏁伴噺:"> + <el-input :disabled="true" v-model="searchData.num"></el-input> + </el-form-item> + </el-col> + <el-col :span="6"> + + <el-form-item label="鐧昏鏃ユ湡:"> + <el-input :disabled="true" v-model="searchData.end_time"></el-input> + </el-form-item> + </el-col> + + <el-col :span="6"> + + <el-form-item label="鐧昏浜�:"> + <el-input :disabled="true" v-model="searchData.userName"></el-input> + </el-form-item> + </el-col> + </el-form> + </el-row> + </div> + </el-card> + + + <el-row style="margin: 5px;"> + <el-col :span="12" style="line-height: 32px;">妫�楠岄」鐩�</el-col> + <el-col :span="12" style="text-align: right;"> + <!-- <el-button ic size="medium " @click="()=>{}">淇濆瓨</el-button> --> + <el-button icon="el-icon-refresh-lef" size="medium " style="background-color: cornflowerblue;" @click="goback">杩斿洖</el-button> + </el-col> + </el-row> + <div> + <el-card style="margin: 10px;"> + <el-table + :data="tableData" + border + style="width: 100%"> + <el-table-column + label="搴忓彿" + type="index" + width="50"> + </el-table-column> + <el-table-column + prop="date" + label="椤圭洰" + width="180"> + </el-table-column> + <el-table-column + prop="name" + label="鍗曚綅" + width="180"> + </el-table-column> + <el-table-column + prop="kk" + label="鏍囧噯鍊�"> + </el-table-column> + <el-table-column + prop="zz" + label="鍐呮帶鍊�"> + </el-table-column> + <el-table-column + prop="oo" + wight="200" + label="缁忛獙浜�"> + <template> + <el-select v-model="value" placeholder="榛勬檽鏄�"> + <el-option + v-for="item in cities" + :key="item.value" + :label="item.label" + :value="item.value"> + <span style="float: left">{{ item.label }}</span> + <span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span> + </el-option> + </el-select> + </template> + </el-table-column> + <el-table-column + prop="pp" + label="瀹為獙璁惧"> + <template> + <el-select v-model="value" placeholder="鎷夊姏鏈�"> + <el-option + v-for="item in cities" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </template> + </el-table-column> + </el-table> + + </el-card> + </div> + </div> +</div> +</template> +<script> + import { selectInspectsList, selectAll, addInspect} from '@/api/experiment/planAssignments' +export default { + data(){ + return { + searchData:{ + from_time:'', + supplier:'', + mcode:'', + name:'', + specifications:'', + unit:'', + num:'', + userName:'', + end_time:'', + + }, + value:{}, + cities:[{ + value: 'Beijing', + label: '榛勫皬鏄�' + }, { + value: 'Shanghai', + label: '榛勫皬鏄�' + }, { + }], + tableData:[{ + date: '瀵肩嚎', + name: 'mm', + kk:'30.0', + zz:'30.0', + oo:'榛勬檽鏄�', + pp:'鎷夊姏鏈�', + },{ + date: '瀵肩嚎', + name: 'mm', + kk:'30.0', + zz:'30.0', + oo:'榛勬檽鏄�', + pp:'鎷夊姏鏈�', + },{ + date: '瀵肩嚎', + name: 'mm', + kk:'30.0', + zz:'30.0', + oo:'榛勬檽鏄�', + pp:'鎷夊姏鏈�', + },{ + date: '瀵肩嚎', + name: 'mm', + kk:'30.0', + zz:'30.0', + oo:'榛勬檽鏄�', + pp:'鎷夊姏鏈�', + },{ + date: '瀵肩嚎', + name: 'mm', + kk:'30.0', + zz:'30.0', + oo:'榛勬檽鏄�', + pp:'鎷夊姏鏈�', + }], + currentPage:1, + pageSize:8, + id:'' + } + }, + created(){ + console.log(this.$route.query.icode); + this.id = this.$route.query.icode; + this.selectInspectsList() + }, + methods: { + async goback(){ + + this.$router.push({name:'inspectionApplication'}) + }, + async selectInspectsList() { + + // 鑾峰彇鍒嗛〉鍒楄〃 + const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage ,message:this.id}) + // this.inspectionTable = data + console.log(res) + + // res.data.forEach((item) => { + // var formTime = item["DATE_FORMAT(`form_time`,'%Y-%m-%d')"] + // var startTime = item["DATE_FORMAT(i"]["`start_time`,'%Y-%m-%d')"] + // var endTime = item["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"] + // var checkdate = startTime + '~' + endTime + // var createTime = item["DATE_FORMAT(i"]["`create_time`,'%Y-%m-%d')"] + // item['formTime'] = formTime // 鏉ユ枡鏃ユ湡 + // item['checkdate'] = checkdate // 妫�楠屾棩鏈� + // item['createTime'] = createTime // 鐧昏鏃ユ湡 + // }) + this.searchData.mcode = res.data.row[0].mcode + this.searchData.supplier = res.data.row[0].supplier + this.searchData.from_time = res.data.row[0]["DATE_FORMAT(`form_time`,'%Y-%m-%d')"] + this.searchData.name = res.data.row[0].name + this.searchData.specifications = res.data.row[0].specifications + this.searchData.unit = res.data.row[0].unit + this.searchData.num = res.data.row[0].num + this.searchData.end_time = res.data.row[0]["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"] + this.searchData.userName = res.data.row[0].userName + + + + + const data = res.data.row + data.forEach((item) => { + var formTime = item["DATE_FORMAT(`form_time`,'%Y-%m-%d')"] + var startTime = item["DATE_FORMAT(i"]["`start_time`,'%Y-%m-%d')"] + var endTime = item["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"] + var checkdate = startTime + '~' + endTime + var createTime = item["DATE_FORMAT(i"]["`create_time`,'%Y-%m-%d')"] + item['formTime'] = formTime // 鏉ユ枡鏃ユ湡 + item['checkdate'] = checkdate // 妫�楠屾棩鏈� + item['createTime'] = createTime // 鐧昏鏃ユ湡 + }) + this.inspectionTable = data + this.total = res.data.total + }, +} +} +</script> +<style lang="scss" scoped> + +</style> + \ No newline at end of file diff --git a/src/views/experiment/inspectionApplication/index.vue b/src/views/experiment/inspectionApplication/index.vue index 219169e..80346ca 100644 --- a/src/views/experiment/inspectionApplication/index.vue +++ b/src/views/experiment/inspectionApplication/index.vue @@ -154,7 +154,7 @@ > <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" >鎻愪氦</el-button> --> <el-button type="text" size="small" >浣滃簾</el-button> </template> </el-table-column> @@ -164,7 +164,7 @@ <el-pagination class="pagination" :current-page="currentPage" - :page-sizes="[5, 10, 20, 30]" + :page-sizes="[1, 10, 20, 30]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total" @@ -174,6 +174,7 @@ </div> </div> </div> + <!-- 瀵硅瘽妗� --> <div class="checkType"> <el-dialog title="鏂板妫�楠屽崟" @@ -182,7 +183,7 @@ > <div class="check-box"> <el-radio-group v-model="type" @change="handleRadioChange"> - <el-radio :label="0" border>鍘熸潗鏂欐楠�</el-radio> + <el-radio :label="0" border >鍘熸潗鏂欐楠�</el-radio> <el-radio :label="1" border>濮旀墭妫�楠�</el-radio> <el-radio :label="2" border>鎴愬搧妫�楠�</el-radio> </el-radio-group> @@ -192,43 +193,43 @@ <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="鏉ユ枡鏃ユ湡锛�"> - <el-input style="width: 300px" type="text" :value="infoForm.dateSurvey" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="infoForm.dateSurvey" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="渚涘簲鍟嗗悕绉帮細"> - <el-input style="width: 300px" type="text" :value="infoForm.supplierName" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="infoForm.supplierName" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="鍘熸潗鏂欑紪鐮侊細"> - <el-input style="width: 300px" type="text" :value="infoForm.materialCoding" placeholder="璇疯緭鍏ュ師鏉愭枡缂栫爜" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="infoForm.materialCoding" placeholder="璇疯緭鍏ュ師鏉愭枡缂栫爜" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="鍘熸潗鏂欏悕绉帮細"> - <el-input style="width: 300px" type="text" :value="infoForm.materialName" placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="infoForm.materialName" placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-input style="width: 300px" type="text" :value="infoForm.specificationsModels" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="infoForm.specificationsModels" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="鍗曚綅锛�"> - <el-input style="width: 300px" type="text" :value="infoForm.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="infoForm.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="鏁伴噺锛�"> - <el-input style="width: 300px" type="text" :value="infoForm.quantity" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="infoForm.quantity" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> @@ -251,43 +252,43 @@ <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="鏉ユ枡鏃ユ湡锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.formTime" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="commisionSelection.formTime" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="渚涘簲鍟嗗悕绉帮細"> - <el-input style="width: 300px" type="text" :value="commisionSelection.supplier" placeholder="璇疯緭鍏ュ鎵樺崟浣�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="commisionSelection.supplier" placeholder="璇疯緭鍏ュ鎵樺崟浣�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="濮旀墭缂栧彿锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.mcode" placeholder="璇疯緭鍏ユ牱鍝佺紪鍙�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="commisionSelection.mcode" placeholder="璇疯緭鍏ユ牱鍝佺紪鍙�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="濮旀墭鍚嶇О锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.name" placeholder="璇疯緭鍏ユ牱鍝佸悕绉�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="commisionSelection.name" placeholder="璇疯緭鍏ユ牱鍝佸悕绉�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.specifications" placeholder="璇疯緭鍏ュ瀷鍙疯鏍�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="commisionSelection.specifications" placeholder="璇疯緭鍏ュ瀷鍙疯鏍�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="鍗曚綅锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="commisionSelection.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="鏁伴噺锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.num" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="commisionSelection.num" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> @@ -310,43 +311,43 @@ <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="鏉ユ枡鏃ユ湡锛�"> - <el-input style="width: 300px" type="text" v-model="finishedTable.deliverydate" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" /> + <el-input style="width: 300px" type="text" v-model="finishedTable.deliverydate" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="渚涘簲鍟嗗悕绉帮細"> - <el-input style="width: 300px" type="text" v-model="finishedTable.supplier" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" autocomplete="off" /> + <el-input style="width: 300px" type="text" v-model="finishedTable.supplier" placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="鍘熸潗鏂欑紪鐮侊細"> - <el-input style="width: 300px" type="text" v-model="finishedTable.code" placeholder="璇疯緭鍏ュ師鏉愭枡缂栫爜" autocomplete="off" /> + <el-input style="width: 300px" type="text" v-model="finishedTable.code" placeholder="璇疯緭鍏ュ師鏉愭枡缂栫爜" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="鍘熸潗鏂欏悕绉帮細"> - <el-input style="width: 300px" type="text" v-model="finishedTable.name" placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О" autocomplete="off" /> + <el-input style="width: 300px" type="text" v-model="finishedTable.name" placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-input style="width: 300px" type="text" v-model="finishedTable.modelandspecification" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" /> + <el-input style="width: 300px" type="text" v-model="finishedTable.modelandspecification" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> <el-form-item label="鍗曚綅锛�"> - <el-input style="width: 300px" type="text" v-model="finishedTable.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> + <el-input style="width: 300px" type="text" v-model="finishedTable.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="鏁伴噺锛�"> - <el-input style="width: 300px" type="text" v-model="finishedTable.amount" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> + <el-input style="width: 300px" type="text" v-model="finishedTable.amount" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> @@ -390,7 +391,7 @@ type="selection" label="" min-width="10%" - /> + /> <el-table-column type="index" label="搴忓彿" @@ -528,15 +529,16 @@ <el-button @click="commisionVisible = false">鍙� 娑�</el-button> <el-button type="primary" @click="handleCommisionSelection">纭� 瀹�</el-button> </span> - </div> + </div> </el-dialog> </template> <template v-else> <router-view /> + </template> </div> </template> - + <script> import { selectInspectsList, selectAll, addInspect} from '@/api/experiment/planAssignments' export default { @@ -546,8 +548,9 @@ searchData: { applicationnumber: '', type: '', - state: '' + state: '', }, + icode:'', inspectionTable: [], rawMaterialTable: [], commisionTable: [{ @@ -623,7 +626,7 @@ }], currentPage: 1, total: 20, // 鎬绘潯鏁� - pageSize: 5, // 姣忛〉鐨勬暟鎹潯鏁� + pageSize: 8, // 姣忛〉鐨勬暟鎹潯鏁� radioValue: '鍏ㄩ儴', checkTypeVisible: false, type: '', // 榛樿涓嶉�変腑鐨勭姸鎬� @@ -649,9 +652,24 @@ if (this.$route.name === 'ForInspectionDetail') this.showDetail = true }, methods: { + async handleClick(row){ + // console.log(item); + // const res = await ddd({goodId:id}) + // this.$message({ + // message: '鎭枩浣狅紝杩欐槸涓�鏉℃垚鍔熸秷鎭�', + // type: 'success' + // }); + + // console.log(res); + this.inspectionTable = row; + console.log(row.icode); + this.icode = row.icode + this.$router.push({name:'Viewdetails',query: {icode:row.icode}}); + this.selectInspectsList() + }, async selectInspectsList() { // 鑾峰彇鍒嗛〉鍒楄〃 - const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage }) + const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage,message:this.icode}) // this.inspectionTable = data // console.log(res.data.row) const data = res.data.row @@ -703,17 +721,15 @@ this.total = this.inspectionTable.length }, reset(){ - this.searchData = { - applicationnumber: '', - type: '', - state: '' - } + this.countSize = 1 + this.searchData = { } + // console.log('2222'); this.selectInspectsList() }, - //琚�変腑鐨勪俊鎭� 鍗曢�� + //琚�変腑鐨勪俊鎭� 鍗曢�� handleSelectionChange(val) { if (val.length > 1) { - this.$refs.multipleTable.clearSelection(); + this.$refs.multipleTable.clearSelection(); this.$refs.multipleTable.toggleRowSelection(val.pop()) } this.tmp = val[0] @@ -727,31 +743,31 @@ this.rawmaterialVisible = false }, async handleRadioChange(){ - console.log(this.type) if(this.type === 0){ // 鍘熸潗鏂欐姤妫� - this.rawmaterialVisible = true - const res = await selectAll({type: this.type}) - var data = res.data - data.forEach((item)=>{ - var checkdate = [] - checkdate.push(item['createTime']) - checkdate.push(item['updateTime']) - item['checkdate'] = checkdate // 妫�楠屾棩鏈� - }) - this.rawMaterialTable = data + // this.rawmaterialVisible = true + // const res = await selectAll({type: this.type}) + // var data = res.data + // data.forEach((item)=>{ + // var checkdate = [] + // checkdate.push(item['createTime']) + // checkdate.push(item['updateTime']) + // item['checkdate'] = checkdate // 妫�楠屾棩鏈� + // }) + this.$router.push({ name: 'ReportForInspection' }); }else if(this.type === 1){ - this.commisionVisible = true - const res = await selectAll({type: this.type}) - var data = res.data - data.forEach((item)=>{ - var checkdate = [] - checkdate.push(item['startTime']) - checkdate.push(item['endTime']) - item['checkdate_'] = item['startTime'] + '~' + item['endTime'] - item['checkdate'] = checkdate // 妫�楠屾棩鏈� - }) - this.commisionTable = res.data + // this.commisionVisible = true + // const res = await selectAll({type: this.type}) + // var data = res.data + // data.forEach((item)=>{ + // var checkdate = [] + // checkdate.push(item['startTime']) + // checkdate.push(item['endTime']) + // item['checkdate_'] = item['startTime'] + '~' + item['endTime'] + // item['checkdate'] = checkdate // 妫�楠屾棩鏈� + // }) + // this.commisionTable = res.data + this.$router.push({ name: 'CommissionInspection' }); } }, // 鏂板妫�楠� @@ -818,7 +834,7 @@ } } </script> - + <style lang="scss" scoped> .checkType{ .check-box{ @@ -833,7 +849,7 @@ border-color: #b3d8ff; ::v-deep .el-radio__label{ color: #333 !important; - + } } height: auto; @@ -876,7 +892,7 @@ display: flex; justify-content: flex-end; } - + .getDataBtn, .createBtn { margin-left: 10px; /* Optional: Add some space between the buttons */ } diff --git a/src/views/experiment/passRateStatistics/index.vue b/src/views/experiment/passRateStatistics/index.vue index 8783d00..e59f783 100644 --- a/src/views/experiment/passRateStatistics/index.vue +++ b/src/views/experiment/passRateStatistics/index.vue @@ -2,52 +2,48 @@ <div class="content-main"> <div class="top-bar"> <el-form ref="form" :inline="true" :rules="rules" :model="searchData" label-position="top"> - <el-form-item label="妫�娴嬫棩鏈�:" class="sermargin" prop="date"> - <el-date-picker - v-model="searchData.date" - type="daterange" - range-separator="鑷�" - start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡"> - </el-date-picker> - </el-form-item> - <el-form-item label="妫�楠岀被鍨�:" class="sermargin" prop="type"> - <el-select v-model="searchData.type" placeholder="鍏ㄩ儴"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </el-form-item> - <el-form-item label="鐗╂枡鍒嗙粍:"> - <el-button type="primary" icon="el-icon-plus" class="chooseMaterialBtn" >閫夋嫨鐗╂枡鍒嗙粍</el-button> - </el-form-item> - <div class="rightBtn"> - <el-form-item> - <el-button type="primary" plain size="mini">娓呯┖</el-button> - <el-button type="primary" @click="search" size="mini">鏌ヨ</el-button> - </el-form-item> - </div> - </el-form> + <el-form-item label="妫�娴嬫棩鏈�:" class="sermargin" prop="date"> + <el-date-picker v-model="searchData.date" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" + end-placeholder="缁撴潫鏃ユ湡"> + </el-date-picker> + </el-form-item> + <el-form-item label="妫�楠岀被鍨�:" class="sermargin" prop="type"> + <el-select v-model="searchData.type" placeholder="鍏ㄩ儴"> + <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="渚涘簲鍟�:"> + <el-select v-model="searchData.supplier" placeholder="鍏ㄩ儴"> + <el-option v-for="item in supplier" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </el-form-item> + <div class="rightBtn"> + <el-form-item> + <el-button type="primary" plain size="mini">娓呯┖</el-button> + <el-button type="primary" @click="search" size="mini">鏌ヨ</el-button> + </el-form-item> + </div> + </el-form> </div> <div class="top-bar-copy"></div> <div class="chart-content"> <div class="qualified-wrapper"> - <div style="margin-left: 20px;padding:20px 0px;font-size:18px">妫�娴嬫壒娆″悎鏍肩巼缁熻</div> + <div style="margin-left: 20px;padding:20px 0px;font-size:18px">妫�娴嬫牱鍝佸悎鏍肩巼缁熻</div> <div class="qualified" ref="qualified"></div> </div> <div class="unqualified"> - <div class="firstBox-wrapper" > - <div style="margin-left: 20px;padding:20px 0px;font-size:18px">渚涘簲鍟嗕笉鍚堟牸娆℃暟缁熻</div> - <div class="firstBox" ref="unqualified_provider"></div> - </div> - <div class="secondBox-wrapper" > + <div class="firstBox-wrapper"> + <div style="margin-left: 20px;padding:20px 0px;font-size:18px">渚涘簲鍟嗕笉鍚堟牸娆℃暟缁熻</div> + <div class="firstBox" ref="unqualified_provider"></div> + </div> + <div class="secondBox-wrapper"> <div class="secondBox_header"> <div style="font-size:18px">涓嶅悎鏍奸」鐩粺璁�</div> <el-radio-group v-model="type"> - <el-radio-button v-for="item in radiooptions" :key="item.value" :label="item.value" >{{ item.label }}</el-radio-button> + <el-radio-button v-for="item in radiooptions" :key="item.value" :label="item.value">{{ item.label + }}</el-radio-button> </el-radio-group> </div> <div class="secondBox" ref="unqualified_project"></div> @@ -55,14 +51,14 @@ </div> </div> <div class="bottom"> - <el-button type="primary" size="mini" >鏁版嵁瀵煎嚭</el-button> + <el-button type="primary" size="mini">鏁版嵁瀵煎嚭</el-button> </div> </div> </template> <script> // 娣诲姞婊氬姩鐩戝惉浜嬩欢 -window.addEventListener('scroll', function() { +window.addEventListener('scroll', function () { var topBar = document.querySelector('.top-bar'); var scrollTop = window.pageYOffset || document.documentElement.scrollTop; @@ -74,25 +70,32 @@ }) import * as echarts from 'echarts' +import { getSupplierList,getTestSampleStatistics,getSupplierNoPassStatistics,getNoPassProjectStatistics } from '@/api/experiment/passRateStatistics'; +import { dateFormat } from '../../../utils/dateUtil' export default { - data(){ + data() { return { - searchData:{ + supplier: [], + searchData: { date: [], - type: 0, - group: '' + type: null, + supplier: null }, - options:[ + options: [ { - label: '閲囪喘鍏ュ簱', + label: '鍘熸潗鏂�', value: 0 }, { - label: 'xxxx', + label: '鎴愬搧', value: 1 + }, + { + label: '濮旀墭鍝�', + value: 2 } ], - radiooptions:[ + radiooptions: [ { label: '鐜舰楗煎浘', value: 0 @@ -104,12 +107,15 @@ ], type: 0, rules: { - date: [{required: true, message: '璇疯緭鍏ヨ处鍙�', trigger: 'blur'}], - type: [{required: true, message: '璇疯緭鍏ュ悕瀛�', trigger: 'blur'}] + // date: [{ required: true, message: '璇疯緭鍏ヨ处鍙�', trigger: 'blur' }], + // type: [{ required: true, message: '璇疯緭鍏ュ悕瀛�', trigger: 'blur' }] } } }, mounted() { + this.getSupplierList() + this.getTestSampleStatistics() + this.getSupplierNoPassStatistics() const chartDom_qualified = this.$refs.qualified; const chartDom_unqualified_provider = this.$refs.unqualified_provider; const chartDom_unqualified_project = this.$refs.unqualified_project; @@ -118,6 +124,9 @@ const myChart2 = echarts.init(chartDom_unqualified_provider); const myChart3 = echarts.init(chartDom_unqualified_project); + /** + * 妫�娴嬪悎鏍肩巼缁熻 + */ const option_qualified = { tooltip: { trigger: 'axis', @@ -164,15 +173,18 @@ } ] }; - const option_unqualified1 ={ + /** + * 渚涘簲鍟� + */ + const option_unqualified1 = { tooltip: { trigger: 'axis', axisPointer: { // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥 type: 'shadow' // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow' }, - formatter: function(params) { + formatter: function (params) { let tooltip = params[0].name + '<br/>'; - params.forEach(function(item) { + params.forEach(function (item) { tooltip += item.marker + ' ' + item.seriesName + ': ' + item.value.toFixed(2) + '%<br/>'; // 灏嗘暟鎹繚鐣欎袱浣嶅皬鏁板苟杞负鐧惧垎姣斿舰寮� }); return tooltip; @@ -185,13 +197,13 @@ data: ['渚涘簲鍟�1', '渚涘簲鍟�2', '渚涘簲鍟�3', '渚涘簲鍟�4'] }, yAxis: [ - { - type: 'value', - axisLabel: { - formatter: '{value}%' - } + { + type: 'value', + axisLabel: { + formatter: '{value}%' } - ], + } + ], series: [ { name: '鍚堟牸鏁伴噺', @@ -207,6 +219,9 @@ } ] }; + /** + * 涓嶅悎鏍奸」鐩� + */ const option_unqualified2 = { legend: { orient: 'vertical', @@ -246,25 +261,54 @@ myChart1.setOption(option_qualified); myChart2.setOption(option_unqualified1); - if(this.type === 0){ + if (this.type === 0) { myChart3.setOption(option_unqualified2); } - if(this.type === 1){ + if (this.type === 1) { myChart3.setOption(option_unqualified2); + } + }, + methods: { + search() { + this.getTestSampleStatistics() + }, + dateHandle(){ + let data=JSON.parse(JSON.stringify(this.searchData)) + if(this.searchData.date.length!=0&&this.searchData.date !=[]){ + data.beginDate=dateFormat(this.searchData.date[0]) + data.endDate=dateFormat(this.searchData.date[1]) + } + data.date=null + return data + }, + async getSupplierList() { + let res = await getSupplierList() + res.data.forEach(item => { + this.supplier.push({ label: item.supplier, value: item.supplier }) + }) + }, + getTestSampleStatistics(){ + let param= this.dateHandle() + let res =getTestSampleStatistics(param) + }, + getSupplierNoPassStatistics(){ + let param= this.dateHandle() + getSupplierNoPassStatistics(param) } } } </script> <style lang="scss" scoped> -.content-main{ - height:100%; +.content-main { + height: 100%; width: 100%; - .top-bar{ + + .top-bar { position: absolute; width: 99%; top: 0; - left:0; + left: 0; z-index: 999; margin-top: 5px; margin-left: 9.5px; @@ -272,79 +316,95 @@ display: flex; justify-content: space-between; padding: 5px 24px 0px 24px; - transition: position 0.3s ease; - .el-form{ + transition: position 0.3s ease; + + .el-form { width: 100%; - .chooseMaterialBtn{ + + .chooseMaterialBtn { background-color: #fff; - border-color: rgba(192,196,204,0.5); + border-color: rgba(192, 196, 204, 0.5); color: gray; width: 220px; } } - .sermargin{ + + .sermargin { margin-right: 60px; } - .rightBtn{ - display:flex; - justify-content:end; + + .rightBtn { + display: flex; + justify-content: end; margin-right: 20px; margin-top: -40px; margin-bottom: -10px; } } + .top-bar.fixed { position: fixed; top: 0.45rem; left: 0.52rem; - width:93.8%; + width: 93.8%; } - .top-bar-copy{ + + .top-bar-copy { width: 100%; height: 12vh; } - .chart-content{ + + .chart-content { margin: 0px -15px; margin-bottom: 60px; - .qualified-wrapper{ + + .qualified-wrapper { // margin-top: 14vh; background-color: #fff; width: 100%; - height:50vh; + height: 50vh; } - .qualified{ + + .qualified { width: 100%; height: 400px; } - .unqualified{ + + .unqualified { margin-top: 10px; height: 50vh; - display:flex; + display: flex; justify-content: space-between; - .firstBox-wrapper{ + + .firstBox-wrapper { background-color: #fff; - width:49%; - .firstBox{ + width: 49%; + + .firstBox { width: 100%; height: 40vh; } } - .secondBox-wrapper{ - background-color:#fff; - width:49%; - .secondBox_header{ - display:flex; + + .secondBox-wrapper { + background-color: #fff; + width: 49%; + + .secondBox_header { + display: flex; justify-content: space-between; margin: 20px 20px; } - .secondBox{ + + .secondBox { width: 100%; height: 40vh; } } } } - .bottom{ + + .bottom { position: fixed; width: 95%; bottom: 0rem !important; @@ -352,7 +412,7 @@ margin: 0px -15px; padding: 20px 40px; z-index: 999; - display:flex; + display: flex; justify-content: end; background-color: #fff; } diff --git a/src/views/experiment/planAssignments/plan.vue b/src/views/experiment/planAssignments/plan.vue index 0d931cc..ee84390 100644 --- a/src/views/experiment/planAssignments/plan.vue +++ b/src/views/experiment/planAssignments/plan.vue @@ -18,6 +18,15 @@ padding: 15px; background-color: white; height: calc(100vh - 15vh); + overflow-y: auto; + } + + .order_num{ + border-radius: 1rem; + width: 35px; + height: 25px; + text-align: center; + margin-right: 8px; } </style> <style> @@ -28,6 +37,7 @@ .plan .cell { color: #333; + display: flex; } </style> @@ -51,6 +61,14 @@ <el-table-column type="index" width="50" label="搴忓彿"> </el-table-column> <el-table-column prop="date" label="鐢宠鍗曞彿"> + <template slot-scope="scope"> + <div style="display: flex;"> + <div v-if="scope.row.code=='01'" style="color: #3caaff;background-color: #eff5ff;" class="order_num">01</div> + <div v-else-if="scope.row.code=='02'" style="color: #57c981;background-color: #f1fbf4;" class="order_num">02</div> + <div v-else-if="scope.row.code=='03'" style="color: #dfa8fb;background-color: #faf2ff;" class="order_num">03</div> + <div>{{scope.row.date}}</div> + </div> + </template> </el-table-column> <el-table-column prop="name" label="妫�楠岀粨鏋�"> </el-table-column> @@ -60,9 +78,9 @@ <template slot-scope="scope"> <el-button size="mini" type="primary" v-if="isIfReport(scope.row)">涓婃姤</el-button> <el-button size="mini" type="warning" @click="openUpDia(scope.row)" - v-else-if="scope.row.insId==undefined&&scope.row.address==null">鍒嗛厤</el-button> + v-else-if="scope.row.code=='03'&&scope.row.insId==undefined&&scope.row.address==null">鍒嗛厤</el-button> <el-button size="mini" type="success" @click="openUpInsDia(scope.row)" - v-else-if="scope.row.insId==undefined&&scope.row.name==null">妫�楠�</el-button> + v-else-if="scope.row.code=='03'&&scope.row.insId==undefined&&scope.row.name==null">妫�楠�</el-button> </template> </el-table-column> </el-table> @@ -159,8 +177,15 @@ id: 34, date: '2016-05-01', name: null, - res: '[{"number": 1,"res": "涓嶅悎鏍�"},{"number": 2}]', - address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�' + res: '[{"number": 1,"res": "涓嶅悎鏍�"},{"number": 3,"res": "涓嶅悎鏍�"}]', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�', + children: [{ + id: 35, + date: 'hhh', + name: null, + res: '[{"number": 1},{"number": 2}]', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�' + }] }] }, { id: 2, @@ -200,11 +225,16 @@ methods: { selectDataList() { this.tableData.forEach(a => { - a.code = '[1]' + a.code = '01' if (a.children != undefined) { a.children.forEach(b => { - b.code = '[2]' - b.res = JSON.parse(b.res) + b.code = '02' + if (b.children != undefined) { + b.children.forEach(c => { + c.code = '03' + c.res = JSON.parse(c.res) + }) + } }) } }) @@ -252,4 +282,4 @@ } } } -</script> \ No newline at end of file +</script> diff --git a/src/views/experiment/reportAuditing/index.vue b/src/views/experiment/reportAuditing/index.vue index ad3c04e..0f4b6a3 100644 --- a/src/views/experiment/reportAuditing/index.vue +++ b/src/views/experiment/reportAuditing/index.vue @@ -23,17 +23,21 @@ </el-dropdown-menu> </el-dropdown> </el-form> - <el-form> - <el-button class="rightBtn" type="primary">瀹℃牳</el-button> - </el-form> </div> + + + + + + + <div class="library-table"> <div class="table-header"> <div class="search-bar"> <el-radio-group v-model="checkStatus" @change="handleRadioChange"> <el-radio-button>鍏ㄩ儴</el-radio-button> - <el-radio-button label="0">寰呮彁浜�</el-radio-button> - <el-radio-button label="2">寰呴�氳繃</el-radio-button> + <el-radio-button label="0">寰呴�氳繃</el-radio-button> + <el-radio-button label="2">閫氳繃</el-radio-button> </el-radio-group> <el-checkbox v-model="checked" style="margin-left: 20px" >浠呯湅鎴戠殑</el-checkbox @@ -79,7 +83,7 @@ <template slot-scope="scope"> <span> <el-tag type="warning">{{ - scope.row.status == 0 ? "寰呮彁浜�" : "寰呴�氳繃" + scope.row.status == 0 ? "寰呴�氳繃" : "閫氳繃" }}</el-tag> </span> </template></el-table-column @@ -93,8 +97,36 @@ type="text" size="small" @click="handleClick(scope.row)" - >鏌ョ湅璇︾粏</el-button - > + >鏌ョ湅璇︾粏 + </el-button> + <el-button type="text" size="small" @click="checkskip = true">瀹℃牳</el-button> + + <el-dialog + title="鍘熷璁板綍瀹℃牳" + :visible.sync="checkskip" + width="30%" + :before-close="handleClose"> + <el-form :model="form"> + <el-form-item label="璇烽�夋嫨瀹℃牳缁撴灉" :label-width="formLabelWidth"> + </el-form-item> + <el-row :gutter="20"> + <el-col :span="6" :offset="5"> + <!-- <el-button type="primary" style="background-color: rgb(208, 201, 192);">閫�鍥�</el-button> --> + <el-button style="background-color: rgb(206, 211, 216);">閫�鍥�</el-button> + </el-col> + <el-col :span="6" :offset="3"> + <!-- <el-button type="primary" style="background-color: rgb(181, 237, 125);">閫氳繃</el-button> --> + <el-button style="background-color: rgb(192, 236, 148);">閫氳繃</el-button> + </el-col> + </el-row> + + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="checkskip = false">鍙� 娑�</el-button> + <el-button type="primary" @click="checkskip= false">纭� 瀹�</el-button> + </div> + </el-dialog> + </template> </el-table-column> </el-table> @@ -127,6 +159,10 @@ total: 0, pageSize: 10, checked: true, + checkskip: false, + form:{}, + handleClose:'', + formLabelWidth: '120px' }; }, created() { @@ -157,6 +193,10 @@ this.checkStatus = undefined; this.getData(); }, + //瀹℃牳璺宠浆 + // checkskip() { + + // }, // 鏌ヨ鍒楄〃 async getData() { const params = { diff --git a/src/views/laboratory/measure/index.vue b/src/views/laboratory/measure/index.vue index eaa03d0..c32c063 100644 --- a/src/views/laboratory/measure/index.vue +++ b/src/views/laboratory/measure/index.vue @@ -205,67 +205,68 @@ </el-col> </div> <el-dialog class="measureForm" title="璁¢噺" :visible.sync="dialogVisible"> - <el-form label-position="top" ref="upmeasureForm" :model="measureUpInfo"> - <el-row :gutter="20"> - <el-col :span="24"> - <el-form-item label="妫�瀹氭湁鏁堟湡" prop="date" :rules="[{ required: true, message: '璇烽�夋嫨妫�瀹氭湁鏁堟湡', trigger: 'change' }]"> - <el-date-picker v-model="measureUpInfo.date" type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="12"> - <el-form-item label="涓嶇‘瀹氬害" prop="uncertainty" - :rules="[{ required: true, message: '璇峰~鍐欎笉纭畾搴�', trigger: 'blur' }]"> - <el-input placeholder="璇峰~鍐欎笉纭畾搴�" v-model="measureUpInfo.uncertainty" /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="缁撴灉" prop="result" :rules="[{ required: true, message: '璇烽�夋嫨缁撴灉', trigger: 'change' }]"> - <el-select v-model="measureUpInfo.result" clearable filterable :allow-create="true" placeholder="璇烽�夋嫨缁撴灉" - style="width:100%"> - <el-option v-for="item in result" :key="item.id" :label="item.label" :value="item.value" /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="24"> - <el-form-item label="鎬ц兘鎸囨爣"> - <el-input v-model="measureUpInfo.performanceIndex" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="24"> - <el-form-item label="澶囨敞"> - <el-input v-model="measureUpInfo.remarks" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="20"> - <el-col :span="24"> - <el-form-item label=""> - <el-upload class="upload-demo" action="#" :on-change="handleUpload" :auto-upload="false"> - <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> - </el-upload> - </el-form-item> - </el-col> - </el-row> - </el-form> - <span slot="footer" class="dialog-footer"> - <el-button type="primary" @click="addMeasure">纭� 瀹�</el-button> + <el-form label-position="top" ref="upmeasureForm" :model="measureUpInfo"> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="妫�瀹氭湁鏁堟湡" prop="date" + :rules="[{ required: true, message: '璇烽�夋嫨妫�瀹氭湁鏁堟湡', trigger: 'change' }]"> + <el-date-picker v-model="measureUpInfo.date" type="date" placeholder="閫夋嫨鏃ユ湡"> + </el-date-picker> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="涓嶇‘瀹氬害" prop="uncertainty" + :rules="[{ required: true, message: '璇峰~鍐欎笉纭畾搴�', trigger: 'blur' }]"> + <el-input placeholder="璇峰~鍐欎笉纭畾搴�" v-model="measureUpInfo.uncertainty" /> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="缁撴灉" prop="result" :rules="[{ required: true, message: '璇烽�夋嫨缁撴灉', trigger: 'change' }]"> + <el-select v-model="measureUpInfo.result" clearable filterable :allow-create="true" placeholder="璇烽�夋嫨缁撴灉" + style="width:100%"> + <el-option v-for="item in result" :key="item.id" :label="item.label" :value="item.value" /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="鎬ц兘鎸囨爣"> + <el-input v-model="measureUpInfo.performanceIndex" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label="澶囨敞"> + <el-input v-model="measureUpInfo.remarks" type="textarea" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="20"> + <el-col :span="24"> + <el-form-item label=""> + <el-upload class="upload-demo" action="#" :on-change="handleUploadupdated" :auto-upload="false"> + <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> + </el-upload> + </el-form-item> + </el-col> + </el-row> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="upMeasure">纭� 瀹�</el-button> - <el-button @click="dialogVisible=false">鍙� 娑�</el-button> - </span> - </el-dialog> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + </span> + </el-dialog> </div> </div> </template> <script> -import { getPlanPageList, getStandingPageList, getPlanMeasureInstrument, limitGetPlanMeasureRequest } from '@/api/laboratory/measure' +import { getPlanPageList, getStandingPageList, getPlanMeasureInstrument, limitGetPlanMeasureRequest, updateMetricalInformationInfo } from '@/api/laboratory/measure' import { default as Add } from "./Add.vue"; export default { components: { @@ -275,13 +276,16 @@ return { dialogVisible: false, tableIndex: null, - measureUpInfo:{ + measureUpInfo: { + id: null, + code: null, result: null, date: null, uncertainty: null, performanceIndex: null, remarks: null, - file: null + file: null, + termValidity: null }, result: [{ label: '鍚堟牸', @@ -335,15 +339,35 @@ // this.getPlanPageList() }, methods: { - upResult(){ - this.measureData[this.tableIndex].result=this.resultUp - + upResult() { + this.measureData[this.tableIndex].result = this.resultUp + + }, + async upMeasure() { + let res = await updateMetricalInformationInfo(this.measureUpInfo) + if (res) { + this.$message({ + message: '鎿嶄綔鎴愬姛锛�', + type: 'success' + }); + this.limitGetPlanMeasureInstrument() + this.dialogVisible = false + } + }, + handleUploadupdated() { + }, measureUp(scope) { - console.log(scope); this.dialogVisible = true - this.tableIndex=scope.$index - this.measureUpInfo.result=scope.row.result + this.tableIndex = scope.$index + this.measureUpInfo.result = scope.row.result + this.measureUpInfo.code = scope.row.code + this.measureUpInfo.date = scope.row.endDate + this.measureUpInfo.id = scope.row.imId + this.measureUpInfo.uncertainty = scope.row.uncertainty + this.measureUpInfo.performanceIndex = scope.row.performanceIndex + this.measureUpInfo.remarks = scope.row.remarks + this.measureUpInfo.termValidity = scope.row.termValidity }, measureAdd() { let add = this.$refs.add.add() @@ -357,7 +381,6 @@ } }, async handleSizeChangePlan(num) { - console.log(num); this.pageSizePlan = num await this.limitGetPlanMeasureInstrument() }, @@ -376,7 +399,6 @@ currentPage: this.currentPagePlan, pageSize: this.pageSizePlan } - console.log(param); let res = await limitGetPlanMeasureRequest(param) this.totalPlan = res.data.taotal this.measureData = res.data.list @@ -390,7 +412,6 @@ }, async getPlanAndInfoAndIns(id) { let res = await getPlanMeasureInstrument({ "id": id, "currentPage": this.currentPagePlan, "pageSize": this.pageSize }); - console.log(res); for (const key in res.data.list) { this.planInfo[key] = res.data.list[key] } @@ -411,7 +432,6 @@ }, blurSearch() { if (this.radioValue === 1) { - console.log("璁″垝"); } }, handleClose() { @@ -430,7 +450,6 @@ currentPage: this.currentPage, pageSize: this.pageSize, code: this.searchData.code, name: this.searchData.name, unit: this.searchData.measureunit } - console.log(param); const res = await getStandingPageList(param) this.measureLedgerTable = res.data.records this.total = res.data.total @@ -478,7 +497,6 @@ currentPage: this.currentPage, pageSize: this.pageSize, code: this.searchData.code, name: this.searchData.name, unit: this.searchData.measureunit } - console.log(param); const res = await getPlanPageList(param) res.data.list.forEach(item => { item.palanDate = item.beginTime + " ~ " + item.endTime @@ -487,7 +505,6 @@ this.total = res.data.total }, async lookMeasurement(code) { - console.log(code); }, } } diff --git a/src/views/message/message/index.vue b/src/views/message/message/index.vue index ba69703..5e272a3 100644 --- a/src/views/message/message/index.vue +++ b/src/views/message/message/index.vue @@ -1,13 +1,253 @@ <template> - <div>娑堟伅</div> + <div class="content-main"> + <div class="top-bar"> + <el-form ref="form" :inline="true" :model="searchData"> + <el-form-item label="鏍囬:" class="sermargin"> + <el-input + v-model="searchData.title" + class="input-form" + placeholder="璇疯緭鍏ユ爣棰�" + > + </el-input> + </el-form-item> + <el-form-item label="鍐呭:" style="margin-right: 30px;"> + <el-input + v-model="searchData.content" + class="input-form" + placeholder="璇疯緭鍏ュ唴瀹�" + > + </el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="search">鏌ヨ</el-button> + <el-button type="primary" plain @click="reset">閲嶇疆</el-button> + </el-form-item> + </el-form> + <el-form> + <el-button class="deleteBtn" plain type="primary" @click="deleteMessage" >鍒犻櫎</el-button> + <el-button type="primary" @click="readMessage" style="width: 110px;" >鏍囦负宸茶</el-button> + </el-form> + </div> + <div class="library-table"> + <div class="table-header"> + <el-radio-group v-model="radioValue" @change="radioclick"> + <el-radio-button v-for="item in conditionsOptions" :key="item.value" :label="item.value"> + {{ item.label }} + </el-radio-button> + </el-radio-group> + </div> + <div class="table-box"> + <el-table + ref="messageTable" + :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="messageTable" + @selection-change="handleSelectionChange" + style="width: 100%" + > + <el-table-column + type="selection" + min-width="10%" + /> + <el-table-column + prop="title" + label="鏍囬" + min-width="12%" + /> + <el-table-column + prop="content" + label="鍐呭" + min-width="12%" + /> + <el-table-column + prop="level" + label="绛夌骇" + min-width="12%" + /> + <el-table-column + prop="type" + label="绫诲瀷" + min-width="8%" + /> + <el-table-column + prop="state" + label="鐘舵��" + min-width="12%"> + <template slot-scope="scope"> + <span v-if="scope.row.state === 1" style="color: red;">鏈</span> + <span v-if="scope.row.state === 2" style="color: green;">宸茶</span> + </template> + </el-table-column> + <el-table-column + prop="sender" + label="鍙戜欢浜�" + min-width="8%" + /> + <el-table-column + prop="create_time" + label="鍒涘缓鏃堕棿" + min-width="12%" + /> + <el-table-column + label="鎿嶄綔" + min-width="10%" + > + <template slot-scope="scope"> + <el-button type="text" size="small" @click="deleteRow(scope.row)">鍒犻櫎</el-button> + <el-button type="text" size="small" @click="readRow(scope.row)">鏍囦负宸茶</el-button> + </template> + </el-table-column> + </el-table> + <!-- 鍒嗛〉鍣� --> + <div> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="currentPage" + :page-sizes="[5, 10, 15, 20]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </div> + </div> + + </div> + + </div> </template> <script> export default { + data(){ + return { + searchData: { + title: '', + content: '' + }, + radioValue: 0, + conditionsOptions: [ + { + label: '鍏ㄩ儴', + value: 0 + }, + { + label: '鏈', + value: 1 + }, + { + label: '宸茶', + value: 2 + } + ], + selectionRows:[], + messageTable:[], + currentPage:1, + pageSize: 5, + total:10, + + } + }, + created(){ + + }, + methods: { + deleteMessage(){ + console.log(this.selectionRows) + }, + readMessage(){ + console.log(this.selectionRows) + }, + // 鎹曡幏琛ㄦ牸閫夋嫨鐨勬暟鎹� + handleSelectionChange(selection){ + this.selectionRows = selection + }, + // 鏍囪宸茶 + readRow(row){ + console.log(row) + }, + // 鍒犻櫎 + deleteRow(row){ + console.log(row) + }, + radioclick(){ + console.log(this.radioValue) + }, + handleSizeChange(val){ + console.log(`褰撳墠姣忛〉${val}鏉℃暟鎹甡) + }, + handleCurrentChange(val){ + console.log(`褰撳墠鏄${val}椤礰) + } + } } </script> <style lang="scss" scoped> +.content-main{ + width: 100%; + .top-bar{ + margin: -25px -15px; + padding: 5px 24px 0px 24px; + display: flex; + justify-content: space-between; + background-color: #fff; + .sermargin{ + margin-right: 60px; + } + .deleteBtn{ + background-color: #fff; + border: 1px solid rgb(225, 222, 222); + color: rgb(184, 182, 182); + } + .deleteBtn:active { + outline: none; /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */ + box-shadow: 0 0 4px rgb(142, 141, 141); /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */ + } + .deleteBtn:hover { + outline: none; /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */ + background-color: rgb(233, 233, 233); /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */ + } + .deleteBtn:focus { + outline: none; /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */ + background-color: rgb(233, 233, 233); /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */ + } + } + .library-table{ + background-color: #fff; + flex: 1; + margin: 0px -15px; + margin-top: 40px; + 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: 0px; + flex: 1; + background: #fff; + /* padding: 20px 20px 10px 20px; */ + display: flex; + flex-direction: column; + .el-table { + flex: 1; + } + >div:nth-child(2){ + display: flex; + justify-content: end; + margin: 10px 0; + } + } + } +} </style> diff --git a/src/views/message/toDo/index.vue b/src/views/message/toDo/index.vue index 135a43e..ca3ef41 100644 --- a/src/views/message/toDo/index.vue +++ b/src/views/message/toDo/index.vue @@ -1,13 +1,235 @@ <template> - <div>寰呭姙</div> + <div class="content-main"> + <div class="top-bar"> + <el-form ref="form" :inline="true" :model="searchData"> + <el-form-item label="鏍囬:" class="sermargin"> + <el-input + v-model="searchData.title" + class="input-form" + placeholder="璇疯緭鍏ユ爣棰�" + > + </el-input> + </el-form-item> + <el-form-item label="鍐呭:" style="margin-right: 30px;"> + <el-input + v-model="searchData.content" + class="input-form" + placeholder="璇疯緭鍏ュ唴瀹�" + > + </el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="search">鏌ヨ</el-button> + <el-button type="primary" plain @click="reset">閲嶇疆</el-button> + </el-form-item> + </el-form> + <el-form> + <el-button class="deleteBtn" plain type="primary" @click="deleteMessage" >鍒犻櫎</el-button> + <el-button type="primary" @click="readMessage" style="width: 110px;" >鏍囦负宸茶</el-button> + </el-form> + </div> + <div class="library-table"> + <div class="table-header"> + <el-radio-group v-model="radioValue" @change="radioclick"> + <el-radio-button v-for="item in conditionsOptions" :key="item.value" :label="item.value"> + {{ item.label }} + </el-radio-button> + </el-radio-group> + </div> + <div class="table-box"> + <el-table + ref="toDoTable" + :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="toDoTable" + @selection-change="handleSelectionChange" + style="width: 100%" + > + <el-table-column + prop="sender" + label="鍙戜欢浜�" + min-width="8%" + /> + <el-table-column + prop="title" + label="鏍囬" + min-width="13%" + /> + <el-table-column + prop="todo" + label="浠e姙鍐呭" + min-width="20%" + /> + <el-table-column + prop="group" + label="鍒嗙粍" + min-width="15%" + /> + <el-table-column + prop="level" + label="绛夌骇" + min-width="8%" + /> + <el-table-column + prop="create_time" + label="鍒涘缓鏃堕棿" + min-width="12%" + /> + <el-table-column + prop="deadline" + label="瑕佹眰瀹屾垚鏃堕棿" + min-width="12%" + /> + <el-table-column + prop="state" + label="鐘舵��" + min-width="12%" + /> + </el-table> + <!-- 鍒嗛〉鍣� --> + <div> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="currentPage" + :page-sizes="[5, 10, 15, 20]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total"> + </el-pagination> + </div> + + </div> + + </div> + + </div> </template> <script> export default { + data(){ + return { + searchData: { + title: '', + content: '' + }, + radioValue: 0, + conditionsOptions: [ + { + label: '鍏ㄩ儴', + value: 0 + }, + { + label: '鏈鐞�', + value: 1 + }, + { + label: '宸插鐞�', + value: 2 + }, + { + label: '宸茶秴鏈�', + value: 3 + } + ], + toDoTable:[], + selectionRows:[], + currentPage:1, + pageSize: 5, + total:100, + + } + }, + methods: { + deleteMessage(){ + console.log(this.selectionRows) + }, + readMessage(){ + console.log(this.selectionRows) + }, + // 鎹曡幏琛ㄦ牸閫夋嫨鐨勬暟鎹� + handleSelectionChange(selection){ + this.selectionRows = selection + }, + radioclick(){ + console.log(this.radioValue) + }, + handleSizeChange(val){ + console.log(`褰撳墠姣忛〉${val}鏉℃暟鎹甡) + }, + handleCurrentChange(val){ + console.log(`褰撳墠鏄${val}椤礰) + } + } } </script> <style lang="scss" scoped> +.content-main{ + width: 100%; + .top-bar{ + margin: -25px -15px; + padding: 5px 24px 0px 24px; + display: flex; + justify-content: space-between; + background-color: #fff; + .sermargin{ + margin-right: 60px; + } + .deleteBtn{ + background-color: #fff; + border: 1px solid rgb(225, 222, 222); + color: rgb(184, 182, 182); + } + .deleteBtn:active { + outline: none; /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */ + box-shadow: 0 0 4px rgb(142, 141, 141); /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */ + } + .deleteBtn:hover { + outline: none; /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */ + background-color: rgb(233, 233, 233); /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */ + } + .deleteBtn:focus { + outline: none; /* 鍘婚櫎鎸夐挳鐨勯粯璁ょ偣鍑绘椂鐨勫杈规 */ + background-color: rgb(233, 233, 233); /* 娣诲姞鐐瑰嚮鏃剁殑闃村奖鏁堟灉锛岄鑹茶涓虹伆鑹� */ + } + } + .library-table{ + background-color: #fff; + flex: 1; + margin: 0px -15px; + margin-top: 40px; + 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: 0px; + flex: 1; + background: #fff; + /* padding: 20px 20px 10px 20px; */ + display: flex; + flex-direction: column; + .el-table { + flex: 1; + } + >div:nth-child(2){ + display: flex; + justify-content: end; + margin: 10px 0; + } + } + } +} </style> diff --git a/src/views/standardLibrary/index.vue b/src/views/standardLibrary/index.vue index 7e30213..11a71b7 100644 --- a/src/views/standardLibrary/index.vue +++ b/src/views/standardLibrary/index.vue @@ -1,15 +1,12 @@ <template> <div class="standard-library-main"> <div class="content-main"> - <div class="library-bom" style="width: 300px;"> - <el-input - v-model="filterText" - placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" - /> + <div class="library-bom" style="width: 300px"> + <el-input v-model="filterText" placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" /> <el-button type="text">鍏ㄩ儴</el-button> <el-tree ref="tree" - style="width: 100%;" + style="width: 100%" class="filter-tree" :data="standardTree" :props="defaultProps" @@ -21,11 +18,12 @@ @node-click="nodeClick" /> </div> - <div class="library-table" style="width: 80%;"> + <div class="library-table" style="width: 80%"> <div class="table-header"> <div class="search-bar"> <el-form ref="form" :inline="true" :model="searchData"> <el-form-item> + <span>鍘熸潗鏂欑紪鐮侊細</span> <el-input v-model="searchData.keyword" placeholder="璇疯緭鍏ヤ汉鍛樺悕绉�/鍘熸潗鏂欏悕绉�" @@ -34,59 +32,116 @@ </el-input> </el-form-item> <el-form-item> - <el-button type="primary" @click="filteredTableData">鏌ヨ</el-button> - <el-button type="primary" plain @click="resetBtn">閲嶇疆</el-button> + <span>鍘熸潗鏂欏悕绉帮細</span> + <el-input + v-model="searchData.keyword" + placeholder="璇疯緭鍏ュ師鏉愭枡鍚嶇О" + > + <i slot="prefix" class="el-input__icon el-icon-search" /> + </el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="filteredTableData" + >鏌ヨ</el-button + > + <el-button type="primary" plain @click="resetBtn" + >閲嶇疆</el-button + > </el-form-item> </el-form> </div> <div class="serve-btn"> - <el-button type="primary" icon="el-icon-plus" @click="addTreeFormVisible = true">鏂板</el-button> + <el-button + type="primary" + icon="el-icon-plus" + @click="addTreeFormVisible = true" + >鏂板</el-button + > + <el-button + class="top_div_button" + icon="el-icon-delete-solid" + size="small" + style="color: #00a5ff" + @click="deleteListClick" + >鍒犻櫎</el-button + > </div> </div> <div class="table-box"> - <el-table + <!-- <el-table ref="tableData" 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'}" + :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="搴忓彿" - width="100px" - > - <template v-if="scope.row.index+1" slot-scope="scope"> - {{ scope.row.index+1 }} + <el-table-column type="index" label="搴忓彿" width="100px"> + <template v-if="scope.row.index + 1" slot-scope="scope"> + {{ scope.row.index + 1 }} </template> </el-table-column> - <el-table-column - prop="father" - label="鍚嶇О" - width="320px" - > + <el-table-column 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 }} + <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" /> + <el-table-column prop="required" label="鏍囧噯" width="300px" /> + <el-table-column prop="internal" label="鍐呮帶鍒�" width="300px" /> + </el-table> --> + <el-table + :data="tableData" + style="width: 100%; margin-bottom: 20px" + row-key="name" + border + height="calc(100vh - 250px)" + default-expand-all + ref="multipleTable" + @select="selectTr" + @select-all="selectAll" + :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" + > + <el-table-column type="selection" label="搴忓彿"> </el-table-column> + <el-table-column + type="index" + width="50px" + label="搴忓彿" + ></el-table-column> + <el-table-column label="椤圭洰鍚嶇О" sortable> + <template scope="scope"> + <el-tag + ><div + class="firstDiv" + :style="`color: ${ + scope.row.code == '[1]' ? '#16a7ff' : '#58c173' + }`" + > + {{ scope.row.code == "[1]" ? "01" : "02" }} + </div> + <span style="color: black">{{ scope.row.name }}</span></el-tag + > </template> </el-table-column> <el-table-column prop="unit" label="鍗曚綅" - width="300px" - /> - <el-table-column - prop="required" - label="鏍囧噯" - width="300px" - /> - <el-table-column - prop="internal" - label="鍐呮帶鍒�" - width="300px" - /> + sortable + ></el-table-column> </el-table> <!-- 寮瑰嚭琛ㄥ崟椤� --> <div> @@ -94,7 +149,7 @@ </div> <div> <!-- 鍒嗛〉鍣� --> - <el-pagination + <!-- <el-pagination :current-page="pageParams.pageNo" :page-sizes="[10, 15, 20, 25]" :page-size="pageParams.pageSize" @@ -102,29 +157,44 @@ :total="pageParams.total" @size-change="handleSizeChange" @current-change="handleCurrentChange" - /> + /> --> </div> </div> </div> </div> - <el-dialog class="addTree" title="娣诲姞鎸囨爣" width="28%" :visible.sync="addTreeFormVisible" @close="closeAddTreeForm"> + <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 }" + :props="{ ...defaultProps, checkStrictly: true }" clearable @change="changeCascader" /> </el-form-item> - <el-form-item v-show="addTreeForm.addTypeArr.length<2" label="鐗╂枡鍚嶇О"> + <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-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-form-item + v-show="addTreeForm.addTypeArr.length < 4" + label="瑙勬牸鍨嬪彿" + > <el-input v-model="addTreeForm.specificationsName" /> </el-form-item> </el-form> @@ -137,99 +207,110 @@ </template> <script> -import { getMaterialList, getProductList, getProductSonList, - addMaterial, addStandards, addSpecifications -} from '@/api/standardLibrary' +import { + getMaterialList, + getProductList, + getProductSonList, + addMaterial, + addStandards, + addSpecifications, + deleteListApi, +} from "@/api/standardLibrary"; + +import { selectproductModelApi } from "@/api/basicData/index"; export default { data() { return { + deleteList: [], addTreeFormVisible: false, - filterText: '', + filterText: "", // 鏍囧噯搴揵om鏍� standardTree: [], // bom鐨�,榛樿閰嶇疆鍊� defaultProps: { - children: 'children', - label: 'name', - value: 'id' + children: "children", + label: "name", + value: "id", }, // 鏌ヨ鏉′欢 searchData: { - keyword: '' + keyword: "", }, - tableData: [ - ], + tableData: [], oldtableData: [], // 鍒嗛〉鍙傛暟 pageParams: { pageNo: 1, pageSize: 12, - total: 0 + total: 0, }, - tablespecifications: [ - ], + tablespecifications: [], // 閫変腑鐨勮妭鐐规暟鎹� selectData: {}, formTypeOptions: [], addTreeForm: { - addTypeArr: [] - } - } + addTypeArr: [], + }, + }; }, watch: { filterText(val) { - this.$refs.tree.filter(val) - } + this.$refs.tree.filter(val); + }, }, created() { - this.getStandardTree() + this.getStandardTree(); }, methods: { filterNode(value, data) { - if (!value) return true - return data.label.indexOf(value) !== -1 + if (!value) return true; + return data.label.indexOf(value) !== -1; }, // 鑾峰彇bom鏍戠殑鏍囧噯鏁版嵁 async getStandardTree() { - const { data } = await getMaterialList() - console.log(data) - this.standardTree = data.map(item => { - let name = null + const { data } = await getMaterialList(); + console.log(data); + this.standardTree = data.map((item) => { + let name = null; switch (item.type) { case 1: - name = '鍘熸潗鏂�' - break + name = "鍘熸潗鏂�"; + break; case 2: - name = '鍗婃垚鍝�' - break + name = "鍗婃垚鍝�"; + break; case 3: - name = '鎴愬搧' - break + name = "鎴愬搧"; + break; } return { - ...item, id: item.type, name - } - }) - console.log(this.standardTree) + ...item, + id: item.type, + name, + }; + }); + console.log(this.standardTree); // formTypeOptions // 榛樿绗竴涓洓绾ц妭鐐规悳绱紝鏂板閰嶇疆椤� - const treeOptions = JSON.parse(JSON.stringify(this.standardTree)) - this.getDefault(treeOptions, 0) - console.log(treeOptions) - this.formTypeOptions = treeOptions + 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() + 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) + // 鏈夊瓙鑺傜偣 + this.getDefault(item.children, index + 1); if (index === 2) { - item.children = null + item.children = null; } } // else { @@ -247,117 +328,138 @@ // console.log('children' in data) // 鏄瓙鑺傜偣 if (node.level === 4) { - // console.log(data, node) + console.log(data, node); // 瀛樹笅閫変腑鑺傜偣 - this.selectData = data + this.selectData = data; // eslint-disable-next-line prefer-const - this.getTableByClick(data) + this.getTableByClick(data); } - if (!('children' in data)) { - return + if (!("children" in data)) { + return; } }, 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 }) + 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 })) + 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 + const res = await getProductSonList({ fatherName: item.father }); + item.children = res.data; + item.id = item.father; } } - this.tableData = row + this.tableData = row; }, specificationDetails(row) { // 璺宠浆浜у搧瑙勬牸璇︽儏椤� - this.$router.push(`/standardLibrary/SpecificationDetails/${row.id}`) + this.$router.push(`/standardLibrary/SpecificationDetails/${row.id}`); }, handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉) - this.pageParams.pageSize = val - this.getTableByClick(this.selectData) + console.log(`姣忛〉 ${val} 鏉); + this.pageParams.pageSize = val; + this.getTableByClick(this.selectData); }, handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`) - this.pageParams.pageNo = val - this.getTableByClick(this.selectData) + console.log(`褰撳墠椤�: ${val}`); + this.pageParams.pageNo = val; + this.getTableByClick(this.selectData); }, // 鏌ヨ鎸夐挳 filteredTableData() { - this.oldtableData = this.tableData + this.oldtableData = this.tableData; // 鏍规嵁杈撳叆鐨勫叧閿瓧寰楀埌杩囨护鍚庣殑鏁版嵁锛屽鏋滄湁灏辨妸杩囨护鍚庣殑鏁版嵁灞曠ず鍦ㄩ〉闈笂 - const filteredtabledata = this.tableData.filter(item => { - return item.name.includes(this.searchData.keyword) - }) + const filteredtabledata = this.tableData.filter((item) => { + return item.name.includes(this.searchData.keyword); + }); // console.log('filteredtabledata', filteredtabledata) - this.tableData = filteredtabledata + this.tableData = filteredtabledata; }, // 閲嶇疆鎸夐挳 resetBtn() { - this.searchData.keyword = '' - this.tableData = this.oldtableData + this.searchData.keyword = ""; + this.tableData = this.oldtableData; }, renderContent(h, { node, data, store }) { // console.log('data', data) // console.log('node', node) // 鍒ゆ柇鏄惁鏄埗鑺傜偣鎴栨枃浠跺す - const isFolder = ('children') in data + const isFolder = "children" in data; return ( - <span class='tree-node'> + <span class="tree-node"> {isFolder ? ( <i - class={node.expanded ? 'el-icon-folder-opened blue-folder' : 'el-icon-folder blue-folder'} + class={ + node.expanded + ? "el-icon-folder-opened blue-folder" + : "el-icon-folder blue-folder" + } ></i> ) : ( - <i class='el-icon-document blue-folder'></i> + <i class="el-icon-document blue-folder"></i> )} - <div class='tree-lable'>[{node.level}] {data.name}</div> + <div class="tree-lable"> + [{node.level}] {data.name} + </div> </span> - ) + ); }, async subAddTreeForm() { - this.addTreeFormVisible = false - console.log(this.addTreeForm.addTypeArr.length) - let res = null + 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 + 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 + 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 + console.log(this.addTreeForm); + res = await addSpecifications({ + ...this.addTreeForm, + standardId: this.addTreeForm.addTypeArr.pop(), + }); + break; } } catch (error) { - this.$message.error('娣诲姞澶辫触') + this.$message.error("娣诲姞澶辫触"); } - console.log(res) - this.$message.success('娣诲姞鎴愬姛') - this.addTreeForm = {} - this.getStandardTree() - this.getTableByClick(this.selectData) + console.log(res); + this.$message.success("娣诲姞鎴愬姛"); + this.addTreeForm = {}; + this.getStandardTree(); + this.getTableByClick(this.selectData); }, changeCascader(data) { - console.log(data) - this.addTreeForm.addTypeArr = data + console.log(data); + this.addTreeForm.addTypeArr = data; }, closeAddTreeForm() { this.addTreeForm = { - addTypeArr: [] - } - console.log(this.addTreeForm) - } + addTypeArr: [], + }; + console.log(this.addTreeForm); + }, /** 琛ㄦ牸鏌愯鐐瑰嚮浜嬩欢 */ // handleRowClick(row, column, event) { // // 鍒ゆ柇褰撳墠琛屾槸鍚︽湁瀛愰泦锛岃嫢娌℃湁鍒欑粨鏉熷鐞� @@ -365,15 +467,140 @@ // if (!row.children) return // this.$refs.tableData.toggleRowExpansion(row) // } - } -} + selectProductModelTable() { + selectproductModelApi(this.params).then((res) => { + res.data.forEach((i) => { + if (i.name === undefined) { + i.name = i.children[0].name; + i.unit = i.children[0].unit; + i.id = i.children[0].id; + i.edit = true; + delete i.children; + } + }); + this.tableData = res.data; + this.selectDataList(); + }); + }, + selectDataList() { + this.tableData.forEach((a) => { + a.code = "[1]"; + if (a.children != undefined) { + a.children.forEach((b) => { + b.code = "[2]"; + }); + } + }); + }, + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 + // 鍏ㄩ��/鍙栨秷閫夋搷浣� + selectAll(val) { + this.isAllSelect = !this.isAllSelect; + let data = this.tableData; + this.toggleSelect(data, this.isAllSelect, "all"); + // 鑷畾涔� + if (this.isAllSelect) { + val.forEach((i) => { + let isExist = false; + this.deleteList.findIndex((c) => { + if (c === i.id) { + isExist = true; + } + }); + if (!isExist && i.id !== undefined) { + this.deleteList.push(i.id); + } + }); + } else { + this.deleteList.splice(0, this.deleteList.length); + } + // 鑷畾涔夌粨鏉� + }, + //閫夋嫨鏌愯 + selectTr(selection, row) { + this.$set(row, "isChecked", !row.isChecked); + this.$nextTick(() => { + this.isAllSelect = row.isChecked; + this.toggleSelect(row, row.isChecked, "tr"); + }); + + if (row.isChecked === true) { + if (row.children !== undefined) { + row.children.forEach((i) => { + this.deleteList.push(i.id); + }); + } else { + this.deleteList.push(row.id); + } + } else if (row.isChecked === false) { + if (row.children !== undefined) { + row.children.forEach((i) => { + this.deleteList.findIndex((c, index) => { + if (c === i.id) { + this.deleteList.splice(index, 1); + return; + } + }); + }); + } + this.deleteList.findIndex((c, index) => { + if (c === row.id) { + this.deleteList.splice(index, 1); + return; + } + }); + } + }, + //閫掑綊瀛愮骇 + toggleSelect(data, flag, type) { + if (type === "all") { + if (data.length > 0) { + data.forEach((item) => { + this.toggleSelection(item, flag); + if (item.children && item.children.length > 0) { + this.toggleSelect(item.children, flag, type); + } + }); + } + } else { + if (data.children && data.children.length > 0) { + data.children.forEach((item) => { + item.isChecked = !item.isChecked; + this.$refs.multipleTable.toggleRowSelection(item, flag); + this.toggleSelect(item, flag, type); + }); + } + } + }, + //鏀瑰彉閫変腑 + toggleSelection(row, flag) { + this.$set(row, "isChecked", flag); + this.$nextTick(() => { + if (flag) { + this.$refs.multipleTable.toggleRowSelection(row, flag); + } else { + this.$refs.multipleTable.clearSelection(); + } + }); + }, + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 + deleteListClick() { + deleteListApi(this.deleteList).then((res) => { + this.$message({ + message: res.message, + type: "success", + }); + this.selectProductModelTable(); + }); + }, + }, +}; </script> <style lang="scss" scoped> - // el-table琛ㄦ牸瀵归綈 ::v-deep .el-table__row:not([class*="el-table__row--level-"]) { - td:nth-child(2){ + td:nth-child(2) { padding-left: 23px !important; } } @@ -384,49 +611,50 @@ // width: 1000px; // height: 800px; // } -.standard-library-main{ +.standard-library-main { width: 100vh; height: 100%; -// 椤甸潰涓績鍐呭鍖哄煙 - .content-main{ + // 椤甸潰涓績鍐呭鍖哄煙 + .content-main { display: flex; height: 100%; min-height: calc(100vh - 88px); max-height: calc(100vh - 88px); padding: 15px; - >div{ + > div { padding: 20px; background: #fff; } - .library-bom{ + .library-bom { // padding-right: 10px; width: 300px; - // height: 100%; - max-height: 100%; + height: 100%; + // max-height: 100%; // margin-right: 12px; // overflow-y: scroll; .el-tree { - // margin-top: + // margin-top: width: 100%; - ::v-deep .el-tree-node__content{ + overflow: scroll; + ::v-deep .el-tree-node__content { height: 24px !important; font-size: 18px; // display: inline-block !important; padding: 2px; // color: #333; - .tree-node{ + .tree-node { display: flex; align-items: center; height: 20px; } - .tree-lable{ + .tree-lable { height: 100%; line-height: 23px; font-size: 12px; padding-left: 8px; } - .blue-folder{ - color: rgb(64, 158, 255) + .blue-folder { + color: rgb(64, 158, 255); } } } @@ -453,7 +681,7 @@ // } // } } - .library-table{ + .library-table { // height: 100%; width: 170vh; max-height: 100%; @@ -462,20 +690,20 @@ display: flex; flex-direction: column; // overflow-y: scroll; - .table-header{ + .table-header { display: flex; justify-content: space-between; - .el-form-item{ + .el-form-item { margin-bottom: 30px !important; } } - .table-box{ - flex: 1; - background: #fff; - // padding: 20px 20px 10px 20px; - display: flex; - flex-direction: column; - justify-content: space-between; + .table-box { + flex: 1; + background: #fff; + // padding: 20px 20px 10px 20px; + display: flex; + flex-direction: column; + justify-content: space-between; // .el-table { // flex: 1; @@ -491,11 +719,11 @@ } } } - .addTree{ - .el-form-item{ + .addTree { + .el-form-item { margin-bottom: 10px; } - .el-cascader{ + .el-cascader { width: 100%; } } -- Gitblit v1.9.3