From 588083b5e983686cebac8da2f26dbe231b824472 Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期五, 08 九月 2023 17:45:21 +0800
Subject: [PATCH] 1.数据导入60% 实现demo
---
src/components/UploadExcel/index.vue | 158 +++++++++++
src/views/basicSettings/roleList.vue | 84 +++---
src/views/workOrder/workOrderClose.vue | 11
package.json | 3
src/api/Excel.js | 58 ++-
src/views/systemSetting/dataImport.vue | 452 ++++++++++++++++++++++++++++++++
src/router/index.js | 7
src/views/basicSettings/personList.vue | 8
8 files changed, 703 insertions(+), 78 deletions(-)
diff --git a/package.json b/package.json
index 13f5c8b..7b65d0d 100644
--- a/package.json
+++ b/package.json
@@ -42,7 +42,8 @@
"vue-print-nb": "^1.7.5",
"vue-router": "3.0.6",
"vue-splitpane": "^1.0.6",
- "vuedraggable": "^2.24.3"
+ "vuedraggable": "^2.24.3",
+ "xlsx": "0.14.1"
},
"devDependencies": {
"@aspnet/signalr": "^1.0.27",
diff --git a/src/api/Excel.js b/src/api/Excel.js
index 53e6af9..5ea8c1a 100644
--- a/src/api/Excel.js
+++ b/src/api/Excel.js
@@ -1,6 +1,15 @@
import request from '@/utils/request'
-// Excel瀵煎叆妯℃澘涓嬭浇
+// 鏌ヨexcel妯℃澘
+export function ExcelModelData(data) {
+ return request({
+ url: 'ImportExcel/ExcelModelData',
+ method: 'get',
+ params: data
+ })
+}
+
+// 涓嬭浇excel妯℃澘
export function DownLoadExcel(data) {
return request({
url: 'ImportExcel/DownLoadExcel',
@@ -9,29 +18,38 @@
})
}
-// Excel瀵煎叆鏂囦欢涓婁紶銆佹ā鏉块獙璇併�佹暟鎹噺銆侀獙璇�
+// Excel瀵煎叆鏁版嵁鎻愪氦銆佹ā鏉块獙璇�
export function ExcelModelCheck(data) {
return request({
url: 'ImportExcel/ExcelModelCheck',
method: 'post',
- params: data
+ data
})
}
-// Excel瀵煎叆鏁版嵁楠岃瘉
-export function ExcelCheckData(data) {
- return request({
- url: 'ImportExcel/ExcelCheckData',
- method: 'post',
- params: data
- })
-}
-
-// Excel瀵煎叆鏁版嵁
-export function ExcelImportSubmit(data) {
- return request({
- url: 'ImportExcel/ExcelImportSubmit',
- method: 'POST',
- params: data
- })
-}
+// Excel瀵煎叆鏂囦欢涓婁紶銆佹ā鏉块獙璇併�佹暟鎹噺銆侀獙璇�
+// export function ExcelModelCheck(data) {
+// return request({
+// url: 'ImportExcel/ExcelModelCheck',
+// method: 'post',
+// params: data
+// })
+// }
+//
+// // Excel瀵煎叆鏁版嵁楠岃瘉
+// export function ExcelCheckData(data) {
+// return request({
+// url: 'ImportExcel/ExcelCheckData',
+// method: 'post',
+// params: data
+// })
+// }
+//
+// // Excel瀵煎叆鏁版嵁
+// export function ExcelImportSubmit(data) {
+// return request({
+// url: 'ImportExcel/ExcelImportSubmit',
+// method: 'POST',
+// params: data
+// })
+// }
diff --git a/src/components/UploadExcel/index.vue b/src/components/UploadExcel/index.vue
new file mode 100644
index 0000000..5f82c34
--- /dev/null
+++ b/src/components/UploadExcel/index.vue
@@ -0,0 +1,158 @@
+<template>
+ <div>
+ <input
+ ref="excel-upload-input"
+ class="excel-upload-input"
+ type="file"
+ accept=".xlsx, .xls"
+ @change="handleClick"
+ >
+ <el-button
+ :loading="loading"
+ style="margin-left:16px;"
+ :disabled="disabled"
+ type="primary"
+ @click="handleUpload"
+ >
+ 鏂囦欢涓婁紶
+ </el-button>
+ </div>
+</template>
+
+<script>
+import XLSX from 'xlsx'
+
+export default {
+ props: {
+ disabled: Boolean,
+ beforeUpload: Function, // eslint-disable-line
+ onSuccess: Function// eslint-disable-line
+ },
+ data() {
+ return {
+ loading: false,
+ excelData: {
+ header: null,
+ results: null,
+ sheetName: null
+ }
+ }
+ },
+ methods: {
+ generateData({ header, results }) {
+ this.excelData.header = header // 鐢ㄥ仛el-table琛ㄥご
+ this.excelData.results = results // 鐢ㄥ仛el-table琛ㄤ綋
+ this.onSuccess && this.onSuccess(this.excelData)
+
+ // 鏁扮粍瀵硅薄鏇存崲閿悕
+ // const aaa = JSON.parse(JSON.stringify(results))
+ // const bb = aaa.map(({
+ // 搴忓彿, 濮撳悕
+ // }) => ({
+ // index: 搴忓彿,
+ // name: 濮撳悕
+ // }))
+ // console.log(bb, 321)
+ },
+ handleUpload() {
+ this.$refs['excel-upload-input'].click()
+ },
+ handleClick(e) {
+ const files = e.target.files
+ const rawFile = files[0] // only use files[0]
+ if (!rawFile) return
+ this.upload(rawFile)
+ },
+ upload(rawFile) {
+ this.$refs['excel-upload-input'].value = null // fix can't select the same excel
+ if (!this.beforeUpload) {
+ this.readerData(rawFile)
+ return
+ }
+ const before = this.beforeUpload(rawFile)
+ if (before) { // 鎵ц浜�
+ this.readerData(rawFile)
+ }
+ },
+ readerData(rawFile) {
+ this.loading = true
+ return new Promise((resolve, reject) => {
+ const reader = new FileReader()
+ reader.onload = e => {
+ const data = e.target.result
+ const workbook = XLSX.read(data, { type: 'array' })
+ let worksheet = []
+ const header = []
+ const results = []
+ workbook.SheetNames.forEach((item, index) => {
+ worksheet = workbook.Sheets[item]
+ header.push(this.getHeaderRow(worksheet))
+ results.push(XLSX.utils.sheet_to_json(worksheet))
+ })
+ this.excelData.sheetName = workbook.SheetNames
+ // console.log(header)
+ // console.log(results)
+ // const firstSheetName = workbook.SheetNames[0]
+ // const worksheet = workbook.Sheets[firstSheetName]
+ // const header = this.getHeaderRow(worksheet)
+ // const results = XLSX.utils.sheet_to_json(worksheet)
+ this.generateData({ header, results })
+ this.loading = false
+ resolve()
+ }
+ reader.readAsArrayBuffer(rawFile)
+ })
+ },
+ getHeaderRow(sheet) {
+ const headers = []
+ const range = XLSX.utils.decode_range(sheet['!ref'])
+ let C
+ const R = range.s.r
+ /* start in the first row */
+ for (C = range.s.c; C <= range.e.c; ++C) { /* walk every column in the range */
+ const cell = sheet[XLSX.utils.encode_cell({ c: C, r: R })]
+ /* find the cell in the first row */
+ let hdr = 'UNKNOWN ' + C // <-- replace with your desired default
+ if (cell && cell.t) hdr = XLSX.utils.format_cell(cell)
+ headers.push(hdr)
+ }
+ return headers
+ },
+ isExcel(file) {
+ return /\.(xlsx|xls|csv)$/.test(file.name)
+ }
+ }
+}
+</script>
+
+<style scoped>
+.excel-upload-input {
+ display: none;
+ z-index: -9999;
+}
+
+.drop {
+ border: 2px dashed #bbb;
+ width: 600px;
+ height: 160px;
+ line-height: 160px;
+ margin: 0 auto;
+ font-size: 24px;
+ border-radius: 5px;
+ text-align: center;
+ color: #bbb;
+ position: relative;
+}
+
+</style>
+
+<style>
+
+/*.has-gutter{*/
+/* color: #34bfa3 !important;*/
+/*}*/
+
+/*.is-leaf{*/
+/* background-color: #34bfa3 !important;*/
+/*}*/
+</style>
diff --git a/src/router/index.js b/src/router/index.js
index 1c2b7e5..0168fa4 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -450,6 +450,13 @@
code: '0802',
component: () => import('@/views/systemSetting/encodingRules'),
meta: { code: '0802', title: '缂栫爜瑙勫垯', icon: '', keepAlive: true }
+ },
+ {
+ path: 'dataImport',
+ name: 'dataImportCancel',
+ code: '0803',
+ component: () => import('@/views/systemSetting/dataImport'),
+ meta: { code: '0803', title: '鏁版嵁瀵煎叆', icon: '', keepAlive: true }
}
]
}
diff --git a/src/views/basicSettings/personList.vue b/src/views/basicSettings/personList.vue
index 4635050..f7602ea 100644
--- a/src/views/basicSettings/personList.vue
+++ b/src/views/basicSettings/personList.vue
@@ -149,8 +149,8 @@
sortable="custom"
>
<template slot-scope="{row}">
- <el-tag v-if="row.status==='Y'" size="small" type="success">姝e父</el-tag>
- <el-tag v-if="row.status==='N'" size="small" type="danger">鍋滅敤</el-tag>
+ <el-tag v-if="row.status==='Y'" size="small" type="success">鍦ㄨ亴</el-tag>
+ <el-tag v-if="row.status==='N'" size="small" type="danger">绂昏亴</el-tag>
</template>
</el-table-column>
<el-table-column
@@ -300,8 +300,8 @@
<el-form-item required label="鐢ㄦ埛鐘舵��">
<el-radio-group v-model="dialogForm.status" style="width: 200px;">
- <el-radio label="Y">姝e父</el-radio>
- <el-radio label="N">鍋滅敤</el-radio>
+ <el-radio label="Y">鍦ㄨ亴</el-radio>
+ <el-radio label="N">绂昏亴</el-radio>
</el-radio-group>
</el-form-item>
diff --git a/src/views/basicSettings/roleList.vue b/src/views/basicSettings/roleList.vue
index c6ff9a3..272698c 100644
--- a/src/views/basicSettings/roleList.vue
+++ b/src/views/basicSettings/roleList.vue
@@ -190,55 +190,55 @@
<el-input v-model="dialogForm.rolename" style="width: 200px" />
</el-form-item>
-<!-- <el-form-item required label="鏁版嵁鑼冨洿">-->
-<!-- <el-select-->
-<!-- v-model="dialogForm.datacode"-->
-<!-- style="width:200px"-->
-<!-- placeholder="璇烽�夋嫨"-->
-<!-- :popper-append-to-body="false"-->
-<!-- >-->
-<!-- <el-option-->
-<!-- v-for="item in datacodeArr"-->
-<!-- :key="item.datacode"-->
-<!-- :label="item.dataname"-->
-<!-- :value="item.datacode"-->
-<!-- />-->
-<!-- </el-select>-->
-<!-- </el-form-item>-->
+ <!-- <el-form-item required label="鏁版嵁鑼冨洿">-->
+ <!-- <el-select-->
+ <!-- v-model="dialogForm.datacode"-->
+ <!-- style="width:200px"-->
+ <!-- placeholder="璇烽�夋嫨"-->
+ <!-- :popper-append-to-body="false"-->
+ <!-- >-->
+ <!-- <el-option-->
+ <!-- v-for="item in datacodeArr"-->
+ <!-- :key="item.datacode"-->
+ <!-- :label="item.dataname"-->
+ <!-- :value="item.datacode"-->
+ <!-- />-->
+ <!-- </el-select>-->
+ <!-- </el-form-item>-->
<el-form-item required label="鐘舵��">
<el-radio-group v-model="dialogForm.status" style="width: 200px">
<el-radio label="Y">姝e父</el-radio>
<el-radio label="N">鍋滅敤</el-radio>
</el-radio-group>
</el-form-item>
- <el-form-item v-if="dialogForm.datacode==='CUSTOM'" label="鏁版嵁鏉冮檺" style="margin: 0">
- <el-checkbox-group v-model="checkboxGroupSelected" @change="checkboxGroupChange">
- <el-checkbox v-for="item in checkboxGroup" :key="item" :label="item">
- {{ item }}
- <el-tooltip class="item" effect="dark" content="鍕鹃�夌埗鑺傜偣鏄惁鍚屾椂閫変腑瀛愯妭鐐�" placement="top">
- <i v-if="item==='鐖跺瓙鑱斿姩'" class="el-icon-question" />
- </el-tooltip>
- </el-checkbox>
- </el-checkbox-group>
- </el-form-item>
- <el-card
- v-if="dialogForm.datacode==='CUSTOM'"
- class="box-card"
- shadow="never"
- style="margin-bottom: 30px;width: 78%;margin-left: 12%;"
- >
+ <!-- <el-form-item v-if="dialogForm.datacode==='CUSTOM'" label="鏁版嵁鏉冮檺" style="margin: 0">-->
+ <!-- <el-checkbox-group v-model="checkboxGroupSelected" @change="checkboxGroupChange">-->
+ <!-- <el-checkbox v-for="item in checkboxGroup" :key="item" :label="item">-->
+ <!-- {{ item }}-->
+ <!-- <el-tooltip class="item" effect="dark" content="鍕鹃�夌埗鑺傜偣鏄惁鍚屾椂閫変腑瀛愯妭鐐�" placement="top">-->
+ <!-- <i v-if="item==='鐖跺瓙鑱斿姩'" class="el-icon-question" />-->
+ <!-- </el-tooltip>-->
+ <!-- </el-checkbox>-->
+ <!-- </el-checkbox-group>-->
+ <!-- </el-form-item>-->
+ <!-- <el-card-->
+ <!-- v-if="dialogForm.datacode==='CUSTOM'"-->
+ <!-- class="box-card"-->
+ <!-- shadow="never"-->
+ <!-- style="margin-bottom: 30px;width: 78%;margin-left: 12%;"-->
+ <!-- >-->
- <el-tree
- ref="tree"
- :key="checkboxGroupSelected.toString()"
- :data="treeData"
- show-checkbox
- :check-strictly="!checkboxGroupSelected.includes('鐖跺瓙鑱斿姩')"
- :default-expand-all="checkboxGroupSelected.includes('灞曞紑/鎶樺彔')"
- node-key="torg_code"
- :props="defaultProps"
- />
- </el-card>
+ <!-- <el-tree-->
+ <!-- ref="tree"-->
+ <!-- :key="checkboxGroupSelected.toString()"-->
+ <!-- :data="treeData"-->
+ <!-- show-checkbox-->
+ <!-- :check-strictly="!checkboxGroupSelected.includes('鐖跺瓙鑱斿姩')"-->
+ <!-- :default-expand-all="checkboxGroupSelected.includes('灞曞紑/鎶樺彔')"-->
+ <!-- node-key="torg_code"-->
+ <!-- :props="defaultProps"-->
+ <!-- />-->
+ <!-- </el-card>-->
<el-form-item label="澶囨敞">
<el-input v-model="dialogForm.description" type="textarea" style="width:500px" />
diff --git a/src/views/systemSetting/dataImport.vue b/src/views/systemSetting/dataImport.vue
new file mode 100644
index 0000000..6462bdf
--- /dev/null
+++ b/src/views/systemSetting/dataImport.vue
@@ -0,0 +1,452 @@
+<template>
+ <div class="" :style="{height:mainHeight+'px'}">
+
+ <div style="display: flex;margin: 20px 10px;">
+
+ <el-select
+ v-model="excelCode"
+ style="width:200px"
+ placeholder="璇烽�夋嫨妯℃澘鏂囦欢"
+ :popper-append-to-body="false"
+ clearable
+ >
+ <el-option
+ v-for="item in excelArr"
+ :key="item.fileCode"
+ :label="item.fileName"
+ :value="item.fileCode"
+ />
+ </el-select>
+
+ <el-button
+ type="primary"
+ style="margin-left: 20px"
+ :disabled="excelCode===''"
+ @click="getExcel"
+ >涓嬭浇妯℃澘
+ </el-button>
+
+ <upload-excel-component
+ :on-success="handleSuccess"
+ :before-upload="beforeUpload"
+ :disabled="excelCode===''"
+ />
+
+ <el-button
+ type="info"
+ style="margin-left: 20px"
+ :disabled="excelCode===''"
+ @click="reset"
+ >閲嶇疆
+ </el-button>
+
+ <el-button
+ type="primary"
+ style="margin-left: 20px"
+ :disabled="excelCode===''"
+ @click="submit"
+ >鎻愪氦
+ </el-button>
+
+ </div>
+
+ <div
+ v-if="sheetName.length>0"
+ style="margin: 10px"
+ >
+
+ <el-tabs type="border-card">
+ <el-tab-pane
+ v-for="(i,j) in sheetName"
+ :key="i+j"
+ :label="i"
+ >
+ <!-- height:(mainHeight-180)+'px',-->
+ <el-table
+ ref="tableDataRef"
+ :data="tableData[j]"
+ border
+ :height="(mainHeight-180)+'px'"
+ :header-cell-style="headerCellStyle"
+ :cell-style="cellStyle"
+ :style="{width: 100+'%',height:(mainHeight-180)+'px',zIndex:10}"
+ style="overflow-y: scroll;"
+ highlight-current-row
+ >
+ <!-- <el-table-column-->
+ <!-- type="selection"-->
+ <!-- width="55"-->
+ <!-- />-->
+ <el-table-column
+ type="index"
+ label="搴忓彿"
+ width="55"
+ fixed
+ align="center"
+ />
+
+ <el-table-column
+ v-for="item of tableHeader[j]"
+ :key="item"
+ :prop="item"
+ :label="item"
+ align="center"
+ :render-header="addRedStar"
+ width="220"
+ >
+ <template slot-scope="{row}">
+
+ <div
+ v-if="item.indexOf('鐢ㄦ埛缂栧彿(鍞竴)')!==-1||
+ item.indexOf('鐢ㄦ埛濮撳悕')!==-1||
+ item.indexOf('瀵嗙爜')!==-1||
+ item.indexOf('鎵嬫満鍙�')!==-1||
+ item.indexOf('閭')!==-1
+ "
+ >
+ <el-input v-model="row[item]" placeholder="璇疯緭鍏�" />
+ </div>
+ <div v-else-if="item.indexOf('鍦ㄨ亴鐘舵��')!==-1">
+ <el-select
+ v-model="row[item]"
+ placeholder="璇烽�夋嫨"
+ filterable
+ clearable
+ >
+ <el-option
+ v-for="item in statusArr"
+ :key="item.code"
+ :label="item.name"
+ :value="item.code"
+ />
+ </el-select>
+ </div>
+
+ <div v-else-if="item.indexOf('鎵�灞炲矖浣嶇紪鐮�')!==-1">
+ <el-select
+ v-model="row[item]"
+ style="width: 100%;"
+ placeholder="璇烽�夋嫨"
+ multiple
+ filterable
+ collapse-tags
+ clearable
+ >
+
+ <el-option
+ v-for="item in postArr"
+ :key="item.postcode"
+ :label="item.postname"
+ :value="item.postcode"
+ />
+ </el-select>
+ </div>
+ <div v-else-if="item.indexOf('鎵�灞炶鑹茬紪鐮�')!==-1">
+ <el-select
+ v-model="row[item]"
+ style="width: 100%;"
+ placeholder="璇烽�夋嫨"
+ multiple
+ filterable
+ collapse-tags
+ clearable
+ >
+ <el-option
+ v-for="item in roleArr"
+ :key="item.rolecode"
+ :label="item.rolename"
+ :value="item.rolecode"
+ />
+ </el-select>
+ </div>
+ <div v-else-if="item.indexOf('鎵�灞炵彮缁勭紪鐮�')!==-1">
+ <el-select
+ v-model="row[item]"
+ style="width: 100%;"
+ placeholder="璇烽�夋嫨"
+ collapse-tags
+ multiple
+ filterable
+ clearable
+ >
+ <el-option
+ v-for="item in groupArr"
+ :key="item.usergroupcode"
+ :label="item.usergroupname"
+ :value="item.usergroupcode"
+ />
+ </el-select>
+ </div>
+ <div v-else-if="item.indexOf('鎵�灞炵粍缁囩紪鐮�')!==-1">
+ <el-select
+ v-model="row[item]"
+ style="width: 100%;"
+ placeholder="璇烽�夋嫨"
+ filterable
+ clearable
+ >
+ <el-option
+ v-for="item in orgArr"
+ :key="item.torg_code"
+ :label="item.torg_name"
+ :value="item.torg_code"
+ />
+ </el-select>
+ </div>
+ <div v-else> {{ row[item] }}</div>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ width="120"
+ fixed="right"
+ />
+ </el-table>
+ </el-tab-pane>
+ </el-tabs>
+
+ </div>
+
+ <!-- <div v-for="(i,j) in tableHeader" :key="i">-->
+ <!-- <el-table :data="tableData[j]" border highlight-current-row style="width: 100%;margin-top:20px;">-->
+ <!-- <el-table-column v-for="item of tableHeader[j]" :key="item" :prop="item" :label="item" />-->
+ <!-- </el-table>-->
+ <!-- </div>-->
+ </div>
+</template>
+
+<script>
+import UploadExcelComponent from '@/components/UploadExcel/index.vue'
+import { DownLoadExcel, ExcelModelCheck, ExcelModelData } from '@/api/Excel'
+import { GroupsPermissions, PostPermissions, PrentOrganization, RolePermissions } from '@/api/GeneralBasicData'
+
+export default {
+ name: 'UploadExcel',
+ components: { UploadExcelComponent },
+ data() {
+ return {
+ mainHeight: window.innerHeight - 85,
+
+ tableData: [],
+ tableHeader: [],
+ sheetName: [],
+
+ excelCode: '',
+ excelArr: [],
+
+ statusArr: [
+ { code: 'Y', name: '鍦ㄨ亴' },
+ { code: 'N', name: '绂昏亴' }
+ ],
+ orgArr: [], // 缁勭粐
+ postArr: [], // 宀椾綅
+ roleArr: [], // 瑙掕壊
+ groupArr: []// 鐝粍
+
+ }
+ },
+ mounted() {
+ this.getExcelModelData()
+
+ this.getSelectArr()
+ window.addEventListener('resize', this.getHeight)
+ },
+ methods: { // 鑾峰彇椤甸潰楂樺害
+ getHeight() {
+ this.$nextTick(() => {
+ this.mainHeight = window.innerHeight - 85
+
+ // this.$nextTick(() => {
+ // this.$refs.tableDataRef.doLayout()
+ // })
+ })
+ },
+ async beforeUpload(file) {
+ const isLt1M = file.size / 1024 / 1024 < 1
+ if (isLt1M) {
+ return true
+ }
+
+ this.$message({
+ message: 'Please do not upload files larger than 1m in size.',
+ type: 'warning'
+ })
+ return false
+ },
+ async handleSuccess({ results, header, sheetName }) {
+ this.tableData = results
+ this.tableHeader = header
+ this.sheetName = sheetName
+
+ // 鐢ㄦ埛娓呭崟瀵煎叆鍒ゆ柇
+ if (this.sheetName.indexOf('鐢ㄦ埛娓呭崟') !== -1) {
+ const postArr = this.postArr.map(i => i.postcode)
+ const roleArr = this.roleArr.map(i => i.rolecode)
+ const groupArr = this.groupArr.map(i => i.usergroupcode)
+ const orgArr = this.orgArr.map(i => i.torg_code)
+ this.tableData[this.sheetName.indexOf('鐢ㄦ埛娓呭崟')].forEach(j => {
+ j.鎵�灞炲矖浣嶇紪鐮� = j.鎵�灞炲矖浣嶇紪鐮�.split(',').filter(e => postArr.includes(e))
+ j.鎵�灞炶鑹茬紪鐮� = j.鎵�灞炶鑹茬紪鐮�.split(',').filter(e => roleArr.includes(e))
+ j.鎵�灞炵彮缁勭紪鐮� = j.鎵�灞炵彮缁勭紪鐮�.split(',').filter(e => groupArr.includes(e))
+ j['*鎵�灞炵粍缁囩紪鐮�'] = orgArr.includes(j['*鎵�灞炵粍缁囩紪鐮�']) ? j['*鎵�灞炵粍缁囩紪鐮�'] : ''
+ j['*鍦ㄨ亴鐘舵��'] = this.statusArr.find(e => e.name === j['*鍦ㄨ亴鐘舵��']).code
+ })
+ }
+ },
+ async getExcelModelData() {
+ const { data: res } = await ExcelModelData()
+ this.excelArr = res
+ },
+ async getExcel() {
+ const res = await DownLoadExcel({ FileCode: this.excelCode })
+ window.location.href = res.data
+ },
+ submit() {
+ // console.log(this.excelCode)
+ // console.log(JSON.stringify(this.sheetName))
+ // console.log(JSON.stringify(this.tableHeader))
+ // console.log(JSON.stringify(this.tableData))
+
+ this.$confirm('鏄惁纭鎻愪氦?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ let flag = true
+ let msg = ''
+ if (this.sheetName.indexOf('鐢ㄦ埛娓呭崟') !== -1) {
+ // if ([...new Set(this.tableData[0].filter(i => i['*鐢ㄦ埛缂栧彿(鍞竴)'] !== '').map(i => i['*鐢ㄦ埛缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+ if ([...new Set(this.tableData[0].map(i => i['*鐢ㄦ埛缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+ return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+ }
+ this.tableData[0].forEach(j => {
+ if (j['*鐢ㄦ埛缂栧彿(鍞竴)'].trim() === '') {
+ flag = false
+ msg = '*鐢ㄦ埛缂栧彿(鍞竴)'
+ }
+ if (j['*鐢ㄦ埛濮撳悕'].trim() === '') {
+ flag = false
+ msg = '*鐢ㄦ埛濮撳悕'
+ }
+ if (j['*瀵嗙爜'].trim() === '') {
+ flag = false
+ msg = '*瀵嗙爜'
+ }
+ if (j['*鍦ㄨ亴鐘舵��'].trim() === '') {
+ flag = false
+ msg = '*鍦ㄨ亴鐘舵��'
+ }
+ if (j['*鎵�灞炵粍缁囩紪鐮�'].trim() === '') {
+ flag = false
+ msg = '*鎵�灞炵粍缁囩紪鐮�'
+ }
+ })
+
+ if (!flag) {
+ return this.$message.info(msg + '涓嶈兘涓虹┖锛�')
+ }
+
+ this.tableData[0].forEach(j => {
+ j.鎵�灞炲矖浣嶇紪鐮� = j.鎵�灞炲矖浣嶇紪鐮�.join(',')
+ j.鎵�灞炵彮缁勭紪鐮� = j.鎵�灞炵彮缁勭紪鐮�.join(',')
+ j.鎵�灞炶鑹茬紪鐮� = j.鎵�灞炶鑹茬紪鐮�.join(',')
+ })
+ }
+ const data = {
+ fileCode: this.excelCode,
+ tableData: this.tableData
+ }
+ // console.log(JSON.stringify(this.tableData))
+ ExcelModelCheck(data).then(res => {
+ if (res.code === '200') {
+ this.$notify.success('鎻愪氦鎴愬姛!')
+ this.tableData = []
+ this.tableHeader = []
+ this.sheetName = []
+ this.excelCode = ''
+ }
+ })
+ }).catch(() => {
+ this.$notify.info('宸插彇娑堟彁浜わ紒')
+ })
+ },
+ reset() {
+ this.tableData = []
+ this.tableHeader = []
+ this.sheetName = []
+ this.excelCode = ''
+ },
+ async getSelectArr() {
+ await this.getPrentOrganization()
+ await this.getPostPermissions()
+ await this.getRolePermissions()
+ await this.getGroupsPermissions()
+ },
+ // 缁勭粐鏋舵瀯绾ц仈閫夋嫨鍣�
+ async getPrentOrganization() {
+ const { data: res } = await PrentOrganization()
+ this.orgArr = res
+ // this.cascaderOptions = arrayToTree(res, {
+ // parentProperty: 'parent_id',
+ // customID: 'torg_code',
+ // childrenProperty: 'children'
+ // })
+ },
+ // 鑾峰彇宀椾綅涓嬫媺鏁扮粍
+ async getPostPermissions() {
+ const { data: res } = await PostPermissions()
+ this.postArr = res
+ },
+ // 鑾峰彇瑙掕壊涓嬫媺鏁扮粍
+ async getRolePermissions() {
+ const { data: res } = await RolePermissions()
+ this.roleArr = res
+ },
+ // 鑾峰彇鐝粍涓嬫媺鏁扮粍
+ async getGroupsPermissions() {
+ const { data: res } = await GroupsPermissions()
+ this.groupArr = res
+ },
+ headerCellStyle({ row, column, rowIndex, columnIndex }) {
+ let string = ''
+ if (column.label.indexOf('*') !== -1 && rowIndex === 0) {
+ string = 'background:#ffc000;'
+ } else if (column.label.indexOf('*') === -1 && rowIndex === 0) {
+ string = 'background:#00b0f0;'
+ }
+ return string + 'padding: 5px 0; fontWeight: 500;'
+ },
+ cellStyle() {
+ const option = {
+ padding: '5px 0'
+ }
+ return option
+ },
+ addRedStar(h, { column }) {
+ if (column.label.indexOf('*') !== -1) { // 蹇呭~瀛楁
+ return [
+ h('span', { style: 'color:#F56C6C' }, ' * '),
+ h('span', { style: 'color:#FFF' }, column.label.substring(1))
+ ]
+ } else { // 闈炲繀濉瓧娈�
+ return [
+ // h('span', { style: 'color:#F56C6C' }, ' * '),
+ h('span', { style: 'color:#FFF' }, column.label)
+ ]
+ }
+ }
+
+ }
+}
+</script>
+
+<style scoped lang="scss">
+//::v-deep .el-table__body-wrapper {
+ //overflow-y: auto;
+ //overflow-x: scroll !important;
+ //height: calc(100% - 34px);
+ //width: 100% !important;
+//}
+
+</style>
+
diff --git a/src/views/workOrder/workOrderClose.vue b/src/views/workOrder/workOrderClose.vue
index 753842b..e69de29 100644
--- a/src/views/workOrder/workOrderClose.vue
+++ b/src/views/workOrder/workOrderClose.vue
@@ -1,11 +0,0 @@
-<template />
-
-<script>
-export default {
- name: 'WorkOrderClose'
-}
-</script>
-
-<style scoped>
-
-</style>
--
Gitblit v1.9.3