suochencheng пре 7 година
родитељ
комит
1f9c81c03f

+ 3 - 1
src/main/resources/templates/ListTemplate.vm

@@ -38,7 +38,9 @@
                 :height="tableHeight"
                 row-key="id"
                 ref="table"
-                size="small">
+                size="small"
+                border
+        >
             <el-table-column label="${model.remark}" align="center" >
             <el-table-column
                     v-if="multipleMode"

+ 16 - 2
src/main/vue/src/pages/CommonQuery.vue

@@ -50,7 +50,7 @@
             <el-form-item>
                 <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
                 <el-button @click="onDelete" v-if="$route.query.id&&isModulesShow('del')" type="danger">删除</el-button>
-                <el-button @click="$router.go(-1)">取消</el-button>
+                <el-button @click="goBackPage">取消</el-button>
             </el-form-item>
         </el-form>
     </div>
@@ -441,7 +441,7 @@ export default {
                     })
                 }).then(() => {
                     this.$message.success('删除成功');
-                    this.$router.go(-1);
+                    this.goBackPage();
                 }).catch(action => {
                     if (action === 'cancel') {
                         this.$message.info('删除取消');
@@ -455,6 +455,20 @@ export default {
             var row = this.modules.find(i => i === column);
             return row ? true : false;
         },
+        goBackPage() {
+            this.$router.push({
+                path: '/commonQuerys',
+                query: {
+                    code: this.$route.query.code,
+                    column: this.$route.query.column,
+                    currentPage: this.$route.query.currentPage,
+                    pageNumber: this.$route.query.pageNumber,
+                    advancedQuery: this.$route.query.advancedQuery,
+                    searchKey: this.$route.query.filter1,
+                    orderByStr: this.$route.query.orderByStr,
+                }
+            })
+        },
     }
 }
 </script>

+ 80 - 11
src/main/vue/src/pages/CommonQuerys.vue

@@ -1,7 +1,7 @@
 <template>
     <div>
         <div class="filters-container">
-
+            <el-button v-if="$route.query.column" @click="goBackPage"> 返回</el-button>
             <el-input v-if="isModulesShow('search')" placeholder="关键字" size="small" v-model="filter1" clearable class="filter-item"></el-input>
 
             <el-button v-if="isModulesShow('search')" @click="getData" type="primary" size="small" icon="el-icon-search" class="filter-item">搜索
@@ -10,7 +10,7 @@
             <el-button v-if="isModulesShow('query')" @click="showAdvancedQueryDialog = !showAdvancedQueryDialog" type="primary" size="small" icon="el-icon-search" class="filter-item">高级查询
             </el-button>
 
-            <el-button v-if="isModulesShow('add')" @click="$router.push({path:'/commonQuery',query:{code:$route.query.code,column:$route.query.column}})" type="primary" size="small" icon="el-icon-edit" class="filter-item">添加
+            <el-button v-if="isModulesShow('add')" @click="addRow" type="primary" size="small" icon="el-icon-edit" class="filter-item">添加
             </el-button>
 
             <el-button v-if="isModulesShow('excel')" @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
@@ -27,7 +27,7 @@
                 </el-dropdown-menu>
             </el-dropdown>
         </div>
-        <el-table :data="tableData" :height="tableHeight" row-key="id" ref="table" @sort-change="changeTableSort">
+        <el-table :data="tableData" :height="tableHeight" row-key="id" ref="table" @sort-change="changeTableSort" border>
             <el-table-column type="index" min-width="50" align="center">
             </el-table-column>
             <template v-for="item in tableColumns" v-if="isColumnShow(item.name)">
@@ -45,13 +45,22 @@
                 <el-table-column v-else sortable="custom" :prop="item.name" :label="item.remark" min-width="100">
                 </el-table-column>
             </template>
-            <el-table-column label="操作" align="center" fixed="right" v-if="isModulesShow('edit')">
+            <el-table-column label="操作" align="center" fixed="right" v-if="isModulesShow('edit')" min-width="240">
                 <template slot-scope="scope">
 
-                    <template v-for="subtable in subtables">
-                        <el-button @click="$router.push({path:'/commonQuerys',query:{code:subtable.subCode,column:scope.row[subtable.column]+','+subtable.subColumn}})" type="primary" size="small" plain>{{subtable.name}}
+                    <el-dropdown>
+                        <el-button type="primary" size="mini" plain>
+                            更多
+                            <i class="el-icon-arrow-down el-icon--right"></i>
                         </el-button>
-                    </template>
+                        <el-dropdown-menu slot="dropdown">
+                            <template v-for="subtable in subtables">
+                                <el-button @click="goSubtable(scope.row,subtable)" type="primary" size="mini" plain>{{subtable.name}}
+                                </el-button>
+                            </template>
+                        </el-dropdown-menu>
+                    </el-dropdown>
+
                     <el-button v-if="isModulesShow('edit')" @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
                     <el-button v-if="isModulesShow('del')" @click="deleteRow(scope.row)" type="danger" size="mini" plain>删除</el-button>
                 </template>
@@ -122,6 +131,9 @@ import zh from 'date-fns/locale/zh_cn'
 
 export default {
     created() {
+
+
+
         this.getTableBase();
     },
     data() {
@@ -166,6 +178,25 @@ export default {
             this.orderByStr = '';
             this.subtables = [];
 
+            this.totalNumber = 0;
+            this.totalPage = 10;
+            this.currentPage = 1;
+            this.pageSize = 20;
+
+
+            if (this.$route.query.currentPage) {
+                this.currentPage = this.$route.query.currentPage;
+                this.pageNumber = this.$route.query.pageNumber;
+            }
+            if (this.$route.query.advancedQuery) {
+                this.advancedQuerySearchKey = this.$route.query.advancedQuery;
+            }
+            if (this.$route.query.searchKey) {
+                this.searchKey = this.$route.query.searchKey;
+            }
+            if (this.$route.query.orderByStr) {
+                this.orderByStr = this.$route.query.orderByStr;
+            }
 
 
             this.$http.get({
@@ -380,6 +411,41 @@ export default {
                     id: row.id || row.ID,
                     code: this.$route.query.code,
                     column: this.$route.query.column,
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    searchKey: this.filter1,
+                    orderByStr: this.orderByStr,
+                }
+            })
+        },
+        goSubtable(row, subtable) {
+            this.$router.push({
+                path: '/commonQuerys',
+                query: {
+                    code: subtable.subCode,
+                    column: row[subtable.column] + ',' + subtable.subColumn,
+                    // fatherCurrentPage: this.currentPage,
+                    // fatherPageNumber: this.pageSize,
+                    // fatherAdvancedQuery: this.advancedQuerySearchKey,
+                    // fatherSearchKey: this.filter1,
+                    // fatherOrderByStr: this.orderByStr,
+                    // fatherCode: this.$route.query.code,
+                    // fatherColumn: this.$route.query.column,
+                }
+            })
+        },
+        addRow() {
+            this.$router.push({
+                path: '/commonQuery',
+                query: {
+                    code: this.$route.query.code,
+                    column: this.$route.query.column,
+                    currentPage: this.currentPage,
+                    pageNumber: this.pageSize,
+                    advancedQuery: this.advancedQuerySearchKey,
+                    searchKey: this.filter1,
+                    orderByStr: this.orderByStr,
                 }
             })
         },
@@ -408,10 +474,13 @@ export default {
         },
 
         exportExcel() {
-             window.location.href = this.$baseUrl + "/commonQuery/exportExcel?advancedQuery="
-                 + this.advancedQuerySearchKey + "&tableName=" + this.tableName + "&databasetype=" + this.databasetype
-                 + "&searchColumn=" + this.searchColumn+ "&searchKey=" + this.filter1+ "&orderByStr=" + this.orderByStr
-                 + "&dataSourceCode=" + this.dataSourceCode;
+            window.location.href = this.$baseUrl + "/commonQuery/exportExcel?advancedQuery="
+                + this.advancedQuerySearchKey + "&tableName=" + this.tableName + "&databasetype=" + this.databasetype
+                + "&searchColumn=" + this.searchColumn + "&searchKey=" + this.filter1 + "&orderByStr=" + this.orderByStr
+                + "&dataSourceCode=" + this.dataSourceCode;
+        },
+        goBackPage() {
+            this.$router.go(-1);
         },
     },
     watch: {

+ 81 - 7
src/main/vue/src/pages/GenCode.vue

@@ -137,6 +137,7 @@
 
                         </el-table>
                         <el-button @click="addField" type="text" icon="el-icon-plus">添加</el-button>
+                        <el-button @click="addFieldFromTableFieldsDialog = !addFieldFromTableFieldsDialog" type="text" icon="el-icon-plus">从表中添加</el-button>
                         <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
                         <el-button-group v-else>
                             <el-button size="small" @click="operation1" type="danger" plain>批量删除</el-button>
@@ -457,13 +458,55 @@
 
         </el-dialog>
 
-        <el-dialog title="调整顺序" :visible.sync="changeRankDialog" >
+        <el-dialog title="调整顺序" :visible.sync="changeRankDialog">
             <div class="colorList">
                 <div class="color-item" v-for="color in fields" v-dragging="{ item: color, list: fields, group: 'color' }" :key="color.name">{{color.name}}——{{color.remark}}</div>
 
             </div>
         </el-dialog>
 
+        <el-dialog title="从表中添加字段" :visible.sync="addFieldFromTableFieldsDialog" width='60%'>
+
+          <el-row  :gutter="20">
+              <el-col :span="12" >
+                    <el-table :data="baseTableFields" border size="small" height='60vh'>
+                        <el-table-column label="基础表" align="center">
+                            <template slot-scope="{ row, column, $index }" >
+                                <el-button v-if="checkInFields(row)" @click="addBaseTableFieldToFields(row)" size="mini" type="text">添加</el-button>
+                             
+                                  <el-button v-else disabled  size="mini" type="text">已添加</el-button>
+                               
+                            </template>
+                            <!-- <template slot-scope="{ row, column, $index }" v-else>
+                                <span>已添加</span>
+                            </template> -->
+                        </el-table-column>
+                        <el-table-column prop="name" label="字段名" min-width="150" align="center">
+                        </el-table-column>
+                        <el-table-column prop="remark" label="描述" min-width="150" align="center">
+                        </el-table-column>
+
+                    </el-table>
+              </el-col>
+              <el-col  :span="12">
+                    <el-table :data="fields" border size="small" height='60vh'>
+                        <el-table-column  label="展示表" align="center">
+                            <template slot-scope="{ row, column, $index }" v-if="$index>1||formData.dataBaseType!='Mysql'">
+                                <!-- <el-button @click="moveUp($index)" size="small" type="text">上移</el-button>
+									<el-button @click="moveDown($index)" size="small" type="text">下移</el-button> -->
+                                <el-button @click="removeField($index)" size="mini" type="text">删除</el-button>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="name" label="字段名" min-width="150" align="center">
+                        </el-table-column>
+                        <el-table-column prop="remark" label="描述" min-width="150" align="center">
+                        </el-table-column>
+
+                    </el-table>
+              </el-col>
+              </el-row>
+        </el-dialog>
+
     </div>
 </template>
 
@@ -498,6 +541,8 @@ export default {
                     this.subtables = this.formData.subtables;
                     this.tableSortFields = this.formData.tableSortFields;
                     this.advancedQueryFields = this.formData.advancedQueryFields;
+
+                    this.getTableFields(this.formData.tableName, false);
                 }
             }).catch(e => this.loading = false)
         }
