From 68701c15efe225d38348c0b1c0d65aac98c03889 Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期二, 24 十二月 2024 16:46:56 +0800 Subject: [PATCH] 1.行政区划:(高德,腾讯) 使用elementUI的树型控件 --- pages/district/tengxun/index.vue | 287 ++++++++++++++++++------- pages/district/gaode/index.vue | 315 +++++++++++++++++++--------- 2 files changed, 411 insertions(+), 191 deletions(-) diff --git a/pages/district/gaode/index.vue b/pages/district/gaode/index.vue index 72a241a..c91519e 100644 --- a/pages/district/gaode/index.vue +++ b/pages/district/gaode/index.vue @@ -1,114 +1,217 @@ <template> - <div class="custom-crud-page"> - <el-bus-crud ref="crud" v-bind="crudConfig"></el-bus-crud> - </div> + <div class="custom-crud-page"> + <el-button type="primary" @click="openDialog">新增</el-button> + <el-table :data="data" style="width: 100%" row-key="id" v-loading="loading" + :tree-props="{ children: 'children' }"> + <el-table-column prop="name" label="名称"></el-table-column> + <el-table-column prop="adcode" label="区域编码"></el-table-column> + <el-table-column prop="level" label="行政区划级别"></el-table-column> + <el-table-column prop="citycode" label="城市编码"></el-table-column> + <el-table-column prop="center" label="区域中心点"></el-table-column> + <el-table-column label="操作" width="200"> + <template #default="scope"> + <el-button type="text" size="small" @click="handleAddChildren(scope.row)">新增下级</el-button> + <el-button type="text" size="small" @click="handleEdit(scope.row)">修改</el-button> + <el-button type="text" size="small" @click="handleDelete(scope.row)"><span + style="color: red;">删除</span></el-button> + </template> + </el-table-column> + </el-table> + + <el-dialog :visible.sync="dialogVisible" :title="form.id ? '修改' : '新增'" width="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="150px" class="form-container"> + <el-form-item v-if="form.parentName" label="父级节点:" prop="parentName"> + <el-input v-model="form.parentName" readonly></el-input> + </el-form-item> + <el-form-item label="名称:" prop="name"> + <el-input v-model="form.name" placeholder="请输入名称"></el-input> + </el-form-item> + <el-form-item label="区域编码:" prop="adcode"> + <el-input v-model="form.adcode" placeholder="请输入区域编码"></el-input> + </el-form-item> + <el-form-item label="行政区划级别:" prop="level"> + <el-input v-model="form.level" placeholder="行政区划级别"></el-input> + </el-form-item> + <el-form-item label="层城市编码:" prop="citycode"> + <el-input v-model="form.citycode" placeholder="请输入城市编码"></el-input> + </el-form-item> + <el-form-item label="区域中心点:" prop="center"> + <el-input v-model="form.center" placeholder="请输入区域中心点"></el-input> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="handleSubmit">提交</el-button> + <el-button @click="handleReset">重置</el-button> + </el-form-item> + </el-form> + </el-dialog> + + </div> </template> <script> export default { - data() { - return { - crudConfig: { - url: 'flower/v2/district-gaode/list', - newUrl: 'flower/v2/district-gaode', - viewUrl: 'flower/v2/district-gaode', - viewOnPath: true, - editUrl: 'flower/v2/district-gaode', - editMethodType: 'put', - editOnPath: true, - deleteUrl: 'flower/v2/district-gaode', - deleteMethodType: 'delete', - deleteOnPath: true, - hasPagination: false, - saveQuery: false, - isTree: true, - hasView: false, - hasOperation:true, - hasNew:true, - deleteMessage: () => '此操作将会删除所有子区划, 是否继续?', - beforeOpen(row, isNew) { - if (isNew && row.name) { - row.parentName = row.name - } - if (!isNew) { - row.parentName = '' - } - }, - extraParentKeys: ['parentName'], - tableAttrs: { - rowKey: 'id', - lazy:true, - load: (row, resolve) => { - alert(1) - }, - }, - columns: [ - { label: '名称', prop: 'name' }, - {label: '区域编码',prop: 'adcode',}, - {label: '行政区划级别',prop: 'level',}, - {label: '城市编码',prop: 'citycode',}, - {label: '区域中心点',prop: 'center',}, - ], - form: [ - { - label: '父级节点:', - id: 'parentName', - type: 'input', - readonly: true, - hidden: (row) => !row.parentName, - }, - { - label: '名称:', - id: 'name', - type: 'input', - el: { placeholder: '请输入名称:' }, - rules: { required: true, message: '请输入名称:', trigger: 'blur' }, - }, - { - label: '区域编码:', - id: 'adcode', - type: 'input', - el: { - min: 0, - precision: 0, - controlsPosition: 'right', - placeholder: '请输入区域编码:', + data() { + return { + dialogVisible: false, + loading: false, + data: [], + form: { + parentName: '', + parentId: null, + id: '', + name: '', + adcode: '', + level: '', + citycode: '', + center: '', }, - rules: { required: true, message: '请输入区域编码', trigger: 'blur' }, - }, - { - label: '城市编码', - id: 'citycode', - type: 'input', - el: { - min: 0, - precision: 0, - controlsPosition: 'right', - placeholder: '请输入城市编码:', + rules: { + name: [{ required: true, message: '请输入名称', trigger: 'blur' }], + adcode: [{ required: true, message: '请输入区域编码', trigger: 'blur' }], + // citycode: [{ required: true, message: '请输入城市编码', trigger: 'blur' }], + // center: [{ required: true, message: '请输入区域中心点', trigger: 'blur' }], + // level: [{ required: true, message: '行政区划级别', trigger: 'blur' }], }, - }, - - { - label: '区域中心点', - id: 'center', - type: 'input', - el: { placeholder: '请输入区域中心点' }, - - }, - { - label: '行政区划级别', - id: 'level', - type: 'input', - el: { placeholder: '请输入行政区划级别' }, - }, - ], - }, - } - }, - head() { - return { - title: '高德行政区划管理', - } - }, -} + tableData: [], + }; + }, + mounted() { + this.getData(); + }, + methods: { + + openDialog() { + this.dialogVisible = true; + this.handleReset() + this.form = { + parentName: '', + parentId: null, + id: '', + name: '', + fullname: '', + code: '', + level: null, + } + }, + async getData() { + this.loading = true + const resp = await this.$elBusHttp.request('flower/v2/district-gaode/list', { + params: {}, + }); + if (resp.code === 0) { + console.log(resp.data) + this.data = resp.data + } + this.loading = false + }, + + handleSubmit() { + this.$refs.form.validate(async valid => { + if (valid) { + // Handle form submission logic + console.log('Form data:', this.form); + if (this.form.id) { + + const { code } = await this.$elBusHttp.request( + `flower/v2/district-gaode/${this.form.id}`, + { + method: 'put', + data: this.form, + } + ) + if (code === 0) { + this.$message.success('修改成功') + this.dialogVisible = false + this.getData() + } + } else { + const { code } = await this.$elBusHttp.request( + 'flower/v2/district-gaode', + { + method: 'post', + data: this.form, + } + ) + if (code === 0) { + this.$message.success('新增成功') + this.dialogVisible = false + this.getData() + } + } + + } + }); + }, + handleReset() { + this.$refs.form?.resetFields(); + }, + + handleAddChildren(row) { + this.handleReset() + this.form = { + parentName: row.name, + parentId: row.id, + id: '', + name: '', + fullname: '', + code: '', + level: null, + } + this.dialogVisible = true; + }, + + async handleEdit(row) { + this.form = { ...row }; + console.log(row) + if (row.parentId) { + const resp = await this.$elBusHttp.request(`flower/v2/district-gaode/${row.parentId}`, { + params: {}, + }); + if (resp.code === 0) { + console.log(resp.data) + this.form.parentName = resp.data.name; + } + } + this.dialogVisible = true; + }, + async handleDelete(row) { + try { + await this.$elBusUtil.confirm(`此操作将会删除所有子行政区划, 是否继续?`) + const { code } = await this.$elBusHttp.request( + `flower/v2/district-gaode/${row.id}`, + { + method: 'delete', + } + ) + if (code === 0) { + this.$message.success(`删除成功`) + this.getData() + } else { + return false + } + } catch (error) { + return false + } + + + }, + }, + + head() { + return { + title: '高德行政区划管理', + } + }, +}; </script> + +<style> +.custom-crud-page { + padding: 20px; + background-color: #FFFFFF; +} + +.form-container { + margin-bottom: 20px; +} +</style> \ No newline at end of file diff --git a/pages/district/tengxun/index.vue b/pages/district/tengxun/index.vue index 49fdb26..d382d04 100644 --- a/pages/district/tengxun/index.vue +++ b/pages/district/tengxun/index.vue @@ -1,93 +1,210 @@ <template> - <div class="custom-crud-page"> - <el-bus-crud ref="crud" v-bind="crudConfig"></el-bus-crud> - </div> + <div class="custom-crud-page"> + <el-button type="primary" @click="openDialog">新增</el-button> + <el-table :data="data" style="width: 100%" row-key="id" v-loading="loading" + :tree-props="{ children: 'children' }"> + <el-table-column prop="name" label="名称"></el-table-column> + <el-table-column prop="fullname" label="全称"></el-table-column> + <el-table-column prop="code" label="编码"></el-table-column> + <el-table-column prop="level" label="层级"></el-table-column> + <el-table-column label="操作" width="200"> + <template #default="scope"> + <el-button type="text" size="small" @click="handleAddChildren(scope.row)">新增下级</el-button> + <el-button type="text" size="small" @click="handleEdit(scope.row)">修改</el-button> + <el-button type="text" size="small" @click="handleDelete(scope.row)"><span + style="color: red;">删除</span></el-button> + </template> + </el-table-column> + </el-table> + + <el-dialog :visible.sync="dialogVisible" :title="form.id ? '修改' : '新增'" width="50%"> + <el-form ref="form" :model="form" :rules="rules" label-width="100px" class="form-container"> + <el-form-item v-if="form.parentName" label="父级节点:" prop="parentName"> + <el-input v-model="form.parentName" readonly></el-input> + </el-form-item> + <el-form-item label="名称:" prop="name"> + <el-input v-model="form.name" placeholder="请输入名称:"></el-input> + </el-form-item> + <el-form-item label="全称:" prop="fullname"> + <el-input v-model="form.fullname" placeholder="请输入全称:"></el-input> + </el-form-item> + <el-form-item label="编码:" prop="code"> + <el-input v-model="form.code" placeholder="请输入编码"></el-input> + </el-form-item> + <el-form-item label="层级:" prop="level"> + <el-input-number v-model="form.level" placeholder="请输入层级"></el-input-number> + </el-form-item> + <el-form-item> + <el-button type="primary" @click="handleSubmit">提交</el-button> + <el-button @click="handleReset">重置</el-button> + </el-form-item> + </el-form> + </el-dialog> + + </div> </template> <script> export default { - data() { - return { - crudConfig: { - url: 'flower/v2/district-tengxun/list', - newUrl: 'flower/v2/district-tengxun', - viewUrl: 'flower/v2/district-tengxun', - viewOnPath: true, - editUrl: 'flower/v2/district-tengxun', - editMethodType: 'put', - editOnPath: true, - deleteUrl: 'flower/v2/district-tengxun', - deleteMethodType: 'delete', - deleteOnPath: true, - hasPagination: false, - saveQuery: false, - isTree: true, - hasView: false, - hasOperation:true, - hasNew:true, - deleteMessage: () => '此操作将会删除所有子行政区划, 是否继续?', - beforeOpen(row, isNew) { - if (isNew && row.name) { - row.parentName = row.name - } - if (!isNew) { - row.parentName = '' - } + data() { + return { + dialogVisible: false, + loading: false, + data: [], + form: { + parentName: '', + parentId: null, + id: '', + name: '', + fullname: '', + code: '', + level: null, + }, + rules: { + name: [{ required: true, message: '请输入名称:', trigger: 'blur' }], + fullname: [{ required: true, message: '请输入全称', trigger: 'blur' }], + code: [{ required: true, message: '请输入编码', trigger: 'blur' }], + level: [{ required: true, message: '请输入层级', trigger: 'blur' }], + }, + tableData: [], + }; + }, + mounted() { + this.getData(); + }, + methods: { + + openDialog() { + this.dialogVisible = true; + this.handleReset() + this.form = { + parentName: '', + parentId: null, + id: '', + name: '', + fullname: '', + code: '', + level: null, + } }, - extraParentKeys: ['parentName'], - tableAttrs: { - rowKey: 'id', + async getData() { + this.loading = true + const resp = await this.$elBusHttp.request('flower/v2/district-tengxun/list', { + params: {}, + }); + if (resp.code === 0) { + console.log(resp.data) + this.data = resp.data + } + this.loading = false }, - columns: [ - { label: '名称', prop: 'name' }, - {label: '全称',prop: 'fullname',}, - {label: '编码',prop: 'code',}, - {label: '层级',prop: 'level',}, - ], - form: [ - { - label: '父级节点:', - id: 'parentName', - type: 'input', - readonly: true, - hidden: (row) => !row.parentName, - }, - { - label: '名称:', - id: 'name', - type: 'input', - el: { placeholder: '请输入名称:' }, - rules: { required: true, message: '请输入名称:', trigger: 'blur' }, - }, - { - label: '全称', - id: 'fullname', - type: 'input', - el: { placeholder: '请输入全称:' }, - rules: { required: true, message: '请输入全称', trigger: 'blur' }, - }, - { - label: '编码', - id: 'code', - type: 'input', - el: { placeholder: '请输入编码' }, - rules: { required: true, message: '请输入编码', trigger: 'blur' }, - }, - { - label: '层级', - id: 'level', - type: 'input-number', - el: { placeholder: '请输入层级' }, - // rules: {required: true,message: '请输入层级',trigger: 'blur',}, - }, - ], - }, - } - }, - head() { - return { - title: '腾讯行政区划管理', - } - }, -} + + handleSubmit() { + this.$refs.form.validate(async valid => { + if (valid) { + // Handle form submission logic + console.log('Form data:', this.form); + if (this.form.id) { + + const { code } = await this.$elBusHttp.request( + `flower/v2/district-tengxun/${this.form.id}`, + { + method: 'put', + data: this.form, + } + ) + if (code === 0) { + this.$message.success('修改成功') + this.dialogVisible = false + this.getData() + } + } else { + const { code } = await this.$elBusHttp.request( + 'flower/v2/district-tengxun', + { + method: 'post', + data: this.form, + } + ) + if (code === 0) { + this.$message.success('新增成功') + this.dialogVisible = false + this.getData() + } + } + + } + }); + }, + handleReset() { + this.$refs.form?.resetFields(); + }, + + handleAddChildren(row) { + this.handleReset() + this.form = { + parentName: row.name, + parentId: row.id, + id: '', + name: '', + fullname: '', + code: '', + level: null, + } + this.dialogVisible = true; + }, + + async handleEdit(row) { + this.form = { ...row }; + console.log(row) + if (row.parentId) { + const resp = await this.$elBusHttp.request(`flower/v2/district-tengxun/${row.parentId}`, { + params: {}, + }); + if (resp.code === 0) { + console.log(resp.data) + this.form.parentName = resp.data.name; + } + } + this.dialogVisible = true; + }, + async handleDelete(row) { + try { + await this.$elBusUtil.confirm(`此操作将会删除所有子行政区划, 是否继续?`) + const { code } = await this.$elBusHttp.request( + `flower/v2/district-tengxun/${row.id}`, + { + method: 'delete', + } + ) + if (code === 0) { + this.$message.success(`删除成功`) + this.getData() + } else { + return false + } + } catch (error) { + return false + } + + + }, + }, + head() { + return { + title: '腾讯行政区划管理', + } + }, +}; </script> + +<style> +.custom-crud-page { + padding: 20px; + background-color: #FFFFFF; +} + +.form-container { + margin-bottom: 20px; +} +</style> \ No newline at end of file -- Gitblit v1.9.3