From d8bb0e96fbbb763c623255629d623e7308ef5dee Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期三, 22 五月 2024 16:15:43 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/components/do/b1-ins-order/add.vue | 10 src/components/tool/value-table.vue | 10 src/components/view/b4-daily-business-statistics.vue | 3 src/components/view/role-manage.vue | 2 src/components/view/b4-sample-defects.vue | 1 src/components/view/b3-classes.vue | 14 src/components/view/person-manage.vue | 105 ++++++++ src/assets/api/controller.js | 3 src/components/view/b2-standard.vue | 410 +++++++++++++++++++++---------------- src/components/view/b1-report-preparation.vue | 27 + src/main.js | 3 index.html | 2 src/components/do/b1-inspect-order-plan/Inspection.vue | 2 src/components/view/a6-device-management.vue | 2 src/components/view/b1-unpass.vue | 20 src/components/view/b4-inspection-item-statistics.vue | 4 16 files changed, 387 insertions(+), 231 deletions(-) diff --git a/index.html b/index.html index 93c7f79..f59f294 100644 --- a/index.html +++ b/index.html @@ -21,7 +21,7 @@ </head> <body> <div id="app"></div> - <script type='text/javascript' src='http://192.168.73.130:9001/web-apps/apps/api/documents/api.js'></script> + <!-- <script type='text/javascript' src='http://192.168.73.130:9001/web-apps/apps/api/documents/api.js'></script> --> <script src="<%= htmlWebpackPlugin.options.url %>/static/luckysheet/plugins/js/plugin.js"></script> <script src="<%= htmlWebpackPlugin.options.url %>/static/luckysheet/luckysheet.umd.js"></script> </body> diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index 3b3d22a..b558be7 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -181,9 +181,11 @@ delStandardTree: "/standardTree/delStandardTree", //鍒犻櫎鏍囧噯鏍戠殑灞傜骇 selectStandardProductList: "/standardTree/selectStandardProductList", //閫氳繃鏍囧噯鏍戞煡璇㈠搴旂殑妫�楠岄」鐩� selectStandardProductListByMethodId: "/standardTree/selectStandardProductListByMethodId", //閫氳繃妫�楠屾爣鍑嗘煡璇㈡楠岄」鐩� + selectStandardProductByMethodId: "/standardTree/selectStandardProductByMethodId", //鎵归噺缂栬緫鏌ヨ妫�楠岄」鐩� selectStandardMethodEnum: "/standardTree/selectStandardMethodEnum", //鑾峰彇鏍囧噯鏍戜笅鏍囧噯鏂规硶鏋氫妇 getStandardTree2: "/standardTree/getStandardTree2", //鑾峰彇浜у搧鏋舵瀯 upStandardProducts: "/standardTree/upStandardProducts", //鑾峰彇浜у搧鏋舵瀯 + selectStandardProductEnumByMethodId: "/standardTree/selectStandardProductEnumByMethodId", //鎵归噺缂栬緫鏌ヨ鎵�鏈夋楠岄」鐩拰妫�楠屽瓙椤规灇涓� } const standardMethod = { @@ -283,4 +285,5 @@ const companies = { selectCompaniesList: "/companies/selectCompaniesList", //鑾峰彇浜轰簨绯荤粺缁勭粐 selectSimpleList: "/companies/selectSimpleList", //鑾峰彇浜轰簨绯荤粺缁勭粐涓嬬殑浜哄憳 + addPersonUser: "/companies/addPersonUser", //鑾峰彇浜轰簨绯荤粺缁勭粐涓嬬殑浜哄憳 } diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index 6cd0389..279d71a 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -272,7 +272,7 @@ <el-table-column prop="model" label="鏍峰搧鍨嬪彿" align="center" min-width="100"> <template slot-scope="scope"> <el-select v-model="scope.row.model" filterable allow-create default-first-option placeholder="鏍峰搧鍨嬪彿" - size="small" @change="handleChangeModel" :disabled="active>1" style="width: 100%;" disabled> + size="small" @change="handleChangeModel" :disabled="active>1" style="width: 100%;"> <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> @@ -348,7 +348,7 @@ <el-table-column prop="section" label="鍖洪棿" width="120" show-overflow-tooltip></el-table-column> <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="220px"> <template slot-scope="scope"> - <el-input size="small" placeholder="瑕佹眰鍊�" v-model="scope.row.ask" clearable type="textarea" + <el-input size="small" placeholder="瑕佹眰鍊�" v-model="scope.row.ask" clearable type="textarea" readonly :autosize="{ minRows: 1, maxRows: 3}" @change="e=>requestChange(e,scope.row)" :readonly="active>1"></el-input> </template> </el-table-column> @@ -876,8 +876,8 @@ }, activeStandardTree() { let trees = this.selectTree.split(" - ") - if (trees.length < 5) { - this.$message.error('鏈�夋嫨鍨嬪彿') + if (trees.length < 4) { + this.$message.error('鏈�夋嫨浜у搧') return } this.addObj.factory = trees[0] @@ -1144,7 +1144,7 @@ if(val===null||val==='')return this.getProductLoad = true this.$axios.post(this.$api.standardTree.selectStandardProductList, { - model: this.addObj.model + '-' + row.modelNum, + model: row.model + '-' + row.modelNum, standardMethodListId: val }, { headers: { diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index ca447d2..7f56a52 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -319,7 +319,7 @@ </el-drawer> <el-drawer title="浠诲姟鍒囨崲" :visible.sync="taskVisible" :size="500"> <ValueTable class="value-table" ref="insOrderPlan" :url="$api.insOrderPlan.selectInsOrderPlanList" - :componentData="componentData" :key="upIndex" style="max-height: 100%;height: inherit;"/> + :componentData="componentData" :key="upIndex" style="height: 100%;"/> </el-drawer> <el-dialog title="妫�楠屽鏍�" :visible.sync="reviewDia" width="500px"> <div class="body" style="display: flex;padding: 10px;" v-if="reviewDia"> diff --git a/src/components/tool/value-table.vue b/src/components/tool/value-table.vue index 20b9a47..0387ae4 100644 --- a/src/components/tool/value-table.vue +++ b/src/components/tool/value-table.vue @@ -564,14 +564,17 @@ }, sizeChange(val) { this.page.size = val - this.selectList() + this.selectList('page') }, currentChange(val) { this.page.current = val - this.selectList() + this.selectList('page') }, - selectList() { + selectList(val) { this.loading = true + if(val===undefined){ + this.page.current = 1; + } if (this.data.isPage != undefined && this.data.isPage != true) { this.page = { current: -1, @@ -593,6 +596,7 @@ this.total = res.data.body.total this.tableHead = res.data.head this.tableData = res.data.body.records + // console.log(JSON.stringify(this.tableHead)+"---------"+JSON.stringify(this.tableData)) for (var a in this.data.selectField) { if (this.data.selectField[a].choose == true) { this.tableData.map(b => { diff --git a/src/components/view/a6-device-management.vue b/src/components/view/a6-device-management.vue index 7fc51d6..24d2283 100644 --- a/src/components/view/a6-device-management.vue +++ b/src/components/view/a6-device-management.vue @@ -687,7 +687,7 @@ this.$message.error('鏈緭鍏ュ惎鐢ㄦ棩鏈�') return } - if(!this.formData.deviceStatus){ + if(this.formData.deviceStatus==='' || this.formData.deviceStatus===null){ this.$message.error('鏈�夋嫨褰撳墠鐘舵��') return } diff --git a/src/components/view/b1-report-preparation.vue b/src/components/view/b1-report-preparation.vue index 615890d..08a3107 100644 --- a/src/components/view/b1-report-preparation.vue +++ b/src/components/view/b1-report-preparation.vue @@ -160,6 +160,7 @@ import { convertToHtml } from 'mammoth'; + import axios from "axios"; export default { components: { ValueTable, @@ -180,9 +181,9 @@ showSelect: false, select: false, do: [ - { + { id: 'handleWeave', - font: '鍦ㄧ嚎缂栧埗', + font: '缂栧埗', type: 'text', method: 'handleWeave', disabFun: (row, index) => { @@ -383,25 +384,31 @@ if (power[i].menuMethod == 'writeReport') { sub = true } + if (power[i].menuMethod == 'ratifyReport') { + approve = true + } + if (power[i].menuMethod == 'examineReport') { + issued = true + } } if (!approve) { - this.componentData.do.splice(5, 1) + this.componentData.do.splice(6, 1) } if (!issued) { - this.componentData.do.splice(4, 1) + this.componentData.do.splice(5, 1) } if (!sub) { - this.componentData.do.splice(3, 1) + this.componentData.do.splice(4, 1) } if (!res) { - this.componentData.do.splice(2, 1) + this.componentData.do.splice(3, 1) } if (!up) { - this.componentData.do.splice(1, 1) + this.componentData.do.splice(2, 1) } - // if (!edit) { - // this.componentData.do.splice(0, 1) - // } + if (!edit) { + this.componentData.do.splice(0, 1) + } }, confirmClaim() { // console.log(this.$refs.Word.getValue()) diff --git a/src/components/view/b1-unpass.vue b/src/components/view/b1-unpass.vue index dd63b44..945cd80 100644 --- a/src/components/view/b1-unpass.vue +++ b/src/components/view/b1-unpass.vue @@ -45,8 +45,8 @@ <div class="search_thing"> <div class="search_label">瑙勬牸鍨嬪彿锛�</div> <div class="search_input"> - <el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData.entity.model" @keyup.enter.native="refreshTable()"></el-input></div> + <el-input size="small" placeholder="璇疯緭鍏�" clearable v-model="componentData.entity.model" + @keyup.enter.native="refreshTable()"></el-input></div> </div> <div class="search_thing"> <div class="search_label">鏍峰搧鍚嶇О锛�</div> @@ -86,23 +86,24 @@ entity: { sample: null, model: null, + orderBy: { + field: 'id', + order: 'asc' + } }, isIndex: true, showSelect: false, select: false, do: [ ], - linkEvent: { - // code: { - // method: 'selectAllByOne' - // } - }, - + tagField: [], + selectField: [], + requiredAdd: ['model','sample',], + requiredUp: [] }, entityCopy: {}, upIndex: 0, statusList: [], - } }, mounted() { @@ -124,4 +125,3 @@ } } </script> - diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue index a6e46cc..d40f8cb 100644 --- a/src/components/view/b2-standard.vue +++ b/src/components/view/b2-standard.vue @@ -65,21 +65,26 @@ width: 80% !important; overflow: hidden; } - >>>.el-table__body-wrapper{ + + >>>.el-table__body-wrapper { height: calc(100% - 46px) !important; } - >>>.header-class{ + + >>>.header-class { height: 40px !important; } - >>>.header-class th.el-table__cell>.cell{ + + >>>.header-class th.el-table__cell>.cell { line-height: 20px !important; padding-top: 0 !important; padding-bottom: 0 !important; } - >>>.el-table__row{ + + >>>.el-table__row { height: 35px !important; } - .search{ + + .search { height: 20%; border-bottom: 1px solid #ebeef5; margin-bottom: 16px; @@ -88,27 +93,29 @@ box-sizing: border-box; padding-bottom: 10px; } - .search-item{ + + .search-item { display: flex; align-items: center; flex-wrap: wrap; } - .search-item .el-row{ + + .search-item .el-row { display: flex; align-items: center; } - .search-item .el-col{ + + .search-item .el-col { margin-left: 0; } - .more-edit .dialog-footer{ + + .more-edit .dialog-footer { position: absolute; top: 15px; right: 70px; } - >>>.more-edit .el-dialog__body{ - height: calc(100vh - 90px); - } - >>>.is-disabled .el-textarea__inner{ + + >>>.is-disabled .el-textarea__inner { background: rgba(0, 0, 0, 0.05) !important; } </style> @@ -139,6 +146,11 @@ .standard .el-table .warning-row .cell { color: #bababa; } + + .el-table-filter__list{ + max-height: 400px; + overflow-y: auto; + } </style> <template> @@ -165,7 +177,7 @@ :class="`node_i ${data.children != undefined ? (data.code==='[1]'?'el-icon-folder-opened':'el-icon-folder') : 'el-icon-tickets'}`"></i> {{ data.code }} {{ data.label }}</span> </el-col> - <el-col :span="2" style="text-align: right;" v-if="delStandardTree"> + <el-col :span="2" style="text-align: right;" v-if="delStandardTree&&node.level==5"> <el-button type="text" size="mini" @click.stop="remove(node, data)"> <i class="el-icon-delete"></i> </el-button> @@ -177,11 +189,13 @@ <div class="right"> <el-row class="title" style="width: 100%;"> <el-col :span="20" style="font-size: 14px;color: #999;">{{selectTree}}</el-col> - <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 0px;top: 1px;" v-if="upStandardProduct">鎵归噺缂栬緫</el-button> + <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 0px;top: 1px;" + v-if="upStandardProduct">鎵归噺缂栬緫</el-button> </el-row> <el-row class="standard_table" v-loading="tableLoad"> - <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;" height="220" tooltip-effect="dark" - highlight-current-row @row-click="rowClick" ref="standard" header-row-class-name="header-class"> + <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;" height="220" + tooltip-effect="dark" highlight-current-row @row-click="rowClick" ref="standard" + header-row-class-name="header-class"> <el-table-column prop="code" label="鏍囧噯缂栧彿" show-overflow-tooltip width="200"> <template slot-scope="scope"> <span style="color: red;font-size: 14px;">{{scope.row['code']}}</span> @@ -200,21 +214,16 @@ </el-row> <el-row class="product_table" v-loading="tableLoad2"> <el-table :data="productList" ref="productTable" style="width: 100%;" height="100%" tooltip-effect="dark" stripe - :fit="true" border - @selection-change="handleSelectionChange" :row-class-name="tableRowClassName" - @select="upProductSelect" - @select-all="handleAll" - class="productTable" - header-row-class-name="header-class"> - <el-table-column type="selection" width="50" > + :fit="true" border @selection-change="handleSelectionChange" :row-class-name="tableRowClassName" + @select="upProductSelect" @select-all="handleAll" class="productTable" header-row-class-name="header-class"> + <el-table-column type="selection" width="50"> </el-table-column> <el-table-column prop="model" label="鍨嬪彿" min-width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip></el-table-column> <!-- <el-table-column prop="inspectionItemClassify" label="妫�楠岄」绫诲瀷" width="120" show-overflow-tooltip></el-table-column> --> <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140" show-overflow-tooltip></el-table-column> - <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" width="130" show-overflow-tooltip :filters="filters" - :filter-method="filterHandler"></el-table-column> + <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" width="130" show-overflow-tooltip></el-table-column> <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="200px"> <template slot-scope="scope"> <el-input size="small" placeholder="瑕佹眰鍊�" v-model="scope.row.ask" clearable @@ -261,7 +270,7 @@ <el-table-column prop="templateId" label="妯℃澘" width="200"> <template slot-scope="scope"> <el-select v-model="scope.row.templateId" size="small" filterable :disabled="!upStandardProduct" - @change="(value)=>upStandardProductListOfTemplate(value,scope.row.id)"> + @change="(value)=>upStandardProductListOfTemplate(value,scope.row.id)"> <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option> </el-select> </template> @@ -273,13 +282,8 @@ </template> </el-table-column> </el-table> - <el-pagination - style="position: absolute;right: 16px;bottom: 1px;" - @current-change="handleCurrentChange" - :current-page="currentPage" - layout="total, prev, pager, next, jumper" - :page-size="50" - :total="total"> + <el-pagination style="position: absolute;right: 16px;bottom: 1px;" @current-change="handleCurrentChange" + :current-page="currentPage" layout="total, prev, pager, next, jumper" :page-size="50" :total="total"> </el-pagination> </el-row> </div> @@ -323,8 +327,8 @@ <el-button type="primary" @click="addStandardTree" :loading="addLoad">纭� 瀹�</el-button> </span> </el-dialog> - <el-dialog title="鎵归噺缂栬緫" :visible.sync="moreEdit" width="90%" style="height: 100vh;" class="more-edit"> - <div class="body" style="height: 100%;display: flex;flex-direction: column;"> + <el-dialog title="鎵归噺缂栬緫" :visible.sync="moreEdit" width="90%" class="more-edit"> + <div class="body" style="display: flex;flex-direction: column;height: 80vh;"> <div class="search"> <div class="search-item"> <el-row style="width: 25%;margin-bottom: 16px;"> @@ -340,7 +344,8 @@ <!-- <span class="required-span">* </span> --> 瑕佹眰鎻忚堪锛�</el-col> <el-col :span="16" style="display: flex;align-items: flex-start;height: 100%;"> - <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}" v-model="moreInfo.tell" :disabled="moreSelects.length==0"></el-input> + <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}" + v-model="moreInfo.tell" :disabled="moreSelects.length==0"></el-input> </el-col> </el-row> <el-row style="width: 25%;margin-bottom: 16px;"> @@ -348,7 +353,8 @@ <!-- <span class="required-span">* </span> --> 璇曢獙鏂规硶锛�</el-col> <el-col :span="16"> - <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%;" :disabled="moreSelects.length==0"> + <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%;" + :disabled="moreSelects.length==0"> <el-option v-for="(a, ai) in methodList" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-col> @@ -357,7 +363,7 @@ <el-col :span="6" style="text-align: right;"> <!-- <span class="required-span">* </span> --> 鍗曚环(鍏�)锛�</el-col> - <el-col :span="16" > + <el-col :span="16"> <el-input size="small" v-model="moreInfo.price" clearable :disabled="moreSelects.length==0"></el-input> </el-col> </el-row> @@ -366,7 +372,8 @@ <!-- <span class="required-span">* </span> --> 宸ユ椂绯绘暟锛�</el-col> <el-col :span="16"> - <el-input size="small" v-model="moreInfo.manHour" clearable :disabled="moreSelects.length==0"></el-input> + <el-input size="small" v-model="moreInfo.manHour" clearable + :disabled="moreSelects.length==0"></el-input> </el-col> </el-row> <el-row style="width: 25%;"> @@ -374,7 +381,8 @@ <!-- <span class="required-span">* </span> --> 妯℃澘锛�</el-col> <el-col :span="16"> - <el-select v-model="moreInfo.templateId" size="small" filterable placeholder="妯℃澘" style="width: 100%;" :disabled="moreSelects.length==0"> + <el-select v-model="moreInfo.templateId" size="small" filterable placeholder="妯℃澘" style="width: 100%;" + :disabled="moreSelects.length==0"> <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option> </el-select> </el-col> @@ -390,24 +398,20 @@ </div> <div style="flex: 1;overflow-y: auto;" v-loading="productTableLoading0"> <el-table :data="productList0" ref="productTable0" style="width: 100%;" height="94%" tooltip-effect="dark" - stripe - :fit="true" border - @select-all="handleSelectAll0" - @select="handleSelectionChange0" - header-row-class-name="header-class" - :row-key="row=>row.id" - > - <el-table-column type="selection" width="50" > + stripe :fit="true" border @select-all="handleSelectAll0" @select="handleSelectionChange0" filter-placement="bottom-start" + header-row-class-name="header-class" :row-key="row=>row.id" @filter-change="filterHandler"> + <el-table-column type="selection" width="50"> </el-table-column> <el-table-column prop="model" label="鍨嬪彿" min-width="100" show-overflow-tooltip></el-table-column> - <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip></el-table-column> - <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140" - show-overflow-tooltip></el-table-column> + <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip :filters="filters0" + :filter-multiple="false" column-key="inspectionItem"></el-table-column> + <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140" show-overflow-tooltip + :filters="filters1" :filter-multiple="false" column-key="inspectionItemSubclass"></el-table-column> <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" width="130" show-overflow-tooltip :filters="filters" - :filter-method="filterHandler"></el-table-column> + :filter-multiple="false" column-key="sonLaboratory"></el-table-column> <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="200px"></el-table-column> <el-table-column prop="tell" label="瑕佹眰鎻忚堪" min-width="220px"></el-table-column> - <el-table-column prop="method" label="璇曢獙鏂规硶" width="200"></el-table-column> + <el-table-column prop="methodS" label="璇曢獙鏂规硶" width="200"></el-table-column> <el-table-column prop="unit" label="璁¢噺鍗曚綅" width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="price" label="鍗曚环(鍏�)" width="120"></el-table-column> <el-table-column prop="manHour" label="宸ユ椂绯绘暟" width="120"></el-table-column> @@ -419,44 +423,12 @@ </el-table-column> <el-table-column prop="section" label="鍖洪棿" width="120" show-overflow-tooltip></el-table-column> </el-table> - <el-pagination - style="position: absolute;right: 16px;bottom: 4px;" - @current-change="handleCurrentChange0" - :current-page="currentPage0" - layout="total, prev, pager, next, jumper" - :page-size="50" - :total="total0"> - </el-pagination> + <el-pagination style="position: absolute;right: 16px;bottom: 4px;" @current-change="handleCurrentChange0" + :current-page="currentPage0" layout="total, prev, pager, next, jumper" :page-size="100" :total="total0"> + </el-pagination> </div> </div> </el-dialog> - <!-- <el-dialog title="鏂板鏍囧噯" :visible.sync="addStandardDia" width="400px"> - <div class="body"> - <el-row style="line-height: 50px;"> - <el-col :span="6" style="text-align: right;"> - <span class="required-span">* </span>鏍囧噯鍚嶇О锛� - </el-col> - <el-col :span="16" :offset="1"> - <el-select v-model="standardId" size="small" style="width: 100%;" clearable> - <el-option v-for="(a, ai) in standardEnum" :key="ai" :value="a.value" :label="a.label"></el-option> - </el-select> - </el-col> - </el-row> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="addStandardDia = false">鍙� 娑�</el-button> - <el-button type="primary" @click="addStandardMethodList" :loading="addLoad2">纭� 瀹�</el-button> - </span> - </el-dialog> --> - <!-- <el-dialog title="鏂板椤圭洰" :visible.sync="addProductDia" width="70%"> - <div class="body" style="height: 60vh;" v-if="addProductDia"> - <ValueTable ref="ValueTable" :url="$api.capacityScope.selectItemParameterList" :componentData="componentData" /> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="addProductDia = false">鍙� 娑�</el-button> - <el-button type="primary" @click="addStandardProductDo" :loading="addLoad3">纭� 瀹�</el-button> - </span> - </el-dialog> --> <el-dialog title="鍖洪棿璁剧疆" :visible.sync="sectionUpDia" width="70%"> <div class="body" style="padding: 5px 0;"> <el-table :data="sectionList" border style="width: 100%" height="350px"> @@ -586,41 +558,71 @@ sectionRow: null, sectionList: [], templateList: [], - total:0, - currentPage:1, + total: 0, + currentPage: 1, standardId: 0, - moreEdit:false, - moreEditLoad:false, - moreSelects:[], - total0:0, - currentPage0:1, + moreEdit: false, + moreEditLoad: false, + moreSelects: [], + total0: 0, + currentPage0: 1, productList0: [], - moreInfo:{ - ask:'', - tell:'', - methodS:'', - price:'', - manHour:'', - templateId:'' + moreInfo: { + ask: '', + tell: '', + methodS: '', + price: '', + manHour: '', + templateId: '' }, - methodList:[], - productTableLoading0:false + methodList: [], + productTableLoading0: false, + filters0: [{ + text: '娴嬭瘯', + value: 0, + }, + { + text: '娴嬭瘯1', + value: 1, + }, + { + text: '娴嬭瘯2', + value: 2, + } + ], + filters1: [{ + text: '娴嬭瘯', + value: 0, + }, + { + text: '娴嬭瘯1', + value: 1, + }, + { + text: '娴嬭瘯2', + value: 2, + } + ], + pages: 1, + inspectionItem: null, + inspectionItemSubclass: null, + sonLaboratory: null } }, watch: { moreEdit(val) { - if(!val){ + if (!val) { this.$refs.productTable0.clearSelection() this.moreSelects = [] this.currentPage0 = 1; this.productList0 = [] this.moreInfo = { - ask:'', - tell:'', - methodS:'', - price:'', - manHour:'', - templateId:'' + ask: '', + tell: '', + methodS: '', + price: '', + manHour: '', + templateId: '' } } } @@ -640,6 +642,7 @@ this.selectEnumByCategoryForInspectionValueType() this.selectEnumByCategoryForSonLaboratory() this.getStandardTemplate() + this.selectStandardMethods() }, methods: { filterNode(value, data) { @@ -1102,6 +1105,7 @@ this.addProductDia = false }, rowClick(row, column, event) { + this.currentPage = 1; this.tableLoad2 = true this.standardId = row.id this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, { @@ -1115,7 +1119,7 @@ this.productList.forEach(a => { if (a.state == 1) this.toggleSelection(a) }) - }, 200) + }, 300) this.tableLoad2 = false }) }, @@ -1148,19 +1152,37 @@ // this.$message.success('宸蹭繚瀛�') }) }, - filterHandler(value, row, column) { - const property = column['property']; - return row[property] === value; + filterHandler(value) { + for (let column in value) { + if(value[column].length === 0){ + if(column==='inspectionItem'){ + this.inspectionItem = null + }else if(column === 'inspectionItemSubclass'){ + this.inspectionItemSubclass = null + }else if(column === 'sonLaboratory'){ + this.sonLaboratory = null + } + }else{ + if(column==='inspectionItem'){ + this.inspectionItem = value[column][0] + }else if(column === 'inspectionItemSubclass'){ + this.inspectionItemSubclass = value[column][0] + }else if(column === 'sonLaboratory'){ + this.sonLaboratory = value[column][0] + } + } + this.getList() + } }, handleAll(e) { if (e.length > 0) { - this.productList = this.productList.map(m => { + this.productList.map(m => { m.state = 0 this.upProductSelect(null, m) return m }) } else { - this.productList = this.productList.map(m => { + this.productList.map(m => { m.state = 1 this.upProductSelect(null, m) return m @@ -1169,12 +1191,12 @@ }, sectionUp(row) { if (Array.isArray(row)) { - // 鍊兼槸涓�涓暟缁� - if(row.length === 0){ - return this.$message.error('璇烽�夋嫨妫�楠岄」') - } - this.sectionRow = {} - this.sectionUpDia = true + // 鍊兼槸涓�涓暟缁� + if (row.length === 0) { + return this.$message.error('璇烽�夋嫨妫�楠岄」') + } + this.sectionRow = {} + this.sectionUpDia = true } else { // 鍊兼槸涓�涓璞� this.sectionRow = row @@ -1222,8 +1244,8 @@ this.sectionRow.manHour = JSON.stringify(manHourList) } this.sectionLoad = true - if(this.moreSelects.length === 0){ - this.$axios.post(this.$api.standardTree.upStandardProductList, { + if (this.moreSelects.length === 0) { + this.$axios.post(this.$api.standardTree.upStandardProductList, { id: this.sectionRow.id, section: this.sectionRow.section, ask: this.sectionRow.ask, @@ -1243,31 +1265,34 @@ this.$message.success('宸蹭繚瀛�') this.sectionUpDia = false }) - }else{ + } else { this.$axios.post(this.$api.standardTree.upStandardProducts, { - ids:this.moreSelects.map(a=>a.id), - standardProductList:{ - section: this.sectionRow.section, - ask: this.sectionRow.ask, - tell: this.sectionRow.tell, - price: this.sectionRow.price, - manHour: this.sectionRow.manHour - } + ids: this.moreSelects.map(a => a.id), + standardProductList: { + section: this.sectionRow.section, + ask: this.sectionRow.ask, + tell: this.sectionRow.tell, + price: this.sectionRow.price, + manHour: this.sectionRow.manHour + } }, { headers: { 'Content-Type': 'application/json' } }).then(res => { - this.sectionLoad = false - if (res.code == 201) { - this.$message.error('鏈繚瀛�') - return - } - this.$message.success('宸蹭繚瀛�') - this.sectionUpDia = false - this.currentPage0 = 1; - this.getList() - }) + this.sectionLoad = false + if (res.code == 201) { + this.$message.error('鏈繚瀛�') + return + } + this.$message.success('宸蹭繚瀛�') + this.sectionUpDia = false + this.currentPage0 = 1; + this.getList() + this.rowClick({ + id: this.standardId + }) + }) } }, getStandardTemplate() { @@ -1292,12 +1317,11 @@ this.tableLoad2 = false }) }, - async handleMore(){ - if(!this.standardId&&this.standardId!=0){ + async handleMore() { + if ((!this.standardId && this.standardId != 0) || this.standardList.length == 0) { return this.$message.error('璇烽�夋嫨瀹為獙瀹ゃ�佹牱鍝�') } await this.getList() - this.selectStandardMethods() this.moreEdit = true }, selectStandardMethods() { @@ -1312,19 +1336,19 @@ this.methodList = data }) }, - subMoreEdit(){ - if(this.moreSelects.length===0){ + subMoreEdit() { + if (this.moreSelects.length === 0) { return this.$message.error('璇烽�夋嫨妫�楠岄」') } this.moreEditLoad = true this.$axios.post(this.$api.standardTree.upStandardProducts, { - ids:this.moreSelects.map(a=>a.id), - standardProductList:this.moreInfo - }, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { + ids: this.moreSelects.map(a => a.id), + standardProductList: this.moreInfo + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { this.moreEditLoad = false if (res.code == 201) { this.$message.error('鏈繚瀛�') @@ -1333,6 +1357,9 @@ this.$message.success('宸蹭繚瀛�') this.currentPage0 = 1; this.getList() + this.rowClick({ + id: this.standardId + }) // this.moreInfo = { // ask:'', // tell:'', @@ -1343,49 +1370,76 @@ // } }) }, - handleSelectAll0(rows){ - if(rows.length){ - rows.forEach(a=>{ - if(!this.moreSelects.find(b=>a.id===b.id)){ + handleSelectAll0(rows) { + if (rows.length) { + rows.forEach(a => { + if (!this.moreSelects.find(b => a.id === b.id)) { this.moreSelects.push(a) } }) - }else{ - this.productList0.forEach(a=>{ - this.moreSelects = this.moreSelects.filter(b=>b.id!=a.id ) + } else { + this.productList0.forEach(a => { + this.moreSelects = this.moreSelects.filter(b => b.id != a.id) }) } }, - handleSelectionChange0(val,row){ - if(this.moreSelects.find(a=>a.id===row.id)){ - this.moreSelects = this.moreSelects.filter(a=>a.id!=row.id) - }else{ + handleSelectionChange0(val, row) { + if (this.moreSelects.find(a => a.id === row.id)) { + this.moreSelects = this.moreSelects.filter(a => a.id != row.id) + } else { this.moreSelects.push(row) } }, - getList(){ + getList() { this.productTableLoading0 = true - this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, { + this.getItemEnum() + this.$axios.post(this.$api.standardTree.selectStandardProductByMethodId, { id: this.standardId, tree: this.selectTree, - page: this.currentPage0 + page: this.currentPage0, + laboratory: this.sonLaboratory, + items: this.inspectionItemSubclass, + item: this.inspectionItem }).then(res => { - this.productList0 = res.data.productList + this.productList0 = res.data.records this.total0 = res.data.total this.productTableLoading0 = false - this.$nextTick(()=>{ - this.productList0.forEach((a,i) => { - if(this.moreSelects.find(b=>a.id==b.id)){ - // console.log(111111111,a) - this.$refs.productTable0.toggleRowSelection(this.productList0[i],true) + this.page = res.data.pages + this.$nextTick(() => { + this.productList0.forEach((a, i) => { + if (this.moreSelects.find(b => a.id == b.id)) { + this.$refs.productTable0.toggleRowSelection(this.productList0[i], true) } }) }) }) }, - handleCurrentChange0(e){ + handleCurrentChange0(e) { this.currentPage0 = e; this.getList() + }, + getItemEnum(){ + this.$axios.post(this.$api.standardTree.selectStandardProductEnumByMethodId,{ + id: this.standardId, + tree: this.selectTree + }).then(res=>{ + this.filters0 = [] + this.filters1 = [] + res.data.item.forEach(a=>{ + this.filters0.push({ + text: a.inspectionItem, + value: a.inspectionItem + }) + }) + res.data.items.forEach(a=>{ + if(a!=null){ + this.filters1.push({ + text: a.inspectionItemSubclass, + value: a.inspectionItemSubclass + }) + } + }) + }) } } } diff --git a/src/components/view/b3-classes.vue b/src/components/view/b3-classes.vue index e4fc53a..bedba01 100644 --- a/src/components/view/b3-classes.vue +++ b/src/components/view/b3-classes.vue @@ -83,18 +83,14 @@ v-on:mouseenter="onMouseEnter(index)" v-on:mouseleave="currentUserIndex=null"> <div class="content-body-item" v-for="(m,i) in item.list" :key="'d'+i" :class="{hoverType:currentUserIndex==index}"> - <div class="work-box" :class="{type0:m.shift==='0',type1:m.shift==='1',type2:m.shift==='2',type3:m.shift==='3',type4:m.shift==='4',type5:m.shift==='5',type6:m.shift==='6'}"> - <!-- <div class="work-box-left"> - <span>{{ getShiftByDic(m.shift) }}</span> - </div> --> - <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!upPower"> - <!-- <i class="el-icon-arrow-down el-icon--right" style="font-size: 20px;color: #fff;cursor: pointer;"></i> --> + <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!upPower"> + <div class="work-box" :class="{type0:m.shift==='0',type1:m.shift==='1',type2:m.shift==='2',type3:m.shift==='3',type4:m.shift==='4',type5:m.shift==='5',type6:m.shift==='6'}"> <span style="cursor: pointer;" :style="`opacity: ${getShiftByDic(m.shift)=='鏃�'?0:1};`">{{ getShiftByDic(m.shift) }}</span> + </div> <el-dropdown-menu slot="dropdown"> <el-dropdown-item v-for="(n,j) in classType" :key="'h'+j" :command="n.value">{{ n.label }}</el-dropdown-item> </el-dropdown-menu> </el-dropdown> - </div> </div> </div> </div> @@ -767,7 +763,7 @@ display: flex; align-items: center; justify-content: space-around; - background: #F5F7FB; + background: #edeff2; border-radius: 8px 8px 8px 8px; color: #999; font-size: 14px; @@ -869,7 +865,7 @@ margin-left: 10px; } .hoverType{ - background: rgba(58,123,250,0.05); + background: rgba(58,123,250,0.03); } .year-table{ width: 100%; diff --git a/src/components/view/b4-daily-business-statistics.vue b/src/components/view/b4-daily-business-statistics.vue index 5ecb7e5..e0bc0d3 100644 --- a/src/components/view/b4-daily-business-statistics.vue +++ b/src/components/view/b4-daily-business-statistics.vue @@ -151,8 +151,9 @@ } }, mounted(){ + this.init() this.timers&&clearInterval(this.timers); - setInterval(this.init,1000*60*5) + setInterval(this.init(),1000*60*5) }, methods:{ init(){ diff --git a/src/components/view/b4-inspection-item-statistics.vue b/src/components/view/b4-inspection-item-statistics.vue index 293245b..bc0a983 100644 --- a/src/components/view/b4-inspection-item-statistics.vue +++ b/src/components/view/b4-inspection-item-statistics.vue @@ -190,9 +190,9 @@ } }, mounted(){ - // this.init() + this.init() this.timers&&clearInterval(this.timers); - setInterval(this.init,1000*60*5) + setInterval(this.init(),1000*60*5) }, methods:{ init(){ diff --git a/src/components/view/b4-sample-defects.vue b/src/components/view/b4-sample-defects.vue index 5637b5c..ea09b32 100644 --- a/src/components/view/b4-sample-defects.vue +++ b/src/components/view/b4-sample-defects.vue @@ -73,6 +73,7 @@ <el-table :data="tableData" style="width: 100%;margin-bottom: 10px;height: calc(100% - 40px);" + height="calc(100% - 40px)" row-key="id" v-loading="loading" border diff --git a/src/components/view/person-manage.vue b/src/components/view/person-manage.vue index 62b7845..43f52d3 100644 --- a/src/components/view/person-manage.vue +++ b/src/components/view/person-manage.vue @@ -174,8 +174,8 @@ <el-button size="small" @click="refresh()">閲� 缃�</el-button> <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> </div> - <div class="search_thing"> - <el-button size="small" type="primary" @click="openthirdParty">鑾峰彇涓夋柟浜哄憳</el-button> + <div class="search_thing" style="display: flex;justify-content: right;margin-right: 10px;"> + <el-button size="small" type="primary" @click="openthirdParty" v-if="addUserPower">鑾峰彇涓夋柟浜哄憳</el-button> <el-button size="small" type="primary" @click="opeaAdd" v-if="addPower">鏂板鐢ㄦ埛</el-button> </div> </div> @@ -204,15 +204,29 @@ <div class="body"> <el-row> <el-col :span="9" style="height: 70vh;overflow: hidden;"> - <el-input placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�" v-model="search2" size="small" style="width: 90%;padding: 0 5% 10px 5%;" + <el-input placeholder="杈撳叆鍏抽敭瀛楁悳绱�" v-model="search2" size="small" style="width: 90%;padding: 0 5% 10px 5%;" clearable @blur="searchFilter2" @clear="searchFilter2" @keyup.enter.native="searchFilter2()"> </el-input> <el-tree :data="datathirdParty" node-key="id" :props="defaultProps" @node-click="nodeClick2" - style="height: calc(100% - 42px);" :filter-node-method="filterNode2" ref="tree2" highlight-current> + style="height: calc(100% - 42px);" + @node-expand="nodeOpen0" :filter-node-method="filterNode2" ref="tree2" highlight-current> </el-tree> </el-col> <el-col :span="15" style="height: 70vh;padding-left: 8px;"> - <el-table height="70vh" border stripe :data="personList" v-loading="personLoad" ref="personTable" + <div class="search_thing" style="width: 360px;margin-bottom: 10px;"> + <div class="search_label" style="width: 140px;">鍛樺伐鍙�/鍛樺伐濮撳悕锛�</div> + <div class="search_input"> + <el-input + size="small" + placeholder="璇疯緭鍏ュ伐鍙�/鍛樺伐濮撳悕" + @clear="searchPerson" + clearable + v-model="userSearch2" + @keyup.enter.native="searchPerson()"> + <i slot="suffix" class="el-input__icon el-icon-search" style="cursor: pointer;" @click="searchPerson"></i></el-input> + </div> + </div> + <el-table height="67vh" border stripe :data="personList" v-loading="personLoad" ref="personTable" @selection-change="handleSelectionChange"> <el-table-column type="selection" width="50"> </el-table-column> @@ -330,6 +344,7 @@ upIndex: 0, addDia: false, addPower: true, + addUserPower: true, delStandardTree: true, addDia0: false, addOb: { @@ -343,12 +358,19 @@ expandedKeys: [], addLoad: false, personList: [], + personListCopy:[], treeLoad: false, personLoad: false, search2: '', - multipleSelection: [] + multipleSelection: [], + companiesList:[], + currentCompaniesList: [], + userSearch2:'' } }, + // watch: { + // userSearch2(val){} + // }, mounted() { this.selectTreeList() this.selectRole() @@ -359,6 +381,7 @@ openthirdParty() { this.addthirdParty = true; this.$axios.get(this.$api.companies.selectCompaniesList).then(res => { + this.companiesList = JSON.parse(JSON.stringify(res.data)); this.datathirdParty = [] for (let ai = 0; ai < res.data.length; ai++) { let a = res.data[ai] @@ -442,6 +465,7 @@ let power = JSON.parse(sessionStorage.getItem('power')) let up = false let add = false + let addUserPower = false let delStandardTree = false for (var i = 0; i < power.length; i++) { if (power[i].menuMethod == 'updateUser') { @@ -453,15 +477,19 @@ if (power[i].menuMethod == 'delDepartment') { delStandardTree = true } + if (power[i].menuMethod == 'selectCompaniesList') { + addUserPower = true + } } if (!up) { this.componentData.do.splice(0, 1) } this.delStandardTree = delStandardTree this.addPower = add + this.addUserPower = addUserPower }, handleAdd() { - if (this.addOb.fatherId) { + if (this.addOb.fatherId||this.addOb.name=='鍏ㄩ儴') { this.addDia0 = true; } else { this.$message.error('璇烽�夋嫨涓�涓灦鏋勫眰绾�') @@ -498,6 +526,9 @@ }, nodeOpen(data, node, el) { $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened') + }, + nodeOpen0(data, node, el){ + this.currentCompaniesList[node.level-1] = data.id }, nodeClose(data, node, el) { $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder') @@ -566,11 +597,13 @@ }) }, nodeClick2(ob, node, el) { + this.currentCompaniesList[node.level-1] = ob.id if (ob.id !== 'SC21') { this.personLoad = true this.$axios.post(this.$api.companies.selectSimpleList, { companyId: ob.id }).then(res => { + this.personListCopy = JSON.parse(JSON.stringify(res.data)) this.personList = res.data this.personLoad = false this.$refs.personTable.doLayout() @@ -579,9 +612,65 @@ }, handleSelectionChange(val) { this.multipleSelection = val; - console.log(this.multipleSelection); }, addUser2(){ + if(this.multipleSelection.length === 0){ + return this.$message.error('璇烽�夋嫨浜哄憳') + } + if(this.currentCompaniesList.length === 0){ + return this.$message.error('璇烽�夋嫨缁勭粐') + } + for (let index = this.currentCompaniesList.length-1; index >1; index--) { + let obj = this.multipleSelection.find(a=>a.companyId==this.currentCompaniesList[index]) + if(!obj){ + this.currentCompaniesList.splice(index,1) + }else{ + return + } + } + let arr = [] + this.currentCompaniesList.forEach(b=>{ + /* this.companiesList.forEach(a=>{ + if(a.companyId===b){ + console.log(a) + } + }) */ + let obj = this.companiesList.find(a=>a.companyId==b) + arr.push(obj) + }) + this.addLoad = true + this.$axios.post(this.$api.companies.addPersonUser, { + company: arr, + person: this.multipleSelection + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + this.addLoad = false + return + } + this.$message.success('鎿嶄綔鎴愬姛') + this.multipleSelection = [] + this.$refs.personTable.clearSelection() + this.addthirdParty = false + this.addLoad = false + this.personList = [] + this.userSearch2 = '' + this.refresh() + }).catch(e => { + this.addthirdParty = false + this.addLoad = false + }) + }, + searchPerson(){ + let arr = JSON.parse(JSON.stringify(this.personListCopy)) + this.personList = arr.filter(a=>{ + if(a.employeeID.includes(this.userSearch2)||a.name.includes(this.userSearch2)){ + return true + } + }) } } } diff --git a/src/components/view/role-manage.vue b/src/components/view/role-manage.vue index 6b41247..2b4d91b 100644 --- a/src/components/view/role-manage.vue +++ b/src/components/view/role-manage.vue @@ -115,7 +115,7 @@ entity: { name: null, orderBy: { - field: 'id', + field: 'id', order: 'asc' } }, diff --git a/src/main.js b/src/main.js index 24fdc91..580b072 100644 --- a/src/main.js +++ b/src/main.js @@ -13,10 +13,11 @@ //鏈湴 Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; -const javaApi = 'http://192.168.11.200:8001';//鏉� +// const javaApi = 'http://192.168.11.200:8001';//鏉� // const javaApi = 'http://10.20.102.168:8001';//寮� // const javaApi = 'http://172.20.10.3:8001';//濮� // const javaApi = 'http://192.168.11.2:8001';//鏌� + const javaApi = 'http://127.0.0.1:8001';//鏅� // const javaApi = 'http://114.132.189.42:1234';//娴嬭瘯鏈� //鑳滀簯鏈嶅姟鍣� // Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn"; -- Gitblit v1.9.3