@@ -704,6 +749,8 @@ export default {
             advancedQueryFields: [],
             multipleMode: false,
             changeRankDialog: false,
+            baseTableFields: [],
+            addFieldFromTableFieldsDialog: false,
         }
     },
     computed: {
@@ -715,9 +762,15 @@ export default {
 
         selection() {
             return this.$refs.fieldsTable.selection.map(i => i.name);
+        },
+        nameList() {
+            var list = []
+            this.fields.forEach(item => {
+                list.push(item.name)
+            })
+            return list
         }
 
-
     },
     mounted() {
         this.$dragging.$on('dragged', ({ value }) => {
@@ -863,7 +916,7 @@ export default {
 
                 this.fields = [];
 
-                this.getTableFields(this.formData.tableName);
+                this.getTableFields(this.formData.tableName, true);
             }
         },
         changeOptionsTableName() {
@@ -872,7 +925,7 @@ export default {
 
             this.getOptionsTableFields(this.selectField.optionsMethod);
         },
-        getTableFields(tableName) {
+        getTableFields(tableName, type) {
             this.$http.get({
                 url: '/genCode/tableFields',
                 data: {
@@ -883,10 +936,17 @@ export default {
             }).then(res => {
                 if (res.success) {
 
-                    this.fields = res.data;
+                    if (type) {
+
+                        this.fields = res.data;
+                        this.baseTableFields = res.data;
+                    } else {
+                        this.baseTableFields = res.data;//基础字段信息
+                    }
                 }
             })
         },
+
         getOptionsTableFields(tableName) {
             this.$http.get({
                 url: '/genCode/tableFields',
@@ -1055,6 +1115,20 @@ export default {
             }
         },
 
+        checkInFields(row) {
+
+            if (this.nameList.indexOf(row.name) == -1) {
+                return true
+            }
+            else {
+                return false
+            }
+        },
+        addBaseTableFieldToFields(row) {
+
+            this.fields.push(row);
+        }
+
 
     }
 }
@@ -1068,11 +1142,11 @@ export default {
     line-height: 42px;
     padding: 0 20px;
     cursor: move;
-    &:last-child{
+    &:last-child {
         border-bottom: none;
     }
 }
-.colorList{
+.colorList {
     border: 1px solid #eee;
     max-height: 60vh;
     overflow: auto;

+ 1 - 1
src/main/vue/src/pages/TestAaas.vue

@@ -26,7 +26,7 @@
                 </el-dropdown-menu>
             </el-dropdown>
         </div>
-        <el-table :data="tableData" :height="tableHeight" row-key="id" ref="table" size="small">
+        <el-table :data="tableData" :height="tableHeight" row-key="id" ref="table" size="small" border>
             <el-table-column label="test_aaa" align="center">
                 <el-table-column v-if="multipleMode" align="center" type="selection" width="50">
                 </el-table-column>