|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<div class="app-container">
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="18" :class="{edit: menudata}">
|
|
|
+ <el-col :span="18" :class="{ edit: menudata }">
|
|
|
<el-card shadow="always" :body-style="{ padding: '20px' }">
|
|
|
<template #header>
|
|
|
<div>
|
|
@@ -63,7 +63,18 @@
|
|
|
<el-table-column prop="fieldDescription" label="字段描述">
|
|
|
<template slot-scope="scope">
|
|
|
<!-- <el-form-item size="normal" prop="fieldDescription"> -->
|
|
|
- <input :class="{isNullDesc : scope.row.fieldDescription == ''&& scope.row.isShow && isInputInvalid ? true : false, ipt:true}" v-model="scope.row.fieldDescription" />
|
|
|
+ <input
|
|
|
+ :class="{
|
|
|
+ isNullDesc:
|
|
|
+ scope.row.fieldDescription == '' &&
|
|
|
+ scope.row.isShow &&
|
|
|
+ isInputInvalid
|
|
|
+ ? true
|
|
|
+ : false,
|
|
|
+ ipt: true,
|
|
|
+ }"
|
|
|
+ v-model="scope.row.fieldDescription"
|
|
|
+ />
|
|
|
|
|
|
<!-- <el-input v-model="scope.row.fieldDescription" /> -->
|
|
|
<!-- </el-form-item> -->
|
|
@@ -201,7 +212,7 @@
|
|
|
<!-- </el-form> -->
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
- <el-col :span="6" :class="{menudata: menudata}">
|
|
|
+ <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' }">
|
|
@@ -277,8 +288,12 @@
|
|
|
</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-radio v-model="formData.isAsc" :label="false"
|
|
|
+ >升序</el-radio
|
|
|
+ >
|
|
|
+ <el-radio v-model="formData.isAsc" :label="true"
|
|
|
+ >降序</el-radio
|
|
|
+ >
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
<el-button size="mini" @click="previewHandle">预览</el-button>
|
|
@@ -299,36 +314,45 @@
|
|
|
>
|
|
|
添加数据字段
|
|
|
</el-button>
|
|
|
-
|
|
|
- <el-button size="mini" type="primary" @click=countHandle>确定统计</el-button>
|
|
|
-
|
|
|
+
|
|
|
+ <el-button size="mini" type="primary" @click="countHandle"
|
|
|
+ >确定统计</el-button
|
|
|
+ >
|
|
|
+
|
|
|
<el-table
|
|
|
:data="dragTableStatisticList"
|
|
|
border
|
|
|
class="mb10"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <!-- <el-table-column prop="number" label="序号" width="50"> -->
|
|
|
style="width: 100%">
|
|
|
<el-table-column
|
|
|
type="index"
|
|
|
label="序号"
|
|
|
width="50"
|
|
|
class-name="allowDrag"
|
|
|
- >
|
|
|
+ >
|
|
|
</el-table-column>
|
|
|
+ <!-- <el-table-column prop="datafield" label="数据字段" width="80"> -->
|
|
|
<el-table-column
|
|
|
prop="statisticTitle"
|
|
|
label="统计标题"
|
|
|
- width="83">
|
|
|
+ width="83"
|
|
|
+ >
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
prop="statisticField"
|
|
|
label="统计数据"
|
|
|
- width="80">
|
|
|
+ width="80"
|
|
|
+ >
|
|
|
</el-table-column>
|
|
|
- <el-table-column
|
|
|
- prop="statisticType"
|
|
|
- label="统计类型"
|
|
|
- width="50">
|
|
|
+ <!-- <el-table-column prop="type" label="类型" width="50"> -->
|
|
|
+ <el-table-column prop="statisticType" 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
|
|
|
prop="statuscode"
|
|
|
label="状态码"
|
|
@@ -337,15 +361,17 @@
|
|
|
<el-table-column
|
|
|
prop="statisticDescription"
|
|
|
label="统计描述"
|
|
|
- width="150">
|
|
|
+ width="150"
|
|
|
+ >
|
|
|
</el-table-column>
|
|
|
+ <!-- <el-table-column prop="description" label="描述" width="150"> -->
|
|
|
<el-table-column
|
|
|
prop="statisticObject"
|
|
|
label="统计对象"
|
|
|
- width="150">
|
|
|
+ width="150"
|
|
|
+ >
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
-
|
|
|
</el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</el-col>
|
|
@@ -510,36 +536,70 @@
|
|
|
<el-dialog
|
|
|
title="添加统计数据字段"
|
|
|
:visible.sync="isShowAddData"
|
|
|
- width="30%">
|
|
|
+ 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>
|
|
|
+ width="30%"> -->
|
|
|
|
|
|
- <el-form
|
|
|
- label-width="100px"
|
|
|
- :model="dataCountFormData">
|
|
|
+ <el-form label-width="100px" :model="dataCountFormData">
|
|
|
<el-form-item label="统计标题" prop="statisticTitle">
|
|
|
<el-input v-model="dataCountFormData.statisticTitle"></el-input>
|
|
|
</el-form-item>
|
|
|
|
|
|
<el-form-item label="统计数据">
|
|
|
- <el-select
|
|
|
- v-model="dataCountFormData.statisticField"
|
|
|
- placeholder="请选择统计字段">
|
|
|
- <el-option
|
|
|
- v-for="item in dataArr"
|
|
|
- :key="item.id"
|
|
|
- :label="item.fieldName"
|
|
|
- :value="item.fieldName">
|
|
|
+ <el-select
|
|
|
+ v-model="dataCountFormData.statisticField"
|
|
|
+ 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-form-item label="统计类型">
|
|
|
- <el-select
|
|
|
- v-model="dataCountFormData.statisticType"
|
|
|
- placeholder="请选择统计类型">
|
|
|
- <el-option v-for="item in dataType" :key="item.dictCode" :label="item.dictLabel" :value="item.dictLabel"></el-option>
|
|
|
+ <el-select
|
|
|
+ v-model="dataCountFormData.statisticType"
|
|
|
+ placeholder="请选择统计类型"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in dataType"
|
|
|
+ :key="item.dictCode"
|
|
|
+ :label="item.dictLabel"
|
|
|
+ :value="item.dictLabel"
|
|
|
+ ></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-form-item label="状态码" v-show="dataCountFormData.statisticType === 'status' ">
|
|
|
<el-select
|
|
|
v-model="dataCountFormData.statuscode"
|
|
@@ -547,7 +607,8 @@
|
|
|
<el-option label="已完成" value="1"></el-option>
|
|
|
<el-option label="未完成" value="0"></el-option>
|
|
|
</el-select>
|
|
|
- </el-form-item> -->
|
|
|
+ </el-form-item>
|
|
|
+ -->
|
|
|
|
|
|
<el-form-item label="统计描述" prop="statisticDescription">
|
|
|
<el-input v-model="dataCountFormData.statisticDescription"></el-input>
|
|
@@ -686,7 +747,7 @@ export default {
|
|
|
isShowList: true,
|
|
|
timeFormate: "",
|
|
|
orderByColumn: "",
|
|
|
- isAsc: "ASC",
|
|
|
+ isAsc: false,
|
|
|
primaryKey: "",
|
|
|
},
|
|
|
rules: {
|
|
@@ -714,7 +775,7 @@ export default {
|
|
|
pageNum: 1,
|
|
|
pageSize: 10,
|
|
|
orderByColumn: "",
|
|
|
- isAsc: "DESC",
|
|
|
+ isAsc: false,
|
|
|
basicMap: {
|
|
|
sql: "",
|
|
|
},
|
|
@@ -724,7 +785,7 @@ export default {
|
|
|
editData: {},
|
|
|
menuOrderNum: 0,
|
|
|
// tab动态切换
|
|
|
- activeName: 'menuedit',
|
|
|
+ activeName: "menuedit",
|
|
|
// 数据统计对象
|
|
|
dataCountFormData: {},
|
|
|
// 数据统计表格
|
|
@@ -733,13 +794,13 @@ export default {
|
|
|
menudata: false,
|
|
|
// 显示添加字段对话框
|
|
|
isShowAddData: false,
|
|
|
- dataType : [],
|
|
|
+ dataType: [],
|
|
|
};
|
|
|
},
|
|
|
computed: {
|
|
|
// 数据字段
|
|
|
- dataArr(){
|
|
|
- return this.tableFieldList.filter(item => item.isShow)
|
|
|
+ dataArr() {
|
|
|
+ return this.tableFieldList.filter((item) => item.isShow);
|
|
|
},
|
|
|
...mapState({
|
|
|
databaseName: (state) => state.user.dataSource.databaseName,
|
|
@@ -795,7 +856,6 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
methods: {
|
|
|
-
|
|
|
// 字段描述验证规则
|
|
|
// blurval(value){
|
|
|
// this.isInputInvalid = value == '' ? true : false;
|
|
@@ -828,7 +888,7 @@ export default {
|
|
|
console.log(data);
|
|
|
// 获取当前表单结构信息
|
|
|
getListName(data).then((res) => {
|
|
|
- console.log(res)
|
|
|
+ console.log(res);
|
|
|
this.tableFieldList = res.map((item, index) => {
|
|
|
return {
|
|
|
id: this.tableName + "_" + item.fieldName,
|
|
@@ -1311,7 +1371,7 @@ export default {
|
|
|
async createHandle() {
|
|
|
console.log(123);
|
|
|
this.tableKey = uuidv4();
|
|
|
- this.isInputInvalid = true
|
|
|
+ this.isInputInvalid = true;
|
|
|
this.$refs.formData.validate(async (valid) => {
|
|
|
if (valid) {
|
|
|
// 检验表单合法性
|
|
@@ -1447,9 +1507,9 @@ export default {
|
|
|
res = await addDragTable(data);
|
|
|
}
|
|
|
|
|
|
- console.log('res', res);
|
|
|
- if(res.code == 200){
|
|
|
- this.countHandle()
|
|
|
+ console.log("res", res);
|
|
|
+ if (res.code == 200) {
|
|
|
+ this.countHandle();
|
|
|
}
|
|
|
// 关闭当前页面
|
|
|
if (this.tId) {
|
|
@@ -1545,38 +1605,52 @@ export default {
|
|
|
},
|
|
|
// tab切换
|
|
|
tabhandleClick() {
|
|
|
- this.menudata = this.activeName === 'datacount' ? true : false;
|
|
|
+ this.menudata = this.activeName === "datacount" ? true : false;
|
|
|
+ },
|
|
|
+ // 添加数据字段对话框
|
|
|
+ async addDataDialog() {
|
|
|
+ this.isShowAddData = true;
|
|
|
+ this.dataType = await this.getDicts("table_statistic_type");
|
|
|
+ this.dataType = this.dataType.data;
|
|
|
+ // console.log(this.dataType)
|
|
|
},
|
|
|
// 添加数据字段对话框
|
|
|
async addDataDialog() {
|
|
|
- this.isShowAddData = true
|
|
|
- this.dataType = await this.getDicts("table_statistic_type")
|
|
|
- this.dataType = this.dataType.data
|
|
|
+ this.isShowAddData = true;
|
|
|
+ this.dataType = await this.getDicts("table_statistic_type");
|
|
|
+ this.dataType = this.dataType.data;
|
|
|
// console.log(this.dataType)
|
|
|
},
|
|
|
// 添加数据字段
|
|
|
- addData(){
|
|
|
- this.dataCountFormData.tableKey = this.tableKey
|
|
|
- this.dragTableStatisticList.push(this.dataCountFormData)
|
|
|
- console.log(this.dragTableStatisticList)
|
|
|
- this.isShowAddData = false
|
|
|
- this.dataCountFormData = {}
|
|
|
+ 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 = {}
|
|
|
+ closeAddDialog() {
|
|
|
+ this.isShowAddData = false;
|
|
|
+ this.dataCountFormData = {};
|
|
|
},
|
|
|
// 确定统计
|
|
|
- countHandle(){
|
|
|
- if(this.dragTableStatisticList.length == 0){
|
|
|
+ // countHandle() {
|
|
|
+ // if (this.datacountTable.length == 0) {
|
|
|
+ countHandle() {
|
|
|
+ if (this.dragTableStatisticList.length == 0) {
|
|
|
this.$message.warning("请确定统计数据字段");
|
|
|
- return
|
|
|
+ return;
|
|
|
}
|
|
|
- console.log('确定统计');
|
|
|
-
|
|
|
- console.log(this.dragTableStatisticList);
|
|
|
- }
|
|
|
+ console.log("确定统计");
|
|
|
+ },
|
|
|
},
|
|
|
created() {},
|
|
|
async mounted() {
|
|
@@ -1592,7 +1666,7 @@ export default {
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
-.ipt{
|
|
|
+.ipt {
|
|
|
height: 36px;
|
|
|
line-height: 36px;
|
|
|
font-size: 14px;
|
|
@@ -1600,16 +1674,16 @@ export default {
|
|
|
outline: none;
|
|
|
text-align: center;
|
|
|
background-color: #fff;
|
|
|
- border: 1px solid #DCDFE6;
|
|
|
+ border: 1px solid #dcdfe6;
|
|
|
color: #606266;
|
|
|
display: inline-block;
|
|
|
border-radius: 4px;
|
|
|
}
|
|
|
-.isNullDesc{
|
|
|
- border-color: #FF4949 !important;
|
|
|
+.isNullDesc {
|
|
|
+ border-color: #ff4949 !important;
|
|
|
}
|
|
|
|
|
|
-.ipt:focus{
|
|
|
+.ipt:focus {
|
|
|
border-color: #1890ff;
|
|
|
}
|
|
|
::v-deep .right_card {
|
|
@@ -1618,13 +1692,13 @@ export default {
|
|
|
::v-deep .vue-treeselect--has-value .vue-treeselect__input {
|
|
|
vertical-align: middle !important;
|
|
|
}
|
|
|
-.menudata{
|
|
|
+.menudata {
|
|
|
width: 30% !important;
|
|
|
}
|
|
|
-.edit{
|
|
|
+.edit {
|
|
|
width: 70% !important;
|
|
|
}
|
|
|
-.mb10{
|
|
|
+.mb10 {
|
|
|
margin-top: 10px;
|
|
|
}
|
|
|
</style>
|