From e7bc43d27d15379200f59719ef9e525b5d8d6567 Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期二, 22 八月 2023 18:09:00 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.110.209:9001/r/lims-before --- src/views/experiment/reportAuditing/index.vue | 56 src/views/basicData/index.vue | 551 +++++++++++ src/views/experiment/inspectionApplication/index.vue | 140 +- src/views/standardLibrary/index.vue | 586 ++++++++--- src/views/experiment/planAssignments/plan.vue | 46 src/api/home.js | 37 src/views/CNAS/nonConformanceManage/index.vue | 213 ++++ src/router/index.js | 23 src/styles/element-ui.scss | 5 src/styles/sidebar.scss | 28 .env.staging | 2 .env.development | 2 src/api/basicData/index.js | 75 + src/views/home/index.vue | 458 +++++++- src/views/message/message/index.vue | 242 ++++ src/main.js | 5 src/layout/components/AppMain.vue | 2 src/views/message/toDo/index.vue | 224 ++++ src/assets/404_images/bg.png | 0 src/views/experiment/inspectionApplication/Viewdetails/index.vue | 280 +++++ 20 files changed, 2,618 insertions(+), 357 deletions(-) diff --git a/.env.development b/.env.development index e5e7b7a..9ad2460 100644 --- a/.env.development +++ b/.env.development @@ -2,4 +2,4 @@ ENV = 'development' # base api -VUE_APP_BASE_API = 'http://localhost:1234/' +VUE_APP_BASE_API = 'http://192.168.110.87:1234/' 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/home.js b/src/api/home.js new file mode 100644 index 0000000..7c33bcc --- /dev/null +++ b/src/api/home.js @@ -0,0 +1,37 @@ +import request from '@/utils/request' + +//鑾峰彇宸叉楠宼op3 +export function getVerifiedTop3(params) { + return request({ + url: '/home/checktop3', + method: 'get', + params + }) +} + +//鑾峰彇鏈楠宼op4 +export function getUncheckedTop4(params) { + return request({ + url: '/home/unchecktop4', + method: 'get', + params + }) +} + +//鑾峰彇鍘熸潗鏂欎笌鎴愬搧鍚堟牸鐜� +export function getMatAndFinshQualified(params) { + return request({ + url: '/home/qualified', + method: 'get', + params + }) +} + +//鑾峰彇妫�楠屼笌鏈楠岀殑鍗曞瓙涓庨」鐩殑鏁伴噺 +export function getCheckAndProjectNum(params) { + return request({ + url: '/home/checkProjectNum', + method: 'get', + params + }) +} \ No newline at end of file diff --git a/src/assets/404_images/bg.png b/src/assets/404_images/bg.png new file mode 100644 index 0000000..412689d --- /dev/null +++ b/src/assets/404_images/bg.png Binary files differ 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/main.js b/src/main.js index e996df0..beb2705 100644 --- a/src/main.js +++ b/src/main.js @@ -14,6 +14,11 @@ import store from './store' import router from './router' +//寮曞叆echarts +import echarts from 'echarts' +Vue.prototype.$echarts = echarts + + import '@/icons' // icon import '@/permission' // permission control 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/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/home/index.vue b/src/views/home/index.vue index f876061..1730a72 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -1,96 +1,406 @@ <template> <div class="home-main"> - <div class="home-header-welcome"> - <div class="welcome-left"> - <div class="left-avatar" /> - <div class="left-tips"> - <div>Hi jack锛屾杩庝娇鐢╖T-LIMS</div> - <div>浠婂ぉ鏄�2023骞�07鏈�07鏃� 鏄熸湡浜�</div> - </div> + <div class="content-main"> + <div class="echart1"> + <el-row :gutter="10"> + <el-col :span="16"> + <el-card class="box-card" :body-style="{ padding: '0px 10px',height:'120px' }"> + <p style="font-size: 10px;margin-left: 10px;">妫�楠屾�绘暟缁熻</p> + <el-row :gutter="10"> + <el-col :span="6" > + <img :src="imgSrc" /> + <div class="card-text"> + <h6>妫�楠屽崟宸叉楠屾�绘暟</h6> + <p>{{insNum}}</p> + </div> + </el-col> + <el-col :span="6"> + <img :src="imgSrc"/> + <div class="card-text"> + <h6>妫�楠屽崟鏈楠屾�绘暟</h6> + <p>{{insUnNum}}</p> + </div> + </el-col> + <el-col :span="6"> + <img :src="imgSrc"/> + <div class="card-text"> + <h6>妫�楠岄」鐩凡妫�楠屾�绘暟</h6> + <p>{{insproNum}}</p> + </div> + </el-col> + <el-col :span="6"> + <img :src="imgSrc"/> + <div class="card-text"> + <h6>妫�楠岄」鐩湭妫�楠屾�绘暟</h6> + <p>{{insproUnNum}}</p> + </div> + </el-col> + </el-row> + </el-card> + </el-col> + <el-col :span="8"> + <el-card class="box-card" :body-style="{ padding: '0px',height:'120px' }"> + <p style="font-size: 10px;margin-left: 10px;color: #2fcf10;">宸叉楠�</p> + <el-table + :data="verifiedData" + :default-sort = "{prop: 'date', order: 'descending'}" + :cell-style="{margin:'0',padding:'2px 0px'}" + :header-cell-style="{margin:'0',padding:'0',backgroundColor:'#f0f7ff',color:'#0050a7'}"> + <el-table-column prop="no" label="鎺掑悕" sortable width="110"></el-table-column> + <el-table-column prop="result" label="妫�楠岀粨璁�" width="110"></el-table-column> + <el-table-column prop="num" label="妫�楠屾暟閲�" sortable width="110"></el-table-column> + <el-table-column prop="chact" label="妫�楠屽崰姣�" sortable width="110"></el-table-column> + </el-table> + </el-card> + </el-col> + </el-row> </div> - <div class="welcome-right"> - <div class="right-centent"> - <div>鍗冲皢瓒呮湡寰呭姙</div> - <div>鏆傛棤</div> - </div> - <div /> - <div class="right-centent"> - <div>宸茶秴鏈熷緟鍔�</div> - <div>21</div> - </div> + <div class="echart2"> + <el-row :gutter="10"> + <el-col :span="6"> + <el-card :body-style="{ padding: '0px',height:'180px' }"> + <p>鍘熸潗鏂欏悎鏍肩巼</p> + <div id="materialPieChart" style="width:100%;height:180px"></div> + </el-card> + </el-col> + <el-col :span="6"> + <el-card :body-style="{ padding: '0px',height:'180px' }"> + <p>鎴愬搧鍚堟牸鐜�</p> + <div id="finishedPieChart" style="width:100%;height:180px"></div> + </el-card> + </el-col> + <el-col :span="12"> + <el-card :body-style="{ padding: '0px',height:'180px' }"> + <p style="z-index: 10;position: absolute;font-size: 10px;margin-left: 10px;color: #ff0000;">鏈楠�</p> + <el-table + :data="uncheckedData" + :cell-style="{margin:'0px',padding:'3px 0px'}" + :header-cell-style="{margin:'0px',padding:'3px 0px',backgroundColor:'#f0f7ff',color:'#0050a7'}"> + <el-table-column prop="no" label="搴忓彿" width="100"></el-table-column> + <el-table-column prop="name" label="寰呮椤圭洰" width="120"></el-table-column> + <el-table-column prop="instrumentname" label="璁惧" width="120"></el-table-column> + <el-table-column prop="startTime" label="妫�楠屾椂闂�" width="120"> + </el-table-column><el-table-column prop="checkname" label="妫�楠屼汉" width="120"> + </el-table-column><el-table-column prop="endTime" label="棰勮缁撴潫鏃堕棿" width="120"></el-table-column> + </el-table> + </el-card> + </el-col> + </el-row> + </div> + <div class="echart3"> + <el-card :body-style="{ padding: '0px',height:'300px' }"> + <el-radio-group class="button-group" :input="getDataByType(radioType)" v-model="radioType" size="mini"> + <el-radio-button label="鏈懆"></el-radio-button> + <el-radio-button label="鏈湀"></el-radio-button> + <el-radio-button label="鏈勾"></el-radio-button> + </el-radio-group> + <div id="barLineChart" style="width:100%;height:300px;"></div> + </el-card> </div> </div> - <div class="content-main" /> </div> </template> <script> +import * as echarts from 'echarts'; +import { getVerifiedTop3,getUncheckedTop4,getMatAndFinshQualified,getCheckAndProjectNum +} from '@/api/home' export default { + name: "home", + data() { + return { + insNum: 0, + insUnNum: 0, + insproNum: 0, + insproUnNum: 1110, + radioType: "鏈勾", + imgSrc: require("@/assets/404_images/bg.png"), + verifiedData: new Array(), + uncheckedData: new Array(), + } + }, + mounted(){ + this.getcheckProjectNum(); + this.getVerifiedData(); + this.getUncheckedData(); + this.getPieChart(); + }, + methods: { + async getcheckProjectNum(){ + const {data} = await getCheckAndProjectNum(); + this.insNum = data.insNum; + this.insUnNum = data.insUnNum; + this.insproNum = data.insproNum; + this.insproUnNum = data.insproUnNum; + }, + async getVerifiedData(){ + const { data } = await getVerifiedTop3(); + for(let i=0;i<data.length;i++){ + let val = ""; + if(data[i].result == 0){ + val = "涓嶅悎鏍�"; + }else if(data[i].result == 1){ + val = "鍚堟牸"; + }else{ + val = "鏈楠�"; + } + this.verifiedData.push ({ + no: i+1, + result: val, + num: data[i].num, + chact: data[i].chact + '%' + }) + } + }, + async getUncheckedData(){ + const {data} = await getUncheckedTop4(); + for(let i=0;i<data.length;i++){ + this.uncheckedData.push ({ + no: i+1, + name: data[i].name, + instrumentname: data[i].instrumentname, + startTime: data[i].startTime, + checkname: data[i].checkname, + endTime: data[i].endTime + }) + } + }, + initPieChart(elementId,data){ + var chartDom = document.getElementById(elementId); + var myChart = echarts.init(chartDom); + window.addEventListener('resize', function() { + myChart.resize(); + }); + var option; + option = { + tooltip: { + trigger: 'item' + }, + legend: { + orient: 'vertical', + right: 'right', + top: 'center', + left: 20 + }, + series: [ + { + type: 'pie', + radius: ['40%', '70%'], + tooltip: { + valueFormatter: function(value){ + return value + '%'; + } + }, + avoidLabelOverlap: false, + label: { + show: false, + position: 'center', + }, + labelLine: { + show: false + }, + data: data + } + ] + }; + option && myChart.setOption(option); + }, + async getPieChart(){ + const {data} = await getMatAndFinshQualified(); + let material = [ + { value: data.material, name: '鍚堟牸',itemStyle:{color: '#91cc75'} }, + { value: data.unmaterial, name: '涓嶅悎鏍�',itemStyle:{color: '#fac858'} }, + { value: data.notmaterial, name: '寰呮楠�' }, + ] + let finished = [ + { value: data.finished, name: '鍚堟牸',itemStyle:{color: '#91cc75'} }, + { value: data.unfinished, name: '涓嶅悎鏍�',itemStyle:{color: '#fac858'} }, + { value: data.notfinished, name: '寰呮楠�' }, + ] + //娓叉煋楗肩姸鍥� + this.initPieChart("materialPieChart",material); + this.initPieChart("finishedPieChart",finished); + }, + async getDataByType(label){ + const xAxis = ['涓�鏈�', '浜屾湀', '涓夋湀', '鍥涙湀', '浜旀湀', '鍏湀', '涓冩湀','鍏湀','涔濇湀','鍗佹湀','鍗佷竴鏈�','鍗佷簩鏈�'] + const bar1Data = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]; + const bar2Data = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]; + const line1Data = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2]; + const line2Data = [3.0, 4.2, 6.3, 5.5, 8.3, 13.2, 20.3, 13.4, 23.0, 21.5, 2.0, 33.2]; + switch(label){ + case "鏈勾": + this.initBarAndLineChart(xAxis,bar1Data,bar2Data,line1Data,line2Data); + break; + case "鏈湀": + let arr = new Array(); + for(let i=1;i<=31;i++){ + arr.push(i); + } + this.initBarAndLineChart(arr,bar1Data,bar2Data,line1Data,line2Data); + break; + case "鏈懆": + let arr2 = new Array("鍛ㄤ竴","鍛ㄤ簩","鍛ㄤ笁","鍛ㄥ洓","鍛ㄤ簲","鍛ㄥ叚","鍛ㄦ棩"); + this.initBarAndLineChart(arr2,bar1Data,bar2Data,line1Data,line2Data); + break + } + }, + initBarAndLineChart(xAxis,bar1Data,bar2Data,line1Data,line2Data){ + var chartDom = document.getElementById('barLineChart'); + var myChart = echarts.init(chartDom); + window.addEventListener('resize', function() { + myChart.resize(); + }); + var option; + option = { + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'cross', + crossStyle: { + color: '#999' + } + } + }, + legend: { + data: ['鍘熸潗鏂欐楠�', '鎴愬搧妫�楠�', '鍘熸潗鏂欏悎鏍肩巼','鎴愬搧鍚堟牸鐜�'] + }, + xAxis: [ + { + type: 'category', + data: xAxis, + axisPointer: { + type: 'shadow' + } + } + ], + yAxis: [ + { + type: 'value', + name: '妫�楠屾暟閲�', + min: 0, + max: 1000, + interval: 100, + axisLabel: { + formatter: '{value}' + } + }, + { + type: 'value', + name: '鍚堟牸鐜�', + min: 0, + max: 100, + interval: 10, + axisLabel: { + formatter: '{value} %' + } + } + ], + series: [ + { + name: '鍘熸潗鏂欐楠�', + type: 'bar', + tooltip: { + valueFormatter: function (value) { + return value; + } + }, + data: bar1Data + }, + { + name: '鎴愬搧妫�楠�', + type: 'bar', + tooltip: { + valueFormatter: function (value) { + return value ; + } + }, + data: bar2Data + }, + { + name: '鍘熸潗鏂欏悎鏍肩巼', + smooth: true, + type: 'line', + yAxisIndex: 1, + tooltip: { + valueFormatter: function (value) { + return value + ' %'; + } + }, + data: line1Data + }, + { + name: '鎴愬搧鍚堟牸鐜�', + smooth: true, + type: 'line', + yAxisIndex: 1, + tooltip: { + valueFormatter: function (value) { + return value + ' %'; + } + }, + data: line2Data + } + ] + }; + option && myChart.setOption(option); + } + } } </script> <style lang="scss" scoped> .home-main{ - .home-header-welcome{ - width: 100%; - background: #fff; - height: 84px; - display: flex; - border-bottom: 1px solid #f0f2f5; - padding: 8px 24px 12px 24px; - justify-content: space-between; - .welcome-left{ - display: flex; - align-items: center; - height: 100%; - .left-avatar{ - width: 56px; - height: 56px; - margin-right: 24px; - background: #0077DB; - border-radius: 50%; + .content-main{ + .echart1{ + .el-table{ + font-weight: bold; + width: 100%; + height:100; + padding:0px; + margin-left:10px; + } + .box-card img{ + width:100%; + height:100px; + border-radius: 10px; + } + .box-card .card-text{ + position: absolute; + top:0px; + h6{ + margin:10px 15px; + } + p{ + width:100%; + text-align: right; + font-size: 25px; + } + } + } + .echart2 { + .el-table{ + font-weight: bold; + width: 100%; + height:100; + padding:0px; + margin-left:10px; + padding-top:40px; } - .left-tips{ - height: 80%; - display: flex; - flex-direction: column; - justify-content: space-between; - >div:nth-child(1){ - font-size: 20px; - color: #303133; - } - >div:nth-child(2){ - font-size: 14px; - color: #606266; - } + .el-col{ + margin: 10px 0; + } + p{ + position: absolute; + font-size: 10px; + margin-left: 10px; + color:black; } } - .welcome-right{ - width: 250px; - display: flex; - justify-content: space-between; - align-items: center; - .right-centent{ - height: 80%; - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: flex-end; - >div:nth-child(1){ - color: #909399; - font-size: 14px; - } - >div:nth-child(2){ - font-size: 24px; - color: #c0c4cc; - } - } - >div:nth-child(2){ - width: 2px; - height: 70%; - background: #f0f2f5; - } + .echart3 .button-group{ + margin-top: 10px; + margin-left: 88%; + z-index: 10; } } } 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 3a642f1..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,26 +690,26 @@ 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 { + // .el-table { // flex: 1; // max-height: 680px; // overflow-y: scroll; - } + // } >div:nth-child(3){ // height: 20px; display: flex; @@ -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