|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<div class="app-container">
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="18">
|
|
|
+ <el-col :span="18" :class="{edit: menudata}">
|
|
|
<el-card shadow="always" :body-style="{ padding: '20px' }">
|
|
|
<template #header>
|
|
|
<div>
|
|
@@ -194,93 +194,149 @@
|
|
|
<!-- </el-form> -->
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
- <el-col :span="6">
|
|
|
- <el-card shadow="always" :body-style="{ padding: '5px' }">
|
|
|
- <template #header>
|
|
|
- <div>
|
|
|
- <span>菜单编辑</span>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- <el-form
|
|
|
- ref="formData"
|
|
|
- :model="formData"
|
|
|
- label-width="100px"
|
|
|
- :rules="rules"
|
|
|
- >
|
|
|
- <el-form-item label="菜单名称" prop="menuName">
|
|
|
- <el-input v-model="formData.menuName"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="菜单路由" prop="routePath">
|
|
|
- <!-- <el-select v-model="formData.routePath" placeholder="请选择路由">
|
|
|
- <el-option label="区域一" value="shanghai"></el-option>
|
|
|
- <el-option label="区域二" value="beijing"></el-option>
|
|
|
- </el-select> -->
|
|
|
- <treeselect
|
|
|
- :append-to-body="true"
|
|
|
- v-model="formData.routePath"
|
|
|
- :options="menus"
|
|
|
- :normalizer="normalizer"
|
|
|
- @change="treeSelectChange"
|
|
|
- :show-count="true"
|
|
|
- placeholder="请选择父级路由"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="是否显示列表" v-if="false">
|
|
|
- <el-switch v-model="formData.isShowList"></el-switch>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="时间格式" prop="timeFormate">
|
|
|
- <el-select
|
|
|
- v-model="formData.timeFormate"
|
|
|
- placeholder="请选择时间格式"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="val in dict.type.sys_time_format"
|
|
|
- :key="val.value"
|
|
|
- :label="val.label"
|
|
|
- :value="val.value"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="表格主键" prop="primaryKey">
|
|
|
- <el-select
|
|
|
- v-model="formData.primaryKey"
|
|
|
- placeholder="请选择表格主键"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="val in primaryKeyList"
|
|
|
- :key="val.fieldName"
|
|
|
- :label="val.fieldDescription"
|
|
|
- :value="val.fieldName"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="排序依赖字段">
|
|
|
- <el-select
|
|
|
- v-model="formData.orderByColumn"
|
|
|
- placeholder="请选择排序依赖"
|
|
|
+ <el-col :span="6" :class="{menudata: menudata}">
|
|
|
+ <el-tabs v-model="activeName" @tab-click="tabhandleClick">
|
|
|
+ <el-tab-pane label="菜单编辑" name="menuedit">
|
|
|
+ <el-card shadow="always" :body-style="{ padding: '10px' }">
|
|
|
+ <!-- <template #header>
|
|
|
+ <div>
|
|
|
+ <span>菜单编辑</span>
|
|
|
+ </div>
|
|
|
+ </template> -->
|
|
|
+ <el-form
|
|
|
+ ref="formData"
|
|
|
+ :model="formData"
|
|
|
+ label-width="100px"
|
|
|
+ :rules="rules"
|
|
|
>
|
|
|
- <el-option
|
|
|
- v-for="val in orderByFieldList"
|
|
|
- :key="val.fieldName"
|
|
|
- :label="val.fieldDescription"
|
|
|
- :value="val.tableName + '.' + val.fieldName"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="排序方式" v-show="formData.orderByColumn">
|
|
|
- <el-radio v-model="formData.isAsc" label="ASC">升序</el-radio>
|
|
|
- <el-radio v-model="formData.isAsc" label="DESC">降序</el-radio>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-button size="mini" @click="previewHandle">预览</el-button>
|
|
|
- <el-button size="mini" type="primary" @click="createHandle">{{
|
|
|
- tId ? "确认修改" : "确认创建"
|
|
|
- }}</el-button>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </el-card>
|
|
|
+ <el-form-item label="菜单名称" prop="menuName">
|
|
|
+ <el-input v-model="formData.menuName"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="菜单路由" prop="routePath">
|
|
|
+ <!-- <el-select v-model="formData.routePath" placeholder="请选择路由">
|
|
|
+ <el-option label="区域一" value="shanghai"></el-option>
|
|
|
+ <el-option label="区域二" value="beijing"></el-option>
|
|
|
+ </el-select> -->
|
|
|
+ <treeselect
|
|
|
+ :append-to-body="true"
|
|
|
+ v-model="formData.routePath"
|
|
|
+ :options="menus"
|
|
|
+ :normalizer="normalizer"
|
|
|
+ @change="treeSelectChange"
|
|
|
+ :show-count="true"
|
|
|
+ placeholder="请选择父级路由"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="是否显示列表" v-if="false">
|
|
|
+ <el-switch v-model="formData.isShowList"></el-switch>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="时间格式" prop="timeFormate">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.timeFormate"
|
|
|
+ placeholder="请选择时间格式"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="val in dict.type.sys_time_format"
|
|
|
+ :key="val.value"
|
|
|
+ :label="val.label"
|
|
|
+ :value="val.value"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="表格主键" prop="primaryKey">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.primaryKey"
|
|
|
+ placeholder="请选择表格主键"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="val in primaryKeyList"
|
|
|
+ :key="val.fieldName"
|
|
|
+ :label="val.fieldDescription"
|
|
|
+ :value="val.fieldName"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="排序依赖字段">
|
|
|
+ <el-select
|
|
|
+ v-model="formData.orderByColumn"
|
|
|
+ placeholder="请选择排序依赖"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="val in orderByFieldList"
|
|
|
+ :key="val.fieldName"
|
|
|
+ :label="val.fieldDescription"
|
|
|
+ :value="val.tableName + '.' + val.fieldName"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="排序方式" v-show="formData.orderByColumn">
|
|
|
+ <el-radio v-model="formData.isAsc" label="ASC">升序</el-radio>
|
|
|
+ <el-radio v-model="formData.isAsc" label="DESC">降序</el-radio>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button size="mini" @click="previewHandle">预览</el-button>
|
|
|
+ <el-button size="mini" type="primary" @click="createHandle">{{
|
|
|
+ tId ? "确认修改" : "确认创建"
|
|
|
+ }}</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-card>
|
|
|
+ </el-tab-pane>
|
|
|
+ <el-tab-pane label="数据统计" name="datacount">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ class="inline-large-button"
|
|
|
+ icon="el-icon-plus"
|
|
|
+ size="mini"
|
|
|
+ @click="isShowAddData = true"
|
|
|
+ >
|
|
|
+ 添加数据字段
|
|
|
+ </el-button>
|
|
|
+
|
|
|
+ <el-button size="mini" type="primary" @click=countHandle>确定统计</el-button>
|
|
|
+
|
|
|
+ <el-table
|
|
|
+ :data="datacountTable"
|
|
|
+ border
|
|
|
+ class="mb10"
|
|
|
+ style="width: 100%">
|
|
|
+ <el-table-column
|
|
|
+ prop="number"
|
|
|
+ label="序号"
|
|
|
+ width="50">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="datafield"
|
|
|
+ label="数据字段"
|
|
|
+ width="80">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="type"
|
|
|
+ label="类型"
|
|
|
+ width="50">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="statuscode"
|
|
|
+ label="状态码"
|
|
|
+ width="70">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="title"
|
|
|
+ label="标题"
|
|
|
+ width="83">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="description"
|
|
|
+ label="描述"
|
|
|
+ width="150">
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ </el-tab-pane>
|
|
|
+ </el-tabs>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
+
|
|
|
<el-dialog title="效果预览" :visible.sync="isShowPreview" width="50%">
|
|
|
<el-row :gutter="10" class="mb8">
|
|
|
<el-col :span="18">
|
|
@@ -435,6 +491,59 @@
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
+ <!-- 添加数据统计对话框 -->
|
|
|
+ <el-dialog
|
|
|
+ title="添加统计数据字段"
|
|
|
+ :visible.sync="isShowAddData"
|
|
|
+ width="30%">
|
|
|
+
|
|
|
+ <el-form
|
|
|
+ label-width="100px"
|
|
|
+ :model="dataCountFormData">
|
|
|
+ <el-form-item label="数据字段">
|
|
|
+ <el-select
|
|
|
+ v-model="dataCountFormData.datafield"
|
|
|
+ placeholder="请选择数据字段">
|
|
|
+ <el-option
|
|
|
+ v-for="item in dataArr"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.fieldName"
|
|
|
+ :value="item.fieldName">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="类型">
|
|
|
+ <el-select
|
|
|
+ v-model="dataCountFormData.type"
|
|
|
+ placeholder="请选择类型">
|
|
|
+ <el-option label="数量" value="num"></el-option>
|
|
|
+ <el-option label="状态" value="status"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="状态码" v-show="dataCountFormData.type === 'status' ">
|
|
|
+ <el-select
|
|
|
+ v-model="dataCountFormData.statuscode"
|
|
|
+ placeholder="请选择状态码">
|
|
|
+ <el-option label="已完成" value="1"></el-option>
|
|
|
+ <el-option label="未完成" value="0"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="标题" prop="title">
|
|
|
+ <el-input v-model="dataCountFormData.title"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item label="描述" prop="description">
|
|
|
+ <el-input v-model="dataCountFormData.description"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="closeAddDialog">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="addData">确 定</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -591,9 +700,23 @@ export default {
|
|
|
tableDataList: [], //数据
|
|
|
editData: {},
|
|
|
menuOrderNum: 0,
|
|
|
+ // tab动态切换
|
|
|
+ activeName: 'menuedit',
|
|
|
+ // 数据统计对象
|
|
|
+ dataCountFormData: {},
|
|
|
+ // 数据统计表格
|
|
|
+ datacountTable: [],
|
|
|
+ // 是否切换到数据统计
|
|
|
+ menudata: false,
|
|
|
+ // 显示添加字段对话框
|
|
|
+ isShowAddData: false
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
+ // 数据字段
|
|
|
+ dataArr(){
|
|
|
+ return this.tableFieldList.filter(item => item.isShow)
|
|
|
+ },
|
|
|
...mapState({
|
|
|
databaseName: (state) => state.user.dataSource.databaseName,
|
|
|
databaseType: (state) => state.user.dataSource.databaseType,
|
|
@@ -1383,6 +1506,36 @@ export default {
|
|
|
}
|
|
|
return res;
|
|
|
},
|
|
|
+ // tab切换
|
|
|
+ tabhandleClick() {
|
|
|
+ this.menudata = this.activeName === 'datacount' ? true : false;
|
|
|
+ },
|
|
|
+ // 添加数据字段
|
|
|
+ addData(){
|
|
|
+ this.dataCountFormData.number = this.datacountTable.length + 1
|
|
|
+ console.log(this.dataCountFormData)
|
|
|
+ this.dataCountFormData.type = this.dataCountFormData.type == 'num' ? '数量' : '状态'
|
|
|
+ if(this.dataCountFormData.type == 'status'){
|
|
|
+ this.dataCountFormData.statuscode = this.dataCountFormData.type == '1' ? '已完成' : '未完成'
|
|
|
+ }
|
|
|
+
|
|
|
+ this.datacountTable.push(this.dataCountFormData)
|
|
|
+ this.isShowAddData = false
|
|
|
+ this.dataCountFormData = {}
|
|
|
+ },
|
|
|
+ // 关闭添加数据字段
|
|
|
+ closeAddDialog(){
|
|
|
+ this.isShowAddData = false
|
|
|
+ this.dataCountFormData = {}
|
|
|
+ },
|
|
|
+ // 确定统计
|
|
|
+ countHandle(){
|
|
|
+ if(this.datacountTable.length == 0){
|
|
|
+ this.$message.warning("请确定统计数据字段");
|
|
|
+ return
|
|
|
+ }
|
|
|
+ console.log('确定统计');
|
|
|
+ }
|
|
|
},
|
|
|
created() {},
|
|
|
async mounted() {
|
|
@@ -1404,4 +1557,14 @@ export default {
|
|
|
::v-deep .vue-treeselect--has-value .vue-treeselect__input {
|
|
|
vertical-align: middle !important;
|
|
|
}
|
|
|
+.menudata{
|
|
|
+ width: 30% !important;
|
|
|
+}
|
|
|
+.edit{
|
|
|
+ width: 70% !important;
|
|
|
+}
|
|
|
+.mb10{
|
|
|
+ margin-top: 10px;
|
|
|
+}
|
|
|
+
|
|
|
</style>
|