update DialogWithMenu & SmallDialog

This commit is contained in:
lb 2023-02-03 13:52:41 +08:00
parent f6c76a83cf
commit 591b60de61
3 changed files with 98 additions and 60 deletions

View File

@ -12,6 +12,18 @@
{{ detailMode ? "查看详情" : dataForm.id ? "编辑" : "新增" }} {{ detailMode ? "查看详情" : dataForm.id ? "编辑" : "新增" }}
</h1> </h1>
</div> </div>
<div class="dialog-body__inner relative">
<el-button
v-if="dataForm.id && !detailMode && /属性/.test(activeMenu)"
plain
type="primary"
size="small"
class="at-right-top"
style="margin-bottom: 16px"
@click="handleAddParam()"
>+ 添加</el-button
>
<!-- menu --> <!-- menu -->
<el-tabs v-model="activeMenu" type="card" @tab-click="handleTabClick"> <el-tabs v-model="activeMenu" type="card" @tab-click="handleTabClick">
<!-- <el-tab-pane v-for="(tab, index) in configs.menu" :key="index" :label="tab.name" :name="tab.name"> --> <!-- <el-tab-pane v-for="(tab, index) in configs.menu" :key="index" :label="tab.name" :name="tab.name"> -->
@ -49,13 +61,12 @@
</el-form> </el-form>
</div> </div>
<div v-if="dataForm.id && index === 1"> <div v-if="dataForm.id && index === 1">
<el-button v-if="!detailMode" type="primary" style="margin-bottom: 16px" @click="handleAddParam()">添加</el-button>
<BaseListTable :table-config="null" :column-config="filteredTableProps" :table-data="subList" @operate-event="handleTableRowOperate" /> <BaseListTable :table-config="null" :column-config="filteredTableProps" :table-data="subList" @operate-event="handleTableRowOperate" />
<!-- paginator --> <!-- paginator -->
</div> </div>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div>
<!-- sub dialog --> <!-- sub dialog -->
<small-dialog <small-dialog
:append-to-body="true" :append-to-body="true"
@ -214,6 +225,9 @@ export default {
if (this.dataForm.id) { if (this.dataForm.id) {
// //
this.loadingStatus = true; this.loadingStatus = true;
//
this.getSubList();
//
this.$http.get(this.urls.base + `/${this.dataForm.id}`).then(({ data: res }) => { this.$http.get(this.urls.base + `/${this.dataForm.id}`).then(({ data: res }) => {
if (res && res.code === 0) { if (res && res.code === 0) {
const dataFormKeys = Object.keys(this.dataForm); const dataFormKeys = Object.keys(this.dataForm);
@ -312,11 +326,11 @@ export default {
} }
}, },
handleTabClick(payload) { handleTabClick(payload) {
console.log("tab click payload: ", this.activeMenu); // console.log("tab click payload: ", this.activeMenu);
if (this.activeMenu === this.configs.menu[1].name) { // if (this.activeMenu === this.configs.menu[1].name) {
// // //
this.getSubList(); // this.getSubList();
} // }
}, },
getSubList(page = 1, size = 20) { getSubList(page = 1, size = 20) {
@ -359,7 +373,7 @@ export default {
}, },
handleClose() { handleClose() {
this.resetForm() this.resetForm();
this.$emit("update:dialogVisible", false); this.$emit("update:dialogVisible", false);
}, },
@ -444,4 +458,15 @@ export default {
padding: 10px 20px 10px; padding: 10px 20px 10px;
/* background: linear-gradient(to bottom, rgba(0, 0, 0, 0.25), white); */ /* background: linear-gradient(to bottom, rgba(0, 0, 0, 0.25), white); */
} }
.relative {
position: relative;
}
.at-right-top {
position: absolute;
top: 0;
right: 0;
z-index: 10000;
}
</style> </style>

View File

@ -7,6 +7,10 @@
:distory-on-close="true" :distory-on-close="true"
:close-on-click-modal="false" :close-on-click-modal="false"
v-bind="$attrs" v-bind="$attrs"
:width="'30%'"
:modal="false"
:fullscreen="false"
:top="'10vh'"
> >
<!-- :append-to-body="appendToBody"> --> <!-- :append-to-body="appendToBody"> -->
<div> <div>
@ -163,9 +167,6 @@ export default {
this.$http this.$http
.get(this.urls.subase + `/${this.dataForm.id}`) .get(this.urls.subase + `/${this.dataForm.id}`)
.then(({ data: res }) => { .then(({ data: res }) => {
// dev env:
// if (LOCAL) res.data.id = res.data._id;
// end dev env
if (res && res.code === 0) { if (res && res.code === 0) {
const dataFormKeys = Object.keys(this.dataForm); const dataFormKeys = Object.keys(this.dataForm);
this.dataForm = __pick(res.data, dataFormKeys); this.dataForm = __pick(res.data, dataFormKeys);
@ -223,3 +224,10 @@ export default {
}, },
}; };
</script> </script>
<style scoped>
.a-small-dialog >>> .el-dialog {
border-radius: 8px;
box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.2);
}
</style>

View File

@ -1,6 +1,8 @@
import TableOperaionComponent from '@/components/noTemplateComponents/operationComponent' import TableOperaionComponent from '@/components/noTemplateComponents/operationComponent'
import TableTextComponent from '@/components/noTemplateComponents/detailComponent' import TableTextComponent from '@/components/noTemplateComponents/detailComponent'
import switchBtn from '@/components/noTemplateComponents/switchBtn' import switchBtn from '@/components/noTemplateComponents/switchBtn'
import { timeFilter } from '@/utils/filters'
export default function () { export default function () {
@ -48,7 +50,7 @@ export default function () {
const dialogConfigs = { const dialogConfigs = {
clickModalToClose: true, clickModalToClose: true,
menu: [{ name: '设备信息' }, { name: '设备属性信息', onlyEditMode: false }], menu: [{ name: '设备信息' }, { name: '设备属性信息', onlyEditMode: true }],
form: { form: {
rows: [ rows: [
[ [
@ -81,12 +83,13 @@ export default function () {
}, },
table: { table: {
// extraParams: ['stepId'], // extraParams: ['stepId'],
extraParams: 'stepId', extraParams: 'equipmentId',
props: [ props: [
{ prop: 'createTime', label: '创建时间' }, { prop: 'createTime', label: '创建时间', filter: timeFilter },
{ prop: 'equipmentId', label: '所属设备id' }, // { prop: 'equipmentId', label: '所属设备id' },
{ prop: 'attrName', label: '属性名称', isEditField: true }, { prop: 'attrName', label: '属性名称', isEditField: true },
{ prop: 'attrValue', label: '属性值', isEditField: true }, { prop: 'attrValue', label: '属性值', isEditField: true },
{ prop: 'remark', label: '备注', isEditField: true },
{ {
prop: 'operations', prop: 'operations',
name: '操作', name: '操作',
@ -108,7 +111,7 @@ export default function () {
extraParam: 'equipmentId', extraParam: 'equipmentId',
rows: [ rows: [
[ [
{ input: true, label: '属性名称', prop: 'attrName', elparams: { placeholder: '请输入属性名称' } }, { input: true, label: '属性名称', prop: 'attrName', rules: { required: true, message: 'not empty', trigger: 'blur' }, elparams: { placeholder: '请输入属性名称' } },
{ input: true, label: '属性值', prop: 'attrValue', rules: { required: true, message: 'not empty', trigger: 'blur' }, elparams: { placeholder: '请输入属性值' } }, { input: true, label: '属性值', prop: 'attrValue', rules: { required: true, message: 'not empty', trigger: 'blur' }, elparams: { placeholder: '请输入属性值' } },
], ],
[ [
@ -116,8 +119,8 @@ export default function () {
] ]
], ],
operations: [ operations: [
{ name: 'add', label: '保存', type: 'primary', permission: 'pms:equipment:save', showOnEdit: false }, { name: 'add', label: '保存', type: 'primary', permission: 'pms:equipmentType:save', showOnEdit: false },
{ name: 'update', label: '更新', type: 'primary', permission: 'pms:equipment:update', showOnEdit: true }, { name: 'update', label: '更新', type: 'primary', permission: 'pms:equipmentType:update', showOnEdit: true },
], ],
}, },
}; };
@ -135,7 +138,9 @@ export default function () {
}, },
urls: { urls: {
base: '/pms/equipment', base: '/pms/equipment',
page: '/pms/equipment/page' page: '/pms/equipment/page',
subase: '/pms/equipmentAttr',
subpage: '/pms/equipmentAttr/page'
} }
} }
} }