This commit is contained in:
lb 2022-08-09 10:39:33 +08:00
parent 0733660c2f
commit 2557026002
2 changed files with 92 additions and 15 deletions

View File

@ -1,11 +1,48 @@
<template> <template>
<el-dialog :title="isDetail ? title.detail : !dataForm.id ? title.add : title.edit" :visible.sync="visible" @close="handleClose"> <el-dialog :title="isDetail ? title.detail : !dataForm.id ? title.add : title.edit" :visible.sync="visible" @close="handleClose">
<el-form> <el-form :model="dataForm" :rules="dataFormRules">
<!-- 如果需要更精细一点的布局可以根据配置项实现地再复杂一点但此处暂时全部采用一行两列布局 --> <!-- 如果需要更精细一点的布局可以根据配置项实现地再复杂一点但此处暂时全部采用一行两列布局 -->
<el-row v-for="n in rows" :key="n" :gutter="20">
<el-col v-for="c in COLUMN_PER_ROW" :key="`${n}+'col'+${c}`" :span="24 / COLUMN_PER_ROW">
<!-- <el-form-item
v-for="field in configs.fields"
:key="field.name || field"
:prop="field.name || field"
:label="field.label || field.name | nameFilter || field | nameFilter"
> -->
<!-- <el-form-item
:prop="
typeof configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)] === 'string'
? configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)]
: configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].type
"
:key="`${n}-col-${c}-item`"
:label="
`
${configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].label ||
(configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].name && defaultNames[configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)].name]) ||
defaultNames[configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)]]}
`
"
> -->
<el-form-item :prop="`${n}-test-${c}`" :key="`${n}-col-${c}-item`" :label="'f'">
{{ n - c - JSON.stringify(configs.fields[(n - 1) * COLUMN_PER_ROW + (c - 1)]) }}
<!-- 暂时先不实现部分输入方式 -->
<!-- <el-input></el-input>
<el-radio></el-radio>
<el-checkbox></el-checkbox>
<el-select></el-select>
<el-switch></el-switch>
<el-cascader></el-cascader>
<el-time-select></el-time-select>
<el-date-picker></el-date-picker> -->
</el-form-item>
</el-col>
</el-row>
<!-- extra components , like Markdown or RichEdit --> <!-- extra components , like Markdown or RichEdit -->
<template v-if="extraComponents.length > 0"> <template v-if="configs.extraComponents && configs.extraComponents.length > 0">
<el-form-item v-for="ec in extraComponents" :key="ec.name" :label="ec.label"> <el-form-item v-for="ec in configs.extraComponents" :key="ec.name" :label="ec.label">
<component :is="ec.component" v-model="dataForm[ec.name]"></component> <component :is="ec.component" v-model="dataForm[ec.name]"></component>
</el-form-item> </el-form-item>
</template> </template>
@ -61,8 +98,24 @@ export default {
default: () => ({}) // 使 default: () => ({}) // 使
} }
}, },
filters: {
nameFilter: function(name) {
if (!name) return null
// for i18n
const defaultNames = {
name: '名称',
code: '编码',
remark: '备注',
specifications: '规格'
// add more...
}
return defaultNames[name]
}
},
data() { data() {
return { return {
COLUMN_PER_ROW,
title, title,
btnName, btnName,
btnType, btnType,
@ -71,8 +124,15 @@ export default {
isDetail: false, isDetail: false,
// cached: false // updated dataForm confirm emit(refreshDataList) // cached: false // updated dataForm confirm emit(refreshDataList)
isUpdated: false, isUpdated: false,
dataForm: null, dataForm: {},
dataFormRules: {} dataFormRules: {},
defaultNames: {
name: '名称',
code: '编码',
remark: '备注',
specifications: '规格'
// add more...
}
} }
}, },
computed: { computed: {
@ -88,9 +148,9 @@ export default {
if (typeof item === 'string') { if (typeof item === 'string') {
this.$set(this.dataForm, [item], '') this.$set(this.dataForm, [item], '')
} else if (typeof item === 'object') { } else if (typeof item === 'object') {
this.$set(this.dataForm, [item.name], '')
if (item.api) { if (item.api) {
/** 自动请求并填充 */ /** 自动请求并填充 */
this.$set(this.dataForm, [item.name], '')
this.$http({ this.$http({
url: this.$http.adornUrl(item.api), url: this.$http.adornUrl(item.api),
methods: 'get' methods: 'get'
@ -137,10 +197,14 @@ export default {
}) })
/** 检查是否需要额外的组件 */ /** 检查是否需要额外的组件 */
this.configs.extraComponents &&
this.configs.extraComponents.forEach(item => { this.configs.extraComponents.forEach(item => {
this.$set(this.dataForm, [item.name], '') this.$set(this.dataForm, [item.name], '')
}) })
/** 单独设置 id */
this.$set(this.dataForm, 'id', null)
// TODOdelete next lines // TODOdelete next lines
console.log('dataform: ', this.dataForm) console.log('dataform: ', this.dataForm)
console.log('rules: ', this.dataFormRules) console.log('rules: ', this.dataFormRules)

View File

@ -6,6 +6,7 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="getDataList()">查询</el-button> <el-button @click="getDataList()">查询</el-button>
<el-button @click="test()">测试</el-button>
<el-button v-if="$hasPermission('monitoring:product:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button> <el-button v-if="$hasPermission('monitoring:product:save')" type="primary" @click="addOrUpdateHandle()">新增</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -52,6 +53,8 @@
></el-pagination> ></el-pagination>
<!-- 弹窗, 新增 / 修改 --> <!-- 弹窗, 新增 / 修改 -->
<add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update> <add-or-update v-if="addOrUpdateVisible" ref="addOrUpdate" @refreshDataList="getDataList"></add-or-update>
<base-dialog v-if="showbasedialog" ref="basedialog" :configs="addOrUpdateConfigs"></base-dialog>
</div> </div>
</template> </template>
@ -60,7 +63,7 @@ import AddOrUpdate from './product-add-or-update'
import BaseTable from '@/components/base-table' import BaseTable from '@/components/base-table'
import TableOperateComponent from '@/components/base-table/components/operationComponent' import TableOperateComponent from '@/components/base-table/components/operationComponent'
import TableTextComponent from '@/components/base-table/components/detailComponent' import TableTextComponent from '@/components/base-table/components/detailComponent'
import BaseDialog from '@/components/base-dialog/addOrUpdate'
const tableConfigs = [ const tableConfigs = [
{ type: 'index', name: '序号' }, { type: 'index', name: '序号' },
{ prop: 'updateTime', name: '添加时间' }, { prop: 'updateTime', name: '添加时间' },
@ -135,10 +138,10 @@ const addOrUpdateConfigs = {
} }
], ],
operations: [ operations: [
{ name: 'reset', url: true },
{ name: 'save', url: 'api/product/add' }, { name: 'save', url: 'api/product/add' },
{ name: 'update', url: 'api/product/update' }, { name: 'update', url: 'api/product/update' }
{ name: 'reset', url: true } ]
],
// extraComponents: [ // extraComponents: [
// { // {
// name: 'CompName', // name: 'CompName',
@ -162,17 +165,27 @@ export default {
totalPage: 0, totalPage: 0,
dataListLoading: false, dataListLoading: false,
dataListSelections: [], dataListSelections: [],
addOrUpdateVisible: false addOrUpdateVisible: false,
addOrUpdateConfigs,
showbasedialog: false
} }
}, },
components: { components: {
AddOrUpdate, AddOrUpdate,
BaseTable BaseTable,
BaseDialog
}, },
activated() { activated() {
this.getDataList() this.getDataList()
}, },
methods: { methods: {
//
test() {
this.showbasedialog = true
this.$nextTick(() => {
this.$refs.basedialog.init()
})
},
// //
getDataList() { getDataList() {
this.dataListLoading = true this.dataListLoading = true