package.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/business/inspectionTask.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/assets/styles/index.scss | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/Table/lims-table.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/Table/value-table.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/excelFountion.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/business/inspectionTask/components/EditInspectionItem.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/business/inspectionTask/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/business/inspectionTask/inspection.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/performance/manHour/workTimeConfig.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
package.json
@@ -45,6 +45,7 @@ "file-saver": "2.0.5", "fuse.js": "6.4.3", "highlight.js": "9.18.5", "html2canvas": "^1.4.1", "js-beautify": "1.13.0", "js-cookie": "3.0.1", "jsencrypt": "3.0.0-rc.1", src/api/business/inspectionTask.js
@@ -107,3 +107,165 @@ params: query, }); } // éä»¶ä¸ä¼ export function uploadFile(data) { return request({ url: "/insOrderPlan/uploadFile", method: "post", data: data, }); } // æ¥è¯¢æ£éªä»»å¡ export function doInsOrder(query) { return request({ url: "/insOrderPlan/doInsOrder", method: "get", params: query, }); } // æ¥è¯¢æ¯å¦æéè¦å¤æ¬¡æ£éªççµç¼é ç½® export function getCableTag(query) { return request({ url: "/insOrderPlan/getCableTag", method: "get", params: query, }); } // æ¥çé夿 è¯ export function getRepetitionTag(query) { return request({ url: "/insOrderPlan/getRepetitionTag", method: "get", params: query, }); } // æ¥è¯¢æ¯å¦æéè¦å¤æ¬¡æ£éªççµç¼é ç½® export function getRawMaterialTag(query) { return request({ url: "/insOrderPlan/getRawMaterialTag", method: "get", params: query, }); } // æ°é-æ°æ®éé export function dataCollection(data) { return request({ url: "/deviceScope/dataCollection", method: "post", data: data, }); } // 填忏©åº¦ä¸æ¹¿åº¦ export function write(data) { return request({ url: "/insOrderPlan/write", method: "post", data: data, }); } // è·åæ£éªé¡¹ç®å模æ¿å 容 export function getInsProduct(query) { return request({ url: "/insOrderPlan/getInsProduct", method: "get", params: query, }); } // 忢å 纤-å çº¤å¸¦è®°å½æ¨¡çæ¥è¯¢æ£éªå 容 export function getReportModel(query) { return request({ url: "/insOrderPlan/getReportModel", method: "get", params: query, }); } // å¤æè¯¥è®¾å¤æ¯å¦å¯ä»¥æ°é export function determineWhetherToCollectData(query) { return request({ url: "/deviceScope/determineWhetherToCollectData", method: "get", params: query, }); } // éè¿è®¾å¤åç±»è·å设å¤å表 export function search(query) { return request({ url: "/deviceScope/search", method: "get", params: query, }); } // 夿 ¸æ£éªä»»å¡ export function verifyPlan(data) { return request({ url: "/insOrderPlan/verifyPlan", method: "post", data: data, }); } // æ ¡éªæ£éªä»»å¡æäº¤ export function checkSubmitPlan(data) { return request({ url: "/insOrderPlan/checkSubmitPlan", method: "post", data: data, }); } // æ£éªä»»å¡æäº¤ export function submitPlan(data) { return request({ url: "/insOrderPlan/submitPlan", method: "post", data: data, }); } // ä¿åæ£éªå 容 export function saveInsContext(data) { return request({ url: "/insOrderPlan/saveInsContext", method: "post", data: data, }); } // éä»¶ä¸è½½ export function downFile(query) { return request({ url: "/insOrderPlan/downFile", method: "get", params: query, }); } // æ¥çæ£éªåä¸çéä»¶å表 export function getFileList(query) { return request({ url: "/insOrderPlan/getFileList", method: "get", params: query, }); } // éä»¶å é¤ export function delfile(query) { return request({ url: "/insOrderPlan/delfile", method: "delete", params: query, }); } src/assets/styles/index.scss
@@ -1,16 +1,17 @@ @import './variables.scss'; @import './mixin.scss'; @import './transition.scss'; @import './element-ui.scss'; @import './sidebar.scss'; @import './btn.scss'; @import "./variables.scss"; @import "./mixin.scss"; @import "./transition.scss"; @import "./element-ui.scss"; @import "./sidebar.scss"; @import "./btn.scss"; body { height: 100%; -moz-osx-font-smoothing: grayscale; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; } label { @@ -104,7 +105,8 @@ display: block; line-height: 32px; font-size: 16px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; color: #2c3e50; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; @@ -137,7 +139,7 @@ } .text-center { text-align: center text-align: center; } .sub-navbar { @@ -148,7 +150,13 @@ text-align: right; padding-right: 20px; transition: 600ms ease position; background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%); background: linear-gradient( 90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100% ); .subtitle { font-size: 20px; @@ -183,3 +191,7 @@ margin-bottom: 10px; } } .required-span { color: red; } src/components/Table/lims-table.vue
@@ -361,11 +361,10 @@ }, data() { return { spanInfo: {}, spanList: [], }; }, created() { mounted() { this.calculateSpanInfo(); }, methods: { src/components/Table/value-table.vue
@@ -1,320 +1,666 @@ <style scoped> .value-table { width: 100%; height: 100%; overflow-y: auto; } .value-table { width: 100%; height: 100%; overflow-y: auto; } .table { width: 100%; height: calc(100% - 42px); } .table { width: 100%; height: calc(100% - 42px); } .page { width: 100%; height: 30px; text-align: right; margin-top: 10px; } .page { width: 100%; height: 30px; text-align: right; margin-top: 10px; } .down-left { width: 50%; display: flex; align-items: center; justify-content: center; } .down-left { width: 50%; display: flex; align-items: center; justify-content: center; } .down-right { width: 50%; display: flex; align-items: center; justify-content: center; } .down-right { width: 50%; display: flex; align-items: center; justify-content: center; } .body { overflow-x: hidden; } .body { overflow-x: hidden; } .handleBtn { border: none; padding: 0; color: #409EFF; background: transparent; } .handleBtn { border: none; padding: 0; color: #409eff; background: transparent; } .handleBtn:hover { background: transparent; } .handleBtn:hover { background: transparent; } .handleBtn.is-disabled { color: #C0C4CC; } .red{ color: red !important; } >>>.el-loading-parent--relative { z-index: 1 !important; } >>> .el-table__body-wrapper::-webkit-scrollbar { height: 14px; /* 设置æ»å¨æ¡å®½åº¦ */ } .handleBtn.is-disabled { color: #c0c4cc; } .red { color: red !important; } >>> .el-loading-parent--relative { z-index: 1 !important; } >>> .el-table__body-wrapper::-webkit-scrollbar { height: 14px; /* 设置æ»å¨æ¡å®½åº¦ */ } </style> <style> /* .value-table .highlight-warning-row-border td { /* .value-table .highlight-warning-row-border td { border-top: 2px solid #ffcd29; border-bottom: 2px solid #ffcd29; } */ .value-table .highlight-warning-row-border td:first-child { border-left: 4px solid #ffcd29; } .value-table .highlight-warning-row-border td:first-child { border-left: 4px solid #ffcd29; } .value-table .highlight-warning-row-border td:last-child { border-right: 4px solid #ffcd29; } .value-table .highlight-warning-row-border td:last-child { border-right: 4px solid #ffcd29; } /* .value-table .highlight-danger-row-border td { /* .value-table .highlight-danger-row-border td { border-top: 2px solid red; border-bottom: 2px solid red; } */ .value-table .highlight-danger-row-border td:first-child { border-left: 4px solid #f56c6c; } .value-table .highlight-danger-row-border td:first-child { border-left: 4px solid #f56c6c; } .value-table .highlight-danger-row-border td:last-child { border-right: 4px solid #f56c6c; } .value-table .highlight-danger-row-border td:last-child { border-right: 4px solid #f56c6c; } .value-table .el-upload { width: 100%; } .value-table .el-upload { width: 100%; } .value-table .el-upload-dragger { width: 100%; } .value-table .el-upload-dragger { width: 100%; } .value-table .handleBtn.is-disabled .el-upload:focus { color: #C0C4CC !important; } .value-table .handleBtn.is-disabled .el-upload:focus { color: #c0c4cc !important; } .value-table .avatar-uploader .el-upload { height: 80px; display: flex; align-items: center; justify-content: center; } .el-table__empty-text{ text-align: left; width: 100%; display: inline-block; margin-left: 200px; } .value-table .avatar-uploader .el-upload { height: 80px; display: flex; align-items: center; justify-content: center; } .el-table__empty-text { text-align: left; width: 100%; display: inline-block; margin-left: 200px; } </style> <template> <div class="value-table"> <div :style="data.isPage!=undefined&&data.isPage!=true?'height:100%':''" class="table"> <el-table :key="specialKey" ref="eltable" v-loading="loading" :current-row-key="data.currentId" :data="tableData" :highlight-current-row="data.highlight===undefined||data.highlight" :row-class-name="tableRowClassName" :row-key="record=>record[rowKey]" :show-summary="data.countFleid!=undefined && data.countFleid.length > 0" :span-method="spanMethod" <div :style=" data.isPage != undefined && data.isPage != true ? 'height:100%' : '' " class="table" > <el-table :key="specialKey" ref="eltable" v-loading="loading" :current-row-key="data.currentId" :data="tableData" :highlight-current-row="data.highlight === undefined || data.highlight" :row-class-name="tableRowClassName" :row-key="(record) => record[rowKey]" :show-summary=" data.countFleid != undefined && data.countFleid.length > 0 " :span-method="spanMethod" :summary-method="getSummaries" height="100%" style="width: 100%;" tooltip-effect="dark" @select="select" @selection-change="selectChange" @sort-change="sortChange" @row-click="rowClick"> <el-table-column v-if="data.showSelect" :key="Math.random()" :width="selectionWidth" type="selection"> height="100%" style="width: 100%" tooltip-effect="dark" @select="select" @selection-change="selectChange" @sort-change="sortChange" @row-click="rowClick" > <el-table-column v-if="data.showSelect" :key="Math.random()" :width="selectionWidth" type="selection" > </el-table-column> <el-table-column v-if="data.isIndex" :key="Math.random()" :width="selectionWidth" align="center" label="åºå·" type="index"> <el-table-column v-if="data.isIndex" :key="Math.random()" :width="selectionWidth" align="center" label="åºå·" type="index" > </el-table-column> <el-table-column v-for="(a, ai) in tableHead" v-if="!data.headNoShow||(data.headNoShow&&data.headNoShow.length==0)||(data.headNoShow&&data.headNoShow.length>0&&!data.headNoShow.find(d=>d==a.label))" :key="ai+'bbbbb'" :isColumnWidth="isColumnWidth" :isShowZero="isShowZero" :label="a.value" :min-width="columnMinWidth" :prop="a.label" :sortable="a.sort === 'custom' ? 'custom' : false" show-overflow-tooltip> <el-table-column v-for="(a, ai) in tableHead" v-if=" !data.headNoShow || (data.headNoShow && data.headNoShow.length == 0) || (data.headNoShow && data.headNoShow.length > 0 && !data.headNoShow.find((d) => d == a.label)) " :key="ai + 'bbbbb'" :isColumnWidth="isColumnWidth" :isShowZero="isShowZero" :label="a.value" :min-width="columnMinWidth" :prop="a.label" :sortable="a.sort === 'custom' ? 'custom' : false" show-overflow-tooltip > <template slot-scope="scope"> <div v-if="showType(a.label, data.tagField) != null"> <template v-if="typeof(scope.row[a.label]) == 'object'"> <template v-if="typeof scope.row[a.label] == 'object'"> <template v-for="(param, i) in scope.row[a.label]"> <el-tag v-for="(b, bi) in data.tagField[a.label].select" v-if="b.value == param" :key="bi+'cccc'" :type="b.type" size="medium" style="margin-right: 5px;">{{b.label}}</el-tag> <el-tag v-for="(b, bi) in data.tagField[a.label].select" v-if="b.value == param" :key="bi + 'cccc'" :type="b.type" size="medium" style="margin-right: 5px" >{{ b.label }}</el-tag > </template> </template> <template v-else> <el-tag v-for="(b, bi) in data.tagField[a.label].select" v-show="b.value == scope.row[a.label]" :key="bi+'ddddd'" :type="b.type" size="medium">{{b.label}}</el-tag> <el-tag v-for="(b, bi) in data.tagField[a.label].select" v-show="b.value == scope.row[a.label]" :key="bi + 'ddddd'" :type="b.type" size="medium" >{{ b.label }}</el-tag > </template> </div> <!-- 坿ä½è¡è¿è¡ç¹å»äºä»¶ --> <span v-else-if="data.linkEvent&&showLink(a.label, data.linkEvent)" style="color:#409EFF;cursor: pointer;" @click="handleLinkEvent(scope.row,data.linkEvent[a.label])">{{scope.row[a.label]}}</span> <img v-else-if="showUpload(a.label)&&scope.row[a.label]" :src="javaApi+'/img/'+scope.row[a.label]" alt="" style="width: 40px;height: 40px;margin-top: 10px;"> <span v-else :class="{red:getRedColor(a.label,scope.row)}" >{{scope.row[a.label]}}</span> <span v-else-if="data.linkEvent && showLink(a.label, data.linkEvent)" style="color: #409eff; cursor: pointer" @click="handleLinkEvent(scope.row, data.linkEvent[a.label])" >{{ scope.row[a.label] }}</span > <img v-else-if="showUpload(a.label) && scope.row[a.label]" :src="javaApi + '/img/' + scope.row[a.label]" alt="" style="width: 40px; height: 40px; margin-top: 10px" /> <span v-else :class="{ red: getRedColor(a.label, scope.row) }">{{ scope.row[a.label] }}</span> </template> </el-table-column> <el-table-column v-if="data.do.length > 0" :width="getWidth()" align="center" fixed="right" label="æä½"> <el-table-column v-if="data.do.length > 0" :width="getWidth()" align="center" fixed="right" label="æä½" > <template slot-scope="scope"> <el-button v-for="(a, ai) in data.do" :key="ai +'qqqq'" :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" :type="a.type" class="handleBtn" @click="main(scope.row, a)"> <span v-if="a.type!='upload'">{{a.font}}</span> <el-upload v-else ref='upload' :accept='a.uploadConfig.accept' :action="javaApi+a.uploadConfig.url+'?id='+ (a.uploadConfig.uploadIdFun ? a.uploadConfig.uploadIdFun(scope.row) : scope.row.id)" :disabled="a.disabFun ? a.disabFun(scope.row,scope.$index) : false" :headers="token" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" name="file" style="background: transparent;"> <span>{{a.font}}</span> <el-button v-for="(a, ai) in data.do" :key="ai + 'qqqq'" :disabled=" a.disabFun ? a.disabFun(scope.row, scope.$index) : false " :type="a.type" class="handleBtn" @click="main(scope.row, a)" > <span v-if="a.type != 'upload'">{{ a.font }}</span> <el-upload v-else ref="upload" :accept="a.uploadConfig.accept" :action=" javaApi + a.uploadConfig.url + '?id=' + (a.uploadConfig.uploadIdFun ? a.uploadConfig.uploadIdFun(scope.row) : scope.row.id) " :disabled=" a.disabFun ? a.disabFun(scope.row, scope.$index) : false " :headers="token" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" name="file" style="background: transparent" > <span>{{ a.font }}</span> </el-upload> </el-button> </template> </el-table-column> </el-table> </div> <div v-if="data.isPage==undefined||data.isPage" class="page"> <el-pagination :current-page="page.current" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" :total="total" layout="total, sizes, prev, pager, next, jumper" @size-change="sizeChange" @current-change="currentChange"> <div v-if="data.isPage == undefined || data.isPage" class="page"> <el-pagination :current-page="page.current" :page-size="page.size" :page-sizes="[10, 20, 30, 50, 100]" :total="total" layout="total, sizes, prev, pager, next, jumper" @size-change="sizeChange" @current-change="currentChange" > </el-pagination> </div> <el-dialog :close-on-click-modal="false" :visible.sync="upDia" :width="data.row==1?'500px':540+data.row * 200 + 'px'" append-to-body title="ç¼è¾"> <div class="body" style="max-height: 600px;overflow-y: auto;padding: 5px 10px 5px 0;"> <el-dialog :close-on-click-modal="false" :visible.sync="upDia" :width="data.row == 1 ? '500px' : 540 + data.row * 200 + 'px'" append-to-body title="ç¼è¾" > <div class="body" style="max-height: 600px; overflow-y: auto; padding: 5px 10px 5px 0" > <div v-if="data.row > 1"> <div v-for="(a, ai) in upHead" :key="ai+'ffff'" style="line-height: 50px;"> <el-col :offset="1" :span="6/data.row" style="text-align: right;"> <span v-if="showUpReq(a.label)" class="required-span">* </span>{{a.value}}ï¼ <div v-for="(a, ai) in upHead" :key="ai + 'ffff'" style="line-height: 50px" > <el-col :offset="1" :span="6 / data.row" style="text-align: right"> <span v-if="showUpReq(a.label)" class="required-span">* </span >{{ a.value }}ï¼ </el-col> <el-col :span="16/data.row"> <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :disabled="isDisabled(a.label)" :placeholder="`请è¾å ¥${a.value}`" <el-col :span="16 / data.row"> <el-input v-if=" showType(a.label, data.selectField) == null && !showUpload(a.label) && !showCascader(a.label) " v-model="upData[a.label]" :disabled="isDisabled(a.label)" :placeholder="`请è¾å ¥${a.value}`" clearable size="small"></el-input> <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :allow-create="data.selectField[a.label].allowCreate" :default-first-option="data.selectField[a.label].defaultFirstOption" :disabled="isDisabled(a.label)" :multiple="data.selectField[a.label].choose" clearable filterable size="small" style="width: 100%;"> <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'eeeee'" :label="b.label" :value="b.value"> size="small" ></el-input> <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :allow-create="data.selectField[a.label].allowCreate" :default-first-option=" data.selectField[a.label].defaultFirstOption " :disabled="isDisabled(a.label)" :multiple="data.selectField[a.label].choose" clearable filterable size="small" style="width: 100%" > <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi + 'eeeee'" :label="b.label" :value="b.value" > </el-option> </el-select> <el-upload v-if="showUpload(a.label)" ref='upload' :accept='data.addUploadConfig.accept' :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false" :on-error="onError" :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader" <el-upload v-if="showUpload(a.label)" ref="upload" :accept="data.addUploadConfig.accept" :action="javaApi + data.addUploadConfig.url" :headers="token" :multiple="false" :on-error="onError" :on-success="(m) => handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader" name="file" style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> style=" background: transparent; width: 80px; height: 80px; border: 1px solid #dcdfe6; border-radius: 6px; margin: 10px 0; " > <img v-if="upData[a.label]" :src="javaApi + '/img/' + upData[a.label]" class="avatar" style="width: 80px; height: 80px; border-radius: 6px" /> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`è¯·éæ©${a.value}`" :props="data.cascaderField.props" :show-all-levels="false" :value="upData[a.label]" clearable filterable size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader> <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`è¯·éæ©${a.value}`" :props="data.cascaderField.props" :show-all-levels="false" :value="upData[a.label]" clearable filterable size="small" style="width: 100%" @change="(m) => handleCascader(m, a.label)" ></el-cascader> </el-col> </div> </div> <div v-else> <el-row v-for="(a, ai) in upHead" :key="ai+'ggggg'" style="line-height: 50px;"> <el-col :span="6" style="text-align: right;"> <span v-if="showUpReq(a.label)" class="required-span">* </span>{{a.value}}ï¼ <el-row v-for="(a, ai) in upHead" :key="ai + 'ggggg'" style="line-height: 50px" > <el-col :span="6" style="text-align: right"> <span v-if="showUpReq(a.label)" class="required-span">* </span >{{ a.value }}ï¼ </el-col> <el-col :offset="1" :span="16"> <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :disabled="isDisabled(a.label)" :placeholder="`请è¾å ¥${a.value}`" <el-input v-if=" showType(a.label, data.selectField) == null && !showUpload(a.label) && !showCascader(a.label) " v-model="upData[a.label]" :disabled="isDisabled(a.label)" :placeholder="`请è¾å ¥${a.value}`" clearable size="small"></el-input> <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :disabled="isDisabled(a.label)" :multiple="data.selectField[a.label].choose" clearable filterable size="small" style="width: 100%;"> <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'fffff'" :label="b.label" :value="b.value"></el-option> size="small" ></el-input> <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :disabled="isDisabled(a.label)" :multiple="data.selectField[a.label].choose" clearable filterable size="small" style="width: 100%" > <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi + 'fffff'" :label="b.label" :value="b.value" ></el-option> </el-select> <el-upload v-if="showUpload(a.label)" ref='upload' :accept='data.addUploadConfig.accept' :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false" :on-error="onError" :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader" name="file" style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> <el-upload v-if="showUpload(a.label)" ref="upload" :accept="data.addUploadConfig.accept" :action="javaApi + data.addUploadConfig.url" :headers="token" :multiple="false" :on-error="onError" :on-success="(m) => handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader" name="file" style=" background: transparent; width: 80px; height: 80px; border: 1px solid #dcdfe6; border-radius: 6px; margin: 10px 0; " > <img v-if="upData[a.label]" :src="javaApi + '/img/' + upData[a.label]" class="avatar" style="width: 80px; height: 80px; border-radius: 6px" /> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`è¯·éæ©${a.value}`" :props="data.cascaderField.props" :show-all-levels="false" :value="upData[a.label]" clearable filterable size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader> <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`è¯·éæ©${a.value}`" :props="data.cascaderField.props" :show-all-levels="false" :value="upData[a.label]" clearable filterable size="small" style="width: 100%" @change="(m) => handleCascader(m, a.label)" ></el-cascader> </el-col> </el-row> </div> </div> <span slot="footer" class="dialog-footer"> <el-button @click="upDia = false">å æ¶</el-button> <el-button :loading="upLoad" type="primary" @click="saveUpData">ç¡® å®</el-button> <el-button :loading="upLoad" type="primary" @click="saveUpData" >ç¡® å®</el-button > </span> </el-dialog> <el-dialog :close-on-click-modal="false" :visible.sync="addDia" :width="data.row==1?'500px':540+data.row * 200 + 'px'" append-to-body title="æ°å¢"> <div v-if="addDia" class="body" style="max-height: 550px;overflow-y: auto;padding: 5px 10px 5px 0;"> <el-dialog :close-on-click-modal="false" :visible.sync="addDia" :width="data.row == 1 ? '500px' : 540 + data.row * 200 + 'px'" append-to-body title="æ°å¢" > <div v-if="addDia" class="body" style="max-height: 550px; overflow-y: auto; padding: 5px 10px 5px 0" > <div v-if="data.row > 1"> <div v-for="(a, ai) in upHead" :key="ai+'yyyyy'" style="line-height: 50px;"> <el-col :offset="1" :span="6/data.row" style="text-align: right;"><span v-if="showAddReq(a.label)" class="required-span">* </span>{{a.value}}ï¼</el-col> <el-col :span="16/data.row"> <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :placeholder="`请è¾å ¥${a.value}`" clearable size="small"></el-input> <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" :placeholder="`è¯·éæ©${a.value}`" clearable filterable size="small" style="width: 100%;"> <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'hhhh'" :label="b.label" :value="b.value"></el-option> <div v-for="(a, ai) in upHead" :key="ai + 'yyyyy'" style="line-height: 50px" > <el-col :offset="1" :span="6 / data.row" style="text-align: right" ><span v-if="showAddReq(a.label)" class="required-span">* </span >{{ a.value }}ï¼</el-col > <el-col :span="16 / data.row"> <el-input v-if=" showType(a.label, data.selectField) == null && !showUpload(a.label) && !showCascader(a.label) " v-model="upData[a.label]" :placeholder="`请è¾å ¥${a.value}`" clearable size="small" ></el-input> <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" :placeholder="`è¯·éæ©${a.value}`" clearable filterable size="small" style="width: 100%" > <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi + 'hhhh'" :label="b.label" :value="b.value" ></el-option> </el-select> <el-upload v-if="showUpload(a.label)" ref='upload' :accept='data.addUploadConfig.accept' :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false" :on-error="onError" :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader" <el-upload v-if="showUpload(a.label)" ref="upload" :accept="data.addUploadConfig.accept" :action="javaApi + data.addUploadConfig.url" :headers="token" :multiple="false" :on-error="onError" :on-success="(m) => handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader" name="file" style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> style=" background: transparent; width: 80px; height: 80px; border: 1px solid #dcdfe6; border-radius: 6px; margin: 10px 0; " > <img v-if="upData[a.label]" :src="javaApi + '/img/' + upData[a.label]" class="avatar" style="width: 80px; height: 80px; border-radius: 6px" /> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`è¯·éæ©${a.value}`" :props="data.cascaderField.props" :show-all-levels="false" clearable filterable size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader> <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`è¯·éæ©${a.value}`" :props="data.cascaderField.props" :show-all-levels="false" clearable filterable size="small" style="width: 100%" @change="(m) => handleCascader(m, a.label)" ></el-cascader> </el-col> </div> </div> <div v-else> <el-row v-for="(a, ai) in upHead" :key="ai+'jjjjj'" style="line-height: 50px;"> <el-col :span="6" style="text-align: right;"><span v-if="showAddReq(a.label)" class="required-span">* </span>{{a.value}}ï¼</el-col> <el-row v-for="(a, ai) in upHead" :key="ai + 'jjjjj'" style="line-height: 50px" > <el-col :span="6" style="text-align: right" ><span v-if="showAddReq(a.label)" class="required-span">* </span >{{ a.value }}ï¼</el-col > <el-col :offset="1" :span="16"> <el-input v-if="showType(a.label, data.selectField) == null&&!showUpload(a.label)&&!showCascader(a.label)" v-model="upData[a.label]" :placeholder="`请è¾å ¥${a.value}`" clearable size="small"></el-input> <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" :placeholder="`è¯·éæ©${a.value}`" clearable size="small" style="width: 100%;"> <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi+'mmmmmm'" :label="b.label" :value="b.value"></el-option> <el-input v-if=" showType(a.label, data.selectField) == null && !showUpload(a.label) && !showCascader(a.label) " v-model="upData[a.label]" :placeholder="`请è¾å ¥${a.value}`" clearable size="small" ></el-input> <el-select v-if="showType(a.label, data.selectField) != null" v-model="upData[a.label]" :multiple="data.selectField[a.label].choose" :placeholder="`è¯·éæ©${a.value}`" clearable size="small" style="width: 100%" > <el-option v-for="(b, bi) in data.selectField[a.label].select" :key="bi + 'mmmmmm'" :label="b.label" :value="b.value" ></el-option> </el-select> <el-upload v-if="showUpload(a.label)" ref='upload' :accept='data.addUploadConfig.accept' :action="javaApi+data.addUploadConfig.url" :headers="token" :multiple="false" :on-error="onError" :on-success="m=>handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader" <el-upload v-if="showUpload(a.label)" ref="upload" :accept="data.addUploadConfig.accept" :action="javaApi + data.addUploadConfig.url" :headers="token" :multiple="false" :on-error="onError" :on-success="(m) => handleSuccessUp(m, a.label)" :show-file-list="false" class="avatar-uploader" name="file" style="background: transparent;width: 80px;height: 80px;border: 1px solid #DCDFE6;border-radius: 6px;margin: 10px 0;"> <img v-if="upData[a.label]" :src="javaApi+'/img/'+upData[a.label]" class="avatar" style="width: 80px;height: 80px;border-radius: 6px;"> style=" background: transparent; width: 80px; height: 80px; border: 1px solid #dcdfe6; border-radius: 6px; margin: 10px 0; " > <img v-if="upData[a.label]" :src="javaApi + '/img/' + upData[a.label]" class="avatar" style="width: 80px; height: 80px; border-radius: 6px" /> <i v-else class="el-icon-plus avatar-uploader-icon"></i> </el-upload> <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`è¯·éæ©${a.value}`" :props="data.cascaderField.props" :show-all-levels="false" clearable filterable size="small" style="width: 100%;" @change="m=>handleCascader(m,a.label)"></el-cascader> <el-cascader v-if="showCascader(a.label)" :options="data.cascaderField[a.label].tree" :placeholder="`è¯·éæ©${a.value}`" :props="data.cascaderField.props" :show-all-levels="false" clearable filterable size="small" style="width: 100%" @change="(m) => handleCascader(m, a.label)" ></el-cascader> </el-col> </el-row> </div> </div> <span slot="footer" class="dialog-footer"> <el-button @click="addDia = false">å æ¶</el-button> <el-button :loading="addLoad" type="primary" @click="saveAddData">ç¡® å®</el-button> <el-button :loading="addLoad" type="primary" @click="saveAddData" >ç¡® å®</el-button > </span> </el-dialog> <el-dialog :visible.sync="downDia" title="导åº" width="400px"> <div style="display: flex;width: 100%;height: 100px;"> <div style="display: flex; width: 100%; height: 100px"> <div class="down-left" @click="downFile(true)"> <el-button>æ¬é¡µå¯¼åº</el-button> </div> @@ -324,10 +670,22 @@ </div> </el-dialog> <el-dialog :visible.sync="uploadDia" title="æ°æ®å¯¼å ¥" width="500px"> <div style="margin: 0 auto;"> <el-upload ref="upload" :accept="data.accept===undefined?'.csv':data.accept" :action="javaApi + inputUrl" :auto-upload="false" :data="{param: data.uploadStr}" :file-list="fileList" :headers="token" :limit="1" :on-change="beforeUpload" :on-error="onError" :on-success="onSuccess" drag name="file"> <div style="margin: 0 auto"> <el-upload ref="upload" :accept="data.accept === undefined ? '.csv' : data.accept" :action="javaApi + inputUrl" :auto-upload="false" :data="{ param: data.uploadStr }" :file-list="fileList" :headers="token" :limit="1" :on-change="beforeUpload" :on-error="onError" :on-success="onSuccess" drag name="file" > <i class="el-icon-upload"></i> <div class="el-upload__text">å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em></div> </el-upload> @@ -341,323 +699,346 @@ </template> <script> export default { props: { selectionWidth: { type: String, default: () => '65' }, columnMinWidth: { type: String, default: () => '155' }, isColumnWidth: { type: Boolean, default: () => false }, isShowZero: { type: Boolean, default: () => false }, tableRowClassName: { type: Function }, rowKey: { type: String, default: ()=>{ return 'id' } }, url: { type: String, default: () => null }, upUrl: { type: String, default: () => null }, delUrl: { type: String, default: () => null }, downUrl: { type: String, default: () => null }, inputUrl: { type: String, default: () => null }, componentData: { type: Object, default: () => { return { entity: { orderBy: { field: 'id', order: 'asc' } }, isIndex: false, showSelect: false, select: true, row: 1, do: [{ id: 'update', font: 'ç¼è¾', type: 'text', method: 'doDiy' }, { id: 'delete', font: 'å é¤', type: 'text', method: 'doDiy' }], doDiy: true, tagField: [{ label: 'state', select: [{ value: '1', type: 'success', label: 'å¯ç¨' }, { value: '0', type: 'danger', label: 'åç¨' }] }] } } } export default { props: { selectionWidth: { type: String, default: () => "65", }, data() { return { data: { columnMinWidth: { type: String, default: () => "155", }, isColumnWidth: { type: Boolean, default: () => false, }, isShowZero: { type: Boolean, default: () => false, }, tableRowClassName: { type: Function, }, rowKey: { type: String, default: () => { return "id"; }, }, url: { type: String, default: () => null, }, upUrl: { type: String, default: () => null, }, delUrl: { type: String, default: () => null, }, downUrl: { type: String, default: () => null, }, inputUrl: { type: String, default: () => null, }, componentData: { type: Object, default: () => { return { entity: { orderBy: { field: 'id', order: 'asc' } field: "id", order: "asc", }, }, isIndex: false, showSelect: false, select: true, row: 1, isPage: true, // do: [{ font: 'å é¤', type: 'text' }], type: [], uploadStr: "", currentId: '', //å½åé«äº®çID do: [ { id: "update", font: "ç¼è¾", type: "text", method: "doDiy", }, { id: "delete", font: "å é¤", type: "text", method: "doDiy", }, ], doDiy: true, tagField: [ { label: "state", select: [ { value: "1", type: "success", label: "å¯ç¨", }, { value: "0", type: "danger", label: "åç¨", }, ], }, ], }; }, }, }, data() { return { data: { entity: { orderBy: { field: "id", order: "asc", }, }, tableHead: [], tableData: [], multipleSelection: [], user: {}, page: { current: 1, size: 20, }, total: 0, loading: false, upDia: false, upData: {}, upHead: [], upLoad: false, addDia: false, addUrl: null, addLoad: false, dataCopy: {}, downDia: false, uploadDia: false, token: null, fileList: [], init: true, spanList: [ // { // arr:[], // position:0 // } isIndex: false, showSelect: false, select: true, row: 1, isPage: true, // do: [ { font: "å é¤", type: "text", }, ], specialSpanList: [ // { // arr:[], // position:0 // } ], param: {}, specialKey:'table-' } }, beforeUpdate() { this.$nextTick(() => { this.$refs.eltable.doLayout() }) }, mounted() { this.data = this.componentData this.dataCopy = this.HaveJson(this.componentData) if (this.data.init === undefined || this.data.init === true) { this.selectList() } this.token = { 'token': sessionStorage.getItem('token') } this.specialKey = this.specialKey+Math.random()*100; }, methods: { rowspan(spanArr, position, spanName) { this.tableData.forEach((item, index) => { if (index === 0) { type: [], uploadStr: "", currentId: "", //å½åé«äº®çID }, tableHead: [], tableData: [], multipleSelection: [], user: {}, page: { current: 1, size: 20, }, total: 0, loading: false, upDia: false, upData: {}, upHead: [], upLoad: false, addDia: false, addUrl: null, addLoad: false, dataCopy: {}, downDia: false, uploadDia: false, token: null, fileList: [], init: true, spanList: [ // { // arr:[], // position:0 // } ], specialSpanList: [ // { // arr:[], // position:0 // } ], param: {}, specialKey: "table-", }; }, beforeUpdate() { this.$nextTick(() => { this.$refs.eltable.doLayout(); }); }, mounted() { this.data = this.componentData; this.dataCopy = this.HaveJson(this.componentData); if (this.data.init === undefined || this.data.init === true) { this.selectList(); } this.token = { token: sessionStorage.getItem("token"), }; this.specialKey = this.specialKey + Math.random() * 100; }, methods: { rowspan(spanArr, position, spanName) { this.tableData.forEach((item, index) => { if (index === 0) { spanArr.push(1); position = 0; } else { if ( this.tableData[index][spanName] === this.tableData[index - 1][spanName] ) { spanArr[position] += 1; spanArr.push(0); } else { spanArr.push(1); position = 0; } else { if ( this.tableData[index][spanName] === this.tableData[index - 1][spanName] ) { spanArr[position] += 1; spanArr.push(0); } else { spanArr.push(1); position = index; } position = index; } } }); }, spanMethod({ row, column, rowIndex, columnIndex }) { // ä¸è¬çåå¹¶è¡ if ( this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length > 0 ) { let i = null; let obj = this.data.spanConfig.rows.find((item, index) => { i = index; return item.index == columnIndex; }); }, spanMethod({ row, column, rowIndex, columnIndex }) { // ä¸è¬çåå¹¶è¡ if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length > 0) { let i = null; let obj = this.data.spanConfig.rows.find((item, index) => { i = index; return item.index == columnIndex }) if (obj) { const _row = this.spanList[i].arr[rowIndex]; const _col = _row > 0 ? 1 : 0; return { rowspan: _row, colspan: _col, }; } if (obj) { const _row = this.spanList[i].arr[rowIndex]; const _col = _row > 0 ? 1 : 0; return { rowspan: _row, colspan: _col, }; } // ç¹æ®çåå¹¶è¡ if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special.main && this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) { let i = null; let obj = this.data.spanConfig.special.rows.find((item, index) => { i = index; return item.index == columnIndex }) if (obj) { const _row = this.specialSpanList[i].arr[rowIndex]; const _col = _row > 0 ? 1 : 0; return { rowspan: _row, colspan: _col, }; } } // ç¹æ®çåå¹¶è¡ if ( this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special.main && this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0 ) { let i = null; let obj = this.data.spanConfig.special.rows.find((item, index) => { i = index; return item.index == columnIndex; }); if (obj) { const _row = this.specialSpanList[i].arr[rowIndex]; const _col = _row > 0 ? 1 : 0; return { rowspan: _row, colspan: _col, }; } }, selectChange(val) { if (this.data.select) { this.multipleSelection = val; } }, selectChange(val) { if (this.data.select) { this.multipleSelection = val; } else { this.multipleSelection = val[val.length - 1]; } if (this.data.selectMethod != undefined) { if (this.$parent.$el.className.indexOf("el-") == 0) { this.$parent.$parent[this.data.selectMethod](val); } else { this.multipleSelection = val[val.length - 1]; this.$parent[this.data.selectMethod](val); } if (this.data.selectMethod != undefined) { if (this.$parent.$el.className.indexOf('el-') == 0) { this.$parent.$parent[this.data.selectMethod](val) } else { this.$parent[this.data.selectMethod](val) } }, select(val, row) { if (!this.data.select) { this.$refs["eltable"].clearSelection(); this.$refs["eltable"].toggleRowSelection(row, true); } }, rowClick(row, column, event) { if (this.data.select) { this.$refs["eltable"].toggleRowSelection(row); } else { this.$refs["eltable"].clearSelection(); this.$refs["eltable"].toggleRowSelection(row, true); } }, sizeChange(val) { this.page.size = val; this.selectList("page"); }, currentChange(val) { this.page.current = val; this.selectList("page"); }, // è°åè¡¨æ ¼æ¥è¯¢æ¥å£ selectList(val) { // console.log('val---', val) // console.log('this.page---', this.page) // this.loading = true if (val === undefined) { this.page.current = 1; } if (val === "lastPage") { this.page.current = this.page.current - 1; // ä¾å¦å 餿¬é¡µæå䏿¡æ°æ®ï¼å°å½å页é¢å®ä¸ºä¸ä¸é¡µï¼é¤ç¬¬ä¸é¡µå¤ } // ä¸è¦åé¡µå°±å ¨æ¥ if (this.data.isPage != undefined && this.data.isPage != true) { this.page = { current: -1, size: -1, }; } this.$axios .post( this.url, { page: this.page, entity: this.data.entity, }, { headers: { "Content-Type": "application/json", }, } } }, select(val, row) { if (!this.data.select) { this.$refs['eltable'].clearSelection() this.$refs['eltable'].toggleRowSelection(row, true) } }, rowClick(row, column, event) { if (this.data.select) { this.$refs['eltable'].toggleRowSelection(row) } else { this.$refs['eltable'].clearSelection() this.$refs['eltable'].toggleRowSelection(row, true) } }, sizeChange(val) { this.page.size = val this.selectList('page') }, currentChange(val) { this.page.current = val this.selectList('page') }, // è°åè¡¨æ ¼æ¥è¯¢æ¥å£ selectList(val) { // console.log('val---', val) // console.log('this.page---', this.page) // this.loading = true if(val===undefined){ this.page.current = 1; } if (val === 'lastPage') { this.page.current = this.page.current - 1 // ä¾å¦å 餿¬é¡µæå䏿¡æ°æ®ï¼å°å½å页é¢å®ä¸ºä¸ä¸é¡µï¼é¤ç¬¬ä¸é¡µå¤ } // ä¸è¦åé¡µå°±å ¨æ¥ if (this.data.isPage != undefined && this.data.isPage != true) { this.page = { current: -1, size: -1, } } this.$axios.post(this.url, { page: this.page, entity: this.data.entity }, { headers: { 'Content-Type': 'application/json' } }).then(res => { ) .then((res) => { if (res.code === 201) { this.loading = false return this.loading = false; return; } this.total = res.data.body.total this.tableHead = res.data.head this.tableData = res.data.body.records this.total = res.data.body.total; this.tableHead = res.data.head; this.tableData = res.data.body.records; if (this.data.needSort !== undefined) { // æ ¹æ®ç¶ç»ä»¶ä¼ 忥çneedSortæ°ç»ï¼å¤æåªäºå段éè¦æåºåè½ for (var i = 0; i < this.data.needSort.length; i++) { this.tableHead.forEach(item => { this.tableHead.forEach((item) => { if (item.label === this.data.needSort[i]) { item.sort = 'custom' item.sort = "custom"; } }) }); } } if (this.isShowZero) { // å·¥æ¶ç®¡ç-å·¥æ¶ç»è®¡æ²¡ææ¶é´çå°±å±ç¤º0 this.tableData.map(item => { Object.keys(item).forEach(val => { if (item[val] === null && (val.includes('Hours') || val === 'total')) { item[val] = 0 this.tableData.map((item) => { Object.keys(item).forEach((val) => { if ( item[val] === null && (val.includes("Hours") || val === "total") ) { item[val] = 0; } }) }) }); }); } if (this.tableData.length === 0 && this.page.current > 1) { this.selectList('lastPage') this.selectList("lastPage"); } // if (this.isColumnWidth) { // this.tableHead.forEach(item => { @@ -684,554 +1065,634 @@ // 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 => { this.tableData.map((b) => { try { b[a] = JSON.parse(b[a]) b[a] = JSON.parse(b[a]); } catch (e) {} }) }); } } // ä¸è¬çåå¹¶è¡ if (this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length > 0) { if ( this.data.spanConfig != undefined && this.data.spanConfig.rows && this.data.spanConfig.rows.length > 0 ) { this.spanList = []; this.data.spanConfig.rows.forEach((item, index) => { this.spanList.push({ arr: [], position: 0 }) this.rowspan(this.spanList[index].arr, this.spanList[index].position, item.name); }) position: 0, }); this.rowspan( this.spanList[index].arr, this.spanList[index].position, item.name ); }); } // ç¹æ®çåå¹¶è¡ if (this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special .main && this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0) { this.specialSpanList = [] if ( this.data.spanConfig != undefined && this.data.spanConfig.special && this.data.spanConfig.special.main && this.data.spanConfig.special.rows && this.data.spanConfig.special.rows.length > 0 ) { this.specialSpanList = []; this.data.spanConfig.special.rows.forEach((item, index) => { this.specialSpanList.push({ arr: [], position: 0 }) this.rowspan(this.specialSpanList[index].arr, this.specialSpanList[index].position, this.data .spanConfig.special.main); }) position: 0, }); this.rowspan( this.specialSpanList[index].arr, this.specialSpanList[index].position, this.data.spanConfig.special.main ); }); } this.loading = false }).catch(e => { console.log('è¯·å·æ°é¡µé¢åå°è¯---', e) this.loading = false this.$message.error('è¯·å·æ°é¡µé¢åå°è¯') this.loading = false; }) }, sortChange(ob) { this.data.entity.orderBy = {} this.data.entity.orderBy.field = ob.prop if (ob.order == 'ascending') { this.data.entity.orderBy.order = 'asc' } else if (ob.order == 'descending') { this.data.entity.orderBy.order = 'desc' } else { if (this.componentData.entity.orderBy != undefined) { this.data.entity.orderBy = this.HaveJson(this.dataCopy.entity.orderBy) } } this.selectList() }, // å±ç¤ºtag showType(val, ob) { var str = ob[val] return str == undefined ? null : ob[val].select }, // å±ç¤ºæä½æ showLink(val, ob) { var str = ob[val] return str == undefined ? null : ob[val].method }, showAddReq(label) { if (this.data.requiredAdd == undefined) { return } for (var i = 0; i < this.data.requiredAdd.length; i++) { if (label == this.data.requiredAdd[i]) { return true } } return false }, showUpReq(label) { if (this.data.requiredUp == undefined) { return } for (var i = 0; i < this.data.requiredUp.length; i++) { if (label == this.data.requiredUp[i]) { return true } } return false }, showUpload(label) { if (this.data.addUpload && this.data.addUpload.find(m => m == label)) { return true; } else { return false; } }, showCascader(label) { if (this.data.cascaderField && this.data.cascaderField[label]) { return true; } else { return false; } }, handleTree(arr, value) { let label = '' for (let i = 0; i < arr.length; i++) { if (arr[i].id == value) { label = arr[i].name return label } else if (arr[i].children) { label = this.handleTree(arr[i].children, value) } } return label }, main(row, val) { if (val.method == undefined) return else if (val.method == 'doDiy') { if (val.id == 'update') { // ç¼è¾æä½ this.upDia = true, this.upData = this.HaveJson(row) this.upHead = this.HaveJson(this.tableHead) this.upHead.forEach((item, index) => { if (this.data.cascaderField && this.data.cascaderField[item.label]) { if (this.upData[item.label]) { this.upData[item.label] = JSON.parse(this.upData[item.label]) } else { this.upData[item.label] = [] } } }) this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime') delete this.upData.orderBy delete this.upData.createTime delete this.upData.updateTime delete this.upData.createUser delete this.upData.updateUser val.field.forEach(a => { if (this.upData[a] === undefined) { this.upHead.push({ value: a.split('=')[0], label: a.split('=')[1] }) } else { delete this.upData[a] for (var i = 0; i < this.upHead.length; i++) { if (this.upHead[i].label == a) { this.upHead.splice(i, 1); i-- break } } } }) } else if (val.id == 'delete') { // å é¤æä½ if (this.delUrl == null) { this.$message.error('请ç»å é¤è¯·æ±å°å') return } this.$confirm('æ¯å¦å é¤å½åæ°æ®?', "è¦å", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning" }).then(() => { this.$axios.post(this.delUrl, { id: row.id }).then(res => { if (res.code === 201) { return } this.$message.success('å 餿å') this.selectList('page') this.$emit('delete') }).catch(e => { this.$message.error('å é¤å¤±è´¥') }) }).catch(() => {}) } } else if (val.id === 'parent') { delete row.orderBy this.$parent.$parent[val.method](row) } else { delete row.orderBy this.$parent[val.method](row) } }, saveUpData() { if (this.upUrl == null) { this.$message.error('请ç»ä¿®æ¹è¯·æ±å°å') return } for (var i = 0; i < this.data.requiredUp.length; i++) { // å¿ å¡«æ ¡éª if (this.upData[this.data.requiredUp[i]] === null || this.upData[this.data.requiredUp[i]] === '') { var list = this.upHead.filter(a => { if (a.label == this.data.requiredUp[i]) return a }) if (list[0].value == undefined) continue this.$message.error(list[0].value + 'æ¯å¿ 填项') return } } for (var a in this.data.selectField) { if (this.data.selectField[a].choose == true) { this.upData[a] = JSON.stringify(this.upData[a]) } } for (var i = 0; i < this.upHead.length; i++) { if(this.upHead[i].label == 'password'){ if(this.upData[this.upHead[i].label]){ const reg2 =/^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?])[a-zA-Z\d~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?]*$/; if (!reg2.test(this.upData[this.upHead[i].label])) { this.$message.error('å¯ç å¿ é¡»å æ¬æ°åã大å°å忝以åç¹æ®å符') return } } } if (this.data.cascaderField && this.data.cascaderField[this.upHead[i].label]) { if (this.upData[this.upHead[i].label]) { this.upData[this.upHead[i].label] = JSON.stringify(this.upData[this.upHead[i].label]) } else { this.upData[this.upHead[i].label] = '' } } } this.upLoad = true this.$axios.post(this.upUrl, this.upData, { headers: { 'Content-Type': 'application/json' } }).then(res => { if (res.code === 201) { this.upLoad = false return } this.$message.success('ä¿®æ¹æå') this.upDia = false this.selectList('page') this.$refs.eltable.doLayout(); this.upLoad = false }).catch(e => { this.$message.error('ä¿®æ¹å¤±è´¥') this.upDia = false this.upLoad = false }) }, // æå¼æ°å¢å¼¹æ¡åè° openAddDia(addUrl, param) { this.addDia = true this.addUrl = addUrl this.param = param this.upData = {} this.tableHead.forEach((k, v) => { if (k.label != 'orderBy' && k.label != 'createTime' && k.label != 'updateTime' && k.label != 'createUser' && k.label != 'updateUser') this.upData[k.label] = null }) this.upData = this.HaveJson(this.upData) this.upHead = this.HaveJson(this.tableHead) this.upHead = this.upHead.filter(a => a.label != 'createTime' && a.label != 'updateTime') var val = this.data.do.filter(a => a.id == 'update')[0] if (val == undefined) { val = { field: [] } } val.field.forEach(a => { if (JSON.stringify(this.upData[a]) === undefined) { this.upHead.push({ value: a.split('=')[0], label: a.split('=')[1] }) } else { delete this.upData[a] for (var i = 0; i < this.upHead.length; i++) { if (this.upHead[i].label == a) { this.upHead.splice(i, 1); i-- break } } } }) }, // æ°å¢åè° saveAddData() { if (this.addUrl == null) { this.$message.error('è¯·ç»æ·»å 请æ±å°å') return } for (var i = 0; i < this.data.requiredAdd.length; i++) { if (this.upData[this.data.requiredAdd[i]] === null || this.upData[this.data.requiredAdd[i]] === '') { var list = this.upHead.filter(a => { if (a.label == this.data.requiredAdd[i]) return a }) if (list[0].value == undefined) continue this.$message.error(list[0].value + 'æ¯å¿ 填项') return } } this.addLoad = true for (var a in this.data.selectField) { if (this.data.selectField[a].choose == true) { this.upData[a] = JSON.stringify(this.upData[a]) } } this.upHead.forEach((item, index) => { if (this.data.cascaderField && this.data.cascaderField[item.label]) { if (this.upData[item.label]) { this.upData[item.label] = JSON.stringify(this.upData[item.label]) } else { this.upData[item.label] = '' } } }) if (this.param !== undefined && this.param !== null) { for (let i in this.param) { this.upData[i] = this.param[i] } } this.$axios.post(this.addUrl, this.upData, { headers: { 'Content-Type': 'application/json' } }).then(res => { if (res.code === 201) { this.addLoad = false return } this.$message.success('æ·»å æå') this.addDia = false this.selectList('page') this.addLoad = false }).catch(e => { this.addDia = false this.addLoad = false }) }, openDownDia() { this.downDia = true }, downFile(type) { if (this.downUrl == null) { this.$message.error('请ç»å¯¼åºè¯·æ±å°å') return } var page = this.HaveJson(this.page) if (!type) { page.current = 0 page.size = this.total } this.loading = true this.$axios.post(this.downUrl, { page: page, entity: this.data.entity }, { headers: { 'Content-Type': 'application/json' } }).then(res => { if (res.code === 201) { this.loading = false return } this.downDia = false this.loading = false this.$message.success('å¯¼åºæå') let eleLink = document.createElement('a') eleLink.style.display = 'none' eleLink.download = res.data eleLink.href = this.javaApi + '/outPath/' + res.data document.body.appendChild(eleLink) eleLink.click() document.body.removeChild(eleLink) }).catch(e => { console.log(e); this.loading = false this.$message.error('è¯·å·æ°é¡µé¢åå°è¯') }) }, openUpload() { if (this.inputUrl == null) { this.$message.error('请ç»å¯¼å ¥è¯·æ±å°å') return } this.uploadDia = true }, beforeUpload(file, fileList) { console.log(file.raw.type); if (file.raw.type != (this.data.inputType===undefined?'text/csv':this.data.inputType)) { this.$message.error('ä¸ä¼ æä»¶æ ¼å¼ä¸æ£ç¡®'); this.$refs.upload.clearFiles() return false; } }, submitUpload() { if (this.$refs.upload.uploadFiles.length == 0) { this.$message.error('æªéæ©æä»¶') return } this.uploading = true this.$refs.upload.submit(); }, onSuccess(response, file, fileList) { this.$refs.upload.clearFiles() this.uploadDia = false this.uploading = false if (response.code == 201) { this.$message.error(response.message) return } this.$message.success('ä¸ä¼ æå') this.selectList() }, onError(err, file, fileList) { this.$message.error('ä¸ä¼ 失败') this.$refs.upload.clearFiles() this.uploading = false }, // æä½æé®ç½®ç°å¤æ isDisabled(label) { if (this.data.disabledUp == undefined) { return } for (var i = 0; i < this.data.disabledUp.length; i++) { if (label == this.data.disabledUp[i]) { return true } } return false }, getSummaries(param) { const { columns, data } = param; const sums = []; columns.forEach((column, index) => { if (index === 0) { sums[index] = 'å计'; return; } const values = data.map(item => Number(item[column.property])); if (this.data.countFleid == undefined) { sums[index] = '' return } if (this.data.countFleid.filter(str => { return str === column.property }).length > 0) { sums[index] = values.reduce((prev, curr) => { const value = Number(curr); if (!isNaN(value)) { return prev + curr; } else { return prev; } }, 0); sums[index] += ''; } else { sums[index] = ''; } .catch((e) => { console.log("è¯·å·æ°é¡µé¢åå°è¯---", e); this.loading = false; this.$message.error("è¯·å·æ°é¡µé¢åå°è¯"); }); return sums; }, handleLinkEvent(row, val) { if (val.method == 'doDiy') { this.main(row, val) } else { this.$parent[val.method](row) } }, getWidth() { let count = 0 this.data.do.forEach(a => { count += a.font.length }) return count * 15 + 60 + 'px' }, handleSuccessUp(response, label) { if (typeof label === 'string') { if (response.code == 200) { this.upData[label] = response.data.url; } } else { if (response.code == 200) { this.$message.success('ä¸ä¼ æå') this.selectList() } } }, handleCascader(e, label) { this.upData[label] = e; }, // æ¹éå é¤ batchDelete() { if (this.multipleSelection && this.multipleSelection.length > 0) { this.$confirm('æ¯å¦å é¤éä¸çæ°æ®?', "è¦å", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning" }).then(() => { this.$axios.post(this.delUrl, { ids: JSON.stringify(this.multipleSelection.map(item => item.id)) }).then(res => { if (res.code === 201) { return } this.$message.success('å 餿å') this.selectList('page') }).catch(e => { this.$message.error('å é¤å¤±è´¥') }) }).catch(() => {}) } else { this.$message.error('è¯·éæ©è¦å é¤çæ°æ®') } }, // æ¥å·¥æ¶ç®¡çè¾ å©å·¥æ¶--æ¹éå®¡æ ¸åæ¹å batchCheck(e) { if (this.multipleSelection && this.multipleSelection.length > 0) { const list = JSON.parse(JSON.stringify(this.multipleSelection)) const state = e === 0 ? '䏿¹å' : 'å·²æ¹å' let auxiliaryWorkingHoursDays = [] list.forEach(item => { delete item.orderBy item.state = state auxiliaryWorkingHoursDays.push(item) }) this.$axios.post(this.$api.auxiliaryWorkingHoursDay.approve, {auxiliaryWorkingHoursDays: auxiliaryWorkingHoursDays },{ headers: { 'Content-Type': 'application/json' } } ).then(res => { if (res.code === 201) { return } this.$parent.submitBatchCheckDialog() this.$message.success('æä½æå') }) } else { this.$message.error('è¯·éæ©è³å°ä¸æ¡æ°æ®') } }, getRedColor(label,row){ if(this.data.cellSpecialStyle&&this.data.cellSpecialStyle.redColorByKey&&label.includes(this.data.cellSpecialStyle.redColorByKey)&&row[(label.replace(this.data.cellSpecialStyle.redColorByKey, ""))]){ return true }else{ return false }, sortChange(ob) { this.data.entity.orderBy = {}; this.data.entity.orderBy.field = ob.prop; if (ob.order == "ascending") { this.data.entity.orderBy.order = "asc"; } else if (ob.order == "descending") { this.data.entity.orderBy.order = "desc"; } else { if (this.componentData.entity.orderBy != undefined) { this.data.entity.orderBy = this.HaveJson( this.dataCopy.entity.orderBy ); } } } } this.selectList(); }, // å±ç¤ºtag showType(val, ob) { var str = ob[val]; return str == undefined ? null : ob[val].select; }, // å±ç¤ºæä½æ showLink(val, ob) { var str = ob[val]; return str == undefined ? null : ob[val].method; }, showAddReq(label) { if (this.data.requiredAdd == undefined) { return; } for (var i = 0; i < this.data.requiredAdd.length; i++) { if (label == this.data.requiredAdd[i]) { return true; } } return false; }, showUpReq(label) { if (this.data.requiredUp == undefined) { return; } for (var i = 0; i < this.data.requiredUp.length; i++) { if (label == this.data.requiredUp[i]) { return true; } } return false; }, showUpload(label) { if (this.data.addUpload && this.data.addUpload.find((m) => m == label)) { return true; } else { return false; } }, showCascader(label) { if (this.data.cascaderField && this.data.cascaderField[label]) { return true; } else { return false; } }, handleTree(arr, value) { let label = ""; for (let i = 0; i < arr.length; i++) { if (arr[i].id == value) { label = arr[i].name; return label; } else if (arr[i].children) { label = this.handleTree(arr[i].children, value); } } return label; }, main(row, val) { if (val.method == undefined) return; else if (val.method == "doDiy") { if (val.id == "update") { // ç¼è¾æä½ (this.upDia = true), (this.upData = this.HaveJson(row)); this.upHead = this.HaveJson(this.tableHead); this.upHead.forEach((item, index) => { if ( this.data.cascaderField && this.data.cascaderField[item.label] ) { if (this.upData[item.label]) { this.upData[item.label] = JSON.parse(this.upData[item.label]); } else { this.upData[item.label] = []; } } }); this.upHead = this.upHead.filter( (a) => a.label != "createTime" && a.label != "updateTime" ); delete this.upData.orderBy; delete this.upData.createTime; delete this.upData.updateTime; delete this.upData.createUser; delete this.upData.updateUser; val.field.forEach((a) => { if (this.upData[a] === undefined) { this.upHead.push({ value: a.split("=")[0], label: a.split("=")[1], }); } else { delete this.upData[a]; for (var i = 0; i < this.upHead.length; i++) { if (this.upHead[i].label == a) { this.upHead.splice(i, 1); i--; break; } } } }); } else if (val.id == "delete") { // å é¤æä½ if (this.delUrl == null) { this.$message.error("请ç»å é¤è¯·æ±å°å"); return; } this.$confirm("æ¯å¦å é¤å½åæ°æ®?", "è¦å", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning", }) .then(() => { this.$axios .post(this.delUrl, { id: row.id, }) .then((res) => { if (res.code === 201) { return; } this.$message.success("å 餿å"); this.selectList("page"); this.$emit("delete"); }) .catch((e) => { this.$message.error("å é¤å¤±è´¥"); }); }) .catch(() => {}); } } else if (val.id === "parent") { delete row.orderBy; this.$parent.$parent[val.method](row); } else { delete row.orderBy; this.$parent[val.method](row); } }, saveUpData() { if (this.upUrl == null) { this.$message.error("请ç»ä¿®æ¹è¯·æ±å°å"); return; } for (var i = 0; i < this.data.requiredUp.length; i++) { // å¿ å¡«æ ¡éª if ( this.upData[this.data.requiredUp[i]] === null || this.upData[this.data.requiredUp[i]] === "" ) { var list = this.upHead.filter((a) => { if (a.label == this.data.requiredUp[i]) return a; }); if (list[0].value == undefined) continue; this.$message.error(list[0].value + "æ¯å¿ 填项"); return; } } for (var a in this.data.selectField) { if (this.data.selectField[a].choose == true) { this.upData[a] = JSON.stringify(this.upData[a]); } } for (var i = 0; i < this.upHead.length; i++) { if (this.upHead[i].label == "password") { if (this.upData[this.upHead[i].label]) { const reg2 = /^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?])[a-zA-Z\d~!#@$%^*&()_+{}\[\]|\\;:'",<.>\/?]*$/; if (!reg2.test(this.upData[this.upHead[i].label])) { this.$message.error("å¯ç å¿ é¡»å æ¬æ°åã大å°å忝以åç¹æ®å符"); return; } } } if ( this.data.cascaderField && this.data.cascaderField[this.upHead[i].label] ) { if (this.upData[this.upHead[i].label]) { this.upData[this.upHead[i].label] = JSON.stringify( this.upData[this.upHead[i].label] ); } else { this.upData[this.upHead[i].label] = ""; } } } this.upLoad = true; this.$axios .post(this.upUrl, this.upData, { headers: { "Content-Type": "application/json", }, }) .then((res) => { if (res.code === 201) { this.upLoad = false; return; } this.$message.success("ä¿®æ¹æå"); this.upDia = false; this.selectList("page"); this.$refs.eltable.doLayout(); this.upLoad = false; }) .catch((e) => { this.$message.error("ä¿®æ¹å¤±è´¥"); this.upDia = false; this.upLoad = false; }); }, // æå¼æ°å¢å¼¹æ¡åè° openAddDia(addUrl, param) { this.addDia = true; this.addUrl = addUrl; this.param = param; this.upData = {}; this.tableHead.forEach((k, v) => { if ( k.label != "orderBy" && k.label != "createTime" && k.label != "updateTime" && k.label != "createUser" && k.label != "updateUser" ) this.upData[k.label] = null; }); this.upData = this.HaveJson(this.upData); this.upHead = this.HaveJson(this.tableHead); this.upHead = this.upHead.filter( (a) => a.label != "createTime" && a.label != "updateTime" ); var val = this.data.do.filter((a) => a.id == "update")[0]; if (val == undefined) { val = { field: [], }; } val.field.forEach((a) => { if (JSON.stringify(this.upData[a]) === undefined) { this.upHead.push({ value: a.split("=")[0], label: a.split("=")[1], }); } else { delete this.upData[a]; for (var i = 0; i < this.upHead.length; i++) { if (this.upHead[i].label == a) { this.upHead.splice(i, 1); i--; break; } } } }); }, // æ°å¢åè° saveAddData() { if (this.addUrl == null) { this.$message.error("è¯·ç»æ·»å 请æ±å°å"); return; } for (var i = 0; i < this.data.requiredAdd.length; i++) { if ( this.upData[this.data.requiredAdd[i]] === null || this.upData[this.data.requiredAdd[i]] === "" ) { var list = this.upHead.filter((a) => { if (a.label == this.data.requiredAdd[i]) return a; }); if (list[0].value == undefined) continue; this.$message.error(list[0].value + "æ¯å¿ 填项"); return; } } this.addLoad = true; for (var a in this.data.selectField) { if (this.data.selectField[a].choose == true) { this.upData[a] = JSON.stringify(this.upData[a]); } } this.upHead.forEach((item, index) => { if (this.data.cascaderField && this.data.cascaderField[item.label]) { if (this.upData[item.label]) { this.upData[item.label] = JSON.stringify(this.upData[item.label]); } else { this.upData[item.label] = ""; } } }); if (this.param !== undefined && this.param !== null) { for (let i in this.param) { this.upData[i] = this.param[i]; } } this.$axios .post(this.addUrl, this.upData, { headers: { "Content-Type": "application/json", }, }) .then((res) => { if (res.code === 201) { this.addLoad = false; return; } this.$message.success("æ·»å æå"); this.addDia = false; this.selectList("page"); this.addLoad = false; }) .catch((e) => { this.addDia = false; this.addLoad = false; }); }, openDownDia() { this.downDia = true; }, downFile(type) { if (this.downUrl == null) { this.$message.error("请ç»å¯¼åºè¯·æ±å°å"); return; } var page = this.HaveJson(this.page); if (!type) { page.current = 0; page.size = this.total; } this.loading = true; this.$axios .post( this.downUrl, { page: page, entity: this.data.entity, }, { headers: { "Content-Type": "application/json", }, } ) .then((res) => { if (res.code === 201) { this.loading = false; return; } this.downDia = false; this.loading = false; this.$message.success("å¯¼åºæå"); let eleLink = document.createElement("a"); eleLink.style.display = "none"; eleLink.download = res.data; eleLink.href = this.javaApi + "/outPath/" + res.data; document.body.appendChild(eleLink); eleLink.click(); document.body.removeChild(eleLink); }) .catch((e) => { console.log(e); this.loading = false; this.$message.error("è¯·å·æ°é¡µé¢åå°è¯"); }); }, openUpload() { if (this.inputUrl == null) { this.$message.error("请ç»å¯¼å ¥è¯·æ±å°å"); return; } this.uploadDia = true; }, beforeUpload(file, fileList) { console.log(file.raw.type); if ( file.raw.type != (this.data.inputType === undefined ? "text/csv" : this.data.inputType) ) { this.$message.error("ä¸ä¼ æä»¶æ ¼å¼ä¸æ£ç¡®"); this.$refs.upload.clearFiles(); return false; } }, submitUpload() { if (this.$refs.upload.uploadFiles.length == 0) { this.$message.error("æªéæ©æä»¶"); return; } this.uploading = true; this.$refs.upload.submit(); }, onSuccess(response, file, fileList) { this.$refs.upload.clearFiles(); this.uploadDia = false; this.uploading = false; if (response.code == 201) { this.$message.error(response.message); return; } this.$message.success("ä¸ä¼ æå"); this.selectList(); }, onError(err, file, fileList) { this.$message.error("ä¸ä¼ 失败"); this.$refs.upload.clearFiles(); this.uploading = false; }, // æä½æé®ç½®ç°å¤æ isDisabled(label) { if (this.data.disabledUp == undefined) { return; } for (var i = 0; i < this.data.disabledUp.length; i++) { if (label == this.data.disabledUp[i]) { return true; } } return false; }, getSummaries(param) { const { columns, data } = param; const sums = []; columns.forEach((column, index) => { if (index === 0) { sums[index] = "å计"; return; } const values = data.map((item) => Number(item[column.property])); if (this.data.countFleid == undefined) { sums[index] = ""; return; } if ( this.data.countFleid.filter((str) => { return str === column.property; }).length > 0 ) { sums[index] = values.reduce((prev, curr) => { const value = Number(curr); if (!isNaN(value)) { return prev + curr; } else { return prev; } }, 0); sums[index] += ""; } else { sums[index] = ""; } }); return sums; }, handleLinkEvent(row, val) { if (val.method == "doDiy") { this.main(row, val); } else { this.$parent[val.method](row); } }, getWidth() { let count = 0; this.data.do.forEach((a) => { count += a.font.length; }); return count * 15 + 60 + "px"; }, handleSuccessUp(response, label) { if (typeof label === "string") { if (response.code == 200) { this.upData[label] = response.data.url; } } else { if (response.code == 200) { this.$message.success("ä¸ä¼ æå"); this.selectList(); } } }, handleCascader(e, label) { this.upData[label] = e; }, // æ¹éå é¤ batchDelete() { if (this.multipleSelection && this.multipleSelection.length > 0) { this.$confirm("æ¯å¦å é¤éä¸çæ°æ®?", "è¦å", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning", }) .then(() => { this.$axios .post(this.delUrl, { ids: JSON.stringify( this.multipleSelection.map((item) => item.id) ), }) .then((res) => { if (res.code === 201) { return; } this.$message.success("å 餿å"); this.selectList("page"); }) .catch((e) => { this.$message.error("å é¤å¤±è´¥"); }); }) .catch(() => {}); } else { this.$message.error("è¯·éæ©è¦å é¤çæ°æ®"); } }, // æ¥å·¥æ¶ç®¡çè¾ å©å·¥æ¶--æ¹éå®¡æ ¸åæ¹å batchCheck(e) { if (this.multipleSelection && this.multipleSelection.length > 0) { const list = JSON.parse(JSON.stringify(this.multipleSelection)); const state = e === 0 ? "䏿¹å" : "å·²æ¹å"; let auxiliaryWorkingHoursDays = []; list.forEach((item) => { delete item.orderBy; item.state = state; auxiliaryWorkingHoursDays.push(item); }); this.$axios .post( this.$api.auxiliaryWorkingHoursDay.approve, { auxiliaryWorkingHoursDays: auxiliaryWorkingHoursDays }, { headers: { "Content-Type": "application/json", }, } ) .then((res) => { if (res.code === 201) { return; } this.$parent.submitBatchCheckDialog(); this.$message.success("æä½æå"); }); } else { this.$message.error("è¯·éæ©è³å°ä¸æ¡æ°æ®"); } }, getRedColor(label, row) { if ( this.data.cellSpecialStyle && this.data.cellSpecialStyle.redColorByKey && label.includes(this.data.cellSpecialStyle.redColorByKey) && row[label.replace(this.data.cellSpecialStyle.redColorByKey, "")] ) { return true; } else { return false; } }, }, }; </script> src/main.js
@@ -63,7 +63,9 @@ Vue.prototype.HaveJson = (val) => { return JSON.parse(JSON.stringify(val)); }; Vue.prototype.javaApi = process.env.VUE_APP_BASE_API; Vue.prototype.javaApi = process.env.VUE_APP_BASE_API ? process.env.VUE_APP_BASE_API : "http://192.168.0.170:8002"; Vue.prototype.checkPermi = checkPermi; // å ¨å±ç»ä»¶æè½½ @@ -74,7 +76,7 @@ Vue.component("FileUpload", FileUpload); Vue.component("ImageUpload", ImageUpload); Vue.component("ImagePreview", ImagePreview); Vue.component('barcode', VueBarcode) Vue.component("barcode", VueBarcode); Vue.use(directive); Vue.use(plugins); src/utils/excelFountion.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,358 @@ /** * 计ç®å¤ä¸ªæ°å¼çå * * @param val æ°å¼ååæ°ï¼å¯åé¿åæ°å表 * @returns è¿åææåæ°çåï¼å¦æåæ°å表为空æåæ°ç±»åéæ°å¼åï¼åè¿ånull */ function SUM(...val) { try { let num = null; if (val && val.length > 0) { val.forEach((item) => { num += item; }); } return num; } catch (error) {} } /** * 计ç®ä¼ å ¥åæ°ä¸çæå¤§å¼ * * @param ...val å¯ååæ°å表ï¼ç¨äºè®¡ç®æå¤§å¼çæ°å¼æå¯è½¬æ¢ä¸ºæ°å¼çç±»å * @returns è¿åæå¤§å¼ï¼å¦æåæ°å表为空æä¸ºnull/undefined/''ï¼åè¿ånull */ function MAX(...val) { try { let max = null; if (val && val.length > 0) { val = val.filter((item) => item != null && item !== ""); if (val.length > 0) { max = Math.max(...val); } else { max = null; } } return max; } catch (error) {} } /** * 计ç®ä¼ å ¥åæ°ä¸çæå°å¼ * * @param val å¯ååæ°ï¼ç¨äºè®¡ç®æå°å¼çæ°å¼æ°ç» * @returns è¿åä¼ å ¥åæ°ä¸çæå°å¼ï¼å¦æä¼ å ¥åæ°ä¸ºç©ºæææå¼å为nullæç©ºå符串ï¼åè¿ånull */ function MIN(...val) { try { let min = null; if (val && val.length > 0) { val = val.filter((item) => item != null && item !== ""); // console.log(val) if (val.length > 0) { min = Math.min(...val); } } return min; } catch (error) {} } /** * 计ç®ç»å®æ°å¼çå¹³åå¼ * * @param val æ°å¼å表ï¼å¯å å«ä»»æä¸ªåæ° * @returns è¿åå¹³åå¼ï¼å¦ææ°å¼å表为空æå å«éæ°å¼é¡¹ï¼åè¿ånull */ function AVERAGE(...val) { try { let num = null; let arr = []; if (val && val.length > 0) { arr = val.filter((item) => item != null && item !== ""); arr.forEach((item) => { num += item; }); if (arr.length > 0) { return num / arr.length; } else { return null; } } else { return null; } } catch (error) {} } /** * 计ç®ä¸ä¸ªæ°çç»å¯¹å¼ * * @param val ä»»ææ°å¼ * @returns è¿å该æ°å¼çç»å¯¹å¼ */ function ABS(val) { try { return Math.abs(val); } catch (error) {} } /** * 计ç®ä¸ç»æ°åçä¸ä½æ° * * @param val ä»»æä¸ªåæ°ï¼éè¦è®¡ç®ä¸ä½æ°çæ°å * @returns 妿忰䏿ææçæ°åï¼åè¿å计ç®åºçä¸ä½æ°ï¼å¦åè¿ånull */ function MEDIAN(...val) { try { let arr = []; if (val && val.length > 0) { arr = val.filter((item) => item != null && item !== ""); const sortedArr = arr.sort((a, b) => a - b); // 计ç®ä¸ä½æ° const half = Math.floor(sortedArr.length / 2); if (arr.length > 0) { // 妿æ°ç»é¿åº¦æ¯å¥æ°ï¼ç´æ¥åä¸é´çå ç´ if (sortedArr.length % 2 === 1) { return sortedArr[half]; } else { // 妿æ°ç»é¿åº¦æ¯å¶æ°ï¼åä¸é´ä¸¤ä¸ªå ç´ çå¹³åå¼ return (sortedArr[half - 1] + sortedArr[half]) / 2; } } else { return null; } } else { return null; } } catch (error) {} } /** * 计ç®å¹ * * @param str å符串形å¼çå¹è¡¨è¾¾å¼ï¼ä¾å¦"2^3" * @returns è¿å计ç®åçå¹å¼ï¼å¦æè¡¨è¾¾å¼æ æåè¿ånull */ function CalculatePower(str) { try { if (str && str.includes("^")) { let arr = str.split("^"); if (arr && arr.length > 1) { return Math.pow(arr[0], arr[1]); } else { return null; } } } catch (error) {} } /** * æ ¹æ®åæ è·ååå * @param {Object} cellId */ function getColumnNameFromId(cellId) { try { if (!Array.isArray(cellId)) { cellId = cellId.split("-"); } var i = cellId[0]; var letter = ""; if (i > 701) { letter += String.fromCharCode(64 + parseInt(i / 676)); letter += String.fromCharCode(64 + parseInt((i % 676) / 26)); } else if (i > 25) { letter += String.fromCharCode(64 + parseInt(i / 26)); } letter += String.fromCharCode(65 + (i % 26)); return letter + (parseInt(cellId[1]) + 1); } catch (e) { console.log("error", cellId); } } /** * æ ¹æ®ååè·ååæ * @param {Object} id * @param {Object} arr */ function getIdFromColumnName(id, arr) { try { // Get the letters var t = /^[a-zA-Z]+/.exec(id); if (t) { // Base 26 calculation var code = 0; for (var i = 0; i < t[0].length; i++) { code += parseInt(t[0].charCodeAt(i) - 64) * Math.pow(26, t[0].length - 1 - i); } code--; // Make sure jexcel starts on zero if (code < 0) { code = 0; } // Number var number = parseInt(/[0-9]+$/.exec(id)); if (number > 0) { number--; } if (arr == true) { id = [code, number]; } else { // id = code + '-' + number; id = { c: code, r: number, }; } } return id; } catch (e) { console.log("error", id); } } /** * æ´æ¹åæ° * * @param f åæ°å表 * @returns è¿åä¸ä¸ªå å«åæ ä¿¡æ¯çæ°ç» */ function changeParameter(f) { try { let arr = getABCList(f); let arr2 = []; arr.forEach((item) => { if (item.includes(":")) { let r0 = getIdFromColumnName(item.split(":")[0]).r; let c0 = getIdFromColumnName(item.split(":")[0]).c; let r1 = getIdFromColumnName(item.split(":")[1]).r; let c1 = getIdFromColumnName(item.split(":")[1]).c; for (let i = Number(r0); i <= Number(r1); i++) { for (let u = Number(c0); u <= Number(c1); u++) { arr2.push({ r: i, c: u, }); } } } else { arr2.push(getIdFromColumnName(item)); } }); return arr2; } catch (error) {} } /** * è·åå å« ABC å符çå表 * * @param f å符串ï¼å å«éè¦è§£æçå ¬å¼æè¡¨è¾¾å¼ * @returns å å« ABC åç¬¦çæ°ç»å表 */ function getABCList(f) { try { let regex = /[=\+\-\*\%\(\)\/\^\s]/g; let fouList = ["SUM", "MAX", "MIN", "AVERAGE", "ABS"]; f = f .replace(regex, ",") .replace(new RegExp('"&', "g"), "") .replace(new RegExp('&"', "g"), ""); fouList.forEach((item) => { f = f.replace(new RegExp(item, "g"), ""); }); // console.log('f',f) let arr = f.split(",").filter((item) => { return ( item && /[a-zA-Z]/.test(item) && item != "undefined" && item != "null" ); }); return arr; } catch (error) {} } /** * è·åææåå æ ¼ * * @param f è¡¨æ ¼æ°æ®æç¸å ³åæ° * @returns è¿åä¸ä¸ªå¯¹è±¡ï¼å ¶é®ä¸ºåå æ ¼çå¯ä¸æ è¯ç¬¦ï¼ç±ååè¡IDæ¼æ¥èæï¼ï¼å¼ä¸ºnull */ function getAllCell(f) { try { let arr = changeParameter(f); let arr0 = {}; arr.forEach((item) => { arr0[getColumnNameFromId(`${item.c}` + "-" + `${item.r}`)] = null; }); return arr0; } catch (error) {} } /** * 计ç®å½æ° * * @param f å符串类åï¼è¡¨ç¤ºå¾ 计ç®çå ¬å¼ * @param comValue 对象类åï¼è¡¨ç¤ºè¦æ¿æ¢çåå æ ¼å¼ï¼é®ä¸ºåå æ ¼åç§°ï¼å¼ä¸ºæ¿æ¢åçå¼ * @returns è¿å计ç®åçç»æï¼å¦æè®¡ç®å¤±è´¥åè¿å0 */ function compute(f, comValue) { try { let str = f; // è·ååå æ ¼å¯¹åºå¼ let arr = getAllCell(f); for (var a in comValue) { if ( comValue[a] !== "undefined" && comValue[a] !== "null" && comValue[a] !== undefined ) { if (typeof comValue[a] == "string" && comValue[a].includes("^")) { // 计ç®å¹æ¬¡ arr[a] = CalculatePower(comValue[a]); } else if ( typeof comValue[a] == "string" && comValue[a].includes("/") ) { arr[a] = comValue[a]; } else { arr[a] = comValue[a]; } } } // è§£æå ¬å¼åæ°ï¼ç¹å«æ¯å¸¦ï¼ç let arr0 = getABCList(f); let obj = {}; arr0.forEach((item) => { if (item.includes(":")) { let arr1 = []; let r0 = getIdFromColumnName(item.split(":")[0]).r; let c0 = getIdFromColumnName(item.split(":")[0]).c; let r1 = getIdFromColumnName(item.split(":")[1]).r; let c1 = getIdFromColumnName(item.split(":")[1]).c; for (let i = Number(r0); i <= Number(r1); i++) { for (let u = Number(c0); u <= Number(c1); u++) { arr1.push({ r: i, c: u, }); } } let arr2 = []; arr1.forEach((m) => { arr2.push(getColumnNameFromId(`${m.c}` + "-" + `${m.r}`)); }); obj[item.split(":").join("-")] = arr2.join(","); } else { obj[item] = item; } }); str = str.replace(new RegExp(":", "g"), ""); // æ¿æ¢åæ° for (var a in obj) { str = str.replace(new RegExp(a, "g"), obj[a]); } // è®¡ç® for (var a in arr) { str = str.replace(new RegExp(a, "g"), arr[a]); } return eval(str); } catch (error) {} } export default { compute, changeParameter, }; src/views/business/inspectionTask/components/EditInspectionItem.vue
@@ -38,7 +38,7 @@ style="width: 100%" > <el-option v-for="dict in dict.type.inspection_value_type" v-for="dict in inspectionValueType" :key="dict.value" :label="dict.label" :value="dict.value" @@ -73,7 +73,6 @@ data() { // è¿éåæ¾æ°æ® return { dicts: ["inspection_value_type"], editInspectionDia: false, entity: { id: 0, @@ -164,8 +163,14 @@ inspectionValueType: "", }, handleEditLoading: false, inspectionValueType: [], }; }, mounted() { this.getDicts("inspection_value_type").then((response) => { this.inspectionValueType = this.dictToValue(response.data); }); }, // æ¹æ³éå methods: { showDialog(id) { src/views/business/inspectionTask/index.vue
@@ -89,43 +89,27 @@ </style> <template> <div class="ins-order-plan-main"> <div v-show="activeFace == 0 && state == 0" style="height: 100%"> <div v-show="activeFace == 0" style="height: 100%"> <div class="search"> <div class="search_thing"> <div class="search_label">å§æç¼å·ï¼</div> <div class="search_input"> <el-input v-model="queryParams.entrustCode" clearable placeholder="请è¾å ¥" size="small" @keyup.enter.native="refreshTable()" ></el-input> <el-input v-model="queryParams.entrustCode" clearable placeholder="请è¾å ¥" size="small" @keyup.enter.native="refreshTable()"></el-input> </div> </div> <div class="search_thing"> <div class="search_label">æ£éªç¶æï¼</div> <div class="search_input"> <el-select v-model="queryParams.insState" size="small" style="width: 100%" @change="refreshTable()" > <el-option v-for="(a, i) in dict.type.inspection_task_state" :key="i" :label="a.label" :value="a.value" ></el-option> <el-select v-model="queryParams.insState" size="small" style="width: 100%" @change="refreshTable()"> <el-option v-for="(a, i) in dict.type.inspection_task_state" :key="i" :label="a.label" :value="a.value"></el-option> </el-select> </div> </div> <div class="search_thing" style="padding-left: 30px"> <el-button size="small" @click="refresh()">é ç½®</el-button> <el-button size="small" type="primary" @click="refreshTable()" >æ¥ è¯¢</el-button > <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> </div> </div> <div class="center"> @@ -135,22 +119,13 @@ <div style="display: flex; align-items: center"> <span style="font-size: 14px">è¯éªå®¤ç§ç±»:</span> <ul class="tab"> <li v-for="(m, i) in tabList" :key="i" :class="{ active: i == tabIndex }" @click="handleTab(m, i)" > <li v-for="(m, i) in tabList" :key="i" :class="{ active: i == tabIndex }" @click="handleTab(m, i)"> {{ m.label.replace("è¯éªå®¤", "") }} </li> </ul> <div> <el-checkbox v-model="alone" class="view-self-checkbox" @change="changeCheckBox" ><span>æçä»»å¡</span></el-checkbox > <el-checkbox v-model="alone" class="view-self-checkbox" @change="changeCheckBox"><span>æçä»»å¡</span></el-checkbox> </div> </div> </el-col> @@ -162,27 +137,17 @@ </el-col> </el-row> </div> <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" :height="'calc(100vh - 300px)'" @pagination="pagination" key="tableData0" ></lims-table> <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" :height="'calc(100vh - 300px)'" @pagination="pagination" key="tableData0"></lims-table> </div> </div> <el-dialog :visible.sync="claimVisible" title="æç¤º" width="400px"> æ¯å¦è®¤é¢å§æç¼å·<span style="color: #33c130">{{ sampleUserForm.entrustCode }}</span >çä»»å¡ }}</span>çä»»å¡ <span slot="footer" class="dialog-footer"> <el-button @click="claimVisible = false">å æ¶</el-button> <el-button :loading="loading" type="primary" @click="confirmClaim" >ç¡® å®</el-button > <el-button :loading="loading" type="primary" @click="confirmClaim">ç¡® å®</el-button> </span> </el-dialog> <el-dialog :visible.sync="connectVisible" title="æ£éªäº¤æ¥" width="400px"> @@ -191,18 +156,8 @@ <span class="required-span">* </span>交æ¥äººåï¼ </div> <div class="search_input"> <el-select v-model="connect.connectPerson" filterable placeholder="è¯·éæ©" style="width: 100%" > <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value" > <el-select v-model="connect.connectPerson" filterable placeholder="è¯·éæ©" style="width: 100%"> <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> @@ -212,39 +167,21 @@ <span class="required-span">* </span>è¯éªå®¤ï¼ </div> <div class="search_input"> <el-select v-model="connect.sonLaboratory" filterable placeholder="è¯·éæ©" style="width: 100%" > <el-option v-for="item in sonLaboratoryList" :key="item.value" :label="item.label" :value="item.value" > <el-select v-model="connect.sonLaboratory" filterable placeholder="è¯·éæ©" style="width: 100%"> <el-option v-for="item in sonLaboratoryList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> </div> <span slot="footer" class="dialog-footer"> <el-button @click="connectVisible = false">å æ¶</el-button> <el-button :loading="loading" type="primary" @click="confirmConnect" >ç¡® å®</el-button > <el-button :loading="loading" type="primary" @click="confirmConnect">ç¡® å®</el-button> </span> </el-dialog> <div v-if="activeFace > 0 && isCopper == null" style="width: 100%; height: 100%" > <div v-if="activeFace > 0 && isCopper == null" style="width: 100%; height: 100%"> <!-- <Add :active="activeFace" :currentId="currentId" :examine="examine" /> --> </div> <div v-if="activeFace > 0 && isCopper == 0" style="width: 100%; height: 100%" > <div v-if="activeFace > 0 && isCopper == 0" style="width: 100%; height: 100%"> <!-- <CustomsInspection :active="activeFace" :currentId="currentId" @@ -252,10 +189,7 @@ :isReport="isReport" /> --> </div> <div v-if="activeFace > 0 && isCopper == 1" style="width: 100%; height: 100%" > <div v-if="activeFace > 0 && isCopper == 1" style="width: 100%; height: 100%"> <!-- <CopperOrder :active="activeFace" :currentId="currentId"></CopperOrder> --> </div> <!--<Inspection @@ -271,46 +205,23 @@ />--> <el-dialog :visible.sync="dataDialogVisible" title="æ°æ®æ¥ç" width="80%"> <div v-if="dataDialogVisible" style="height: 70vh; overflow-y: auto"> <lims-table :tableData="lookTableData" :column="lookColumn" :page="lookPage" :tableLoading="lookTableLoading" :height="'60vh'" @pagination="lookPagination" key="tableData1" ></lims-table> <lims-table :tableData="lookTableData" :column="lookColumn" :page="lookPage" :tableLoading="lookTableLoading" :height="'60vh'" @pagination="lookPagination" key="tableData1"></lims-table> </div> </el-dialog> <el-dialog :visible.sync="bindDialogVisible" title="æ£éªé¡¹ç»å®" width="600px" > <div slot="title" style=" <el-dialog :visible.sync="bindDialogVisible" title="æ£éªé¡¹ç»å®" width="600px"> <div slot="title" style=" display: flex; align-items: center; justify-content: space-between; " > "> <span>æ£éªé¡¹ç»å®</span> <el-button style="float: right; margin-left: 360px" size="small" @click="openBindAdd" type="primary" > <el-button style="float: right; margin-left: 360px" size="small" @click="openBindAdd" type="primary"> æ°å¢ </el-button> </div> <el-table :data="bindTableData" style="width: 100%" height="70vh"> <el-table-column prop="inspectionItemClass" label="æ£éªé¡¹åç±»" width="150" > <el-table-column prop="inspectionItemClass" label="æ£éªé¡¹åç±»" width="150"> </el-table-column> <el-table-column prop="inspectionItem" label="æ£éªé¡¹" width="150"> </el-table-column> @@ -318,30 +229,16 @@ </el-table-column> <el-table-column label="æä½"> <template slot-scope="scope"> <el-button size="mini" type="text" @click="handleDelete(scope.row)" >å é¤</el-button > <el-button size="mini" type="text" @click="handleDelete(scope.row)">å é¤</el-button> </template> </el-table-column> </el-table> </el-dialog> <el-dialog :visible.sync="bindAddDialogVisible" title="éæ©ç»å®" width="600px" > <el-table :data="bindAddTableData" style="width: 100%" height="60vh" @selection-change="handleBindAddSelectionChange" > <el-dialog :visible.sync="bindAddDialogVisible" title="éæ©ç»å®" width="600px"> <el-table :data="bindAddTableData" style="width: 100%" height="60vh" @selection-change="handleBindAddSelectionChange"> <el-table-column type="selection" width="55"> </el-table-column> <el-table-column prop="inspectionItemClass" label="æ£éªé¡¹åç±»" width="150" > <el-table-column prop="inspectionItemClass" label="æ£éªé¡¹åç±»" width="150"> </el-table-column> <el-table-column prop="inspectionItem" label="æ£éªé¡¹" width="150"> </el-table-column> @@ -350,17 +247,9 @@ </el-table> <span slot="footer" class="dialog-footer"> <el-button @click="bindAddDialogVisible = false">å æ¶</el-button> <el-button :loading="loading" type="primary" @click="bindAdd" >ç» å®</el-button > <el-button :loading="loading" type="primary" @click="bindAdd">ç» å®</el-button> </span> </el-dialog> <!-- <un-pass-retest-result v-if="retestVisible" :retestInfo="retestInfo" :retestVisible="retestVisible" @closeRetestLook="closeRetestLook" ></un-pass-retest-result> --> <!--产ä¸é¾ä¿¡æ¯æ¥ç--> <!-- <ShowInfo v-if="showInfoDialog" @@ -379,11 +268,9 @@ // import Add from "../do/b1-ins-order/add.vue"; // import ShowInfo from "../do/b1-material-ins-order/showInfo.vue"; // import CopperOrder from "../do/b1-material-ins-order/copper-order.vue"; // import UnPassRetestResult from "../do/b1-material-ins-order/unPassRetestResult.vue"; import EditInspectionItem from "./components/EditInspectionItem.vue"; import limsTable from "@/components/Table/lims-table.vue"; import { getRetestResult, claimInsOrderPlan, upPlanUser2, upPlanUser, @@ -406,11 +293,10 @@ // Inspection, // Add, // CustomsInspection, // UnPassRetestResult }, dicts: ["urgency_level", "inspection_task_state"], computed: { ...mapGetters(["name", "userId"]), ...mapGetters(["nickName", "userId"]), }, data() { return { @@ -435,85 +321,6 @@ ], active: 1, tabIndex: 0, componentDataDataLook: { entity: { id: 0, orderBy: { field: "sampleCode", order: "asc", }, }, isIndex: false, showSelect: false, select: false, do: [ { id: "parent", font: "ä¸åæ ¼å¤æµæ¥ç", type: "text", method: "getRetestResult", disabFun: (row, index) => { return row.insResult != 0; }, }, { id: "parent", font: "æ£éªé¡¹ç»å®", type: "text", method: "getBinding", disabFun: (row, index) => { return ( this.lookInfo.userName == null || this.lookInfo.insState == 3 || this.lookInfo.insState == 5 ); }, }, ], tagField: { insState: { select: [], }, insResult: { select: [ { value: 1, label: "åæ ¼", type: "success", }, { value: 0, label: "ä¸åæ ¼", type: "danger", }, { value: 3, label: "ä¸å¤å®", type: "", }, ], }, }, selectField: {}, spanConfig: { rows: [ { name: "sampleCode", index: 0, }, { name: "sample", index: 1, }, { name: "model", index: 6, }, ], }, requiredAdd: [], requiredUp: [], }, dataDialogVisible: false, planTotal: 0, insStateList: [], @@ -540,7 +347,6 @@ customsInspection: {}, showInfoDialog: false, // 产ä¸é¾ä¿¡æ¯æ¥ç isReport: 0, retestVisible: false, retestInfo: [], isCopper: null, bindCurrentInfo: {}, @@ -668,7 +474,7 @@ row.userName == null || row.insState == 3 || row.insState == 5 || (row.userName && !row.userName.includes(this.name)) (row.userName && !row.userName.includes(this.nickName)) ); }, }, @@ -683,7 +489,7 @@ row.userName == null || row.insState == 5 || row.insState == 3 || (row.userName && !row.userName.includes(this.name)) (row.userName && !row.userName.includes(this.nickName)) ); }, }, @@ -721,6 +527,7 @@ type: "", }, ], // æ°æ®æ¥çç¸å ³å段---å¼å§ lookTableData: [], lookColumn: [ { @@ -756,16 +563,6 @@ label: "æä½", operation: [ { name: "ä¸åæ ¼å¤æµæ¥ç", type: "text", clickFun: (row) => { this.getRetestResult(row); }, disabled: (row) => { return row.insResult != 0; }, }, { name: "æ£éªé¡¹ç»å®", type: "text", clickFun: (row) => { @@ -788,6 +585,7 @@ current: 0, }, lookTableLoading: false, // æ°æ®æ¥çç¸å ³å段---ç»æ }; }, created() { @@ -837,6 +635,7 @@ if (res.code === 200) { this.lookTableData = res.data.records; this.lookPage.total = res.data.total; this.dataDialogVisible = true; } }) .catch((err) => { @@ -860,19 +659,6 @@ handleDataLook(row) { this.lookInfo = row; this.getLookList(); this.dataDialogVisible = true; }, // æ¥çä¸åæ ¼å¤æµç»æ getRetestResult(row) { getRetestResult({ insProductId: row.insProductId }).then((res) => { if (res.code == 201) return; this.retestVisible = true; this.retestInfo = res.data; }); }, // closeRetestLook() { this.retestVisible = false; }, // æéåé getPower(radio) { @@ -1023,14 +809,24 @@ if (row.userName) { inspectorList = row.userName.split(","); } if (this.name) { inspectorList.push(this.name); if (this.nickName) { inspectorList.push(this.nickName); } this.inspectorList = inspectorList; this.sonLaboratory = row.sonLaboratory; this.state = 1; this.typeSource = row.typeSource; this.orderId = row.id; this.$router.push({ path: "/inspectionTask/inspection", query: { inspectorList: this.inspectorList, sonLaboratory: this.sonLaboratory, state: this.state, typeSource: this.typeSource, orderId: this.orderId, }, }); }, // æ¥çæ£éªæ°æ® viewInspectInfo(row) { @@ -1039,8 +835,8 @@ if (row.userName) { inspectorList = row.userName.split(","); } if (this.name) { inspectorList.push(this.name); if (this.nickName) { inspectorList.push(this.nickName); } this.inspectorList = inspectorList; this.sonLaboratory = row.sonLaboratory; @@ -1106,7 +902,7 @@ this.orderId = row.id; }, getAuthorizedPerson() { selectUserCondition().then((res) => { selectUserCondition({ type: 1 }).then((res) => { let data = []; res.data.forEach((a) => { data.push({ src/views/business/inspectionTask/inspection.vue
@@ -0,0 +1,3290 @@ <template> <div v-loading="loading" class="inspection"> <el-row class="title"> <el-col :span="4" style="padding-left: 20px; text-align: left">æ£éªå详æ </el-col> <el-col :span="20" style="text-align: right"> <el-form :inline="true" :model="otherForm" class="form-inline" label-width="50px" style="text-align: right; padding-top: 0; display: inline"> <el-form-item label="温度:" style="margin-bottom: 0"> <el-input v-model="otherForm.temperature" :disabled="state > 1" placeholder="" size="small" style="width: 90px; line-height: 60px" @change="(m) => subOtherForm(m, 'temperature')"></el-input> <span style="margin-left: 4px">â</span> </el-form-item> <el-form-item label="湿度:" style="margin-bottom: 0"> <el-input v-model="otherForm.humidity" :disabled="state > 1" placeholder="" size="small" style="width: 90px; line-height: 60px" @change="(m) => subOtherForm(m, 'humidity')"></el-input> <span style="margin-left: 4px">%</span> </el-form-item> </el-form> <el-button size="small" type="primary" @click="refreshView">å·æ°</el-button> <el-button v-if="typeSource === 1" size="small" type="primary" @click="openPurchase">è¿è´§éªè¯</el-button> <el-button v-if="state === 1 && typeSource === 1" size="small" type="primary" @click="openUnPassDialog('add')">ä¸åæ ¼å¤ç</el-button> <el-button size="small" type="primary" @click=" sampleVisible = true; uploadSample(); ">æ ·å忢</el-button> <el-button v-if="state == 1" size="small" type="primary" @click="taskVisible = true">ä»»å¡åæ¢</el-button> <el-button v-if="state == 1" size="small" type="primary" @click="addVerifyDia = true">æäº¤</el-button> <!-- 夿 ¸ --> <el-button v-if="state == 2" size="medium" type="primary" @click="openAddCheck">éè¿</el-button> <el-button v-if="state == 2" size="medium" @click="upInsReview(0)">ä¸éè¿</el-button> <el-button type="primary" size="small" @click="exportTable('myTable')">ä¸è½½åå§è®°å½</el-button> <el-button size="small" @click="$emit('goback')">è¿å</el-button> </el-col> </el-row> <div class="search"> <el-form :inline="true" :model="searchForm" class="form-inline" label-position="right" label-width="100px"> <el-form-item label="å§æç¼å·:"> <el-input v-model="insOrder.entrustCode" clearable disabled placeholder="请è¾å ¥" size="small"></el-input> </el-form-item> <el-form-item label="æ ·åç¼å·:"> <el-tooltip :content="currentSample.sampleCode" :disabled="!currentSample.sampleCode"> <el-input v-model="currentSample.sampleCode" clearable disabled placeholder="请è¾å ¥" size="small"></el-input> </el-tooltip> </el-form-item> <el-form-item label="æ ·ååç§°:"> <el-input v-model="currentSample.sample" clearable disabled placeholder="请è¾å ¥" size="small"></el-input> </el-form-item> <el-form-item label="æ ·åæ°é:"> <el-input v-model="sampleProduct.length" clearable disabled placeholder="请è¾å ¥" size="small"></el-input> </el-form-item> <el-form-item label="æ ·ååå·:"> <el-input v-model="currentSample.model" clearable disabled placeholder="请è¾å ¥" size="small"></el-input> </el-form-item> <el-form-item label="ä¸åæ¶é´:"> <el-input v-model="insOrder.sendTime" clearable disabled placeholder="请è¾å ¥" size="small"></el-input> </el-form-item> <el-form-item label="ç´§æ¥ç¨åº¦:"> <el-input v-model="insOrder.typeName" clearable disabled placeholder="请è¾å ¥" size="small"></el-input> </el-form-item> <el-form-item label="çº¦å®æ¶é´:"> <el-input v-model="insOrder.appointed" clearable disabled placeholder="请è¾å ¥" size="small"></el-input> </el-form-item> <el-form-item v-if="typeSource === 1" label="æ½æ£æ°é:"> <el-input v-model="insOrder.testQuantity" clearable disabled placeholder="请è¾å ¥" size="small"></el-input> </el-form-item> <el-form-item v-if="typeSource === 1" label="åå®¶å¯åº¦:"> <el-input v-model="supplierDensity" clearable disabled placeholder="请è¾å ¥" size="small"></el-input> </el-form-item> <el-form-item label="å½åæ ·å使°:"> <el-tag v-if="currentKey">{{ `NO.${currentKey}` }}</el-tag> </el-form-item> <el-form-item label="夿³¨:"> <!-- <span style="color:red">{{ insOrder.remark?insOrder.remark:'-' }}</span>--> <el-input v-model="insOrder.remark" :disabled="state !== 1" clearable placeholder="请è¾å ¥" size="small" @blur="subOtherForm(insOrder.remark, 'remark')"></el-input> <!-- <el-tag v-if="currentKey">{{ insOrder.remark }}</el-tag> --> </el-form-item> </el-form> </div> <div class="center"> <div class="search" style=" text-align: left; display: flex; align-items: center; justify-content: space-between; "> <div style="display: flex; align-items: center"> <span v-if="tableList.length > 0">æ£éªæ¨¡æ¿ï¼</span> <el-radio-group v-model="currentTable" size="small"> <el-radio-button v-for="(item, index) in tableLists" :key="index" :label="item.templateId" size="small">{{ item.templateName }}</el-radio-button> </el-radio-group> </div> <div style="display: flex; align-items: center"> <el-button v-if="state === 1" size="small" type="primary" @click="openAddUnpass">æ°å¢ä¸åæ ¼å¤æµ</el-button> <el-button v-if="state === 1" size="small" type="primary" @click="unpassCheck">ä¸åæ ¼å¤æµ</el-button> <el-button v-if="state > 1" size="small" type="primary" @click="viewUnpassCheck">æ¥çä¸åæ ¼å¤æµ</el-button> <span v-if="cableTagList.length > 0"> çµç¼é ç½®ï¼</span> <el-select v-if="cableTagList.length > 0" v-model="currentTab" clearable placeholder="è¯·éæ©" size="small" @change="(m) => handleChangeCableTag(currentSample.id, 0, 'cableTag', m) " @focus="getCableTag(currentSample.id)"> <el-option v-for="item in cableTagList" :key="item.cableTag" :label="item.cableTag" :value="item.cableTag"> <span style="float: left">{{ item.cableTag }}</span> <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px" type="danger">æªæ£</el-tag> <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px" type="warning">æ£éªä¸</el-tag> <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px" type="success">å·²æ£</el-tag> </el-option> </el-select> <span v-if="repetitionTagList.length > 0"> é夿£éªé¡¹ï¼</span> <el-select v-if="repetitionTagList.length > 0" v-model="repetitionTag" clearable placeholder="è¯·éæ©" size="small" @change="(m) => handleChangeCableTag(currentSample.id, 0, 'repetitionTag', m) " @focus="getRepetitionTag(currentSample.id)"> <el-option v-for="item in repetitionTagList" :key="item.repetitionTag" :label="item.radius" :value="item.repetitionTag"> <span style="float: left">{{ item.radius }}</span> <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px" type="danger">æªæ£</el-tag> <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px" type="warning">æ£éªä¸</el-tag> <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px" type="success">å·²æ£</el-tag> </el-option> </el-select> <span v-if="typeSource == '1'"> å¾ æ£éªæ°éï¼</span> <el-select v-if="typeSource == '1'" v-model="rawMaterialTag" placeholder="è¯·éæ©" size="small" @change="(m) => handleChangeCableTag(currentSample.id, 4, 'cableTag', m) " @focus="getRawMaterialTag(currentSample.id)"> <el-option v-for="item in rawMaterialTagList" :key="item.rawMaterialTag" :label="item.rawMaterialTag" :value="item.rawMaterialTag"> <span style="float: left">{{ item.rawMaterialTag }}</span> <el-tag v-if="item.status == 0" size="small" style="float: right; margin-top: 5px" type="danger">æªæ£</el-tag> <el-tag v-if="item.status == 1" size="small" style="float: right; margin-top: 5px" type="warning">æ£éªä¸</el-tag> <el-tag v-if="item.status == 2" size="small" style="float: right; margin-top: 5px" type="success">å·²æ£</el-tag> </el-option> </el-select> <el-button :loading="dataAcquisitionLoading" v-if="state == 1" size="small" type="primary" @click="getDataAcquisitionDevice">æ°æ®éé</el-button> <el-button :type="dataAcquisitionEidtAble ? '' : 'primary'" v-if="state == 1" size="small" @click="dataAcquisitionEidtAble = !dataAcquisitionEidtAble">{{ dataAcquisitionEidtAble ? "å ³éç¼è¾" : "ç¼è¾æ°é" }}</el-button> </div> </div> <!-- å¸¸è§æ£éªåå§è®°å½ --> <div v-if=" !tableLists.find((m) => m.templateId == currentTable) || (tableLists.find((m) => m.templateId == currentTable).templateName != 'æ¸©åº¦å¾ªç¯æ£éªåå§è®°å½' && !tableLists .find((m) => m.templateId == currentTable) .templateName.includes('ç循ç¯') && !tableLists .find((m) => m.templateId == currentTable) .templateName.includes('温åè¯éª') && tableLists.find((m) => m.templateId == currentTable).templateName != 'å¼§åç¹æ§æ£éªåå§è®°å½') " id="nav" v-loading="tableLoading" class="center-box"> <table v-for="(item, index) in tableList" :key="index + currentTable + currentSample.id" border="1" cellpadding="10" class="tables" id="myTable"> <tbody> <tr style="white-space: nowrap"> å§æç¼å·ï¼{{ insOrder.entrustCode }} </tr> <tr v-for="(m, i) in item.arr" :key="i"> <td v-for="(n, j) in m" v-if="n.v.mc == undefined || Object.keys(n.v.mc).length === 4" :id="item.templateId + '-' + n.i + '-' + n.r + '-' + n.c" :key="j" :colspan="n.v.mc && n.v.mc.cs ? n.v.mc.cs : 1" :rowspan="n.v.mc && n.v.mc.rs ? n.v.mc.rs : 1" :style="`background:${n.v.bg ? n.v.bg : ''};color:${n.v.fc };font-size:${n.v.fs}px;width:${handleWidth( n )}px !important;height:${item.style.rowlen[n.r]}px;font-wight:${n.v.bl ? 'bold' : '' };`"> <div :class="`content-h-${n.v.ht} content-v-${n.v.vt}`" :style="`width:${handleWidth(n)}px !important;min-height:${item.style.rowlen[n.r] }px;`" class="content"> <template v-if=" n.v.ps != undefined && typeof n.v.ps.value === 'string' && n.v.ps.value.includes('æ£éªå¼') && state == 1 "> <el-input v-if="getInspectionValueType(n.i) == 1" :key="'abc-' + '000' + index + '000' + i + '000' + j" v-model="n.v.v" :disabled="(getInspectionItemType(n.i) == 1 && !dataAcquisitionEidtAble) || (n.u != userId && n.u != undefined && n.u != '') " class="table_input" @change="(m) => changeInput( m, `${item.templateId}-${n.r}-${n.c}-${n.i}`, n, 'getDataType' ) " @input="handleInput(n)" @mousewheel.native.prevent @keydown.enter=" changeInput( '', `${item.templateId}-${n.r}-${n.c}-${n.i}`, n, 'getDataType' ) "> </el-input> <el-input v-else-if="getInspectionValueType(n.i) == 2" v-model="n.v.v" :disabled="getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '') " class="table_input" type="textarea" @change="(m) => changeInput( m, `${item.templateId}-${n.r}-${n.c}-${n.i}`, n, 'getDataType' ) " /> <!-- <el-select v-else-if="getInspectionValueType(n.i) == 5" v-model="n.v.v" :disabled="state > 1 || getInspectionItemType(n.i) == 1 || (n.u != userId && n.u != undefined && n.u != '') " class="table_input" @change="(m) => changeInput( m, `${item.templateId}-${n.r}-${n.c}-${n.i}`, n, 'getDataType' ) " @visible-change="(e) => getDic(e, n.i)"> <el-option v-for="(e, i) in enumList" :key="i" :label="e.label" :value="e.value"></el-option> </el-select> --> <span v-else-if="getInspectionValueType(n.i) == 4" :style="`font-family:${n.v.ff} !important;`">/</span> </template> <template v-else-if="n.v.ps != undefined && n.v.ps.value === 'ç»è®º'"> <el-select v-if=" (getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state == 1 " v-model="n.v.v" class="table_input" @change="(m) => changeInput( m, `${item.templateId}-${n.r}-${n.c}-${n.i}`, n, 'getDataType', 'changeSelect' ) "> <el-option :value="1" label="åæ ¼"></el-option> <el-option :value="0" label="ä¸åæ ¼"></el-option> <el-option :value="3" label="ä¸å¤å®"></el-option> <el-option :value="2" label="å¾ å®"></el-option> </el-select> <template v-if="state > 1"> <span v-if="n.v.v === 1" :style="`font-family:${n.v.ff} !important;color: green;`">åæ ¼</span> <span v-else-if="n.v.v === 0" :style="`font-family:${n.v.ff} !important;color: red;`">ä¸åæ ¼</span> <span v-else-if="n.v.v === 3" :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`">ä¸å¤å®</span> <span v-else :style="`font-family:${n.v.ff} !important;`">å¾ å®</span> </template> <template v-if=" PROJECT == 'æ£æµä¸å¿' || (PROJECT == 'è£ å¤çµç¼' && getInspectionValueType(n.i) != 2 && state == 1) "> <span v-if="n.v.v === 1" :style="`font-family:${n.v.ff} !important;color: green;`">åæ ¼</span> <span v-else-if="n.v.v === 0" :style="`font-family:${n.v.ff} !important;color: red;`">ä¸åæ ¼</span> <span v-else-if="n.v.v === 3" :style="`font-family:${n.v.ff} !important;color: #3A7BFA;`">ä¸å¤å®</span> <span v-else :style="`font-family:${n.v.ff} !important;`">å¾ å®</span> </template> </template> <template v-else-if=" n.v.ps != undefined && n.v.ps.value === '设å¤ç¼ç ' && state == 1 "> <span>{{ n.v.v }}</span> </template> <template v-else-if=" n.v.ps != undefined && n.v.ps.value === '设å¤åç§°' "> <el-select v-model="n.v.v" :disabled="state > 1" class="table_input" filterable multiple placeholder="设å¤" remote @change="(val) => changeEquip(val, n)" @visible-change="(e) => getEquipOptions(e, n.i)"> <el-option v-for="item in equipOptions" :key="item.value" :label="item.label" :value="item.value"> {{ item.label + "--" + item.value }} </el-option> </el-select> </template> <template v-else-if=" n.v.ps != undefined && n.v.ps.value === 'è¦æ±å¼' && state == 1 "> <span :style="`font-family:${n.v.ff} !important;`">{{ getTell(n.i) }}</span> </template> <template v-else-if=" n.v.ps != undefined && n.v.ps.value === '计ç®å¼' && state == 1 "><span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v, n.v.ct) }}</span></template> <template v-else-if=" n.v.ps != undefined && n.v.ps.value === 'æç»å¼' && state == 1 "> <span :style="`font-family:${n.v.ff} !important;`">{{ toFixed(n.v.v, n.v.ct) }}</span> </template> <template v-else-if=" n.v.ps != undefined && n.v.ps.value === 'æ ·åç¼å·' "> <div :title="currentSample.sampleCode" style=" display: flex; flex-wrap: nowrap; align-items: center; width: 100%; "> <i v-if="!currentFiberOpticTape && !currentFiberOptic" class="el-icon-caret-left table_caret" style="width: 16px" @click="caretSample(-1)"></i> <div :style="`font-family:${n.v.ff} !important;overflow: hidden;white-space: nowrap;width: calc(100% - 32px);`"> {{ currentSample.sampleCode }} </div> <i v-if="!currentFiberOpticTape && !currentFiberOptic" class="el-icon-caret-right table_caret" style="width: 16px" @click="caretSample(1)"></i> </div> </template> <template v-else-if=" n.v.ps != undefined && n.v.ps.value === 'æ ·ååå·' "> <div v-if=" currentSample.model !== undefined && currentSample.model !== null " :style="`font-family:${n.v.ff} !important;`"> {{ currentSample.model }} </div> </template> <span v-else :style="`font-family:${n.v.ff} !important;`" v-html="getValue(n.v)"></span> </div> </td> </tr> </tbody> </table> </div> <el-upload v-if="state == 1" ref="upload" :action="action" :before-upload="beforeUpload" :data="{ orderId: id, }" :headers="headers" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar" style="width: 80px !important"> <el-button v-if="state == 1" size="small" type="primary">éä»¶ä¸ä¼ </el-button></el-upload> <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table> <!-- <ValueTable :key="upIndex" ref="fileList" :componentData="componentData0" :delUrl="$api.insOrderPlan.delfile" :url="$api.insOrderPlan.getFileList" class="value-table" style="height: 100%; margin-top: 16px" /> --> </div> <el-drawer :size="550" :visible.sync="sampleVisible" title="æ ·å忢"> <el-table v-if="sampleVisible" ref="productTable" :current-row-key="currentKey" :data="sampleProduct" :row-class-name="tableRowClassName" :row-key="(record) => record.index" border class="el-table" height="100%" highlight-current-row tooltip-effect="dark" @row-click="handleChangeSample"> <el-table-column :key="Math.random()" align="center" label="åºå·" type="index" width="70px"> </el-table-column> <el-table-column label="æ ·åç¼å·" min-width="100px" prop="sampleCode" show-overflow-tooltip></el-table-column> <el-table-column label="æ ·ååå·" min-width="100px" prop="model" show-overflow-tooltip></el-table-column> <el-table-column label="æ£æµç¶æ" prop="insState" show-overflow-tooltip width="100px"> <template slot-scope="scope"> <el-tag v-for="(item, i) in typeList" v-if="item.value == scope.row.insState" :key="i" :type="item.type" size="medium" style="margin-right: 5px">{{ item.label }}</el-tag> </template> </el-table-column> <el-table-column label="æ£éªäºº" min-width="80px" prop="checkName" show-overflow-tooltip></el-table-column> <el-table-column align="center" label="æ¯å¦çæ ·" prop="isLeave" show-overflow-tooltip width="95px"> <template slot-scope="scope"> <span>{{ scope.row.isLeave == 0 ? "å¦" : "æ¯" }}</span> </template> </el-table-column> <!-- æ£éªå伿ä¸ä¸ªæ¯å¦æé 奿 ·ååæ®µæ§å¶æ¾ç¤º --> <el-table-column v-if="insOrder.mating > 0" label="é 奿 ·ååå·" min-width="130px" prop="joinModel" show-overflow-tooltip></el-table-column> <el-table-column v-if="insOrder.mating > 0" label="é 奿 ·ååç§°" min-width="130px" prop="joinName" show-overflow-tooltip></el-table-column> <el-table-column v-if="insOrder.mating > 0" label="é 奿 ·åæ°é" min-width="130px" prop="joinNum" show-overflow-tooltip></el-table-column> </el-table> </el-drawer> <el-drawer :size="500" :visible.sync="taskVisible" title="ä»»å¡åæ¢"> <!-- <ValueTable :key="upIndex" ref="insOrderPlan" :componentData="componentData" :url="$api.insOrderPlan.inspectionOrderDetailsTaskSwitching" class="value-table" style="height: 100%" /> --> </el-drawer> <el-dialog :visible.sync="reviewDia" title="æ£éªå¤æ ¸" width="500px"> <div v-if="reviewDia" class="body" style="display: flex; padding: 10px"> <div class="search_label" style="width: 150px"> <span class="required-span">* </span>ä¸éè¿ççç±ï¼ </div> <div class="search_input" style="width: 100%"> <el-input v-model="noReason" :autosize="{ minRows: 4 }" clearable size="small" type="textarea"></el-input> </div> </div> <span slot="footer" class="dialog-footer"> <el-button @click="reviewDia = false">å æ¶</el-button> <el-button :loading="reviewLoading" type="primary" @click="handleReviewDia">ç¡® å®</el-button> </span> </el-dialog> <el-dialog :visible.sync="addVerifyDia" title="æå®å¤æ ¸äººå" width="400px"> <div class="body" style="display: flex; padding: 10px; align-items: center"> <div class="search_label" style="width: 150px"> <span class="required-span">*</span>夿 ¸äºº </div> <div class="search_input" style="width: 100%"> <el-select v-model="verifyUser" clearable filterable placeholder="è¯·éæ©" size="small" style="width: 100%"> <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value"> </el-option> </el-select> </div> </div> <span slot="footer" class="dialog-footer"> <el-button @click="addVerifyDia = false">å æ¶</el-button> <el-button :loading="submitLoading" type="primary" @click="submit()">ç¡® å®</el-button> </span> </el-dialog> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="dataGetDia" title="æ°æ®éé" width="80%"> <div> <table border="1" cellpadding="10" class="thermal-table"> <tr> <td style="width: 120px">æ£éªé¡¹åç±»</td> <td style="width: 120px">æ£éªé¡¹</td> <td style="width: 120px">æ£éªå项</td> <td>æ°éæ°æ®</td> </tr> <template v-for="(item, index) in getData"> <tr> <td :rowspan="item.child.length">{{ item.sortName }}</td> <td :rowspan="item.child.length">{{ item.faName }}</td> <td>{{ item.child[0].name }}</td> <td style="text-align: left"> <el-select v-if="item.child[0].isShowSelect" v-model="item.child[0].getDataIndex1" :multiple-limit="item.child[0].maxNum" clearable filterable multiple placeholder="è¯·éæ©" @change="setData(item)"> <el-option v-for="(item, index) in item.child[0].arr" :key="index" :filter-method="filterMethod" :label="index + 1 + '^' + item.result" :value="index + '^' + item.result"> <span>{{ "åºå·ï¼" + (index + 1) + "ï¼" + "ç»æï¼" + item.result + "ï¼" + "å度ï¼" + item.thickness + "ï¼" + "æ¶é´ï¼" + item.mergedDateTime }}</span> </el-option> </el-select> <el-checkbox-group v-if="!item.child[0].isShowSelect" v-model="item.child[0].getDataIndex1" :max="item.child[0].maxNum"> <el-checkbox v-for="(n, j) in item.child[0].arr" :key="j" :label="j + '^' + n">{{ n }}</el-checkbox> </el-checkbox-group> </td> </tr> <tr v-for="(m, i) in item.child" v-show="i > 0" :key="i + 'bbbbbbbbbbbbbb'"> <td>{{ m.name }}</td> <td style="text-align: left"> <el-select v-if="m.isShowSelect" v-model="m.getDataIndex1" :multiple-limit="m.maxNum" clearable filterable multiple placeholder="è¯·éæ©"> <el-option v-for="(item, index1) in m.arr" :key="index1" :label="index + 1 + '^' + item.result" :value="index1 + '^' + item.result"> <span>{{ "åºå·ï¼" + (index1 + 1) + "ï¼" + "ç»æï¼" + item.result + "ï¼" + "å度ï¼" + item.thickness + "ï¼" + "æ¶é´ï¼" + item.mergedDateTime }}</span> </el-option> </el-select> <el-checkbox-group v-if="!m.isShowSelect" v-model="m.getDataIndex1" :max="m.maxNum"> <el-checkbox v-for="(n, j) in m.arr" :key="j" :label="j + '^' + n">{{ n }}</el-checkbox> </el-checkbox-group> </td> </tr> </template> </table> </div> <span slot="footer" class="dialog-footer"> <el-button @click="dataGetDia = false">å æ¶</el-button> <el-button :loading="getDataIndexLoading" type="primary" @click="submitDataGet()">ç¡® å®</el-button> </span> </el-dialog> <el-dialog :close-on-click-modal="false" :visible.sync="addCheck" title="æå®æ¥åå®¡æ ¸äººå" width="400px" @close="closeAddVerifyDia"> <div class="body" style="display: flex; padding: 10px; align-items: center"> <div class="search_label" style="width: 150px"> <span class="required-span">*</span>å®¡æ ¸äººï¼ </div> <div class="search_input" style="width: 100%"> <el-select v-model="checkUser" clearable filterable placeholder="è¯·éæ©" size="small" style="width: 100%"> <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value"> </el-option> </el-select> </div> </div> <span slot="footer" class="dialog-footer"> <el-button @click="closeAddVerifyDia">å æ¶</el-button> <el-button :loading="reviewLoading" type="primary" @click="upInsReview(1)">ç¡® å®</el-button> </span> </el-dialog> <add-un-pass v-if="addUnPassDialog" ref="addUnPassDialog" :addUnPassDialog="addUnPassDialog" @resetAddUnPass="resetAddUnPass"></add-un-pass> <!-- <UnPassDialog v-if="unPassDialog" ref="unPassDialog" :orderId="orderId" :unPassDialog="unPassDialog" @resetForm="resetForm" ></UnPassDialog> --> <!-- <InspectionWord v-if="unPassCheck" :inspectorList="inspectorList" :orderId="orderId" :rawMaterialTag="rawMaterialTag" :sonLaboratory="sonLaboratory" :state="state" :typeSource="typeSource" :unPassCheck="unPassCheck" @closeUnPassCheckDialog="closeUnPassCheckDialog" @refreshView="refreshView" /> --> <!-- <purchase-verification v-if="purchaseDialog" ref="purchaseDialog" :orderId="orderId" :purchaseDialog="purchaseDialog" @resetPurchaseDialog="resetPurchaseDialog" ></purchase-verification> --> </div> </template> <script> import excelFunction from "@/utils/excelFountion"; import limsTable from "@/components/Table/lims-table.vue"; // import UnPassDialog from "../b1-unpass-manage/unPassDialog.vue"; // import AddUnPass from "../b1-unpass-manage/addUnPass.vue"; // import InspectionWord from "./InspectionWord.vue"; // import PurchaseVerification from "../b1-unpass-manage/PurchaseVerification.vue"; import { doInsOrder, getCableTag, getRepetitionTag, getRawMaterialTag, dataCollection, write, getInsProduct, getReportModel, determineWhetherToCollectData, search, verifyPlan, checkSubmitPlan, submitPlan, saveInsContext, selectUserCondition, downFile, getFileList, delfile } from "@/api/business/inspectionTask.js"; import html2canvas from "html2canvas"; import { mapGetters } from "vuex"; export default { // props: ["sonLaboratory", "orderId", "state", "inspectorList", "typeSource"], components: { // PurchaseVerification, // AddUnPass, limsTable, // UnPassDialog, // InspectionWord, }, data() { return { sonLaboratory: null, orderId: null, state: null, inspectorList: null, typeSource: null, sagData: [], sagForm: { sampleCode: null, model: null, inspection: null, methodName: null, tensileForce: null, spanLength: null, load: null, }, dataGetDia: false, wareTableDataLoading: false, fileAdd: false, sampleVisible: false, taskVisible: false, submitLoading: false, searchForm: { sampleName: null, state: null, }, id: null, componentData: { entity: { sonLaboratory: null, userId: 0, }, isIndex: false, showSelect: false, select: false, selectMethod: "handleChangeTask", sort: false, do: [], isPage: false, linkEvent: {}, tagField: { type: { select: [], }, insState: { select: [], }, }, currentId: "", selectField: {}, requiredAdd: [], requiredUp: [], }, changeType: null, getReportModelLoading: false, insOrder: {}, sampleProduct: [], supplierDensity: "", // åå®¶å¯åº¦ typeList: [], urgentList: [], currentSample: {}, //å½åæ ·åä¿¡æ¯ tableList: [], loading: false, ps: {}, param: {}, currentKey: 1, currentKey0: 1, currentKey1: 1, currentKey2: 1, comparisonList: [], excelMethodList: [], equipOptions: [], reviewLoading: false, reviewDia: false, noReason: "", tableWidth: 1000, currentTable: null, tableLists: [], widthList: [], addVerifyDia: false, verifyUser: null, personList: [], enumList: [], fiberOpticVisible: false, fiberOpticTapeVisible: false, bushingVisible: false, fiberOpticTape: [], //å 纤带å表 fiberOptic: [], //å 纤å表 bushing: [], //å¥ç®¡å表 currentFiberOpticTape: null, //å½åå 纤带 currentFiberOptic: null, //å½åå 纤 currentBushing: null, //å½åå¥ç®¡ tableLoading: false, upLoading: false, temptList: null, fiber: [], fibers: [], casing: [], currentTab: null, wareForm: { inspectionItem: 1, inspectionItemSubclass: "20(常温)", }, wareForm0: {}, numOptions: [], temperatureOptions: [], wareTableData: [], otherForm: { humidity: null, temperature: null, }, equipForm: { value0: null, code0: null, value1: null, code1: null, }, result: null, worker: null, worker0: null, wareLength: [], dataAcquisitionInfo: {}, dataAcquisitionInfoNew: {}, dataAcquisitionEidtAble: false, isGet: false, dataAcquisitionLoading: false, collected: false, // ç循ç¯---å¼å§ thermalCyclingInfo: { max: 0, inspectionItem: 1, arr: [], length: 1, inspectionItemClass: null, }, thermalCyclingLoading: false, temDataAcquisition: false, getData: [ { faName: "æ³¢é¿éå è¡°å", child: [ { name: "1285nm~1330nm", arr: [12, 13, 14, 15], }, { name: "1525nm~1575nm", arr: [12, 13, 14, 15], }, ], }, { faName: "æªè³æ³¢é¿", child: [ { name: "æªè³æ³¢é¿", arr: [12, 13, 14, 15], }, ], }, ], getDataIndex: [], getDataIndexLoading: false, getDataTypeId: "", getDataType: null, unPassDialog: false, // ä¸åæ ¼å¤çå¼¹æ¡ cableTagList: [], rawMaterialTag: "", // æ¹æ¬¡ rawMaterialTagList: [], // æ¹æ¬¡é项 addCheck: false, // æå®å®¡æ ¸äººåå¼¹æ¡ checkUser: "", addUnPassDialog: false, type: "", retestTag: "", unPassCheck: false, unPassTableList: [], unPassTableLoading: false, purchaseDialog: false, // è¿è´§éªè¯åå§è®°å½å¼¹æ¡ temCableTag: "", repetitionTagList: [], repetitionTag: "", // æä»¶å表ç¸å ³--å¼å§ tableData: [], column: [ { label: "ç±»å", prop: "type", dataType: "tag", formatData: (params) => { if (params == 1) { return 'å¾ç' } else { return 'æä»¶' } }, }, { label: "éä»¶åç§°", prop: "fileName" }, { label: "ä¸ä¼ 人", prop: "name" }, { label: "ä¸ä¼ æ¶é´", prop: "createTime" }, { dataType: "action", fixed: "right", label: "æä½", operation: [ { name: "ä¸è½½", type: "text", clickFun: (row) => { this.handleDown(row); }, }, { name: "å é¤", type: "text", clickFun: (row) => { this.handleDelete(row); }, disabled: (row) => { return this.state != 1; }, }, ], }, ], page: { total: 0, size: 10, current: 0, }, tableLoading: false, // æä»¶å表ç¸å ³--ç»æ }; }, // ç¨äºä¸ä¼ æä»¶çä¿¡æ¯ computed: { ...mapGetters(["userId"]), headers() { return { token: sessionStorage.getItem("token"), }; }, action() { return this.javaApi + "/insOrderPlan/uploadFile"; }, }, created() { this.componentData.entity.sonLaboratory = this.sonLaboratory; this.getUserInfo(); let { sonLaboratory, orderId, state, inspectorList, typeSource } = this.$route.query; this.sonLaboratory = sonLaboratory; this.orderId = orderId; this.id = this.orderId; this.state = state; this.inspectorList = inspectorList; this.typeSource = typeSource; }, mounted() { this.getTypeDicts(); // è·åç´§æ¥ç¨åº¦ä¸ææ¡é项 this.getInsStateDicts(); this.getComparisonList(); this.getAuthorizedPerson(); this.scrollInit(); // this.getPower(); this.startWorker(); }, watch: { // çå¬ä»»å¡idï¼è·åä»»å¡ä¿¡æ¯ id(val) { this.loading = true; doInsOrder({ id: val, laboratory: this.sonLaboratory, }).then(async (res) => { this.insOrder = res.data.insOrder; this.supplierDensity = res.data.supplierDensity; this.getList() this.urgentList.forEach((m) => { if (m.value == this.insOrder.type) { this.insOrder.typeName = m.label; } }); this.loading = false; if (!res.data.sampleProduct || res.data.sampleProduct.length == 0) { this.$emit("goback"); return this.$message.error("è¯¥ä»»å¡æ²¡ææ ·åä¿¡æ¯"); } // èµå¼å½åæ ·åå表 this.sampleProduct = res.data.sampleProduct; this.currentSample = this.HaveJson(this.sampleProduct[0]); let insProduct = this.HaveJson(this.currentSample.insProduct); // æ¸©åº¦ãæ¹¿åº¦èµå¼ this.otherForm = { temperature: this.insOrder.temperature ? this.insOrder.temperature : null, humidity: this.insOrder.humidity ? this.insOrder.humidity : null, }; if (this.typeSource == "1") { this.getRawMaterialTag(this.currentSample.id); // åææçæ£éªä»»å¡æ¥è¯¢æ¹æ° this.rawMaterialTag = "1"; } this.getEquipOptions(1); // è·åå½åæ ·åçæ£éªé¡¹ let list = await this.getCurrentProduct(this.currentSample.id, 0); this.currentSample.insProduct = this.HaveJson(list); // åå§åä¼ éå°å端çåæ° this.param = {}; this.changeType = 0; this.currentSample.insProduct.forEach((a) => { // æ¯å¦ä¸ºæåçµç¼ä¸çæ¾å¥ç®¡é¡¹ç®ï¼ä¸æ¯åæ§è¡åå§å if (this.handleCasing(a.inspectionItem)) { this.param[a.id] = { insValue: [], comValue: [], resValue: null, equipValue: [], equipName: [], insResult: null, }; } }); this.determineWhetherToCollectData(); //æ¯å¦éè¦æ°é this.getReportModel(this.currentSample.id); //è·åå¥ç®¡ãå 纤带ãå çº¤ä¿¡æ¯ if (this.currentSample.index == undefined) this.currentSample["index"] = 1; let bushing = this.currentSample.bushing; this.getTableLists(); //å¤ç模æ¿åè¡¨ä¿¡æ¯ this.componentData.currentId = val; this.currentKey = 1; this.getCableTag(this.currentSample.id); // æ¥è¯¢æ¯å¦æè¦å¤æ¬¡æ£éªççµç¼é ç½® this.getRepetitionTag(this.currentSample.id); // æ¥è¯¢æ¯å¦æè¦é夿£éªé¡¹ // æ¸ ç©ºå 纤é ç½®ç¸å ³æ°æ®---ä¸é¢ä¿¡æ¯ææ¶å¯å¿½ç¥ this.fiberOpticTape = []; this.currentFiberOpticTape = null; this.fiberOptic = []; this.currentFiberOptic = null; this.bushing = []; this.currentBushing = null; this.currentTab = null; if (bushing && bushing.length > 0) { this.bushing = bushing; } }); }, // çå¬å½å模æ¿åå currentTable(val1, val0) { if (val0 != null && val1 != val0) { if (this.changeType && this.changeType > 0) { // 妿æ¯å 纤ãå 纤带ï¼å䏿§è¡ä¸é¢æä½ return; } this.tableLists.forEach(async (m, i) => { if (m.templateId == val1) { let list = await this.getCurrentProduct(this.currentSample.id, 0); this.currentSample.insProduct = this.HaveJson(list); //èµå¼å½åæ ·åçæ£éªé¡¹ this.param = {}; //åå§åä¼ å°å端çåæ° this.currentSample.insProduct.forEach((a, j) => { if (this.handleCasing(a.inspectionItem)) { this.param[a.id] = { insValue: [], comValue: [], resValue: null, equipValue: [], equipName: [], insResult: null, }; } }); this.getReportModel(this.currentSample.id); //è·åå¥ç®¡ãå 纤带ãå çº¤ä¿¡æ¯ // å»é模æ¿ï¼è¿åæå ä¸ªæ¨¡æ¿ const mySet1 = new Set(); this.tableLists = this.currentSample.insProduct.filter((m) => { let num0 = mySet1.size; if (m.templateId != null && m.template != null) { try { mySet1.add( JSON.stringify({ template: m.template, templateId: m.templateId, }) ); } catch (error) { console.log(222, error); } } let num1 = mySet1.size; if (num1 > num0) { return m; } }); if (this.tableLists && this.tableLists.length > 0) { this.tableList = null; this.tableList = this.tableLists.filter( (m) => m.templateId == val1 ); // 对模æ¿è¿è¡å¤ç this.handleTableData(); } } }); } }, // ç¹æ®æ£éªé¡¹--çå¬è®¾å¤ä¿¡æ¯æ¹å equipForm: { deep: true, handler(val) { }, }, }, beforeDestroy() { // å¨ç»ä»¶éæ¯åç¡®ä¿åæ¢ Workerï¼é¿å å åæ³æ¼ this.stopWorker(); }, methods: { // æä»¶ç®¡ç--å¼å§ getList() { this.tableLoading = true; let param = { ...this.page }; delete param.total; getFileList({ insOrderId: this.id, ...param }) .then((res) => { this.tableLoading = false; if (res.code === 200) { this.tableData = res.data.records; this.page.total = res.data.total; } }) .catch((err) => { this.tableLoading = false; }); }, pagination({ page, limit }) { this.page.current = page; this.page.size = limit; this.getList(); }, handleDelete(row) { this.$confirm("æ¯å¦å é¤è¯¥æ¡æ°æ®?", "æç¤º", { confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "warning", }) .then(() => { delfile({ id: row.id }).then((res) => { if (res.code == 201) return; this.$message.success("å 餿å"); this.refresh(); }); }) .catch(() => { }); }, // æä»¶ç®¡ç--ç»æ closeAddVerifyDia() { this.addCheck = false; this.checkUser = ""; }, // å·æ°é¡µé¢ refreshView() { this.$emit("refreshView"); }, closeUnPassCheckDialog() { this.unPassCheck = false; }, // æ¥è¯¢æ¯å¦æè¦å¤æ¬¡æ£éªççµç¼é ç½® getCableTag() { getCableTag({ id: this.currentSample.id, laboratory: this.sonLaboratory, }).then((res) => { if (res.code === 200 && res.data.length > 0) { this.cableTagList = res.data; } }); }, // æ¥è¯¢æ¯å¦æè¦é夿£éªé¡¹ getRepetitionTag() { getRepetitionTag({ id: this.currentSample.id, laboratory: this.sonLaboratory, cableTag: this.temCableTag, }).then((res) => { if (res.code === 200) { this.repetitionTagList = res.data; } }); }, getRawMaterialTag() { getRawMaterialTag({ id: this.currentSample.id, laboratory: this.sonLaboratory, }).then((res) => { if (res.code === 200) { res.data.forEach((item) => { this.rawMaterialTagList = res.data; }); } }); }, // æ·»å éè¦å¤æµçä¸åæ ¼æ£éªé¡¹ openAddUnpass() { this.addUnPassDialog = true; const info = { id: this.currentSample.id, type: this.type, laboratory: this.sonLaboratory, cableTag: "", rawMaterialTag: this.rawMaterialTag, }; this.$nextTick(() => { this.$refs.addUnPassDialog.getInsOrder(info); }); }, resetAddUnPass() { this.addUnPassDialog = false; }, // è¿è¡ä¸åæ ¼å¤æµ unpassCheck() { this.unPassCheck = true; this.retestTag = "1"; }, viewUnpassCheck() { this.unPassCheck = true; this.retestTag = "1"; }, // æå¼ä¸åæ ¼å¤çå¼¹æ¡ openUnPassDialog(type) { this.unPassDialog = true; this.$nextTick(() => { this.$refs.unPassDialog.getInsOrder(type); }); }, // å ³éä¸åæ ¼å¤çå¼¹æ¡ resetForm() { this.$refs.unPassDialog.$refs["unPassForm"].resetFields(); this.unPassDialog = false; }, // æå¼è¿è´§éªè¯å¼¹æ¡ openPurchase() { const operationType = this.state === 1 ? "add" : "view"; this.purchaseDialog = true; const item = { id: this.currentSample.id, sonLaboratory: this.sonLaboratory, cableTag: this.temCableTag, rawMaterialTag: this.rawMaterialTag, typeSource: this.typeSource, }; this.$nextTick(() => { this.$refs.purchaseDialog.getInsOrder(operationType, item); }); }, resetPurchaseDialog() { this.$refs.purchaseDialog.$refs["purchaseForm"].resetFields(); this.purchaseDialog = false; }, // æ°æ®éé getDataAcquisitionDevice() { let itemIds = []; this.currentSample.insProduct.forEach((item) => { if (item.inspectionItemType === "1") { itemIds.push(item.id); } }); const params = { entrustCode: this.insOrder.entrustCode, sampleCode: this.currentSample.sampleCode, id: this.currentSample.id, itemIds: itemIds, }; this.dataAcquisitionLoading = true; dataCollection(params).then((res) => { this.dataAcquisitionLoading = false; if (res.code != 200) { return; } this.dataAcquisitionInfoNew = this.HaveJson(res.data); // 对æ°é忥çå¼è¿è¡å¤ç this.handleDataAcquisition(res.data); }); }, objectOrder(obj) { let newkey = Object.keys(obj).sort(); let newObj = {}; for (let i = 0; i < newkey.length; i++) { newObj[newkey[i]] = obj[newkey[i]]; } return newObj; }, handleDataAcquisition(data, noDialog) { // æ¯å¦å¯ä»¥ç¼è¾æ°éæ°æ® if (this.dataAcquisitionEidtAble) { this.getDataType = 1; } else { this.getDataType = 2; } this.dataAcquisitionInfo = {}; this.getData = []; for (let i in this.objectOrder(data)) { console.log("i---", i); let obj = {}; if (i.includes("@")) { obj = { faName: i.split("@")[0], sortName: i.split("@")[1], child: [], }; } else { obj = { faName: i, child: [], }; } // å¾ªç¯æ°éæ°æ® for (let j in data[i]) { // æ¼æ¥å符串 æ£éªé¡¹åç±»+æ£éªé¡¹+æ£éªå项 let str0 = ""; if (i.includes("@")) { if (i.split("@")[0] == j) { str0 = i.split("@")[0] + ","; } else { str0 = i.split("@")[1] + "," + i.split("@")[0] + "," + j; } } else { if (i == j) { str0 = i + ","; } else { str0 = i + "," + j; } } if ( j != "frequency" && data[i][j] && (!data[i][j].result || typeof data[i][j].result == "string") ) { // å¤çæ°éä¿¡æ¯æ ¼å¼ if (data[i][j].result) { this.dataAcquisitionInfo[str0] = { value: data[i][j].result, frequency: data[i].frequency, }; } let list = this.tableList[0].arr; // 循ç¯é¡µé¢å表信æ¯ï¼å¤ææ°éæ°æ®å¯¹åºé¡µé¢å表信æ¯çæ£éªé¡¹æ¯åªä¸ªï¼å¹¶ç»å½åæ£éªé¡¹ç»å®è®¾å¤ä¿¡æ¯ list.forEach((item, index) => { let num0 = 0; let str = ""; item.forEach((m) => { if ( m.v.ps && (m.v.ps.value == "æ£éªå项" || m.v.ps.value == "æ£éªé¡¹" || m.v.ps.value == "æ£éªé¡¹åç±»") ) { if (m.v.ps && m.v.ps.value == "æ£éªé¡¹åç±»") { if (num0 == 0) { num0++; str = m.v.v + ","; } } if (m.v.ps && m.v.ps.value == "æ£éªé¡¹") { if (num0 == 1) { str = str + m.v.v + ","; num0++; } else { str = m.v.v + ","; num0++; } } if (m.v.ps && m.v.ps.value == "æ£éªå项") { str = str + m.v.v; } } // ç»å®è®¾å¤ä¿¡æ¯ if ( data[i][j].equipName && data[i][j].equipValue && m.v && m.v.ps && m.v.ps.value == "设å¤åç§°" && str0 == str ) { if (!m.v.v) { // this.changeEquip(data[i][j].equipValue,m,data[i][j].equipName) } } }); }); } else if ( j != "frequency" && data[i][j] && Array.isArray(data[i][j].result) ) { // 妿è¿åçæ°éæ°æ®æ¯æ°ç»ï¼åå¤çæ°ç» // 以ä¸é»è¾ä¸ºè·åæ¯ä¸ªæ£éªé¡¹å¯è¾å ¥çæ£éªå¼çæå¤§ä¸ªæ° let str0 = ""; if (i.includes("@")) { if (i.split("@")[0] == j) { str0 = i.split("@")[0] + ","; } else { str0 = i.split("@")[1] + "," + i.split("@")[0] + "," + j; } } else { if (i == j) { str0 = i + ","; } else { str0 = i + "," + j; } } let list = this.tableList[0].arr; let maxNum = 0; list.forEach((item, index) => { let num0 = 0; let str = ""; item.forEach((m) => { if ( m.v.ps && (m.v.ps.value == "æ£éªå项" || m.v.ps.value == "æ£éªé¡¹" || m.v.ps.value == "æ£éªé¡¹åç±»") ) { if (m.v.ps && m.v.ps.value == "æ£éªé¡¹åç±»") { if (num0 == 0) { num0++; str = m.v.v + ","; } } if (m.v.ps && m.v.ps.value == "æ£éªé¡¹") { if (num0 == 1) { str = str + m.v.v + ","; num0++; } else { str = m.v.v + ","; num0++; } } if (m.v.ps && m.v.ps.value == "æ£éªå项") { str = str + m.v.v; } let num = 0; list[index].forEach((n) => { if ( n.v.ps && n.v.ps.value && typeof n.v.ps.value == "string" && n.v.ps.value.includes("æ£éªå¼") ) { num++; } }); if (str0 == str) { maxNum = num; } } // ç»å®è®¾å¤ if ( data[i][j].equipName && data[i][j].equipValue && m.v && m.v.ps && m.v.ps.value == "设å¤åç§°" && str0 == str ) { if (!m.v.v) { // this.changeEquip(data[i][j].equipValue,m,data[i][j].equipName) } } }); }); // è·å尿大æ£éªå¼è¾å ¥ä¸ªæ°åéç»æ°æ® let obj0 = { name: j, arr: data[i][j].result, maxNum: maxNum, equipValue: data[i][j].equipValue, value: [], }; // 妿æ°éè¿åçæ°ç»é¿åº¦å¤§äºæå¤§è¾å ¥ä¸ªæ°ï¼åå°æ°éæ°æ®å¨å¼¹æ¡ä¸å±ç¤ºï¼ç¨æ·éæ©éè¦æå¨éæ©æ°éçä¿¡æ¯ if ( (data[i][j].result && Array.isArray(data[i][j].result) && data[i][j].result.length > maxNum && noDialog !== "noDialog") || (obj0.equipValue === "JCZX-ZB-FF01014" && noDialog !== "noDialog") ) { obj.child.push(obj0); } else { this.dataAcquisitionInfo[str0] = { value: data[i][j].result, }; } } } // å¾ªç¯æ°éæ°æ® if (obj.child.length > 0) { obj.child.forEach((m) => { this.$set(m, "getDataIndex1", []); // 设å¤éæ©ä¸ºæåæºï¼å°±æ¾ç¤ºå¤éä¸ææ¡ if (m.equipValue === "JCZX-ZB-FF01014") { this.$set(m, "isShowSelect", true); } else { this.$set(m, "isShowSelect", false); } }); this.getData.push(obj); } } // 妿å卿°éè¿åçæ°ç»é¿åº¦å¤§äºæå¤§è¾å ¥ä¸ªæ°ï¼åå¼¹åºå¼¹æ¡éæ© if (this.getData.length > 0) { this.dataGetDia = true; } else { // 妿é½ä¸åå¨ï¼åï¼è¿å ¥å¤çæ°é线ç¨éå»å¤çæ°æ® try { // å Worker åéæ¶æ¯ï¼å¼å§å¤çé»è¾ this.getDataIndexLoading = false; this.dataGetDia = false; this.getDataTypeId = ""; this.worker0.postMessage( JSON.stringify({ dataAcquisitionInfo: this.dataAcquisitionInfo, list: this.tableList[0].arr, }) ); } catch (error) { console.log(1111, error); } } // çå¬ Worker è¿åçç»æ this.worker0.onmessage = (event) => { let result = JSON.parse(event.data); if (result.method == "changeInput") { // ééåçæ°æ®ï¼éè¦è¿è¡è®¡ç®ç线ç¨è¿è¡è®¡ç® let { list, n } = result.value; this.$set(this.tableList[0], "arr", list); this.changeInput( "", `${this.currentSample.insProduct[0].templateId}-${n.r}-${n.c}-${n.i}`, n ); } else if (result.getDataTypeId) { // è·åå°æ°éæåä¸é¡¹ï¼æ£éªé¡¹çID this.getDataTypeId = result.getDataTypeId; } }; this.dataAcquisitionLoading = false; }, setData(item) { if (item.child.length > 1) { let arr1 = []; // å¤ä¸ªæ£éªå项çè¯ï¼ç¬¬ä¸ä¸ªæ£éªå项éç第å 个ä¸é¢çå°±èµå¼ç¬¬å 个 for (let j = 0; j < item.child.length; j++) { let arr = []; if (j === 0) { for (let k = 0; k < item.child[j].getDataIndex1.length; k++) { let val1 = item.child[j].getDataIndex1[k]; const index = val1.indexOf("^"); if (index > -1) { val1 = val1.substring(0, index); arr.push(val1); } } arr1 = arr; } else { this.$set(item.child[j], "getDataIndex1", []); arr1.map((a) => { const value1 = a + "^" + item.child[j].arr[Number(a)].result; item.child[j].getDataIndex1.push(value1); }); } } } }, // æåæºæ°é filterMethod(val) { console.log("val---", val); }, // 妿å卿°éè¿åçæ°ç»é¿åº¦å¤§äºæå¤§è¾å ¥ä¸ªæ°ï¼åå¼¹åºå¼¹æ¡éæ©ï¼è¿éæ¯å¼¹æ¡çæäº¤ submitDataGet() { for (let i = 0; i < this.getData.length; i++) { for (let j = 0; j < this.getData[i].child.length; j++) { // å¯¹ç¨æ·éæ©çæ°éä¿¡æ¯è¿è¡å¤çï¼èµå¼ let arr = []; for ( let k = 0; k < this.getData[i].child[j].getDataIndex1.length; k++ ) { if (this.getData[i].child[j].getDataIndex1[k].includes("^")) { const index = this.getData[i].child[j].getDataIndex1[k].indexOf("^"); if (index > -1) { this.getData[i].child[j].getDataIndex1[k] = this.getData[ i ].child[j].getDataIndex1[k].slice( index + 1, this.getData[i].child[j].getDataIndex1[k].length ); } } arr.push(this.getData[i].child[j].getDataIndex1[k]); } if (this.getData[i].sortName) { this.dataAcquisitionInfoNew[ this.getData[i].faName + "@" + this.getData[i].sortName ][this.getData[i].child[j].name].result = arr; } else { this.dataAcquisitionInfoNew[this.getData[i].faName][ this.getData[i].child[j].name ].result = arr; } } } this.getDataIndexLoading = true; // èµå¼å®æåéè¦å次è¿å ¥å¤çæ°é线ç¨éå»å¤çæ°æ® this.handleDataAcquisition(this.dataAcquisitionInfoNew, "noDialog"); }, // å¤çº¿ç¨ startWorker() { if (this.worker) { this.stopWorker(); // ç¡®ä¿ä¹åç Worker 已忢 } // å建 Worker å®ä¾ this.worker = new Worker("/static/js/worker.js"); if (this.worker0) { this.stopWorker(); // ç¡®ä¿ä¹åç Worker 已忢 } // å建 Worker å®ä¾ this.worker0 = new Worker("/static/js/worker0.js"); }, // 忢å¤çº¿ç¨ stopWorker() { if (this.worker) { this.worker.terminate(); this.worker = null; } if (this.worker0) { this.worker0.terminate(); this.worker0 = null; } }, // ç循ç¯---ç»æ // ä¿åæ¹¿åº¦ãæ¸©åº¦æ°æ® subOtherForm(m, type) { console.log("m---", m); write({ [type]: type === "remark" ? m : Number(m), id: this.insOrder.id, }).then((res) => { if (res.code == 201) return; this.$message.success("ä¿åæå"); }); }, exportTable(tableId) { // è·åtableå ç´ var table = document.getElementById(tableId); // 使ç¨html2canvasåºçæcanvas html2canvas(table).then(function (canvas) { // å建ä¸ä¸ªå¾çå ç´ var img = canvas.toDataURL("image/png"); // å建ä¸ä¸ªaæ ç¾æ¨¡æç¹å»è¿è¡ä¸è½½ var a = document.createElement("a"); a.href = img; a.download = "table.png"; a.click(); }); }, // æéè·å getPower() { let power = JSON.parse(sessionStorage.getItem("power")); let fileDel = false; let fileAdd = false; let collected = false; let temDataAcquisition = false; for (var i = 0; i < power.length; i++) { if (power[i].menuMethod == "uploadFile") { fileAdd = true; } if (power[i].menuMethod == "delfile") { fileDel = true; } if (power[i].menuMethod == "isItAllowedToModifyTheCollectedValues") { collected = true; } if (power[i].menuMethod == "temDataAcquisition") { temDataAcquisition = true; } } if (!fileDel) { // this.componentData0.do.splice(1, 1); } this.fileAdd = fileAdd; this.collected = collected; this.temDataAcquisition = temDataAcquisition; }, uploadSample() { doInsOrder({ id: this.id, laboratory: this.sonLaboratory, }).then(async (res) => { this.sampleProduct = res.data.sampleProduct; }); }, // æ ¹æ®ç±»åãä»»å¡idãå®éªå®¤æ¥è·åæ ·åçæ£éªé¡¹ä¿¡æ¯ async getCurrentProduct(id, type, cableTag) { if (cableTag === undefined) { cableTag = ""; } this.tableLoading = true; type = this.typeSource == "1" ? 5 : type; this.type = type; let res = await getInsProduct({ id: id, type: type, laboratory: this.sonLaboratory, cableTag: (cableTag ? cableTag : this.temCableTag), rawMaterialTag: this.rawMaterialTag, repetitionTag: this.repetitionTag }); this.tableLoading = false; if (res.data.length > 0) { return res.data; } }, // åæ¢æ ·å async handleChangeSample(row, column, event) { // åå§åæ°æ® this.param = {}; // æ¸ ç©ºå 纤é ç½®ç¸å ³æ°æ® this.fiberOpticTape = []; this.currentFiberOpticTape = null; this.fiberOptic = []; this.currentFiberOptic = null; this.bushing = []; this.currentBushing = null; this.sampleVisible = false; // èµå¼æ ·å this.currentSample = this.HaveJson(row); let list = await this.getCurrentProduct(row.id, 0); // èµå¼æ ·åæ£éªé¡¹ this.currentSample.insProduct = this.HaveJson(list); // åå§ååç«¯ä¼ å this.param = {}; this.changeType = 0; this.currentSample.insProduct.forEach((a, j) => { if (this.handleCasing(a.inspectionItem)) { this.param[a.id] = { insValue: [], comValue: [], resValue: null, equipValue: [], equipName: [], insResult: null, }; } }); // è·åå¥ç®¡,å 纤带,å çº¤æ°æ® this.getReportModel(row.id); let bushing = this.currentSample.bushing; if (bushing && bushing.length > 0) { this.bushing = bushing; } // å¤ç页é¢åè¡¨æ°æ® this.getTableLists(); this.currentKey = row.index; this.currentTab = null; // åå¤çº¿ç¨å»ä¿å页é¢åè¡¨æ°æ®,åç«¯ä¼ å,å½å模æ¿ä¿¡æ¯ this.worker.postMessage( JSON.stringify({ modelType: this.sampleProduct[0].model, type: "saveData", tableList: this.tableList, param: this.param, currentTable: this.currentTable, }) ); }, // æ¾å¥ç®¡ç夿\妿changeTypeä¸çäº3é£ä¹é¡µé¢ä¸å±ç¤ºæ¾å¥ç®¡æ£éªé¡¹ handleCasing(inspectionItem) { if (this.changeType != 3) { if (inspectionItem.includes("æ¾å¥ç®¡")) { return false; } else { return true; } } else { return true; } }, // è·åå¥ç®¡,å 纤带,å çº¤æ°æ® getReportModel(id) { if (this.PROJECT != "æ£æµä¸å¿") { return; } this.getReportModelLoading = true; getReportModel({ sampleId: id }).then((res) => { this.getReportModelLoading = false; this.fibers = res.data["å 纤带"]; this.fiber = res.data["å 纤"]; this.casing = res.data["å¥ç®¡"]; }); }, async handleChangeCableTag(m, type, num, m2) { let cableTag = ""; let repetitionTag = ""; if (num === "cableTag") { cableTag = m2; this.temCableTag = cableTag; this.getRepetitionTag(); } if (num === "repetitionTag") { repetitionTag = m2; this.repetitionTag = repetitionTag; } if (!m2) { type = 0; } this.changeType = type; if (m) { let list = await this.getCurrentProduct(m, type, cableTag); if (list && list.length > 0) { this.param = {}; list.forEach((a) => { this.param[a.id] = { insValue: [], comValue: [], resValue: null, equipValue: [], equipName: [], insResult: null, }; }); this.getTableLists0(list); this.getReportModel(this.currentSample.id); this.worker.postMessage( JSON.stringify({ type: "saveData", tableList: this.tableList, param: this.param, currentTable: this.currentTable, bushing: m, }) ); } else { this.tableLists = []; this.tableList = []; this.$message.error("æ£éªé¡¹ä¸ºç©º"); } } }, // æ¹åä»»å¡ handleChangeTask(row) { if (row.length > 0) this.id = row[0].id; this.taskVisible = false; }, // åå ¸è·åä¿¡æ¯ getTypeDicts() { this.getDicts("urgency_level").then((response) => { this.urgentList = this.dictToValue(response.data); this.componentData.tagField.type.select = this.urgentList; }); }, // åå ¸è·åä¿¡æ¯ getInsStateDicts() { this.getDicts("inspection_task_state").then((response) => { this.typeList = this.dictToValue(response.data); this.componentData.tagField.insState.select = this.typeList; }); }, // åå ¸è·åä¿¡æ¯ getComparisonList() { this.getDicts("coordinate_transformation").then((response) => { this.comparisonList = this.dictToValue(response.data); }); }, // è·åæ£éªå¼ä¸ºä¸ææ¶ç䏿å表 // selectEnumByCategoryOfSelect(val) { // this.enumList = []; // if (val === undefined || val === null) { // return; // } // this.$axios // .post(this.$api.enums.selectEnumByCategory, { // category: val, // }) // .then((res) => { // this.enumList = res.data; // }); // }, tableRowClassName({ row, rowIndex }) { row.index = rowIndex + 1; }, // å¤ç页é¢åè¡¨æ°æ®--å»é,çææ£éªæ¨¡æ¿åæ¢å表 getTableLists() { const mySet1 = new Set(); this.tableLists = this.currentSample.insProduct.filter((m) => { let num0 = mySet1.size; if (m.templateId != null && m.template != null) { try { mySet1.add( JSON.stringify({ template: m.template, templateId: m.templateId, }) ); } catch (error) { console.log(222, error); } } let num1 = mySet1.size; if (num1 > num0) { return m; } }); if (this.tableLists && this.tableLists.length > 0) { this.tableList = null; this.tableList = [this.tableLists[0]]; this.currentTable = this.tableLists[0].templateId; // å¤ç页é¢åè¡¨æ°æ® this.handleTableData(); } }, // å 纤é ç½®ç¸å ³æ¨¡æ¿tableå表 getTableLists0(list) { const mySet1 = new Set(); this.tableLists = list.filter((m) => { let num0 = mySet1.size; if (m.templateId != null && m.template != null) { try { mySet1.add( JSON.stringify({ template: m.template, templateId: m.templateId, }) ); } catch (error) { console.log(333, error); } } let num1 = mySet1.size; if (num1 > num0) { return m; } }); if (this.tableLists && this.tableLists.length > 0) { this.tableList = null; this.tableList = [this.tableLists[0]]; this.currentTable = this.tableLists[0].templateId; this.currentSample.insProduct = this.HaveJson(list); // å¤ç页é¢åè¡¨æ°æ® this.handleTableData(); } }, // å¤ç页é¢åè¡¨æ°æ® handleTableData() { this.excelMethodList = []; //excel彿°å表 this.widthList = this.tableList[0].style.columnlen; //页é¢å®½åº¦--æ ¹æ®æ¨¡æ¿æ¥ç // æ¬æ¬¡å¾ªç¯ä¸»è¦å页颿¸²æå±é¢çå¤ç--åå æ ¼åå¹¶é¢å¤ç this.tableList.forEach((a) => { let mcList = a.template.filter( (b) => b.v.mc != undefined && b.v.mc.cs != undefined && b.v.mc.rs != undefined ); let count = 0; // å° a.template 转æ¢ä¸º Map 以å éæ¥æ¾ let templateMap = new Map(); a.template.forEach((item) => { templateMap.set(`${item.c}-${item.r}`, item); }); mcList.forEach((b) => { let cs = b.v.mc.cs; let rs = b.v.mc.rs; for (let i = 0; i < cs; i++) { for (let i2 = 0; i2 < rs; i2++) { let key = `${b.c + i}-${b.r + i2}`; let item = templateMap.get(key); if (item) { let bb = this.HaveJson(b); item.v.v = bb.v.v; item.v.ps = bb.v.ps; item.v.fc = bb.v.fc; item.v.fs = bb.v.fs; item.v.ht = bb.v.ht; item.mc = count; } } } count++; }); }); // æ¬æ¬¡å¾ªç¯ä¸»è¦æ¯æ§å¶åå¹¶,以忧嶿£éªé¡¹ä¿¡æ¯æ¯å¦å±ç¤ºåºæ¥,以便åç»æ£éª this.tableList.forEach((a) => { let dels = new Set(); //éè¦å é¤çè¡ let ids = []; //æææ£éªé¡¹çid let set3 = new Set(); a.template.forEach((b) => { let size1 = set3.size; let size2 = set3.add(b.r).size; if (size1 < size2) { let str = ""; let str2 = ""; let unit2 = ""; let count4 = 0; let isThree = 0; a.template.forEach((c) => { // è·åå° æ£éªé¡¹åç±»+æ£éªé¡¹+æ£éªåé¡¹çæ¼æ¥,å¦ææ¨¡æ¿éçä¿¡æ¯è·æ¥å£è¿åçæ£éªé¡¹ä¿¡æ¯è½å¤å¹é åå±ç¤ºåºæ¥ if (b.r === c.r) { if ( c.v.ps != undefined && c.v.ps.value === "æ£éªé¡¹åç±»" && count4 === 0 ) { // ä¸çº§åç±» isThree = 1; } else if ( c.v.ps != undefined && c.v.ps.value === "æ£éªé¡¹" && count4 === 0 ) { // äºçº§åç±» isThree = 0; } if (isThree == 0) { if (c.v.ps != undefined && c.v.ps.value === "æ£éªé¡¹") { if (count4 === 0) { if (c.v.v) { c.v.v = c.v.v.replace(/\s*/g, ""); } str += c.v.v; count4 += 1; } } else if ( c.v.ps != undefined && c.v.ps.value === "æ£éªå项" ) { if (count4 === 1) { if (c.v.v) { c.v.v = c.v.v.replace(/\s*/g, ""); } str += c.v.v; count4 += 1; } } } else if (isThree == 1) { if (c.v.ps != undefined && c.v.ps.value === "æ£éªé¡¹åç±»") { if (count4 === 0) { if (c.v.v) { c.v.v = c.v.v.replace(/\s*/g, ""); } str += c.v.v; count4 += 1; } } else if (c.v.ps != undefined && c.v.ps.value === "æ£éªé¡¹") { if (count4 === 1) { if (c.v.v) { c.v.v = c.v.v.replace(/\s*/g, ""); } str += c.v.v; count4 += 1; } } else if ( c.v.ps != undefined && c.v.ps.value === "æ£éªå项" ) { if (count4 === 2) { if (c.v.v) { c.v.v = c.v.v.replace(/\s*/g, ""); } str += c.v.v; count4 += 1; } } } if (str === "æºæ¢°æ§è½å¹²ææä¼¸å¼ºåº¦(纵å)") { if (c.v.ps != undefined && c.v.ps.value === "åä½") { if (c.v.v) { c.v.v = c.v.v.replace(/\s*/g, ""); } str2 = str + c.v.v; unit2 = c.v.v; } } } }); if (str != "") { let count2 = 0; for (let i in this.currentSample.insProduct) { let inspectionItemClass = this.currentSample.insProduct[i].inspectionItemClass == null || this.currentSample.insProduct[i].inspectionItemClass == undefined ? "" : this.currentSample.insProduct[i].inspectionItemClass; inspectionItemClass = inspectionItemClass.replace(/\s*/g, ""); let inspectionItem = this.currentSample.insProduct[i].inspectionItem == null || this.currentSample.insProduct[i].inspectionItem == undefined ? "" : this.currentSample.insProduct[i].inspectionItem; inspectionItem = inspectionItem.replace(/\s*/g, ""); let inspectionItemSubclass = this.currentSample.insProduct[i].inspectionItemSubclass == null || this.currentSample.insProduct[i].inspectionItemSubclass == undefined ? "" : this.currentSample.insProduct[i].inspectionItemSubclass; inspectionItemSubclass = inspectionItemSubclass.replace( /\s*/g, "" ); if (inspectionItemSubclass === "å¹²ææä¼¸å¼ºåº¦(纵å)") { // æ£éªå项为'å¹²ææä¼¸å¼ºåº¦(纵å)'æ¶ï¼æ¨¡çéæ¯ä¸¤ä¸ªè®¡ç®å¼å¯¹åºç¸åçæ£éªå¼å¹¶ä¸è®¡ç®æ¹å¼ä¸åï¼è¦æ ¹æ®ç¸åç'åä½'åç¹æ®ç渲æ const unit = this.currentSample.insProduct[i].unit; if ( (this.currentSample.insProduct[i].templateId === a.templateId && inspectionItemClass + inspectionItem + inspectionItemSubclass + unit === str2) || (this.currentSample.insProduct[i].templateId === a.templateId && !unit2.includes("/") && inspectionItemClass + inspectionItem + inspectionItemSubclass === str) ) { ids.push({ r: b.r, id: this.currentSample.insProduct[i].id, product: this.currentSample.insProduct[i], }); break; } } else { // 妿ç¸ç,é£ä¹è¯´ææ¾å°äº,并䏿idåèµ·æ¥,åç»æ£éªé¡¹ä¹ä¼å¨é¡µé¢ä¸æ¾ç¤ºåºæ¥ if ( this.currentSample.insProduct[i].templateId === a.templateId && inspectionItemClass + inspectionItem + inspectionItemSubclass === str ) { ids.push({ r: b.r, id: this.currentSample.insProduct[i].id, product: this.currentSample.insProduct[i], }); break; } } count2++; } if (count2 == this.currentSample.insProduct.length) { dels.add(b.r); } } } }); // æä½å é¤ dels.forEach((del) => { for (let b = 0; b < a.template.length; b++) { if (a.template[b].r === del) { a.template.splice(b, 1); b -= 1; } } }); // æä½èµå¼--主è¦èµå¼åä½,è¯éªæ¹æ³çä¿¡æ¯ ids.forEach((id) => { for (let b = 0; b < a.template.length; b++) { if (a.template[b].r === id.r) { a.template[b].i = id.id; if ( a.template[b].v.ps != undefined && a.template[b].v.ps.value === "åä½" ) { a.template[b].v.v = id.product.unit; } if ( a.template[b].v.ps != undefined && (a.template[b].v.ps.value === "è¯éªæ¹æ³" || a.template[b].v.ps.value === "æ£æµæ¹æ³") ) { a.template[b].v.v = id.product.methodS; } } } }); let set2 = new Set(); // åå¹¶çæ°æ®å¤ç,cs rs 代表åå¹¶çæ°é a.template.forEach((b) => { let size1 = set2.size; let size2 = set2.add(b.mc).size; if (b.mc != undefined && size1 < size2) { b.v.mc.rs = 0; b.v.mc.cs = 0; a.template.forEach((c) => { if (b.mc === c.mc) { if (b.r === c.r) { b.v.mc.cs += 1; } if (b.c === c.c) { b.v.mc.rs += 1; } } }); } }); }); // æ¬æ¬¡å¾ªç¯ä¸»è¦æ¯å¯¹åç«¯ä¼ åè¿è¡åå§å,æ ·å¼é»è¾ä¿®æ¹ this.tableList.forEach((a) => { let arrs = []; let set = new Set(); let count1 = 0; let conclusionList = []; //ç»è®ºå表 let finalList = []; //æç»å¼å表 // ç»è®ºä¸æç»å¼å¨è¿éä¸ä¸å¯¹åº,以ä¸ä¸¤ä¸ªå表é¿åº¦è¯å®æ¯ä¸æ ·ç,妿æä¸ä¸æ ·,é£ä¹å¤åæ¯æ¨¡æ¿é ç½®å¾é®é¢ conclusionList = a.template.filter( (n) => n.v.ps != undefined && n.v.ps.value === "ç»è®º" ); //ç»è®ºå表 finalList = a.template.filter( (n) => n.v.ps != undefined && n.v.ps.value === "æç»å¼" ); //æç»å¼å表 a.template.forEach((b) => { if ( b.v.ps != undefined && b.v.ps.value === "åºå·" && (b.v.mc == undefined || Object.keys(b.v.mc).length === 4) ) { // 对åºå·è¿è¡èµå¼ count1++; b.v.v = count1; } if (b.v.ps != undefined && b.v.ps.value === "è¦æ±å¼") { // å¯¹è¦æ±å¼è¿è¡èµå¼ b.v.v = this.getAsk(b.i); } // 对页é¢çåç»åç«¯ä¼ åçæ£éªå¼,计ç®å¼,设å¤ç¼ç ,设å¤åç§°,æç»å¼,ç»è®ºè¿è¡åå§å if ( b.v.ps != undefined && typeof b.v.ps.value === "string" && b.v.ps.value.includes("æ£éªå¼") ) { this.$set(b.v, "v", ""); // b.v.v = '' b.u = ""; b.i && this.param[b.i] && this.param[b.i].insValue.push(b); } if (b.v.ps != undefined && b.v.ps.value === "计ç®å¼") { this.$set(b.v, "v", ""); // b.v.v = '' b.i && this.param[b.i] && this.param[b.i].comValue.push(b); } if (b.v.ps != undefined && b.v.ps.value === "设å¤ç¼ç ") { // b.v.v = '' this.$set(b.v, "v", ""); b.i && this.param[b.i] && this.param[b.i].equipValue.push(b); } if (b.v.ps != undefined && b.v.ps.value === "设å¤åç§°") { this.$set(b.v, "v", ""); // b.v.v = '' b.i && this.param[b.i] && this.param[b.i].equipName.push(b); } if (b.v.ps != undefined && b.v.ps.value === "æç»å¼") { // b.v.v = '' this.$set(b.v, "v", ""); if ( b.i !== undefined && this.param[b.i] && !this.param[b.i].resValue ) { this.param[b.i].resValue = b; } } if (b.v.ps != undefined && b.v.ps.value === "ç»è®º") { if ( b.i !== undefined && this.param[b.i] && !this.param[b.i].insResult ) { this.param[b.i].insResult = b; conclusionList.forEach((n, i) => { if (n.r == b.r && n.c == b.c) { b.v.f = `(${this.comparisonList.find((j) => j.value == finalList[i].c) .label }${finalList[i].r + 1})`; } }); } } set.add(b.r); // å¦ææ¨¡æ¿å表ç彿°åå¨,é£ä¹å å ¥å°excel彿°å表éé¢ if (b.v.f) { this.excelMethodList.push(b); } }); // 以䏿¯æ ·å¼å¤çé»è¾ set = Array.sort(set); set.forEach((b) => { let arr = []; a.template.forEach((c) => { if (c.r === b) { arr.push(c); } }); arrs.push(arr); }); a.arr = arrs; this.tableWidth = 0; for (let i = 0; i < arrs[0].length; i++) { this.tableWidth += a.style.columnlen[i] === undefined ? 100 : a.style.columnlen[i]; } }); // æ¬æ¬¡å¾ªç¯ä¸»è¦æ¯å¯¹é¡µé¢ååç«¯ä¼ åè¿è¡åå§åèµå¼ this.currentSample.insProduct.forEach(async (a) => { try { // 计ç®å¼èµå¼ let comValue = JSON.parse(a.insProductResult.comValue); for (var i = 0; i < comValue.length; i++) { if ( this.param[a.id].comValue.find( (m) => m.c == comValue[i].c && m.r == comValue[i].r ) ) { this.param[a.id].comValue.find( (m) => m.c == comValue[i].c && m.r == comValue[i].r ).v.v = this.toFixed( comValue[i].v, this.param[a.id].comValue.find( (m) => m.c == comValue[i].c && m.r == comValue[i].r ).v.ct ); } else if (!comValue[i].c || !comValue[i].r) { this.param[a.id].comValue[i].v.v = this.toFixed( comValue[i].v, this.param[a.id].comValue[i].v.ct ); } } } catch (e) { } try { // æ£éªå¼èµå¼ let insValue = JSON.parse(a.insProductResult.insValue); for (let i = 0; i < insValue.length; i++) { if ( this.param[a.id].insValue.find( (m) => m.c == insValue[i].c && m.r == insValue[i].r ) ) { this.param[a.id].insValue.find( (m) => m.c == insValue[i].c && m.r == insValue[i].r ).v.v = this.toFixed( insValue[i].v, this.param[a.id].insValue.find( (m) => m.c == insValue[i].c && m.r == insValue[i].r ).v.ct ); this.param[a.id].insValue.find( (m) => m.c == insValue[i].c && m.r == insValue[i].r ).u = insValue[i].u; // this.param[a.id].insValue[i].v.v = insValue[i].v // this.param[a.id].insValue[i].u = insValue[i].u } } } catch (e) { } try { // 设å¤ç¼å·èµå¼ let equipValue = JSON.parse(a.insProductResult.equipValue); for (let i = 0; i < equipValue.length; i++) { // æ®é设å¤èµå¼ this.param[a.id].equipValue[i].v.v = equipValue[i].v; } } catch (e) { } try { // 设å¤åç§°èµå¼ let equipName = JSON.parse(a.insProductResult.equipName); for (let i = 0; i < equipName.length; i++) { equipName[i].v !== "" && equipName[i].v.map((val) => { const index = this.equipOptions.findIndex( (item) => item.value === val ); if (index > -1) { // æ ¹æ®è®¾å¤ç¼ç 转æ¢ä¸ºç¸åºç设å¤åç§° val = this.equipOptions[index].deviceName; } }); } for (let i = 0; i < equipName.length; i++) { // æ®é设å¤åç§°èµå¼ this.param[a.id].equipName[i].v.v = equipName[i].v; } } catch (e) { console.log("设å¤åç§°èµå¼----", e); } try { // æç»å¼èµå¼ this.param[a.id].resValue.v.v = this.toFixed( a.lastValue, this.param[a.id].resValue.v.ct ); // ç»è®ºèµå¼ this.param[a.id].insResult.v.v = a.insResult; } catch (e) { } }); // 对excel彿°è¿è¡å¤ç this.handleExcelMethod(); }, // æ£éªå¼è¾å ¥å触åç彿° changeInput(m, code, n, getDataType, changeSelect) { // 为æ°éå®ä¹ä¸ä¸ªé»è¾åæ° if (getDataType == "getDataType") { this.getDataType = 2; } let currentInsItemId = null; //å½åæ£éªé¡¹id if (n) { currentInsItemId = JSON.parse(JSON.stringify(n.i)); // å®ä¹ä¸ä¸ªå½æ°æ¥éªè¯åæ°æ¯å¦ææ if (typeof n.v.v == "string") { function isValidFraction(fraction) { const [numerator, denominator] = fraction.split("/"); // ååå忝 return !(!denominator || !numerator); } const isTrue = isValidFraction(n.v.v); if (!isTrue) { n.v.v = n.v.v.replace("/", ""); } } } try { // å Worker åéæ¶æ¯ï¼å¼å§å¤çé»è¾ this.worker.postMessage( JSON.stringify({ code: code, tableList: this.tableList, excelMethodList: this.excelMethodList, comparisonList: this.comparisonList, currentSample: this.currentSample, PROJECT: this.PROJECT, param: this.param, currentTable: this.currentTable, getDataTypeId: this.getDataTypeId, modelType: this.sampleProduct[0].model, currentInsItem: n, }) ); } catch (error) { console.log(444, error); } // çå¬ Worker è¿åçç»æ this.worker.onmessage = (event) => { this.result = JSON.parse(event.data); switch (this.result.method) { case "saveInsContext": this.$nextTick(() => { // this.$delete(this.tableList[0],'arr') this.$set( this.tableList[0], "arr", this.result.value.tableList[0].arr ); this.param = this.result.value.param; if (this.result.value.currentInsItemId) { currentInsItemId = this.result.value.currentInsItemId; } // ç¹æ®å¤çä¸ä¸ç»è®º,伿è¿ç§ç¹æ®æ åµ for (var i in this.param) { if ( this.param[i].insResult && this.param[i].insResult.v && this.param[i].insResult.v.v ) { if (this.param[i].insResult.v.v == "åæ ¼") { this.$set(this.param[i].insResult.v, "v", 1); } else if (this.param[i].insResult.v.v == "ä¸åæ ¼") { this.$set(this.param[i].insResult.v, "v", 0); } } } this.saveInsContext(currentInsItemId); }); break; case "tableList": this.$nextTick(() => { // æ´æ°æ°æ® this.$delete(this.tableList[0], "arr"); this.$set(this.tableList[0], "arr", this.result.value[0].arr); // this.param = this.result.value.param if (this.result.value.currentInsItem) { currentInsItemId = this.result.value.currentInsItem.i; } }); break; case "getCurrentInsProduct": // æ´æ°é¡µé¢æ°æ® this.getCurrentInsProduct(this.result.value); break; } }; // ä¿åæ°æ® setTimeout(() => { if (changeSelect) { this.saveInsContext(currentInsItemId); } }, 200); }, // æ¯å¦éè¦æ°é async determineWhetherToCollectData() { let res = await determineWhetherToCollectData({ managementNumber: '' }) this.isGet = res.data; }, // æ ¹æ®åç«¯ä¼ åæ´æ°é¡µé¢æ°æ® param => this.tableList[0].insProductResult getCurrentInsProduct(pId) { if (!this.tableList[0].insProductResult) { this.tableList[0].insProductResult = {}; } for (let m in this.param[pId]) { let value = this.param[pId][m]; switch (m) { case "comValue": // èµå¼è®¡ç®å¼ if (value && value.length > 0) { this.tableList[0].insProductResult[m] = []; value.forEach((a, i) => { let obj = { v: a.v.v, }; this.tableList[0].insProductResult[m].push(obj); }); try { this.tableList[0].insProductResult[m] = JSON.stringify( this.tableList[0].insProductResult[m] ); } catch (error) { console.log(555, error); } } break; // èµå¼æ£éªå¼ case "insValue": if (value && value.length > 0) { this.tableList[0].insProductResult[m] = []; value.forEach((a, i) => { let obj = { v: a.v.v, u: a.u, }; this.tableList[0].insProductResult[m].push(obj); }); try { this.tableList[0].insProductResult[m] = JSON.stringify( this.tableList[0].insProductResult[m] ); } catch (error) { console.log(666, error); } } break; // èµå¼è®¾å¤ç¼å· case "equipValue": if (value && value.length > 0) { this.tableList[0].insProductResult[m] = []; value.forEach((a, i) => { let obj = { v: a.v.v, }; this.tableList[0].insProductResult[m].push(obj); }); try { this.tableList[0].insProductResult[m] = JSON.stringify( this.tableList[0].insProductResult[m] ); } catch (error) { console.log(777, error); } } break; // èµå¼è®¾å¤åç§° case "equipName": if (value && value.length > 0) { this.tableList[0].insProductResult[m] = []; value.forEach((a, i) => { let obj = { v: a.v.v, }; this.tableList[0].insProductResult[m].push(obj); }); try { this.tableList[0].insProductResult[m] = JSON.stringify( this.tableList[0].insProductResult[m] ); } catch (error) { console.log(888, error); } } break; // èµå¼æç»å¼ case "resValue": this.tableList[0].lastValue = value ? value.v.v : ""; break; // èµå¼ç»è®º case "insResult": this.tableList[0].insResult = value ? value.v.v : ""; break; } } }, // 对EXCEL彿°è¿è¡å¤ç handleExcelMethod() { if (this.excelMethodList.length > 0) { this.excelMethodList.map((item) => { // å¾å°æ¯ä¸ªå½æ°çåæ°å表 item.valueList = excelFunction.changeParameter(item.v.f); return item; }); } }, getValue(v) { // 对页é¢å±ç¤ºæ°æ®è¿è¡å¤ç,@,代表æ¢è¡ let str = v.v ? v.v : v.v === 0 ? v.v : v.ct && v.ct.s ? v.ct.s.length > 0 && v.ct.s[0].v .replace(new RegExp("\n", "g"), "<br/>") .replace(new RegExp("@", "g"), "<br/>") : ""; // å¯¹æ°æ®ä¿çå°æ°ç¹è¿è¡å¤ç if (v.ct && v.ct.fa && v.ct.fa.includes(".") && str) { let num = 0; let str0 = v.ct.fa.split(".")[1]; num = str0.length; str = Number(str).toFixed(num); } if (v.v && typeof v.v == "string" && v.v.includes("@")) { str = v.v.replace(new RegExp("@", "g"), "<br/>"); } return str; }, // è·åå½åè¾å ¥æ¡ç±»å getInspectionValueType(id) { for (var a in this.currentSample.insProduct) { if (this.currentSample.insProduct[a].id == id) { return this.currentSample.insProduct[a].inspectionValueType; } } }, // è·åè¦æ±æè¿° getTell(id) { for (var a in this.currentSample.insProduct) { if (this.currentSample.insProduct[a].id == id) { return this.currentSample.insProduct[a].tell; } } }, // 卿è·ååå æ ¼å®½åº¦ handleWidth(n) { let sum = 0; if (n.v.mc && n.v.mc.cs && n.v.mc.c != undefined) { for (let i = 0; i < n.v.mc.cs; i++) { let num = this.widthList[i + n.v.mc.c] ? this.widthList[i + n.v.mc.c] : 100; sum += num; } } else { sum = this.widthList[n.c] ? this.widthList[n.c] : 100; } return sum; }, // 对è¾å ¥å¼è¿è¡æ ¼å¼æ ¡éª handleInput(n) { try { n.v.v = n.v.v.replace(/[^\d.^e>ï¼â¥â¤<ï¼æè£èå\-/+]/g, ""); n.v.v = n.v.v.replace(/\.{2,}/g, "."); //åªä¿ç第ä¸ä¸ª. æ¸ é¤å¤ä½ç n.v.v = n.v.v .replace(".", "$#$") .replace(/\./g, "") .replace("$#$", "."); n.v.v = n.v.v.replace(/\/{2,}/g, "/"); //åªä¿ç第ä¸ä¸ª/æ¸ é¤å¤ä½ç n.v.v = n.v.v .replace("/", "$#$") .replace(/\//g, "") .replace("$#$", "/"); } catch (error) { console.log(error); } }, getInspectionItemType(id) { for (var a in this.currentSample.insProduct) { if (this.currentSample.insProduct[a].id == id) { return this.currentSample.insProduct[a].inspectionItemType; } } }, // è·åè¦æ±å¼ getAsk(id) { for (var a in this.currentSample.insProduct) { if (this.currentSample.insProduct[a].id == id) { return this.currentSample.insProduct[a].ask; } } }, // è·åææè®¾å¤ getEquipOptions(e, id) { if (e) { this.equipOptions = []; search({ status: 0 }).then((res) => { if (res.code === 200 && res.data) { this.equipOptions = res.data.map((m) => { m.value = m.managementNumber; m.label = m.deviceName; return m; }); } }) .catch((error) => { console.error(error); }); } }, // getDic(e, id) { // if (e) { // for (var a in this.currentSample.insProduct) { // if (this.currentSample.insProduct[a].id == id) { // let str = this.currentSample.insProduct[a].dic; // this.selectEnumByCategoryOfSelect(str); // return str; // } // } // } // }, getUserInfo() { this.componentData.entity.userId = this.userId; }, openAddCheck() { this.addCheck = true; }, // 夿 ¸ upInsReview(e) { if (e == 1) { // éè¿ this.reviewLoading = true; verifyPlan({ orderId: this.orderId, type: 1, laboratory: this.sonLaboratory, tell: null, userId: this.checkUser, }).then((res) => { if (res.code === 200) { this.$message.success("æä½æå"); this.$emit("goback"); this.addCheck = false; } this.reviewLoading = false; }) .catch((error) => { console.error(error); this.reviewLoading = false; }); } else { // ä¸éè¿ this.reviewDia = true; } }, handleReviewDia() { if (this.noReason) { this.reviewLoading = true; verifyPlan({ orderId: this.orderId, type: 0, laboratory: this.sonLaboratory, tell: this.noReason, }).then((res) => { if (res.code === 200) { this.$message.success("æä½æå"); this.$emit("goback"); } this.reviewLoading = false; }) .catch((error) => { console.error(error); this.reviewLoading = false; }); } else { this.$message.error("æªè¾å ¥ä¸éè¿åå "); } }, submit() { if (this.verifyUser === null || this.verifyUser === "") { this.$message.error("请æå®å¤æ ¸äººå"); return; } if (!this.otherForm.humidity) { this.$message.error("请è¾å ¥æ¹¿åº¦"); return; } if (!this.otherForm.temperature) { this.$message.error("请è¾å ¥æ¸©åº¦"); return; } this.submitLoading = true; checkSubmitPlan({ orderId: this.orderId, laboratory: this.sonLaboratory, }).then((res) => { if (res.code === 200) { if (!res.data || res.data.length == 0) { this.submitLoading = true; submitPlan({ orderId: this.orderId, laboratory: this.sonLaboratory, verifyUser: this.verifyUser, entrustCode: this.insOrder.entrustCode, }).then((res) => { if (res.code === 200) { this.$message.success("æä½æå"); this.$emit("goback"); this.submitLoading = false; this.addVerifyDia = false; } }) .catch((error) => { console.error(error); this.submitLoading = false; }); } else { let newData = []; const h = this.$createElement; for (let i in res.data) { const lastChar = res.data[i].slice(-1); if (lastChar == "-") { res.data[i] = res.data[i].slice(0, -1); } newData.push( h( "p", { style: "font-size: 14px;color: red;" }, Number(i) + 1 + "ã" + res.data[i] ) ); } newData.push( h( "p", { style: "font-size: 16px;color:#000;margin-top:12px;overflow-y: auto;max-height:80vh", }, "以ä¸é¡¹ç®ä¸åæ ¼ï¼ç¡®å®æäº¤ï¼" ) ); this.$confirm("æç¤º", { title: "æç¤º", message: h("div", null, newData), confirmButtonText: "ç¡®å®", cancelButtonText: "åæ¶", type: "", }) .then(() => { this.submitLoading = true; submitPlan({ orderId: this.orderId, laboratory: this.sonLaboratory, verifyUser: this.verifyUser, }).then((res) => { if (res.code === 200) { this.$message.success("æä½æå"); this.addVerifyDia = false; this.$emit("goback"); } this.submitLoading = false; }) .catch((error) => { console.error(error); this.submitLoading = false; }); }) .catch(() => { }); } } }) .catch((error) => { console.error(error); this.submitLoading = false; }); return; }, // ç»ä¸å¨è¿éä¿åæ°æ® saveInsContext(currentInsItemId) { try { if (this.param) { let param = null; if (currentInsItemId) { param = { [currentInsItemId]: this.param[currentInsItemId] }; } else { param = this.param; } saveInsContext({ param: JSON.stringify(param), currentTable: this.currentTable, sampleId: this.currentSample.id, }).then((res) => { if (res.code == 201) { this.$message.error("ä¿å失败"); return; } this.$message.success("å·²ä¿å"); }); // å Worker åéæ¶æ¯ï¼å¼å§å¤çé»è¾ this.worker.postMessage( JSON.stringify({ modelType: this.sampleProduct[0].model, type: "saveData", tableList: this.tableList, param: this.param, currentTable: this.currentTable, }) ); } } catch (error) { console.log(999, error); } }, // è®¾å¤æ¹å changeEquip(val, n, v) { try { // this.$set(n.v,'v',val) this.tableList[0].arr.forEach((item, index) => { item.forEach((m, i) => { if (this.param[m.i]) { this.param[m.i].state = 1; } // if(m.i==n.i&&m.v.ps&&m.v.ps.value=='设å¤åç§°'&&v){ // this.$set(m.v,'v',v) // } }); }); for (let i in this.param) { if (this.param[i].state != 1) { delete this.param[i]; } } // this.equipOptions为设å¤åç§°ä¸ææ¡éé¡¹æ°æ® for (let i1 in this.param[n.i].equipName) { if ( this.param[n.i].equipName[i1].i === n.i && this.param[n.i].equipName[i1].r === n.r ) { this.$delete(this.param[n.i].equipValue[i1].v, "v"); // å°æ°ç»èµå¼ç»è®¾å¤ç¼ç this.$set(this.param[n.i].equipValue[i1].v, "v", val.join("ï¼")); this.$delete(this.param[n.i].equipName[i1].v, "v"); // å°æ°ç»èµå¼ç»è®¾å¤ç¼ç this.$set(this.param[n.i].equipName[i1].v, "v", val); this.tableList[0].arr.forEach((item, index) => { item.forEach((m) => { if (m.i == n.i && m.v.ps && m.v.ps.value == "设å¤ç¼ç ") { this.$set(m.v, "v", val.join("ï¼")); } if (m.i == n.i && m.v.ps && m.v.ps.value == "设å¤åç§°") { this.$set(m.v, "v", val); } }); }); } } // ä¿åæ°æ® this.saveInsContext(n.i); } catch (e) { console.log("changeEquip----", e); } }, getAuthorizedPerson() { selectUserCondition({ type: 0 }).then((res) => { let data = []; res.data.forEach((a) => { data.push({ label: a.name, value: a.id, }); }); this.personList = data; }); }, scrollInit() { // è·åè¦ç»å®äºä»¶çå ç´ const nav = document.getElementById("nav"); var flag; // é¼ æ æä¸ var downX; // é¼ æ ç¹å»çx䏿 var scrollLeft; // å½åå ç´ æ»å¨æ¡çåç§»é nav.addEventListener("mousedown", function (event) { flag = true; downX = event.clientX; // è·åå°ç¹å»çx䏿 scrollLeft = this.scrollLeft; // è·åå½åå ç´ æ»å¨æ¡çåç§»é }); nav.addEventListener("mousemove", function (event) { if (flag) { // 夿æ¯å¦æ¯é¼ æ æä¸æ»å¨å ç´ åºå var moveX = event.clientX; // è·åç§»å¨çxè½´ var scrollX = moveX - downX; // å½åç§»å¨çxè½´ä¸æ åå»åç¹å»ä¸å»çxè½´ä¸æ å¾å°é¼ æ æ»å¨è·ç¦» this.scrollLeft = scrollLeft - scrollX; // é¼ æ æä¸çæ»å¨æ¡åç§»éåå»å½åé¼ æ çæ»å¨è·ç¦» } }); // é¼ æ æ¬èµ·åæ¢æå¨ nav.addEventListener("mouseup", function () { flag = false; }); // é¼ æ 离å¼å ç´ åæ¢æå¨ nav.addEventListener("mouseleave", function (event) { flag = false; }); }, // 页é¢éé¢åæ¢æ ·å async caretSample(num) { let index = this.currentKey + num; if (index < 1) { this.$message.error("å½åæ¯ç¬¬ä¸ä¸ªæ ·å"); return; } else if (index > this.sampleProduct.length) { this.$message.error("å½åæ¯æåä¸ä¸ªæ ·å"); return; } this.currentKey = index; this.currentSample = this.HaveJson(this.sampleProduct[index - 1]); // è·åæ£éªé¡¹ let list = await this.getCurrentProduct(this.currentSample.id, 0); this.currentSample.insProduct = this.HaveJson(list); // åå§ååç«¯ä¼ å this.param = {}; this.changeType = 0; this.currentSample.insProduct.forEach((a, j) => { if (this.handleCasing(a.inspectionItem)) { this.param[a.id] = { insValue: [], comValue: [], resValue: null, equipValue: [], equipName: [], insResult: null, }; } }); // 页颿°æ®å¤ç this.getTableLists(); // æ´æ°å°å¤çº¿ç¨ this.worker.postMessage( JSON.stringify({ modelType: this.sampleProduct[0].model, type: "saveData", tableList: this.tableList, param: this.param, currentTable: this.currentTable, }) ); }, handleSuccessUp(response) { this.upLoading = false; if (response.code == 200) { this.$message.success("ä¸ä¼ æå"); this.$refs.fileList.selectList(); } }, beforeUpload(file) { if (file.size > 1024 * 1024 * 10) { this.$message.error("ä¸ä¼ æä»¶ä¸è¶ è¿10M"); this.$refs.upload.clearFiles(); return false; } else { this.upLoading = true; return true; } }, onError(err, file, fileList) { this.$message.error("ä¸ä¼ 失败"); this.$refs.upload.clearFiles(); }, handleDown(row) { downFile({ id: row.id }).then((res) => { if (res.code === 200) { let url = ""; if (res.data.type == 1) { url = this.javaApi + "/img/" + res.data.fileUrl; this.$download.saveAs(url, row.fileName) } else { url = this.javaApi + "/word/" + res.data.fileUrl; this.$download.saveAs(url, row.fileName) } } }) .catch((error) => { }); }, /** * å°æ°å¼vä¿çct.faä¸'##'åçæå®å°æ°ä½æ°ï¼å¹¶è¿åæ ¼å¼ååçå符串ã * * @param v è¦æ ¼å¼åçæ°å¼ * @param ct å 嫿 ¼å¼åé ç½®ç对象 * @param ct.fa æ ¼å¼åé ç½®å符串ï¼è¥å å«'##'åæç §å ¶åçå 容确å®å°æ°ä½æ° * @returns æ ¼å¼ååçå符串æåå§æ°å¼ï¼è¥é ç½®ä¸ç¬¦åè¦æ±ï¼ */ toFixed(v, ct) { if (v && ct && ct.fa) { if (ct.fa.includes(".")) { let num = ct.fa.slice(4).length; return Number(v).toFixed(num); } else { return v; } } else { return v; } }, }, }; </script> <style scoped> .custom-table .el-table__header-wrapper th { background-color: #87ceeb; /* åªå¯¹å¸¦æmy-custom-tableç±»çè¡¨æ ¼çæ */ color: #fff; } .container { overflow: auto; /* ç¡®ä¿å®¹å¨è½å 裹浮å¨å ç´ */ margin-bottom: 10px; } .right-button { float: right; } .inspection { height: 100%; overflow-y: auto; } .inspection::-webkit-scrollbar { width: 0; } .title { height: 60px; line-height: 60px; } .search { width: 100%; margin-bottom: 10px; background-color: #fff; border-radius: 3px; } .search .form-inline { padding-top: 20px; padding-left: 0px; text-align: left; } .center { width: calc(100% - 40px); /* max-height: 580px; */ background-color: #fff; border-radius: 3px; padding: 20px; overflow: auto; } .center-box { display: flex; align-items: center; justify-content: center; flex-direction: column; flex-wrap: wrap; width: 100%; overflow-x: auto; /* overflow-x: scroll; */ cursor: grab; } .center-box:active { cursor: grabbing; } .tables { table-layout: fixed; margin: 5px 5px 16px; } .tables td { height: 40px; width: 100px; text-align: center; font-size: 14px; word-wrap: break-word; white-space: normal; } .thermal-table { min-width: calc(100% - 10px); margin: 5px 5px 0; table-layout: fixed; } .thermal-table td { min-width: 70px; text-align: center; font-size: 14px; word-wrap: break-word; white-space: normal; padding: 5px; } .table-container { overflow-x: auto; /* ä½¿å®¹å¨æ¯ææ¨ªåæ»å¨ */ max-width: 100%; /* éå¶å®¹å¨çæå¤§å®½åº¦ */ margin-bottom: 16px; } .content { display: flex; height: 100%; align-items: center; justify-content: left; padding: 5px; box-sizing: border-box; overflow: hidden; user-select: none; } .content * { user-select: none; } .content-h-0 { justify-content: center; } .content-h-1 { justify-content: start; } .content-h-2 { justify-content: end; } .content-v-0 { align-items: center; } .content-v-1 { align-items: start; } .content-v-2 { align-items: end; } .table_input { width: 100%; height: 100%; } .table_input>>>.el-input__inner { border-color: rgba(0, 0, 0, 0.5) !important; } .collection { width: 50px; height: 100%; margin-left: 5px; border-color: transparent; background-color: #409eff; color: #fff; border-radius: 4px; font-size: 12px; } .collection:active { opacity: 0.7; } .table_caret { font-size: 16px; margin: 0 5px; color: rgba(0, 0, 0, 0.5); } .table_caret:hover { color: #409eff; cursor: pointer; } .table_caret:active { opacity: 0.8; } >>>input::-webkit-inner-spin-button { -webkit-appearance: none !important; /* éèå¾®è°æé® */ margin: 0 !important; /* ç§»é¤å¾®è°æé®çè¾¹è· */ } >>>input[type="number"] { -moz-appearance: textfield !important; /* é对 Firefox */ } >>>.el-form-item__content { display: inline-flex; align-items: center; } </style> <style> .inspection .el-form-item__label { color: #000; } .inspection .el-drawer__header::before { content: ""; display: inline-block; width: 4px; height: 30.24px; background: #3a7bfa; border-radius: 10px; margin-left: 32px; margin-right: 8.5px; } .inspection .el-drawer__header { color: #303133; text-align: left; } .inspection .el-input-group__append { padding: 0 14px; color: #3a7bfa; background-color: #fff; height: 100%; display: flex; align-items: center; } .inspection .center-box .el-input__inner { font-size: 12px; padding: 0 6px; text-align: center; } .inspection .el-textarea__inner { padding: 2px; } .inspection .el-textarea__inner::-webkit-scrollbar { width: 0; } .inspection .el-select { display: flex; align-items: center; } .inspection .el-textarea__inner { min-height: 100% !important; } .inspection .tables .el-input { display: flex; align-items: center; } .thermal-table .el-input { display: flex; align-items: center; } .custom-dialog .el-dialog__body { max-width: 1000px; /* 设置æå¤§å®½åº¦ */ } </style> src/views/performance/manHour/workTimeConfig.vue
@@ -4,168 +4,73 @@ <div class="search_thing"> <div class="search_label">ç¼å·ï¼</div> <div class="search_input"> <el-input size="small" placeholder="请è¾å ¥" clearable v-model="queryParams.number" @keyup.enter.native="refreshTable()" ></el-input> <el-input size="small" placeholder="请è¾å ¥" clearable v-model="queryParams.number" @keyup.enter.native="refreshTable()"></el-input> </div> </div> <div class="search_thing"> <div class="search_label">å®éªå®¤ï¼</div> <el-select v-model="queryParams.laboratory" placeholder="å ¨é¨" size="small" @change="refreshTable()" clearable > <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value" > <el-select v-model="queryParams.laboratory" placeholder="å ¨é¨" size="small" @change="refreshTable()" clearable> <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> <div class="search_thing"> <div class="search_label">é¨é¨ï¼</div> <div class="search_input"> <el-input size="small" placeholder="请è¾å ¥" clearable v-model="queryParams.department" @keyup.enter.native="refreshTable()" ></el-input> <el-input size="small" placeholder="请è¾å ¥" clearable v-model="queryParams.department" @keyup.enter.native="refreshTable()"></el-input> </div> </div> <div class="search_thing" style="padding-left: 30px"> <el-button size="small" @click="refresh()">é ç½®</el-button> <el-button size="small" type="primary" @click="refreshTable()" >æ¥ è¯¢</el-button > <el-button size="small" type="primary" @click="refreshTable()">æ¥ è¯¢</el-button> </div> <el-button size="small" type="primary" style="position: absolute; right: 50px" @click="openAdd('æ°å¢')" v-if="checkPermi(['performance:manHour:workTimeConfig:add'])" >æ° å¢</el-button > <el-button size="small" type="primary" style="position: absolute; right: 50px" @click="openAdd('æ°å¢')" v-if="checkPermi(['performance:manHour:workTimeConfig:add'])">æ° å¢</el-button> </div> <div class="table"> <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'" @pagination="pagination" ></lims-table> <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table> </div> <!-- æ°å¢/ç¼è¾ --> <el-dialog :title="title" :visible.sync="timeDia" width="500px"> <el-form :model="timeForm" ref="timeForm" :rules="timeRules" label-position="right" label-width="120px" > <el-form :model="timeForm" ref="timeForm" :rules="timeRules" label-position="right" label-width="120px"> <el-form-item label="ç¼å·" prop="number"> <el-input size="small" placeholder="请è¾å ¥" clearable v-model="timeForm.number" ></el-input> <el-input size="small" placeholder="请è¾å ¥" clearable v-model="timeForm.number"></el-input> </el-form-item> <el-form-item label="è¾ å©é¡¹ç®åç§°" prop="auxiliaryProject"> <el-input size="small" placeholder="请è¾å ¥" clearable v-model="timeForm.auxiliaryProject" > <el-input size="small" placeholder="请è¾å ¥" clearable v-model="timeForm.auxiliaryProject"> </el-input> </el-form-item> <el-form-item label="é¨é¨" prop="department"> <el-input size="small" placeholder="请è¾å ¥" clearable v-model="timeForm.department" > <el-input size="small" placeholder="请è¾å ¥" clearable v-model="timeForm.department"> </el-input> </el-form-item> <el-form-item label="å®éªå®¤" prop="laboratory"> <el-select v-model="timeForm.laboratory" size="small" clearable placeholder="è¯·éæ©" style="width: 100%" > <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value" > <el-select v-model="timeForm.laboratory" size="small" clearable placeholder="è¯·éæ©" style="width: 100%"> <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="åä½" prop="unit"> <el-select v-model="timeForm.unit" size="small" clearable placeholder="è¯·éæ©" style="width: 100%" > <el-option v-for="item in unitList" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue" > <el-select v-model="timeForm.unit" size="small" clearable placeholder="è¯·éæ©" style="width: 100%"> <el-option v-for="item in unitList" :key="item.dictValue" :label="item.dictLabel" :value="item.dictValue"> </el-option> </el-select> </el-form-item> <el-form-item label="æ ¸åå·¥æ¶" prop="approvedWorkingHour"> <el-input size="small" placeholder="请è¾å ¥" clearable v-model="timeForm.approvedWorkingHour" > <el-input size="small" placeholder="请è¾å ¥" clearable v-model="timeForm.approvedWorkingHour"> </el-input> </el-form-item> <el-form-item label="夿³¨" prop="remarks"> <el-input size="small" placeholder="请è¾å ¥" type="textarea" :rows="2" clearable v-model="timeForm.remarks" > <el-input size="small" placeholder="请è¾å ¥" type="textarea" :rows="2" clearable v-model="timeForm.remarks"> </el-input> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="timeDia = false">å æ¶</el-button> <el-button :loading="uploading" type="primary" @click="submitProduct('timeForm')" >ç¡® 认</el-button > <el-button :loading="uploading" type="primary" @click="submitProduct('timeForm')">ç¡® 认</el-button> </span> </el-dialog> </div> @@ -377,7 +282,7 @@ this.refresh(); }); }) .catch(() => {}); .catch(() => { }); }, }, }; @@ -387,6 +292,7 @@ .work-time-config { height: 100%; } .search { background-color: #fff; height: 80px; @@ -409,6 +315,7 @@ .search_input { width: calc(100% - 70px); } .table { padding: 10px; padding-top: 0;