定制方案小程序完成

This commit is contained in:
aixianling
2022-07-14 10:11:17 +08:00
parent 7ee49a5367
commit baccd4505b
2 changed files with 75 additions and 11 deletions

View File

@@ -48,7 +48,8 @@ export default {
searchKey: {default: "name"}, searchKey: {default: "name"},
multiple: Boolean, multiple: Boolean,
disabled: Boolean, disabled: Boolean,
meta: {default: () => []} meta: {default: () => []},
choose: {default: null}
}, },
data() { data() {
return { return {
@@ -65,7 +66,9 @@ export default {
] ]
}, },
selected() { selected() {
return [this.value].flat().filter(e => !!e) || [] const {choose, value, nodeKey} = this,
list = [choose].flat().map(e => e?.[nodeKey])
return [...new Set([value, list].flat())].filter(Boolean) || []
} }
}, },
watch: { watch: {
@@ -103,15 +106,21 @@ export default {
handleCheck(row) { handleCheck(row) {
const {nodeKey} = this const {nodeKey} = this
if (this.multiple) { if (this.multiple) {
let selected = this.$copy(this.selected) let selected = this.$copy(this.selected),
choose = this.$copy(this.choose)
if (row.checked) { if (row.checked) {
selected.push(row[nodeKey]) selected.push(row[nodeKey])
choose.push(row)
} else { } else {
selected = selected.filter(e => e != row[nodeKey]) selected = selected.filter(e => e != row[nodeKey])
choose = choose.filter(e => e[nodeKey] != row[nodeKey])
} }
this.$emit("change", selected) this.$emit("change", selected)
this.$emit("update:choose", choose)
} else { } else {
this.tableData.map(e => e.checked = e[nodeKey] == row.id && row.checked)
this.$emit("change", row.checked ? row[nodeKey] : '') this.$emit("change", row.checked ? row[nodeKey] : '')
this.$emit("update:choose", row.checked ? row : null)
} }
}, },
handleCheckAll(v) { handleCheckAll(v) {
@@ -119,8 +128,9 @@ export default {
let selected = this.tableData.map(e => { let selected = this.tableData.map(e => {
e.checked = v e.checked = v
return e return e
}).filter(e => e.checked)?.map(e => e[nodeKey]) || [] }).filter(e => e.checked) || []
this.$emit("change", selected) this.$emit("change", selected?.map(e => e[nodeKey]))
this.$emit("update:choose", selected)
} }
}, },
created() { created() {

View File

@@ -14,7 +14,7 @@
<el-row type="flex"> <el-row type="flex">
<div class="fill"> <div class="fill">
<el-form-item label="系统类型" prop="type"> <el-form-item label="系统类型" prop="type">
<ai-select v-model="form.type" :selectList="dict.getDict('systemType')"/> <ai-select v-model="form.type" :selectList="dict.getDict('systemType')" @change="form.apps = [],handleSysTypeChange(form.type)"/>
</el-form-item> </el-form-item>
<el-form-item label="更新项目路径" prop="dist"> <el-form-item label="更新项目路径" prop="dist">
<el-input v-model="form.dist" placeholder="常填写nginx路径,下载包从这里取" clearable/> <el-input v-model="form.dist" placeholder="常填写nginx路径,下载包从这里取" clearable/>
@@ -40,9 +40,16 @@
</ai-card> </ai-card>
<ai-card title="扩展设置"> <ai-card title="扩展设置">
<template #content> <template #content>
<el-form-item label="主包应用设置" prop="extra"> <template v-if="form.type=='mp'">
<ai-title title="底部导航栏">
</el-form-item> <template #rightBtn>
<ai-dialog-btn text="更换定制页" dialogTitle="选择应用">
<ai-lib-table :meta="appList" :choose.sync="customTabbar" :isShowPagination="false" v-bind="$props"/>
</ai-dialog-btn>
</template>
</ai-title>
<ai-table :tableData="tabBar.list" :colConfigs="colConfigs" tableSize="mini" :isShowPagination="false" border/>
</template>
</template> </template>
</ai-card> </ai-card>
</el-form> </el-form>
@@ -84,17 +91,48 @@ export default {
} else e.project = "standard" } else e.project = "standard"
return e return e
}) })
},
tabBar: v => ({
color: "#666666",
selectedColor: "#197DF0",
backgroundColor: "#ffffff",
list: [
{pagePath: "pages/home/home", text: "首页", iconPath: "TabBar/home.png", selectedIconPath: "TabBar/home_selected.png"},
{pagePath: "pages/service/service", text: "应用", iconPath: "TabBar/service.png", selectedIconPath: "TabBar/service_selected.png"},
v.form.customTabbar,
{pagePath: "pages/mine/my", text: "我的", iconPath: "TabBar/me.png", selectedIconPath: "TabBar/me_selected.png"}
]
}),
customTabbar: {
set({name, id, label}) {
this.form.customTabbar = {
id,
pagePath: `pages/${name}/${name}`,
text: label,
iconPath: `TabBar/custom.png`,
selectedIconPath: `TabBar/custom_selected.png`
}
},
get() {
const {id} = this.form.customTabbar
return {id}
}
} }
}, },
data() { data() {
return { return {
form: {apps: []}, form: {apps: [], type: null},
rules: { rules: {
name: {required: true, message: "请输入"}, name: {required: true, message: "请输入"},
type: {required: true, message: "请选择"}, type: {required: true, message: "请选择"},
customPath: {required: true, message: "请输入"}, customPath: {required: true, message: "请输入"},
extra: {required: true, message: "请设置主页配置"},
}, },
colConfigs: [
{prop: 'text', label: "名称"},
{prop: 'pagePath', label: "应用路径"},
{prop: 'iconPath', label: "默认图标"},
{prop: 'selectedIconPath', label: "选中图标"},
]
} }
}, },
methods: { methods: {
@@ -105,6 +143,7 @@ export default {
}).then(res => { }).then(res => {
if (res?.data) { if (res?.data) {
this.form = res.data this.form = res.data
this.handleSysTypeChange(this.form.type, this.form.extra)
} }
}) })
}, },
@@ -114,6 +153,10 @@ export default {
submit() { submit() {
this.$refs.AddForm.validate(v => { this.$refs.AddForm.validate(v => {
if (v) { if (v) {
const {tabBar, form: {type}} = this
if (type == 'mp') {
this.form.extra = {tabBar}
}
this.instance.post("/node/custom/addOrUpdate", this.form).then(res => { this.instance.post("/node/custom/addOrUpdate", this.form).then(res => {
if (res?.code == 0) { if (res?.code == 0) {
this.$message.success("提交成功!") this.$message.success("提交成功!")
@@ -123,6 +166,17 @@ export default {
} }
}) })
}, },
handleSysTypeChange(v, data) {
if (v == 'mp') {
const {tabBar: {list}} = data
this.$set(this.form, 'customTabbar', list?.[2] || {
pagePath: "pages/enteringVillage/enteringVillage",
text: "进村",
iconPath: "TabBar/village.png",
selectedIconPath: "TabBar/village_selected.png"
})
}
}
}, },
created() { created() {
this.getDetail() this.getDetail()