update 数据字典相关逻辑“

This commit is contained in:
g7hoo 2022-08-10 10:47:12 +08:00
parent 559cffc5f0
commit ffd095b6b8
6 changed files with 80 additions and 30 deletions

View File

@ -25,7 +25,7 @@
v-model="dataForm[configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].name]" v-model="dataForm[configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].name]"
clearable clearable
> >
<el-option v-for="opt in configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].options" :key="opt.label" :value="opt.value" /> <el-option v-for="opt in configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].options" :key="opt.label" :label="opt.label" :value="opt.value" />
</el-select> </el-select>
<el-switch v-if="getType(n, c) === 'switch'" v-model="dataForm[configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].name]"></el-switch> <el-switch v-if="getType(n, c) === 'switch'" v-model="dataForm[configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].name]"></el-switch>
<el-cascader v-if="getType(n, c) === 'tree'" v-model="dataForm[configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].name]"></el-cascader> <el-cascader v-if="getType(n, c) === 'tree'" v-model="dataForm[configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].name]"></el-cascader>
@ -272,7 +272,7 @@ export default {
message: btn.name === 'save' ? '添加成功!' : '更新成功!', message: btn.name === 'save' ? '添加成功!' : '更新成功!',
type: 'success', type: 'success',
duration: 1500, duration: 1500,
onClose() { onClose: () => {
this.$emit('refreshDataList') this.$emit('refreshDataList')
this.visible = false this.visible = false
} }

View File

@ -27,7 +27,7 @@ export default {
// add more... // add more...
}, },
text: { text: {
// for i18n inject: // TODO: i18n
edit: '编辑', edit: '编辑',
detail: '详情', detail: '详情',
delete: '删除', delete: '删除',
@ -38,12 +38,15 @@ export default {
}, },
methods: { methods: {
// 发射事件 // 发射事件
emit(eventType) {
this.$emit('emit-data', { type: eventType, data: this.injectData.head?.emitFullData ? this.injectData : this.injectData.id })
}
}, },
render: function (h) { render: function (h) {
let btns = [] let btns = []
for (const optionStr of this.injectData.head?.options) { for (const optionStr of this.injectData.head?.options) {
// btns.push(h('el-button', { props: { type: this.btnTypes[optionStr] } }, optionStr)) // btns.push(h('el-button', { props: { type: this.btnTypes[optionStr] } }, optionStr))
btns.push(h('el-button', { props: { type: 'text' }, style: { color: this.colors[optionStr] || '#409EFF' } }, this.text[optionStr])) btns.push(h('el-button', { props: { type: 'text' }, style: { color: this.colors[optionStr] || '#409EFF' }, on: { click: this.emit.bind(null, optionStr) } }, this.text[optionStr]))
} }
return h('span', null, btns) return h('span', null, btns)
} }

View File

@ -30,7 +30,7 @@
> >
<!-- 子组件 --> <!-- 子组件 -->
<template v-if="head.prop" slot-scope="scope"> <template v-if="head.prop" slot-scope="scope">
<component v-if="head.subcomponent" :is="head.subcomponent" :key="idx + 'sub'" :inject-data="{ ...scope.row, head }" @emitData="handleSubEmitData" /> <component v-if="head.subcomponent" :is="head.subcomponent" :key="idx + 'sub'" :inject-data="{ ...scope.row, head }" @emit-data="handleSubEmitData" />
<!-- 直接展示数据或应用过滤器 --> <!-- 直接展示数据或应用过滤器 -->
<span v-else>{{ scope.row[head.prop] | commonFilter(head.filter) }}</span> <span v-else>{{ scope.row[head.prop] | commonFilter(head.filter) }}</span>
</template> </template>

View File

@ -0,0 +1,24 @@
export default {
data() {
return {
dictList: {}
}
},
methods: {
initDictList(dictTypeIdList) {
const allDictList = JSON.parse(localStorage.getItem('dictList'))
if (!Object.keys(allDictList).length) {
return this.$message({
// TODO: i18n
message: '未能获取数据字典',
type: 'error',
duration: 2000
})
}
dictTypeIdList.forEach(id => {
this.dictList[id] = allDictList[id].map(item => ({ label: item.dictLabel, value: item.dictValue }))
})
}
}
}

View File

@ -129,25 +129,25 @@ export default {
params: this.$http.adornParams() params: this.$http.adornParams()
}).then(({ data }) => { }).then(({ data }) => {
if (data && data.code === 0) { if (data && data.code === 0) {
this.dataForm.code = data.product.code this.dataForm.code = data.data.code
this.dataForm.name = data.product.name this.dataForm.name = data.data.name
this.dataForm.description = data.product.description this.dataForm.description = data.data.description
this.dataForm.externalCode = data.product.externalCode this.dataForm.externalCode = data.data.externalCode
this.dataForm.specifications = data.product.specifications this.dataForm.specifications = data.data.specifications
this.dataForm.unitDictValue = data.product.unitDictValue this.dataForm.unitDictValue = data.data.unitDictValue
this.dataForm.area = data.product.area this.dataForm.area = data.data.area
this.dataForm.processTime = data.product.processTime this.dataForm.processTime = data.data.processTime
this.dataForm.typeDictValue = data.product.typeDictValue this.dataForm.typeDictValue = data.data.typeDictValue
this.dataForm.enabled = data.product.enabled this.dataForm.enabled = data.data.enabled
this.dataForm.remark = data.product.remark this.dataForm.remark = data.data.remark
this.dataForm.valid = data.product.valid this.dataForm.valid = data.data.valid
this.dataForm.creatorId = data.product.creatorId this.dataForm.creatorId = data.data.creatorId
this.dataForm.creatorName = data.product.creatorName this.dataForm.creatorName = data.data.creatorName
this.dataForm.createTime = data.product.createTime this.dataForm.createTime = data.data.createTime
this.dataForm.updaterId = data.product.updaterId this.dataForm.updaterId = data.data.updaterId
this.dataForm.updaterName = data.product.updaterName this.dataForm.updaterName = data.data.updaterName
this.dataForm.updateTime = data.product.updateTime this.dataForm.updateTime = data.data.updateTime
this.dataForm.version = data.product.version this.dataForm.version = data.data.version
} }
}) })
} }

