|
@@ -1,27 +1,46 @@
|
|
|
<template>
|
|
|
- <zj-page-template ref="zjpage" style="width: 100%;height: 100%;" :get-table-data="getTableData" :options-evens="evens"
|
|
|
- :options-evens-group="selBtn(optionsEvensGroup)"
|
|
|
- :table-attributes="{ ...defaultTableAttributes, ...tableAttributes }"
|
|
|
- :table-events="{ ...defaultTableEvents, ...tableEvents }" :column-parsing="columnParsing" :reduction="reduction"
|
|
|
- :plan="[...plan, ...morePlan]" :operation="operation" :operation-column-width="operationColumnWidth"
|
|
|
- :show-table="showTable" :code-gather="codeGather" @columnWidthChange="columnWidthChange"
|
|
|
- :lowerLine="true"
|
|
|
- @columnListChange="columnListChange">
|
|
|
- <sel-export-column-list :column-list="columnList" @determine="exportDetermine" @cancel="columnList = []" />
|
|
|
+ <div class="template-page-1">
|
|
|
+ <zj-page-template
|
|
|
+ ref="zjpage"
|
|
|
+ :getTableData="getTableData"
|
|
|
+ :optionsEvens="evens"
|
|
|
+ :optionsEvensGroup="selBtn(optionsEvensGroup)"
|
|
|
+ :tableAttributes="{ ...defaultTableAttributes, ...tableAttributes }"
|
|
|
+ :tableEvents="{ ...defaultTableEvents, ...tableEvents }"
|
|
|
+ :columnParsing="columnParsing"
|
|
|
+ :reduction="reduction"
|
|
|
+ :plan="[...defaultPlan, ...morePlan]"
|
|
|
+ :operation="operation"
|
|
|
+ :operationColumnWidth="operationColumnWidth"
|
|
|
+ :showTable="showTable"
|
|
|
+ :codeGather="codeGather"
|
|
|
+ :loading="loading"
|
|
|
+ :lowerLine="true"
|
|
|
+ @columnWidthChange="columnWidthChange"
|
|
|
+ @columnListChange="columnListChange"
|
|
|
+ >
|
|
|
+ <template slot="more-search">
|
|
|
+ <slot name="moreSearch"></slot>
|
|
|
+ </template>
|
|
|
+ </zj-page-template>
|
|
|
+ <sel-export-column-list :columnList="columnList" @determine="exportDetermine" @cancel="columnList = []" />
|
|
|
<slot />
|
|
|
- </zj-page-template>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-
|
|
|
-import { zfireSave, zfireDel, commonDict } from "@/api/user";
|
|
|
-import SelExportColumnList from './sel-export-column-list'
|
|
|
-
|
|
|
+import { zfireSave, zfireDel } from '@/api/fieldMan.js'
|
|
|
+import { dictListDict } from '@/api/dataDictionary.js'
|
|
|
+import SelExportColumnList from './sel-export-column-list.vue'
|
|
|
export default {
|
|
|
components: {
|
|
|
SelExportColumnList
|
|
|
},
|
|
|
props: {
|
|
|
+ loading: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false
|
|
|
+ },
|
|
|
// 事件组合
|
|
|
optionsEvensGroup: {
|
|
|
type: Array,
|
|
@@ -56,9 +75,27 @@ export default {
|
|
|
operation: {
|
|
|
type: Function
|
|
|
},
|
|
|
+ cstomClumn: {
|
|
|
+ type: Function
|
|
|
+ },
|
|
|
operationColumnWidth: {
|
|
|
type: Number,
|
|
|
default: 140
|
|
|
+ },
|
|
|
+ customModuleName: {
|
|
|
+ type: String,
|
|
|
+ default: ''
|
|
|
+ },
|
|
|
+ defaultPlan: {
|
|
|
+ type: Array,
|
|
|
+ default: () => [
|
|
|
+ {
|
|
|
+ name: '默认方案',
|
|
|
+ paramCallback: () => {
|
|
|
+ return []
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
}
|
|
|
},
|
|
|
data() {
|
|
@@ -66,17 +103,9 @@ export default {
|
|
|
// 菜单id
|
|
|
moduleId: this.$route.meta.moduleId,
|
|
|
// 菜单名
|
|
|
- moduleName: this.$route.meta.title,
|
|
|
+ moduleName: this.customModuleName || this.$route.meta.title,
|
|
|
// 搜索的参数
|
|
|
parameter: {},
|
|
|
- plan: [
|
|
|
- {
|
|
|
- name: '默认方案',
|
|
|
- paramCallback: () => {
|
|
|
- return []
|
|
|
- }
|
|
|
- }
|
|
|
- ],
|
|
|
// 按钮集合
|
|
|
evens: [],
|
|
|
// 表格属性
|
|
@@ -88,7 +117,8 @@ export default {
|
|
|
// 导出弹窗
|
|
|
columnList: [],
|
|
|
showTable: false,
|
|
|
- codeGather: {}
|
|
|
+ codeGather: {},
|
|
|
+ frontCodes: []
|
|
|
}
|
|
|
},
|
|
|
computed: {
|
|
@@ -108,41 +138,36 @@ export default {
|
|
|
]
|
|
|
]
|
|
|
}
|
|
|
-
|
|
|
},
|
|
|
-
|
|
|
methods: {
|
|
|
- getDictCode(params) {
|
|
|
- this.codeGather = {}
|
|
|
- commonDict(params).then(res => {
|
|
|
- if (res.data.length) {
|
|
|
- res.data.map(item => {
|
|
|
- if (!this.codeGather[params.code]) {
|
|
|
- this.$set(this.codeGather,params.code,[])
|
|
|
- }
|
|
|
- this.$set(this.codeGather,params.code,[...this.codeGather[params.code],{
|
|
|
- label: item.dictValue,
|
|
|
- value: item.dictCode
|
|
|
- }])
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
- },
|
|
|
selBtn(arr) {
|
|
|
for (var i = 0; i < arr.length; i++) {
|
|
|
if (Array.isArray(arr[i])) {
|
|
|
this.selBtn(arr[i])
|
|
|
}
|
|
|
- if (
|
|
|
- !(arr[i].isRole || arr[i].isRole === undefined) ||
|
|
|
- arr[i].length == 0
|
|
|
- ) {
|
|
|
+ if (!(arr[i].isRole || arr[i].isRole === undefined) || arr[i].length == 0) {
|
|
|
arr.splice(i, 1)
|
|
|
i--
|
|
|
}
|
|
|
}
|
|
|
return arr
|
|
|
},
|
|
|
+ // 获取下拉对应数据
|
|
|
+ getCodeGather() {
|
|
|
+ let codes = this.frontCodes.filter(key => (this.codeGather[key] ? false : true))
|
|
|
+ if (codes && codes.length) {
|
|
|
+ var codeGather = {}
|
|
|
+ Promise.all(codes.map(code => dictListDict({ dictType: code }))).then(resAll => {
|
|
|
+ codes.map((code, index) => {
|
|
|
+ var arr = resAll[index].data.map(item => {
|
|
|
+ return { value: item.dictCode, label: item.dictValue }
|
|
|
+ })
|
|
|
+ codeGather[code] = arr
|
|
|
+ })
|
|
|
+ this.codeGather = { ...this.codeGather, ...codeGather }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
// 获取列表数据函数
|
|
|
async getTableData(data) {
|
|
|
if (!this.getList) {
|
|
@@ -157,19 +182,21 @@ export default {
|
|
|
moduleId: this.moduleId
|
|
|
}
|
|
|
var res = await this.getList(this.parameter)
|
|
|
- // res.data.records = []
|
|
|
if (res.code == 200) {
|
|
|
if (!this.showTable) {
|
|
|
this.$nextTick(() => {
|
|
|
this.showTable = true
|
|
|
})
|
|
|
}
|
|
|
- res.fieldBeans.forEach(k => {
|
|
|
- if (k.frontCode) {
|
|
|
- this.getDictCode({ code: k.frontCode })
|
|
|
+ for (var item of res.fieldBeans) {
|
|
|
+ if (item.frontCode && !~this.frontCodes.indexOf(item.frontCode)) {
|
|
|
+ this.frontCodes.push(item.frontCode)
|
|
|
}
|
|
|
- });
|
|
|
-
|
|
|
+ if (this.cstomClumn && item.label === 'cstomClumn') {
|
|
|
+ this.cstomClumn(item.jname, res.data.records, res.fieldBeans, this.parameter)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.getCodeGather()
|
|
|
return res
|
|
|
}
|
|
|
} catch (error) {
|
|
@@ -193,8 +220,7 @@ export default {
|
|
|
}),
|
|
|
this.moduleId
|
|
|
)
|
|
|
- .then(res => {
|
|
|
- })
|
|
|
+ .then(res => {})
|
|
|
.catch(err => {
|
|
|
this.$message.error('保存失败')
|
|
|
})
|
|
@@ -218,8 +244,7 @@ export default {
|
|
|
}),
|
|
|
this.moduleId
|
|
|
)
|
|
|
- .then(res => {
|
|
|
- })
|
|
|
+ .then(res => {})
|
|
|
.catch(err => {
|
|
|
this.$message.error('保存失败')
|
|
|
})
|
|
@@ -228,7 +253,7 @@ export default {
|
|
|
reduction() {
|
|
|
zfireDel({}, this.userid, this.moduleId)
|
|
|
.then(res => {
|
|
|
- this.$refs.zjpage.refresh()
|
|
|
+ this.refreshList(true)
|
|
|
})
|
|
|
.catch(err => {
|
|
|
this.$message.error('操作失败')
|
|
@@ -242,6 +267,12 @@ export default {
|
|
|
if (!this.exportList) {
|
|
|
return
|
|
|
}
|
|
|
+ const loading = this.$loading({
|
|
|
+ lock: true,
|
|
|
+ text: 'Loading',
|
|
|
+ spinner: 'el-icon-loading',
|
|
|
+ background: 'rgba(0, 0, 0, 0.7)'
|
|
|
+ })
|
|
|
this.evens[0][0].loading = true
|
|
|
this.exportList(
|
|
|
{
|
|
@@ -258,32 +289,53 @@ export default {
|
|
|
})
|
|
|
this.columnList = []
|
|
|
this.evens[0][0].loading = false
|
|
|
+ loading.close()
|
|
|
})
|
|
|
- .catch(() => {
|
|
|
+ .catch(err => {
|
|
|
this.$message.error('导出失败')
|
|
|
this.columnList = []
|
|
|
this.evens[0][0].loading = false
|
|
|
+ loading.close()
|
|
|
})
|
|
|
},
|
|
|
- refreshList() {
|
|
|
- this.$refs.zjpage.refresh()
|
|
|
+ refreshList(bool) {
|
|
|
+ if (bool === true) {
|
|
|
+ this.showTable = false
|
|
|
+ this.$refs.zjpage.refresh()
|
|
|
+ } else {
|
|
|
+ this.$refs.zjpage.refresh()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
+.template-page-1 {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ position: relative;
|
|
|
+ box-sizing: border-box;
|
|
|
+ min-width: 860px;
|
|
|
+ overflow: auto;
|
|
|
+}
|
|
|
+.zj-page-template {
|
|
|
+ position: relative;
|
|
|
+ z-index: 0;
|
|
|
+}
|
|
|
@font-face {
|
|
|
- font-family: "aliyun_iconfont";
|
|
|
- src: url("//at.alicdn.com/t/font_2075393_0cjq4n8ykvds.woff2?t=1647587689181") format("woff2"),
|
|
|
- url("//at.alicdn.com/t/font_2075393_0cjq4n8ykvds.woff?t=1647587689181") format("woff"),
|
|
|
- url("//at.alicdn.com/t/font_2075393_0cjq4n8ykvds.ttf?t=1647587689181") format("truetype");
|
|
|
+ font-family: 'aliyun_iconfont';
|
|
|
+ src: url('~@/components/template/font/font_2075393_0cjq4n8ykvds.woff2') format('woff2'),
|
|
|
+ url('~@/components/template/font/font_2075393_0cjq4n8ykvds.woff') format('woff'),
|
|
|
+ url('~@/components/template/font/font_2075393_0cjq4n8ykvds.ttf') format('truetype');
|
|
|
}
|
|
|
-
|
|
|
::v-deep .el-table__cell {
|
|
|
padding: 0 !important;
|
|
|
}
|
|
|
-
|
|
|
+::v-deep .el-table--mini td,
|
|
|
+::v-deep .el-table--mini th {
|
|
|
+ padding: 0 !important;
|
|
|
+}
|
|
|
::v-deep .el-table__column-filter-trigger {
|
|
|
.el-icon-arrow-down {
|
|
|
font-family: aliyun_iconfont !important;
|
|
@@ -298,41 +350,52 @@ export default {
|
|
|
-webkit-font-smoothing: antialiased;
|
|
|
transform: translate(-2px, 1px);
|
|
|
color: #c0c4cc;
|
|
|
+ width: 20px;
|
|
|
+ text-align: center;
|
|
|
}
|
|
|
-
|
|
|
.el-icon-arrow-down:before {
|
|
|
- content: "\e64c" !important;
|
|
|
+ content: '\e64c' !important;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
::v-deep .zj-buttons-group {
|
|
|
.el-upload-list {
|
|
|
display: none !important;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
::v-deep .operation-btns {
|
|
|
width: 100%;
|
|
|
- height: 100%;
|
|
|
+ height: 35px;
|
|
|
display: flex;
|
|
|
flex-direction: row;
|
|
|
align-items: center;
|
|
|
-
|
|
|
- &>*:not(:last-child) {
|
|
|
+ & > *:not(:last-child) {
|
|
|
margin-right: 5px;
|
|
|
}
|
|
|
-
|
|
|
.el-button {
|
|
|
margin-left: 0 !important;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
::v-deep .is-disabled {
|
|
|
-
|
|
|
.el-textarea__inner,
|
|
|
- .el-input__inner {
|
|
|
- background-color: #fff;
|
|
|
- color: #606266;
|
|
|
+ .el-input__inner,
|
|
|
+ .el-radio__label,
|
|
|
+ .el-radio__input {
|
|
|
+ background-color: #fff !important;
|
|
|
+ color: #606266 !important;
|
|
|
+ // border: none !important;
|
|
|
}
|
|
|
}
|
|
|
+::v-deep .el-checkbox.is-bordered.is-checked,
|
|
|
+::v-deep .el-radio.is-bordered.is-checked {
|
|
|
+ border-color: #409eff !important;
|
|
|
+}
|
|
|
+::v-deep .el-checkbox__input.is-checked .el-checkbox__inner,
|
|
|
+::v-deep .el-radio__input.is-checked .el-radio__inner {
|
|
|
+ border-color: #409eff !important;
|
|
|
+ background: #409eff !important;
|
|
|
+}
|
|
|
+::v-deep .el-checkbox.is-bordered {
|
|
|
+ margin-left: 0 !important;
|
|
|
+ margin-right: 10px !important;
|
|
|
+}
|
|
|
</style>
|