Merge remote-tracking branch 'origin/master'
# Conflicts:
# src/components/view/person-manage.vue
| | |
| | | </head> |
| | | <body> |
| | | <div id="app"></div> |
| | | <script type='text/javascript' src='http://192.168.73.130:9001/web-apps/apps/api/documents/api.js'></script> |
| | | <script src="<%= htmlWebpackPlugin.options.url %>/static/luckysheet/plugins/js/plugin.js"></script> |
| | | <script src="<%= htmlWebpackPlugin.options.url %>/static/luckysheet/luckysheet.umd.js"></script> |
| | | </body> |
| | |
| | | selectStandardProductListByMethodId: "/standardTree/selectStandardProductListByMethodId", //éè¿æ£éªæ åæ¥è¯¢æ£éªé¡¹ç® |
| | | selectStandardMethodEnum: "/standardTree/selectStandardMethodEnum", //è·åæ åæ ä¸æ åæ¹æ³æä¸¾ |
| | | getStandardTree2: "/standardTree/getStandardTree2", //è·åäº§åæ¶æ |
| | | upStandardProducts: "/standardTree/upStandardProducts", //è·åäº§åæ¶æ |
| | | } |
| | | |
| | | const standardMethod = { |
| | |
| | | const companies = { |
| | | selectCompaniesList: "/companies/selectCompaniesList", //è·å人äºç³»ç»ç»ç» |
| | | selectSimpleList: "/companies/selectSimpleList", //è·å人äºç³»ç»ç»ç»ä¸ç人å |
| | | addPersonUser: "/companies/addPersonUser", //è·å人äºç³»ç»ç»ç»ä¸ç人å |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!--onlyoffice ç¼è¾å¨--> |
| | | <template> |
| | | <div id="vabOnlyOffice"></div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: "VabOnlyOffice", |
| | | data() { |
| | | return { |
| | | doctype: "", |
| | | docEditor: null, |
| | | //åèvabOnlyOfficeç»ä»¶åæ°é
ç½® |
| | | option: { |
| | | url: "", |
| | | isEdit: false, |
| | | fileType: "", |
| | | title: "", |
| | | lang: "zh-CN", |
| | | isPrint: true, |
| | | user: {}, |
| | | editUrl: "" |
| | | } |
| | | }; |
| | | }, |
| | | created() { |
| | | const option = this.$route.query |
| | | this.option.url = option.url |
| | | this.option.isEdit = option.isEdit === "true" ? true : false |
| | | this.option.fileType = option.fileType |
| | | this.option.title = option.title |
| | | this.option.lang = option.lang |
| | | this.option.isPrint = option.isPrint |
| | | this.option.user.id = option.user_id |
| | | this.option.user.name = option.user_name |
| | | this.option.editUrl = option.editUrl |
| | | }, |
| | | beforeDestroy() { |
| | | if (this.docEditor !== null) { |
| | | this.docEditor.destroyEditor(); |
| | | this.docEditor = null; |
| | | } |
| | | }, |
| | | watch: { |
| | | option: { |
| | | handler: function(n) { |
| | | this.setEditor(n); |
| | | this.doctype = this.getFileType(n.fileType); |
| | | }, |
| | | deep: true |
| | | } |
| | | }, |
| | | mounted() { |
| | | if (this.option.url) { |
| | | this.setEditor(this.option); |
| | | } |
| | | }, |
| | | methods: { |
| | | async setEditor(option) { |
| | | console.log(`output->option`,option) |
| | | if (this.docEditor !== null) { |
| | | this.docEditor.destroyEditor(); |
| | | this.docEditor = null; |
| | | } |
| | | this.doctype = this.getFileType(option.fileType); |
| | | let config = { |
| | | document: { |
| | | //åç¼ |
| | | fileType: option.fileType, |
| | | key: option.key || "", |
| | | title: option.title, |
| | | permissions: { |
| | | edit: option.isEdit, //æ¯å¦å¯ä»¥ç¼è¾: åªè½æ¥çï¼ä¼ false |
| | | print: option.isPrint, |
| | | download: false |
| | | // "fillForms": true,//æ¯å¦å¯ä»¥å¡«åè¡¨æ ¼ï¼å¦æå°modeåæ°è®¾ç½®ä¸ºeditï¼åå¡«å表åä»
å¯¹ææ¡£ç¼è¾å¨å¯ç¨ã é»è®¤å¼ä¸editæreviewåæ°çå¼ä¸è´ã |
| | | // "review": true //è·è¸ªåå |
| | | }, |
| | | url: option.url |
| | | }, |
| | | documentType: this.doctype, |
| | | editorConfig: { |
| | | callbackUrl: option.editUrl, //"ç¼è¾wordåä¿åæ¶åè°çå°åï¼è¿ä¸ªapiéè¦èªå·±åäºï¼å°ç¼è¾åçæä»¶éè¿è¿ä¸ªapiä¿åå°èªå·±æ³è¦çä½ç½® |
| | | lang: option.lang, //è¯è¨è®¾ç½® |
| | | //å®å¶ |
| | | customization: { |
| | | autosave: false, //æ¯å¦èªå¨ä¿å |
| | | chat: true, |
| | | comments: false, |
| | | help: false, |
| | | // "hideRightMenu": false,//å®ä¹å¨ç¬¬ä¸æ¬¡å è½½æ¶æ¯æ¾ç¤ºè¿æ¯éèå³ä¾§èåã é»è®¤å¼ä¸ºfalse |
| | | //æ¯å¦æ¾ç¤ºæä»¶ |
| | | plugins: false |
| | | }, |
| | | user: { |
| | | id: option.user.id, |
| | | name: option.user.name |
| | | }, |
| | | mode: option.model ? option.model : "edit" |
| | | }, |
| | | width: "100%", |
| | | height: "100%", |
| | | token: option.token || "" |
| | | }; |
| | | |
| | | // eslint-disable-next-line no-undef,no-unused-vars |
| | | this.docEditor = new DocsAPI.DocEditor("vabOnlyOffice", config); |
| | | }, |
| | | getFileType(fileType) { |
| | | let docType = ""; |
| | | let fileTypesDoc = [ |
| | | "doc", |
| | | "docm", |
| | | "docx", |
| | | "dot", |
| | | "dotm", |
| | | "dotx", |
| | | "epub", |
| | | "fodt", |
| | | "htm", |
| | | "html", |
| | | "mht", |
| | | "odt", |
| | | "ott", |
| | | "pdf", |
| | | "rtf", |
| | | "txt", |
| | | "djvu", |
| | | "xps" |
| | | ]; |
| | | let fileTypesCsv = [ |
| | | "csv", |
| | | "fods", |
| | | "ods", |
| | | "ots", |
| | | "xls", |
| | | "xlsm", |
| | | "xlsx", |
| | | "xlt", |
| | | "xltm", |
| | | "xltx" |
| | | ]; |
| | | let fileTypesPPt = [ |
| | | "fodp", |
| | | "odp", |
| | | "otp", |
| | | "pot", |
| | | "potm", |
| | | "potx", |
| | | "pps", |
| | | "ppsm", |
| | | "ppsx", |
| | | "ppt", |
| | | "pptm", |
| | | "pptx" |
| | | ]; |
| | | if (fileTypesDoc.includes(fileType)) { |
| | | docType = "text"; |
| | | } |
| | | if (fileTypesCsv.includes(fileType)) { |
| | | docType = "spreadsheet"; |
| | | } |
| | | if (fileTypesPPt.includes(fileType)) { |
| | | docType = "presentation"; |
| | | } |
| | | return docType; |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style> |
| | | html, |
| | | body { |
| | | height: 100%; |
| | | } |
| | | #app { |
| | | font-family: Avenir, Helvetica, Arial, sans-serif; |
| | | -webkit-font-smoothing: antialiased; |
| | | -moz-osx-font-smoothing: grayscale; |
| | | text-align: center; |
| | | color: #2c3e50; |
| | | height: 100%; |
| | | } |
| | | .qualityManual-container { |
| | | padding: 0 !important; |
| | | height: 100%; |
| | | } |
| | | .qualityManual-container-office { |
| | | width: 100%; |
| | | height: calc(100% - 55px); |
| | | } |
| | | </style> |
| | |
| | | }, |
| | | sizeChange(val) { |
| | | this.page.size = val |
| | | this.selectList() |
| | | this.selectList('page') |
| | | }, |
| | | currentChange(val) { |
| | | this.page.current = val |
| | | this.selectList() |
| | | this.selectList('page') |
| | | }, |
| | | selectList() { |
| | | selectList(val) { |
| | | this.loading = true |
| | | if(val===undefined){ |
| | | this.page.current = 1; |
| | | } |
| | | if (this.data.isPage != undefined && this.data.isPage != true) { |
| | | this.page = { |
| | | current: -1, |
| | |
| | | this.total = res.data.body.total |
| | | this.tableHead = res.data.head |
| | | this.tableData = res.data.body.records |
| | | // console.log(JSON.stringify(this.tableHead)+"---------"+JSON.stringify(this.tableData)) |
| | | for (var a in this.data.selectField) { |
| | | if (this.data.selectField[a].choose == true) { |
| | | this.tableData.map(b => { |
| | |
| | | import { |
| | | convertToHtml |
| | | } from 'mammoth'; |
| | | import axios from "axios"; |
| | | export default { |
| | | components: { |
| | | ValueTable, |
| | |
| | | showSelect: false, |
| | | select: false, |
| | | do: [ |
| | | // { |
| | | // id: 'handleWeave', |
| | | // font: 'å¨çº¿ç¼å¶', |
| | | // type: 'text', |
| | | // method: 'handleWeave', |
| | | // disabFun: (row, index) => { |
| | | // return row.isExamine != null |
| | | // } |
| | | // }, |
| | | { |
| | | id: 'handleWeave', |
| | | font: 'å¨çº¿ç¼å¶', |
| | | type: 'text', |
| | | method: 'handleWeave', |
| | | disabFun: (row, index) => { |
| | | return row.isExamine != null |
| | | } |
| | | }, |
| | | { |
| | | id: 'download', |
| | | font: 'ä¸è½½', |
| | |
| | | } |
| | | ], |
| | | linkEvent: { |
| | | // code: { |
| | | // method: 'selectAllByOne' |
| | | // } |
| | | code: { |
| | | method: 'selectAllByOne' |
| | | } |
| | | }, |
| | | tagField: { |
| | | isRatify: { |
| | |
| | | this.upIndex++ |
| | | }, |
| | | async handleWeave(row) { |
| | | // this.value = await file.convertFileToHtml(row.url) |
| | | // this.claimVisible = true; |
| | | this.$axios.post(this.$api.insReport.wordToHtml, { |
| | | path: row.urlS ? row.urlS : row.url |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | // console.log(11111111,res.data) |
| | | this.value = res.data |
| | | .replace(/<a [^>]*>/g, "") |
| | | .replace(/<\/a>/g, "") |
| | | .replace(/ /g, " "); |
| | | this.claimVisible = true; |
| | | const userName = JSON.parse(localStorage.getItem("user")).name; |
| | | //åèvabOnlyOfficeç»ä»¶åæ°é
ç½® |
| | | const { href } = this.$router.resolve({ |
| | | path: `/wordEdit`, |
| | | query: { |
| | | url: this.javaApi + "/word/" + row.entrustCode + ".docx", |
| | | isEdit: true, |
| | | fileType: "docx", |
| | | title: row.entrustCode + ".docx", |
| | | lang: 'zh-CN', |
| | | isPrint: true, |
| | | user: { id: 1, name: userName}, |
| | | editUrl: this.javaApi + "/insReport/onlyOffice/save?fileName=" + row.entrustCode + ".docx" |
| | | } |
| | | }).catch(error => { |
| | | console.error(error) |
| | | }) |
| | | window.open(href, '_blank'); |
| | | }, |
| | | // æéåé
|
| | | getPower(radio) { |
| | |
| | | // console.log(this.$refs.Word.getValue()) |
| | | }, |
| | | async selectAllByOne(row) { |
| | | console.log(row, await file.convertFileToHtml(row.url)); |
| | | const userName = JSON.parse(localStorage.getItem("user")).name; |
| | | //åèvabOnlyOfficeç»ä»¶åæ°é
ç½® |
| | | const { href } = this.$router.resolve({ |
| | | path: `/wordEdit`, |
| | | query: { |
| | | url: this.javaApi + "/word/" + row.entrustCode + ".docx", |
| | | isEdit: "false", |
| | | fileType: "docx", |
| | | title: row.entrustCode + ".docx", |
| | | lang: 'zh-CN', |
| | | isPrint: true, |
| | | user_id: 1, |
| | | user_name: userName |
| | | } |
| | | }) |
| | | window.open(href, '_blank'); |
| | | console.log(`output->row`,row) |
| | | }, |
| | | download(row) { |
| | | let url = row.urlS ? row.urlS : row.url; |
| | |
| | | <div class="search_thing"> |
| | | <div class="search_label">è§æ ¼åå·ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable |
| | | v-model="componentData.entity.model" @keyup.enter.native="refreshTable()"></el-input></div> |
| | | <el-input size="small" placeholder="请è¾å
¥" clearable v-model="componentData.entity.model" |
| | | @keyup.enter.native="refreshTable()"></el-input></div> |
| | | </div> |
| | | <div class="search_thing"> |
| | | <div class="search_label">æ ·ååç§°ï¼</div> |
| | |
| | | entity: { |
| | | sample: null, |
| | | model: null, |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: false, |
| | | select: false, |
| | | do: [ |
| | | ], |
| | | linkEvent: { |
| | | // code: { |
| | | // method: 'selectAllByOne' |
| | | // } |
| | | }, |
| | | |
| | | tagField: [], |
| | | selectField: [], |
| | | requiredAdd: ['model','sample',], |
| | | requiredUp: [] |
| | | }, |
| | | entityCopy: {}, |
| | | upIndex: 0, |
| | | statusList: [], |
| | | |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | |
| | | >>>.el-table__row{ |
| | | height: 35px !important; |
| | | } |
| | | .search{ |
| | | height: 20%; |
| | | border-bottom: 1px solid #ebeef5; |
| | | margin-bottom: 16px; |
| | | display: flex; |
| | | align-items: center; |
| | | box-sizing: border-box; |
| | | padding-bottom: 10px; |
| | | } |
| | | .search-item{ |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | } |
| | | .search-item .el-row{ |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .search-item .el-col{ |
| | | margin-left: 0; |
| | | } |
| | | .more-edit .dialog-footer{ |
| | | position: absolute; |
| | | top: 15px; |
| | | right: 70px; |
| | | } |
| | | >>>.more-edit .el-dialog__body{ |
| | | height: calc(100vh - 90px); |
| | | } |
| | | >>>.is-disabled .el-textarea__inner{ |
| | | background: rgba(0, 0, 0, 0.05) !important; |
| | | } |
| | | </style> |
| | | <style> |
| | | .standard .el-tree-node__content { |
| | |
| | | :class="`node_i ${data.children != undefined ? (data.code==='[1]'?'el-icon-folder-opened':'el-icon-folder') : 'el-icon-tickets'}`"></i> |
| | | {{ data.code }} {{ data.label }}</span> |
| | | </el-col> |
| | | <el-col :span="2" style="text-align: right;" v-if="delStandardTree"> |
| | | <el-col :span="2" style="text-align: right;" v-if="delStandardTree&&node.level==5"> |
| | | <el-button type="text" size="mini" @click.stop="remove(node, data)"> |
| | | <i class="el-icon-delete"></i> |
| | | </el-button> |
| | |
| | | </el-tree> |
| | | </div> |
| | | <div class="right"> |
| | | <el-row class="title"> |
| | | <el-row class="title" style="width: 100%;"> |
| | | <el-col :span="20" style="font-size: 14px;color: #999;">{{selectTree}}</el-col> |
| | | <!-- <el-col :span="4"> |
| | | <el-button size="small" type="primary" @click="handleMore">æ¹éç¼è¾</el-button> |
| | | </el-col> --> |
| | | <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 0px;top: 1px;" v-if="upStandardProduct">æ¹éç¼è¾</el-button> |
| | | </el-row> |
| | | <el-row class="standard_table" v-loading="tableLoad"> |
| | | <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;" height="220" tooltip-effect="dark" |
| | |
| | | <el-button type="primary" @click="addStandardTree" :loading="addLoad">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <el-dialog title="æ¹éç¼è¾" :visible.sync="moreEdit" width="90%"> |
| | | <div class="body"> |
| | | <!-- <el-row style="line-height: 50px;"> |
| | | <el-col :span="6" style="text-align: right;">å·¥åï¼</el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input size="small" readonly v-model="addOb.factory"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 50px;"> |
| | | <el-col :span="6" style="text-align: right;">å®éªå®¤ï¼</el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input size="small" readonly v-model="addOb.laboratory"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 50px;"> |
| | | <el-col :span="6" style="text-align: right;">æ ·å大类ï¼</el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input size="small" readonly v-model="addOb.sampleType"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 50px;"> |
| | | <el-col :span="6" style="text-align: right;">æ ·ååç§°ï¼</el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input v-model="addOb.sample" readonly size="small"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="line-height: 50px;"> |
| | | <el-dialog title="æ¹éç¼è¾" :visible.sync="moreEdit" width="90%" style="height: 100vh;" class="more-edit"> |
| | | <div class="body" style="height: 100%;display: flex;flex-direction: column;"> |
| | | <div class="search"> |
| | | <div class="search-item"> |
| | | <el-row style="width: 25%;margin-bottom: 16px;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <span class="required-span">* </span>åå·ï¼ |
| | | <!-- <span class="required-span">* </span> --> |
| | | è¦æ±å¼ï¼</el-col> |
| | | <el-col :span="16"> |
| | | <el-input size="small" v-model="moreInfo.ask" clearable :disabled="moreSelects.length==0"></el-input> |
| | | </el-col> |
| | | <el-col :span="16" :offset="1"> |
| | | <el-input v-model="addOb.model" placeholder="请è¾å
¥åå·" clearable size="small"></el-input> |
| | | </el-row> |
| | | <el-row style="width: 25%;margin-bottom: 16px;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | è¦æ±æè¿°ï¼</el-col> |
| | | <el-col :span="16" style="display: flex;align-items: flex-start;height: 100%;"> |
| | | <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}" v-model="moreInfo.tell" :disabled="moreSelects.length==0"></el-input> |
| | | </el-col> |
| | | </el-row> --> |
| | | </el-row> |
| | | <el-row style="width: 25%;margin-bottom: 16px;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | è¯éªæ¹æ³ï¼</el-col> |
| | | <el-col :span="16"> |
| | | <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%;" :disabled="moreSelects.length==0"> |
| | | <el-option v-for="(a, ai) in methodList" :key="ai" :label="a.label" :value="a.value"></el-option> |
| | | </el-select> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width: 25%;margin-bottom: 16px;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | åä»·(å
)ï¼</el-col> |
| | | <el-col :span="16" > |
| | | <el-input size="small" v-model="moreInfo.price" clearable :disabled="moreSelects.length==0"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width: 25%;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | å·¥æ¶ç³»æ°ï¼</el-col> |
| | | <el-col :span="16"> |
| | | <el-input size="small" v-model="moreInfo.manHour" clearable :disabled="moreSelects.length==0"></el-input> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width: 25%;"> |
| | | <el-col :span="6" style="text-align: right;"> |
| | | <!-- <span class="required-span">* </span> --> |
| | | 模æ¿ï¼</el-col> |
| | | <el-col :span="16"> |
| | | <el-select v-model="moreInfo.templateId" size="small" filterable placeholder="模æ¿" style="width: 100%;" :disabled="moreSelects.length==0"> |
| | | <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option> |
| | | </el-select> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width: 50%;"> |
| | | <el-col :span="23" style="display: flex;align-items: center;justify-content: end;"> |
| | | <el-button type="primary" size="small" @click="sectionUp(moreSelects)">设置åºé´</el-button> |
| | | <el-button @click="moreEdit = false" size="small">å æ¶</el-button> |
| | | <el-button type="primary" @click="subMoreEdit" :loading="moreEditLoad" size="small">ä¿ å</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="moreEdit = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="subMoreEdit" :loading="moreEditLoad">ç¡® å®</el-button> |
| | | </span> |
| | | </div> |
| | | <div style="flex: 1;overflow-y: auto;" v-loading="productTableLoading0"> |
| | | <el-table :data="productList0" ref="productTable0" style="width: 100%;" height="94%" tooltip-effect="dark" |
| | | stripe |
| | | :fit="true" border |
| | | @select-all="handleSelectAll0" |
| | | @select="handleSelectionChange0" |
| | | header-row-class-name="header-class" |
| | | :row-key="row=>row.id" |
| | | > |
| | | <el-table-column type="selection" width="50" > |
| | | </el-table-column> |
| | | <el-table-column prop="model" label="åå·" min-width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="inspectionItem" label="æ£éªé¡¹" min-width="140" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="inspectionItemSubclass" label="æ£éªé¡¹å项" min-width="140" |
| | | show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="sonLaboratory" label="åå®éªå®¤" width="130" show-overflow-tooltip :filters="filters" |
| | | :filter-method="filterHandler"></el-table-column> |
| | | <el-table-column prop="ask" label="è¦æ±å¼" min-width="200px"></el-table-column> |
| | | <el-table-column prop="tell" label="è¦æ±æè¿°" min-width="220px"></el-table-column> |
| | | <el-table-column prop="method" label="è¯éªæ¹æ³" width="200"></el-table-column> |
| | | <el-table-column prop="unit" label="计éåä½" width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="price" label="åä»·(å
)" width="120"></el-table-column> |
| | | <el-table-column prop="manHour" label="å·¥æ¶ç³»æ°" width="120"></el-table-column> |
| | | <el-table-column prop="manHourGroup" label="å·¥æ¶åç»" width="100" show-overflow-tooltip></el-table-column> |
| | | <el-table-column prop="templateId" label="模æ¿" width="200"> |
| | | <template slot-scope="scope"> |
| | | {{ templateList.find(item => item.id == scope.row.templateId)?templateList.find(item => item.id == scope.row.templateId).name:'' }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="section" label="åºé´" width="120" show-overflow-tooltip></el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | style="position: absolute;right: 16px;bottom: 4px;" |
| | | @current-change="handleCurrentChange0" |
| | | :current-page="currentPage0" |
| | | layout="total, prev, pager, next, jumper" |
| | | :page-size="50" |
| | | :total="total0"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | </el-dialog> |
| | | <!-- <el-dialog title="æ°å¢æ å" :visible.sync="addStandardDia" width="400px"> |
| | | <div class="body"> |
| | |
| | | standardId: 0, |
| | | moreEdit:false, |
| | | moreEditLoad:false, |
| | | moreSelects:[], |
| | | total0:0, |
| | | currentPage0:1, |
| | | productList0: [], |
| | | moreInfo:{ |
| | | ask:'', |
| | | tell:'', |
| | | methodS:'', |
| | | price:'', |
| | | manHour:'', |
| | | templateId:'' |
| | | }, |
| | | methodList:[], |
| | | productTableLoading0:false |
| | | } |
| | | }, |
| | | watch: { |
| | | moreEdit(val) { |
| | | if(!val){ |
| | | this.$refs.productTable0.clearSelection() |
| | | this.moreSelects = [] |
| | | this.currentPage0 = 1; |
| | | this.productList0 = [] |
| | | this.moreInfo = { |
| | | ask:'', |
| | | tell:'', |
| | | methodS:'', |
| | | price:'', |
| | | manHour:'', |
| | | templateId:'' |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | } |
| | | }, |
| | | sectionUp(row) { |
| | | if (Array.isArray(row)) { |
| | | // 弿¯ä¸ä¸ªæ°ç» |
| | | if(row.length === 0){ |
| | | return this.$message.error('è¯·éæ©æ£éªé¡¹') |
| | | } |
| | | this.sectionRow = {} |
| | | this.sectionUpDia = true |
| | | } else { |
| | | // 弿¯ä¸ä¸ªå¯¹è±¡ |
| | | this.sectionRow = row |
| | | this.sectionUpDia = true |
| | | this.sectionList = [] |
| | |
| | | manHour: JSON.parse(this.sectionRow.manHour)[ai] |
| | | }) |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | sectionLoadAdd() { |
| | |
| | | this.sectionRow.manHour = JSON.stringify(manHourList) |
| | | } |
| | | this.sectionLoad = true |
| | | if(this.moreSelects.length === 0){ |
| | | this.$axios.post(this.$api.standardTree.upStandardProductList, { |
| | | id: this.sectionRow.id, |
| | | section: this.sectionRow.section, |
| | |
| | | this.$message.success('å·²ä¿å') |
| | | this.sectionUpDia = false |
| | | }) |
| | | }else{ |
| | | this.$axios.post(this.$api.standardTree.upStandardProducts, { |
| | | ids:this.moreSelects.map(a=>a.id), |
| | | standardProductList:{ |
| | | section: this.sectionRow.section, |
| | | ask: this.sectionRow.ask, |
| | | tell: this.sectionRow.tell, |
| | | price: this.sectionRow.price, |
| | | manHour: this.sectionRow.manHour |
| | | } |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.sectionLoad = false |
| | | if (res.code == 201) { |
| | | this.$message.error('æªä¿å') |
| | | return |
| | | } |
| | | this.$message.success('å·²ä¿å') |
| | | this.sectionUpDia = false |
| | | this.currentPage0 = 1; |
| | | this.getList() |
| | | }) |
| | | } |
| | | }, |
| | | getStandardTemplate() { |
| | | this.$axios.get(this.$api.StandardTemplate.getStandardTemplate).then(res => { |
| | |
| | | this.tableLoad2 = false |
| | | }) |
| | | }, |
| | | handleMore(){ |
| | | async handleMore(){ |
| | | if((!this.standardId&&this.standardId!=0)||this.standardList.length==0){ |
| | | return this.$message.error('è¯·éæ©å®éªå®¤ãæ ·å') |
| | | } |
| | | await this.getList() |
| | | this.selectStandardMethods() |
| | | this.moreEdit = true |
| | | }, |
| | | subMoreEdit(){} |
| | | selectStandardMethods() { |
| | | this.$axios.get(this.$api.standardMethod.selectStandardMethods).then(res => { |
| | | let data = [] |
| | | res.data.forEach(a => { |
| | | data.push({ |
| | | label: a.code, |
| | | value: a.code |
| | | }) |
| | | }) |
| | | this.methodList = data |
| | | }) |
| | | }, |
| | | subMoreEdit(){ |
| | | if(this.moreSelects.length===0){ |
| | | return this.$message.error('è¯·éæ©æ£éªé¡¹') |
| | | } |
| | | this.moreEditLoad = true |
| | | this.$axios.post(this.$api.standardTree.upStandardProducts, { |
| | | ids:this.moreSelects.map(a=>a.id), |
| | | standardProductList:this.moreInfo |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | this.moreEditLoad = false |
| | | if (res.code == 201) { |
| | | this.$message.error('æªä¿å') |
| | | return |
| | | } |
| | | this.$message.success('å·²ä¿å') |
| | | this.currentPage0 = 1; |
| | | this.getList() |
| | | // this.moreInfo = { |
| | | // ask:'', |
| | | // tell:'', |
| | | // methodS:'', |
| | | // price:'', |
| | | // manHour:'', |
| | | // templateId:'' |
| | | // } |
| | | }) |
| | | }, |
| | | handleSelectAll0(rows){ |
| | | if(rows.length){ |
| | | rows.forEach(a=>{ |
| | | if(!this.moreSelects.find(b=>a.id===b.id)){ |
| | | this.moreSelects.push(a) |
| | | } |
| | | }) |
| | | }else{ |
| | | this.productList0.forEach(a=>{ |
| | | this.moreSelects = this.moreSelects.filter(b=>b.id!=a.id ) |
| | | }) |
| | | } |
| | | }, |
| | | handleSelectionChange0(val,row){ |
| | | if(this.moreSelects.find(a=>a.id===row.id)){ |
| | | this.moreSelects = this.moreSelects.filter(a=>a.id!=row.id) |
| | | }else{ |
| | | this.moreSelects.push(row) |
| | | } |
| | | }, |
| | | getList(){ |
| | | this.productTableLoading0 = true |
| | | this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, { |
| | | id: this.standardId, |
| | | tree: this.selectTree, |
| | | page: this.currentPage0 |
| | | }).then(res => { |
| | | this.productList0 = res.data.productList |
| | | this.total0 = res.data.total |
| | | this.productTableLoading0 = false |
| | | this.$nextTick(()=>{ |
| | | this.productList0.forEach((a,i) => { |
| | | if(this.moreSelects.find(b=>a.id==b.id)){ |
| | | // console.log(111111111,a) |
| | | this.$refs.productTable0.toggleRowSelection(this.productList0[i],true) |
| | | } |
| | | }) |
| | | }) |
| | | }) |
| | | }, |
| | | handleCurrentChange0(e){ |
| | | this.currentPage0 = e; |
| | | this.getList() |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-around; |
| | | background: #F5F7FB; |
| | | background: #edeff2; |
| | | border-radius: 8px 8px 8px 8px; |
| | | color: #999; |
| | | font-size: 14px; |
| | |
| | | margin-left: 10px; |
| | | } |
| | | .hoverType{ |
| | | background: rgba(58,123,250,0.05); |
| | | background: rgba(58,123,250,0.03); |
| | | } |
| | | .year-table{ |
| | | width: 100%; |
| | |
| | | clearable @blur="searchFilter2" @clear="searchFilter2" @keyup.enter.native="searchFilter2()"> |
| | | </el-input> |
| | | <el-tree :data="datathirdParty" node-key="id" :props="defaultProps" @node-click="nodeClick2" |
| | | style="height: calc(100% - 42px);" :filter-node-method="filterNode2" ref="tree2" highlight-current> |
| | | style="height: calc(100% - 42px);" |
| | | @node-expand="nodeOpen0" :filter-node-method="filterNode2" ref="tree2" highlight-current> |
| | | </el-tree> |
| | | </el-col> |
| | | <el-col :span="15" style="height: 70vh;padding-left: 8px;"> |
| | | <el-table height="70vh" border stripe :data="personList" v-loading="personLoad" ref="personTable" |
| | | <div class="search_thing" style="width: 360px;margin-bottom: 10px;"> |
| | | <div class="search_label" style="width: 140px;">åå·¥å·/åå·¥å§åï¼</div> |
| | | <div class="search_input"> |
| | | <el-input |
| | | size="small" |
| | | placeholder="请è¾å
¥å·¥å·/åå·¥å§å" |
| | | @clear="searchPerson" |
| | | clearable |
| | | v-model="userSearch2" |
| | | @keyup.enter.native="searchPerson()"> |
| | | <i slot="suffix" class="el-input__icon el-icon-search" style="cursor: pointer;" @click="searchPerson"></i></el-input> |
| | | </div> |
| | | </div> |
| | | <el-table height="67vh" border stripe :data="personList" v-loading="personLoad" ref="personTable" |
| | | @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="50"> |
| | | </el-table-column> |
| | |
| | | upIndex: 0, |
| | | addDia: false, |
| | | addPower: true, |
| | | addUserPower: true, |
| | | delStandardTree: true, |
| | | selectCompaniesList: true, |
| | | addDia0: false, |
| | | addOb: { |
| | | fatherId: '', |
| | |
| | | expandedKeys: [], |
| | | addLoad: false, |
| | | personList: [], |
| | | personListCopy:[], |
| | | treeLoad: false, |
| | | personLoad: false, |
| | | search2: '', |
| | | multipleSelection: [] |
| | | multipleSelection: [], |
| | | companiesList:[], |
| | | currentCompaniesList: [], |
| | | userSearch2:'' |
| | | } |
| | | }, |
| | | // watch: { |
| | | // userSearch2(val){} |
| | | // }, |
| | | mounted() { |
| | | this.selectTreeList() |
| | | this.selectRole() |
| | |
| | | openthirdParty() { |
| | | this.addthirdParty = true; |
| | | this.$axios.get(this.$api.companies.selectCompaniesList).then(res => { |
| | | this.companiesList = JSON.parse(JSON.stringify(res.data)); |
| | | this.datathirdParty = [] |
| | | for (let ai = 0; ai < res.data.length; ai++) { |
| | | let a = res.data[ai] |
| | |
| | | let power = JSON.parse(sessionStorage.getItem('power')) |
| | | let up = false |
| | | let add = false |
| | | let addUserPower = false |
| | | let delStandardTree = false |
| | | let selectCompaniesList = false |
| | | for (var i = 0; i < power.length; i++) { |
| | | if (power[i].menuMethod == 'updateUser') { |
| | | up = true |
| | |
| | | if (power[i].menuMethod == 'delDepartment') { |
| | | delStandardTree = true |
| | | } |
| | | if(power[i].menuMethod == 'selectCompaniesList'){ |
| | | selectCompaniesList = true |
| | | if (power[i].menuMethod == 'addPersonUser') { |
| | | addUserPower = true |
| | | } |
| | | } |
| | | if (!up) { |
| | |
| | | } |
| | | this.delStandardTree = delStandardTree |
| | | this.addPower = add |
| | | this.selectCompaniesList = selectCompaniesList |
| | | this.addUserPower = addUserPower |
| | | }, |
| | | handleAdd() { |
| | | if (this.addOb.fatherId) { |
| | | if (this.addOb.fatherId||this.addOb.name=='å
¨é¨') { |
| | | this.addDia0 = true; |
| | | } else { |
| | | this.$message.error('è¯·éæ©ä¸ä¸ªæ¶æå±çº§') |
| | |
| | | }, |
| | | nodeOpen(data, node, el) { |
| | | $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened') |
| | | }, |
| | | nodeOpen0(data, node, el){ |
| | | this.currentCompaniesList[node.level-1] = data.id |
| | | }, |
| | | nodeClose(data, node, el) { |
| | | $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder') |
| | |
| | | }) |
| | | }, |
| | | nodeClick2(ob, node, el) { |
| | | this.currentCompaniesList[node.level-1] = ob.id |
| | | if (ob.id !== 'SC21') { |
| | | this.personLoad = true |
| | | this.$axios.post(this.$api.companies.selectSimpleList, { |
| | | companyId: ob.id |
| | | }).then(res => { |
| | | this.personListCopy = JSON.parse(JSON.stringify(res.data)) |
| | | this.personList = res.data |
| | | this.personLoad = false |
| | | this.$refs.personTable.doLayout() |
| | |
| | | }, |
| | | handleSelectionChange(val) { |
| | | this.multipleSelection = val; |
| | | console.log(this.multipleSelection); |
| | | }, |
| | | addUser2(){ |
| | | if(this.multipleSelection.length === 0){ |
| | | return this.$message.error('è¯·éæ©äººå') |
| | | } |
| | | if(this.currentCompaniesList.length === 0){ |
| | | return this.$message.error('è¯·éæ©ç»ç»') |
| | | } |
| | | for (let index = this.currentCompaniesList.length-1; index >1; index--) { |
| | | let obj = this.multipleSelection.find(a=>a.companyId==this.currentCompaniesList[index]) |
| | | if(!obj){ |
| | | this.currentCompaniesList.splice(index,1) |
| | | }else{ |
| | | return |
| | | } |
| | | } |
| | | let arr = [] |
| | | this.currentCompaniesList.forEach(b=>{ |
| | | this.companiesList.forEach(a=>{ |
| | | if(a.companyId===b){ |
| | | console.log(a) |
| | | } |
| | | }) |
| | | let obj = this.companiesList.find(a=>a.companyId==b) |
| | | arr.push(obj) |
| | | }) |
| | | this.addLoad = true |
| | | this.$axios.post(this.$api.companies.addPersonUser, { |
| | | company: arr, |
| | | person: this.multipleSelection |
| | | }, { |
| | | headers: { |
| | | 'Content-Type': 'application/json' |
| | | } |
| | | }).then(res => { |
| | | if (res.code === 201) { |
| | | this.addLoad = false |
| | | return |
| | | } |
| | | this.$message.success('æä½æå') |
| | | this.refresh() |
| | | this.multipleSelection = [] |
| | | this.$refs.personTable.clearSelection() |
| | | this.addthirdParty = false |
| | | }).catch(e => { |
| | | this.addthirdParty = false |
| | | this.addLoad = false |
| | | }) |
| | | }, |
| | | searchPerson(){ |
| | | let arr = JSON.parse(JSON.stringify(this.personListCopy)) |
| | | this.personList = arr.filter(a=>{ |
| | | if(a.employeeID.includes(this.userSearch2)||a.name.includes(this.userSearch2)){ |
| | | return true |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | //æ¬å° |
| | | Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; |
| | | const javaApi = 'http://192.168.11.200:8001';//æ |
| | | // const javaApi = 'http://192.168.11.200:8001';//æ |
| | | // const javaApi = 'http://10.20.102.168:8001';//å¼ |
| | | // const javaApi = 'http://172.20.10.3:8001';//å§ |
| | | // const javaApi = 'http://192.168.11.2:8001';//æ´ |
| | | const javaApi = 'http://127.0.0.1:8001';//æ |
| | | // const javaApi = 'http://114.132.189.42:1234';//æµè¯æ |
| | | //èäºæå¡å¨ |
| | | // Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn"; |
| | |
| | | },{ |
| | | path: "/test/excel", |
| | | component: () => import("../components/tool/excel.vue") |
| | | },{ |
| | | path: "/wordEdit", |
| | | component: () => import("../components/tool/onlyoffice.vue") |
| | | }] |
| | | }) |
| | |
| | | }, |
| | | goNoticeDetail(row){ |
| | | this.$axios.put(this.$api.informationNotification.triggerModificationStatusToRead+'/'+row.id).then(res => { |
| | | this.drawer = false; |
| | | row.num = Math.random(100); |
| | | localStorage.setItem("noticeInfo", JSON.stringify(row)) |
| | | this.$bus.$emit("change", JSON.stringify(row)); |
| | | this.$parent.addTab({ |
| | | v: "æ¶æ¯è¯¦æ
", |
| | |
| | | this.refresh(); |
| | | this.$emit('goNoticeDetail') |
| | | }) |
| | | this.drawer = false; |
| | | }, |
| | | handleDropdown(e,row){ |
| | | switch(e){ |