View File

@ -40,7 +40,7 @@
</el-table-column> </el-table-column>
</el-table> --> </el-table> -->
<base-table :data="dataList" :table-head-configs="tableConfigs" :max-height="500" /> <base-table :data="dataList" :table-head-configs="tableConfigs" :max-height="500" @operate-event="handleOperations" @refreshDataList="getDataList" />
<el-pagination <el-pagination
@size-change="sizeChangeHandle" @size-change="sizeChangeHandle"
@ -65,13 +65,14 @@ import TableOperateComponent from '@/components/base-table/components/operationC
import TableTextComponent from '@/components/base-table/components/detailComponent' import TableTextComponent from '@/components/base-table/components/detailComponent'
import BaseDialog from '@/components/base-dialog/addOrUpdate' import BaseDialog from '@/components/base-dialog/addOrUpdate'
import moment from 'moment' import moment from 'moment'
import dictListMixin from '@/mixins/dictlist-module'
const UnitDictTypeId = '1557173812109242370' const UnitDictTypeId = '1557173812109242370'
const ProductTypeDictTypeId = ' ' const ProductTypeDictTypeId = '1557179530308616193'
const tableConfigs = [ const tableConfigs = [
{ type: 'index', name: '序号' }, { type: 'index', name: '序号' },
{ prop: 'updateTime', name: '添加时间', filter: val => val ? moment(val).format('YYYY-MM-DD hh:mm:ss') : '-' }, { prop: 'updateTime', name: '添加时间', filter: val => (val ? moment(val).format('YYYY-MM-DD hh:mm:ss') : '-') },
{ prop: 'name', name: '产品名称' }, { prop: 'name', name: '产品名称' },
{ prop: 'code', name: '产品编码' }, { prop: 'code', name: '产品编码' },
{ prop: 'specifications', name: '规格' }, { prop: 'specifications', name: '规格' },
@ -151,8 +152,8 @@ const addOrUpdateConfigs = {
], ],
operations: [ operations: [
{ name: 'reset', url: true }, { name: 'reset', url: true },
{ name: 'save', url: '/monitoring/product', permission: "" }, { name: 'save', url: '/monitoring/product', permission: '' },
{ name: 'update', url: '/monitoring/product', permission: "" } { name: 'update', url: '/monitoring/product', permission: '' }
] ]
// extraComponents: [ // extraComponents: [
// { // {
@ -164,9 +165,9 @@ const addOrUpdateConfigs = {
} }
export default { export default {
mixins: [dictListMixin],
data() { data() {
return { return {
tableConfigs,
tableConfigs, tableConfigs,
dataForm: { dataForm: {
key: '' key: ''
@ -187,6 +188,19 @@ export default {
BaseTable, BaseTable,
BaseDialog BaseDialog
}, },
created() {
this.initDictList([UnitDictTypeId, ProductTypeDictTypeId])
this.addOrUpdateConfigs.fields.forEach(item => {
if (item.name) {
if (item.name === 'typeDictValue') {
console.log('dict : ', this.dictList)
item.options = this.dictList[ProductTypeDictTypeId]
} else if (item.name === 'unitDictValue') {
item.options = this.dictList[UnitDictTypeId]
}
}
})
},
activated() { activated() {
this.getDataList() this.getDataList()
}, },
@ -242,6 +256,15 @@ export default {
this.$refs.addOrUpdate.init(id) this.$refs.addOrUpdate.init(id)
}) })
}, },
//
handleOperations({type, data}) {
switch(type) {
case 'viewAttr': // <== tableConfig
return this.addOrUpdateHandle(data)
case 'delete':
return this.deleteHandle(data)
}
},
// //
deleteHandle(id) { deleteHandle(id) {
var ids = id var ids = id