Explorar el Código

生成代码20181108

suochencheng hace 7 años
padre
commit
5f9b4ceaf8

+ 62 - 0
src/main/java/com/izouma/awesomeadmin/model/AdvancedQueryField.java

@@ -0,0 +1,62 @@
+package com.izouma.awesomeadmin.model;
+
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+/**
+ * SortField 实体类
+ * Fri May 04 13:38:24 CST 2018  Suo Chen Cheng
+ */
+@JsonAutoDetect
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AdvancedQueryField {
+
+    private String link;
+    private String name;
+    private String searchMethod;
+    private String value;
+
+    private Boolean noChange;
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSearchMethod() {
+        return searchMethod;
+    }
+
+    public void setSearchMethod(String searchMethod) {
+        this.searchMethod = searchMethod;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public Boolean getNoChange() {
+        return noChange;
+    }
+
+    public void setNoChange(Boolean noChange) {
+        this.noChange = noChange;
+    }
+}
+

+ 10 - 0
src/main/java/com/izouma/awesomeadmin/model/GenCode.java

@@ -111,6 +111,8 @@ public class GenCode {
 
     private List<SortField> tableSortFields;
 
+    private List<AdvancedQueryField> advancedQueryFields;
+
 
     public List<TableField> getFields() {
         return fields;
@@ -311,5 +313,13 @@ public class GenCode {
     public void setTableSortFields(List<SortField> tableSortFields) {
         this.tableSortFields = tableSortFields;
     }
+
+    public List<AdvancedQueryField> getAdvancedQueryFields() {
+        return advancedQueryFields;
+    }
+
+    public void setAdvancedQueryFields(List<AdvancedQueryField> advancedQueryFields) {
+        this.advancedQueryFields = advancedQueryFields;
+    }
 }
 

+ 54 - 33
src/main/resources/templates/ListTemplate.vm

@@ -21,6 +21,8 @@
             </el-button>
             <el-button v-if="isModulesShow('excel')" @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
             </el-button>
+            <el-button  @click="goBack" type="primary" size="small"  class="filter-item">返回
+            </el-button>
             <el-dropdown trigger="click" size="medium" class="table-column-filter">
                 <span>
                   筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
@@ -35,7 +37,8 @@
                 :data="tableData"
                 :height="tableHeight"
                 row-key="id"
-                ref="table">
+                ref="table"
+                size="small">
             <el-table-column label="${model.remark}" align="center" >
             <el-table-column
                     v-if="multipleMode"
@@ -43,6 +46,32 @@
                     type="selection"
                     width="50">
             </el-table-column>
+                <el-table-column
+                        label="操作"
+                        align="center"
+                        fixed="left"
+                        min-width="150"
+                >
+                    <template slot-scope="scope">
+
+                        <el-button v-if="isModulesShow('edit')"  @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                        #if($model.subtables.size()>0)
+                            <el-dropdown>
+                                <el-button type="primary" size="mini" plain>
+                                    更多
+                                    <i class="el-icon-arrow-down el-icon--right"></i>
+                                </el-button>
+                                <el-dropdown-menu slot="dropdown">
+                                    #foreach($subtable in $model.subtables)
+                                        <el-button @click="${esc.d}router.push({path:'/${subtable.subCode}s',query:{column:scope.row.${subtable.column}+',${subtable.subColumn}'}})" type="primary" size="small" plain>${subtable.name}
+                                        </el-button>
+                                    #end
+                                </el-dropdown-menu>
+                            </el-dropdown>
+                        #end
+
+                    </template>
+                </el-table-column>
             <el-table-column
                     type="index"
                     min-width="50"
@@ -88,32 +117,7 @@
                     #end
                 #end
             #end
-            <el-table-column
-                    label="操作"
-                    align="center"
-                    fixed="right"
-                    min-width="150"
-            >
-                <template slot-scope="scope">
-
-                    <el-button v-if="isModulesShow('edit')"  @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
-                    #if($model.subtables.size()>0)
-                        <el-dropdown>
-                            <el-button type="primary" size="mini" plain>
-                                更多
-                                <i class="el-icon-arrow-down el-icon--right"></i>
-                            </el-button>
-                            <el-dropdown-menu slot="dropdown">
-                                #foreach($subtable in $model.subtables)
-                                    <el-button @click="${esc.d}router.push({path:'/${subtable.subCode}s',query:{column:scope.row.${subtable.column}+',${subtable.subColumn}'}})" type="primary" size="small" plain>${subtable.name}
-                                    </el-button>
-                                #end
-                            </el-dropdown-menu>
-                        </el-dropdown>
-                    #end
 
-                </template>
-            </el-table-column>
             </el-table-column>
         </el-table>
         <div class="pagination-wrapper">
@@ -142,7 +146,7 @@
 
                 <el-table-column prop="link" label="链接符" align="center">
                     <template slot-scope="{row}">
-                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item" :disabled="row.noChange">
                             <el-option label="AND" value="AND">
                             </el-option>
                             <el-option label="OR" value="OR">
@@ -152,7 +156,7 @@
                 </el-table-column>
                 <el-table-column prop="name" label="字段" align="center">
                     <template slot-scope="{row}">
-                        <el-select v-model="row.name">
+                        <el-select v-model="row.name" :disabled="row.noChange">
 
                             <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
                                        :key="item.value"></el-option>
@@ -161,20 +165,20 @@
                 </el-table-column>
                 <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
                     <template slot-scope="{row}">
-                        <el-select v-model="row.searchMethod">
+                        <el-select v-model="row.searchMethod" :disabled="row.noChange">
                             <el-option v-for="item in searchMethods" :label="item" :value="item"
                                        :key="item"></el-option>
                         </el-select>
                     </template>
                 </el-table-column>
                 <el-table-column prop="value" label="参数" align="center">
-                    <template slot-scope="{row}">
-                        <el-input v-model="row.value"></el-input>
+                    <template slot-scope="{row}" >
+                        <el-input v-model="row.value" :disabled="row.noChange"></el-input>
                     </template>
                 </el-table-column>
                 <el-table-column width="60" align="center">
                     <template slot-scope="{ row, column, ${esc.d}index }">
-                        <el-button @click="removeField(${esc.d}index)" size="small" type="text">删除</el-button>
+                        <el-button @click="removeField(${esc.d}index)" size="small" type="text" v-if="!row.noChange">删除</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -298,7 +302,21 @@
 #end ,
                 multipleMode: false,
                 showAdvancedQueryDialog: false,
-                advancedQueryFields: [],
+                advancedQueryFields: [
+                #foreach($advancedQueryField in $model.advancedQueryFields)
+                    #if(${advancedQueryField.name})
+                        {
+                            link: '${advancedQueryField.link}',
+                            name: '${advancedQueryField.name}',
+                            searchMethod: '${advancedQueryField.searchMethod}',
+                            value: '${advancedQueryField.value}',
+                            #if(${advancedQueryField.noChange})
+                                noChange: true,
+                            #end
+                        },
+                    #end
+                #end
+            ],
                 showTableSortDialog: false,
                 tableSortFields: [
                 #foreach($sortField in $model.tableSortFields)
@@ -580,6 +598,9 @@
                 this.imgSrc = img;
                 this.imageDialogVisible = true;
             },
+            goBack() {
+                this.$router.go(-1);
+            },
 
         },
     components: {

+ 108 - 6
src/main/vue/src/pages/GenCode.vue

@@ -250,22 +250,33 @@
 
 							<el-table-column prop="column" label="主表字段" width="150" align="center">
 								<template slot-scope="{row}">
-									<el-input v-model="row.column"></el-input>
+
+									<el-select v-model="row.column">
+
+										<el-option v-for="item in fields" :label="changeToCamelCase(item.name)" :value="changeToCamelCase(item.name)" :key="changeToCamelCase(item.name)"></el-option>
+									</el-select>
+
 								</template>
 							</el-table-column>
 
-							<el-table-column prop="subColumn" label="子表字段" width="150" align="center">
+							<el-table-column prop="subCode" label="子表类" width="150" align="center">
 								<template slot-scope="{row}">
-									<el-input v-model="row.subColumn"></el-input>
+									<el-select v-model="row.subCode" clearable @change="changeSubCode">
+										<el-option v-for="item in subCodes" :label="item.className" :value="item.className" :key="item.className"></el-option>
+									</el-select>
 								</template>
 							</el-table-column>
-							<el-table-column prop="subCode" label="子表类" width="150" align="center">
+
+							<el-table-column prop="subColumn" label="子表字段" width="150" align="center">
 								<template slot-scope="{row}">
-									<el-select v-model="row.subCode" clearable>
-										<el-option v-for="item in subCodes" :label="item.className" :value="item.className" :key="item.className"></el-option>
+
+									<el-select v-model="row.subColumn">
+
+										<el-option v-for="item in subColumnOptions" :label="changeToCamelCase(item.name)" :value="changeToCamelCase(item.name)" :key="changeToCamelCase(item.name)"></el-option>
 									</el-select>
 								</template>
 							</el-table-column>
+
 							<el-table-column width="60" align="center">
 								<template slot-scope="{ row, column, $index }">
 									<el-button @click="removeSubtable($index)" size="small" type="text">删除</el-button>
@@ -303,6 +314,55 @@
 						</el-table>
 						<el-button @click="addSortField" type="text" icon="el-icon-plus">添加</el-button>
 					</el-tab-pane>
+					<el-tab-pane label="默认条件" name="6">
+						<el-table :data="advancedQueryFields">
+
+							<el-table-column prop="link" label="链接符" align="center">
+								<template slot-scope="{row}">
+									<el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+										<el-option label="AND" value="AND">
+										</el-option>
+										<el-option label="OR" value="OR">
+										</el-option>
+									</el-select>
+								</template>
+							</el-table-column>
+							<el-table-column prop="name" label="字段" align="center">
+								<template slot-scope="{row}">
+									<el-select v-model="row.name">
+
+										<el-option v-for="item in fields" :label="item.name" :value="item.name" :key="item.name"></el-option>
+									</el-select>
+								</template>
+							</el-table-column>
+							<el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
+								<template slot-scope="{row}">
+									<el-select v-model="row.searchMethod">
+										<el-option v-for="item in searchMethods" :label="item" :value="item" :key="item"></el-option>
+									</el-select>
+								</template>
+							</el-table-column>
+							<el-table-column prop="value" label="参数" align="center">
+								<template slot-scope="{row}">
+									<el-input v-model="row.value"></el-input>
+								</template>
+							</el-table-column>
+							<el-table-column prop="noChange" label="不可修改" width="50" align="center">
+								<template slot-scope="{row}">
+									<el-checkbox v-model="row.noChange"></el-checkbox>
+								</template>
+							</el-table-column>
+
+							<el-table-column width="60" align="center">
+								<template slot-scope="{ row, column, $index }">
+									<el-button @click="removeQueryField($index)" size="small" type="text">删除</el-button>
+								</template>
+							</el-table-column>
+						</el-table>
+
+						<el-button @click="addQueryField" type="text" icon="el-icon-plus">添加</el-button>
+					</el-tab-pane>
+
 				</el-tabs>
 
 			</el-form-item>
@@ -413,6 +473,7 @@ export default {
 					this.formData.genRouter = false;
 					this.subtables = this.formData.subtables;
 					this.tableSortFields = this.formData.tableSortFields;
+					this.advancedQueryFields = this.formData.advancedQueryFields;
 				}
 			}).catch(e => this.loading = false)
 		}
@@ -563,6 +624,7 @@ export default {
 				subtables: [],
 				modules: [],
 				tableSortFields: [],
+				advancedQueryFields: [],
 
 			},
 			fields: [
@@ -605,6 +667,7 @@ export default {
 			tableList: [],
 			subtables: [],
 			subCodes: [],
+			subColumnOptions: [],
 			selectMappings: [],
 			selectMappingsJson: {},
 			showSelectDialog: false,
@@ -614,6 +677,7 @@ export default {
 			optionsTableList: [],
 			optionsFields: [],
 			tableSortFields: [],
+			advancedQueryFields: [],
 		}
 	},
 	computed: {
@@ -639,6 +703,7 @@ export default {
 			this.formData.fields = this.fields;
 			this.formData.subtables = this.subtables;
 			this.formData.tableSortFields = this.tableSortFields;
+			this.formData.advancedQueryFields = this.advancedQueryFields;
 			this.formData.javaPath = this.formData.rootPath + this.formData.javaPathRelative;
 			this.formData.viewPath = this.formData.rootPath + this.formData.viewPathRelative;
 			this.formData.routerPath = this.formData.rootPath + this.formData.routerPathRelative;
@@ -881,6 +946,43 @@ export default {
 				this.tableSortFields.splice(i, 1);
 			}
 		},
+		addQueryField() {
+			this.advancedQueryFields.push({
+				link: 'AND',
+				name: '',
+				searchMethod: '=',
+				value: '',
+			});
+		},
+		removeQueryField(i) {
+			if (this.advancedQueryFields.length > 0) {
+				this.advancedQueryFields.splice(i, 1);
+			}
+		},
+		changeToCamelCase(value) {
+			if (value) {
+				var a = value.split("_");
+				var o = a[0];
+				for (var i = 1; i < a.length; i++) {
+					o = o + a[i].slice(0, 1).toUpperCase() + a[i].slice(1);
+				}
+
+				return o;
+			}
+
+		},
+		changeSubCode(subCode) {
+
+
+			this.subCodes.forEach(item => {
+				if (item.className == subCode) {
+					this.subColumnOptions = JSON.parse(item.genJson).fields;
+				}
+			}
+			)
+
+
+		},
 
 
 	}

+ 184 - 202
src/main/vue/src/pages/TestAaa.vue

@@ -1,79 +1,61 @@
 <template>
     <div>
-        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small"
-                 style="max-width: 500px;">
+        <el-form :model="formData" :rules="rules" ref="form" label-width="120px" label-position="right" size="small" style="max-width: 500px;">
             <el-form-item>
                 <h2> test_aaa</h2>
             </el-form-item>
 
-                                                                                                                                                                                                                                                                 <el-form-item prop="imageUrl" label="图片">
-                 <single-upload v-model="formData.imageUrl" :disabled="'imageUrl'==subColumn"></single-upload>
-             </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                            <el-form-item prop="testName" label="枚举单选">
+            <el-form-item prop="imageUrl" label="图片">
+                <single-upload v-model="formData.imageUrl" :disabled="'imageUrl'==subColumn"></single-upload>
+            </el-form-item>
+            <el-form-item prop="testName" label="枚举单选">
                 <template>
-                    <el-select v-model="formData.testName" clearable  placeholder="请选择" :disabled="'testName'==subColumn">
-                        <el-option
-                                v-for="item in testNameOptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
+                    <el-select v-model="formData.testName" clearable placeholder="请选择" :disabled="'testName'==subColumn">
+                        <el-option v-for="item in testNameOptions" :key="item.value" :label="item.label" :value="item.value">
                         </el-option>
                     </el-select>
                 </template>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="remark" label="接口单选">
+            <el-form-item prop="remark" label="接口单选">
                 <template>
-                    <el-select v-model="formData.remark" clearable  placeholder="请选择" :disabled="'remark'==subColumn">
-                        <el-option
-                                v-for="item in remarkOptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
+                    <el-select v-model="formData.remark" clearable placeholder="请选择" :disabled="'remark'==subColumn">
+                        <el-option v-for="item in remarkOptions" :key="item.value" :label="item.label" :value="item.value">
                         </el-option>
                     </el-select>
                 </template>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <el-form-item prop="multiSelect" label="表多选">
+            <el-form-item prop="multiSelect" label="表多选">
                 <template>
                     <el-select v-model="formData.multiSelect" multiple clearable placeholder="请选择" :disabled="'multiSelect'==subColumn">
-                        <el-option
-                                v-for="item in multiSelectOptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
+                        <el-option v-for="item in multiSelectOptions" :key="item.value" :label="item.label" :value="item.value">
                         </el-option>
                     </el-select>
                 </template>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                        <el-form-item prop="testTime" label="时间">
+            <el-form-item prop="testTime" label="时间">
                 <template>
                     <div class="block">
-                        <el-date-picker
-                                v-model="formData.testTime"
-                                type="date"
-                                value-format="timestamp"
-                                placeholder="选择日期"
-                                :disabled="'testTime'==subColumn">
+                        <el-date-picker v-model="formData.testTime" type="date" value-format="timestamp" placeholder="选择日期" :disabled="'testTime'==subColumn">
                         </el-date-picker>
                     </div>
                 </template>
             </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <el-form-item prop="loginUser" label="登录名">
-                            <el-input v-model="formData.loginUser" disabled></el-input>
-                        </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <el-form-item prop="testcTime" label="当前时间">
-                            <el-input v-model="formData.testcTime" disabled></el-input>
-                        </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="testcDate" label="当前日期">
-                            <el-input v-model="formData.testcDate" disabled></el-input>
-                        </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="workNumber" label="工号">
-                            <el-input v-model="formData.workNumber" disabled></el-input>
-                        </el-form-item>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="departId" label="部门">
-                            <el-input v-model="formData.departId" disabled></el-input>
-                        </el-form-item>
-                                                                                                    <el-form-item>
+            <el-form-item prop="loginUser" label="登录名">
+                <el-input v-model="formData.loginUser" disabled></el-input>
+            </el-form-item>
+            <el-form-item prop="testcTime" label="当前时间">
+                <el-input v-model="formData.testcTime" disabled></el-input>
+            </el-form-item>
+            <el-form-item prop="testcDate" label="当前日期">
+                <el-input v-model="formData.testcDate" disabled></el-input>
+            </el-form-item>
+            <el-form-item prop="workNumber" label="工号">
+                <el-input v-model="formData.workNumber" disabled></el-input>
+            </el-form-item>
+            <el-form-item prop="departId" label="部门">
+                <el-input v-model="formData.departId" disabled></el-input>
+            </el-form-item>
+            <el-form-item>
                 <el-button @click="onSave" :loading="$store.state.fetchingData" type="primary">保存</el-button>
                 <el-button @click="onDelete" v-if="formData.id&&isModulesShow('del')" type="danger">删除</el-button>
                 <el-button @click="changeEditDialogVisible(false)">取消</el-button>
@@ -88,201 +70,201 @@ import { format } from 'date-fns'
 import zh from 'date-fns/locale/zh_cn'
 
 export default {
-    props:{
-        formData:{
-            type:Object,
-            default:{
-                                                                                                                                                                                                                                                                                
-            multiSelect : [],
+    props: {
+        formData: {
+            type: Object,
+            default: {
 
-                                                                                                                                                    loginUser : '',
+                multiSelect: [],
 
-                                                        testcTime : format(new Date(), 'YYYY/MM/DD HH:mm', { locale: zh }),
+                loginUser: '',
 
-                                                                                testcDate : format(new Date(), 'YYYY/MM/DD', { locale: zh }),
+                testcTime: format(new Date(), 'YYYY/MM/DD HH:mm', { locale: zh }),
 
-                                                                                        workNumber : '',
+                testcDate: format(new Date(), 'YYYY/MM/DD', { locale: zh }),
 
-                                                                                departId : '',
+                workNumber: '',
 
-                        }
+                departId: '',
+
+            }
         }
     },
 
     created() {
 
-                                                                                                                                                                                                                                                                                                
 
 
-                    this.$http.get({
-                        url:'/testBbb/all'
-                    }).then(res => {
-                        if (res.success) {
 
-                    if (res.data.length > 0) {
-                        res.data.forEach(item => {
-                            this.remarkOptions.push({label: item.nameAaa, value:item.id});
+        this.$http.get({
+            url: '/testBbb/all'
+        }).then(res => {
+            if (res.success) {
+
+                if (res.data.length > 0) {
+                    res.data.forEach(item => {
+                        this.remarkOptions.push({ label: item.nameAaa, value: item.id });
                     })
-                    }
                 }
-                });
-                                                                                                                        this.$http.get({
-                        url:'/commonQuery/all',
-                        data: {
-                            tableName: 'test_bbb',
-                            databasetype: 'Mysql',
-                            dataSourceCode: 'dataSource',
-                        }
-                    }).then(res => {
-                        if (res.success) {
+            }
+        });
+        this.$http.get({
+            url: '/commonQuery/all',
+            data: {
+                tableName: 'test_bbb',
+                databasetype: 'Mysql',
+                dataSourceCode: 'dataSource',
+            }
+        }).then(res => {
+            if (res.success) {
 
-                    if (res.data.length > 0) {
-                        res.data.forEach(item => {
-                            this.multiSelectOptions.push({label: item.name_ccc, value:item.id});
+                if (res.data.length > 0) {
+                    res.data.forEach(item => {
+                        this.multiSelectOptions.push({ label: item.name_ccc, value: item.id });
                     })
-                    }
                 }
-                });
-                                                                                                                                                                        this.formData.loginUser = this.userInfo.username;
-                                                                                                                                                                                                                this.formData.workNumber = this.userInfo.workNumber;
-                                                                                                this.formData.departId = this.userInfo.departId;
-                        },
+            }
+        });
+        this.formData.loginUser = this.userInfo.username;
+        this.formData.workNumber = this.userInfo.workNumber;
+        this.formData.departId = this.userInfo.departId;
+    },
     data() {
         return {
             saving: false,
-        rules: {
-                                                                                                                                    testName:
-                [
-                                            {required: true, message: '请输入 枚举单选', trigger: 'blur'},
-                                                        ],
-                                                                remark:
-                [
-                                            {required: true, message: '请输入 接口单选', trigger: 'blur'},
-                                                        ],
-                                                                multiSelect:
-                [
-                                            {required: true, message: '请输入 表多选', trigger: 'blur'},
-                                                        ],
-                                                                                                                                                                                                            },
-        modules:            'search,query,orders,edit,excel,add,del'.split(',').map(i => String(i))
-     ,
-                                                                                                                            testNameOptions:[{ label: 'A', value: 'A' }, { label: 'B', value: 'B' },{ label: 'C', value: 'C' }],
-                                                                                    remarkOptions:[],
-                                                                                    multiSelectOptions:[],
-                                                                                                                                                                }
+            rules: {
+                testName:
+                    [
+                        { required: true, message: '请输入 枚举单选', trigger: 'blur' },
+                    ],
+                remark:
+                    [
+                        { required: true, message: '请输入 接口单选', trigger: 'blur' },
+                    ],
+                multiSelect:
+                    [
+                        { required: true, message: '请输入 表多选', trigger: 'blur' },
+                    ],
+            },
+            modules: 'search,query,orders,edit,excel,add,del'.split(',').map(i => String(i))
+            ,
+            testNameOptions: [{ label: 'A', value: 'A' }, { label: 'B', value: 'B' }, { label: 'C', value: 'C' }],
+            remarkOptions: [],
+            multiSelectOptions: [],
+        }
     },
     computed: {
-            ...mapState(['userInfo']),
-                subColumn(){
-                if(this.formData.subColumn){
-                   return  this.formData.subColumn;
-                }else{
-                    return '';
-                }
+        ...mapState(['userInfo']),
+        subColumn() {
+            if (this.formData.subColumn) {
+                return this.formData.subColumn;
+            } else {
+                return '';
+            }
         },
-},
-methods: {
-    changeEditDialogVisible(value){
-        this.$emit('changeEditDialogVisible',value)
-    },
-    isModulesShow(column) {
-        var row = this.modules.find(i => i === column);
-        return row ? true : false;
     },
-    onSave() {
-        this.$refs.form.validate((valid) => {
-            if (valid) {
-                this.logicalValidate();
+    methods: {
+        changeEditDialogVisible(value) {
+            this.$emit('changeEditDialogVisible', value)
+        },
+        isModulesShow(column) {
+            var row = this.modules.find(i => i === column);
+            return row ? true : false;
+        },
+        onSave() {
+            this.$refs.form.validate((valid) => {
+                if (valid) {
+                    this.logicalValidate();
+                } else {
+                    return false;
+                }
+            });
+        },
+        logicalValidate() {
+            var data = JSON.parse(JSON.stringify(this.formData));
+
+            var logicalData = {
+                testName: data.testName,
+                remark: data.remark,
+            }
+
+            if (JSON.stringify(logicalData) == '{}') {
+                this.submit();
             } else {
-                return false;
-    }
-    });
-    },
-    logicalValidate() {
-        var data = JSON.parse(JSON.stringify(this.formData));
+                this.$http.get({
+                    url: '/testAaa/getOne',
+                    data: logicalData
+                }).then(res => {
+                    if (res.success) {
 
-        var logicalData = {
-                                                                                                testName:data.testName,
-                                                remark:data.remark,
-                                                                                                                                                                    }
+                        var logicalFlag = true;
 
-        if (JSON.stringify(logicalData) == '{}') {
-            this.submit();
-        } else {
-            this.$http.get({
-                url: '/testAaa/getOne',
-                data: logicalData
-            }).then(res => {
-                if (res.success) {
+                        if (res.data) {
+                            if (this.formData.id) {
+                                if (res.data.id != this.formData.id) {
+                                    logicalFlag = false;
+                                }
+                            } else {
+                                logicalFlag = false;
+                            }
 
-                var logicalFlag = true;
+                        }
 
-                if (res.data) {
-                    if (this.formData.id) {
-                        if (res.data.id != this.formData.id) {
-                            logicalFlag = false;
+                        if (logicalFlag) {
+                            this.submit();
+                        } else {
+                            this.$message.warning('逻辑关键字:' + '枚举单选,接口单选,' + '验证失败')
                         }
-                    } else {
-                        logicalFlag = false;
-                    }
 
-                }
 
-                if (logicalFlag) {
-                    this.submit();
-                } else {
-                    this.$message.warning('逻辑关键字:'+'枚举单选,接口单选,'+'验证失败')
-                }
+                    } else {
+                        this.$message.warning('逻辑关键字:' + '枚举单选,接口单选,' + '验证失败')
+                    }
+                });
+            }
+        },
+        submit() {
+            var data = JSON.parse(JSON.stringify(this.formData));
 
+            if (data.testcTime) {
+                data.testcTime = Date.parse(new Date(data.testcTime));
+            }
 
-            } else {
-                this.$message.warning('逻辑关键字:'+'枚举单选,接口单选,'+'验证失败')
+            if (data.testcDate) {
+                data.testcDate = Date.parse(new Date(data.testcDate));
             }
-        });
-        }
-    },
-    submit() {
-        var data = JSON.parse(JSON.stringify(this.formData));
 
-                                                                                                                                                                                                    if(data.testcTime){
-                    data.testcTime = Date.parse(new Date(data.testcTime));
-                }
 
-                                                if(data.testcDate){
-                    data.testcDate = Date.parse(new Date(data.testcDate));
+            this.$http.post({
+                url: this.formData.id ? '/testAaa/update' : '/testAaa/save',
+                data: data
+            }).then(res => {
+                if (res.success) {
+                    this.$message.success('成功');
+                    this.$emit('changeEdit')
+                } else {
+                    this.$message.warning('失败')
+                }
+            });
+        },
+        onDelete() {
+            this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
+                return this.$http.post({
+                    url: '/testAaa/del',
+                    data: { id: this.formData.id }
+                })
+            }).then(() => {
+                this.$message.success('删除成功');
+                this.$emit('changeEdit')
+            }).catch(action => {
+                if (action === 'cancel') {
+                    this.$message.info('删除取消');
+                } else {
+                    this.$message.error('删除失败');
                 }
-
-                                                            
-    this.$http.post({
-        url: this.formData.id ? '/testAaa/update' : '/testAaa/save',
-        data: data
-    }).then(res => {
-        if (res.success) {
-            this.$message.success('成功');
-            this.$emit('changeEdit')
-        } else {
-            this.$message.warning('失败')
-        }
-    });
-    },
-    onDelete() {
-        this.$alert('删除将无法恢复,确认要删除么?', '警告', { type: 'error' }).then(() => {
-            return this.$http.post({
-                url: '/testAaa/del',
-                data: { id: this.formData.id }
             })
-        }).then(() => {
-            this.$message.success('删除成功');
-        this.$emit('changeEdit')
-    }).catch(action => {
-            if (action === 'cancel') {
-            this.$message.info('删除取消');
-        } else {
-            this.$message.error('删除失败');
-        }
-    })
-    },
-}
+        },
+    }
 }
 </script>
 <style lang="less" scoped>

+ 76 - 36
src/main/vue/src/pages/TestAaas.vue

@@ -17,6 +17,8 @@
             </el-button>
             <el-button v-if="isModulesShow('excel')" @click="exportExcel" type="primary" size="small" icon="el-icon-share" class="filter-item">导出EXCEL
             </el-button>
+            <el-button  @click="goBack" type="primary" size="small"  class="filter-item">返回
+            </el-button>
             <el-dropdown trigger="click" size="medium" class="table-column-filter">
                 <span>
                   筛选数据<i class="el-icon-arrow-down el-icon--right"></i>
@@ -31,7 +33,8 @@
                 :data="tableData"
                 :height="tableHeight"
                 row-key="id"
-                ref="table">
+                ref="table"
+                size="small">
             <el-table-column label="test_aaa" align="center" >
             <el-table-column
                     v-if="multipleMode"
@@ -39,6 +42,28 @@
                     type="selection"
                     width="50">
             </el-table-column>
+                <el-table-column
+                        label="操作"
+                        align="center"
+                        fixed="left"
+                        min-width="150"
+                >
+                    <template slot-scope="scope">
+
+                        <el-button v-if="isModulesShow('edit')"  @click="editRow(scope.row)" type="primary" size="mini" plain>编辑</el-button>
+                                                    <el-dropdown>
+                                <el-button type="primary" size="mini" plain>
+                                    更多
+                                    <i class="el-icon-arrow-down el-icon--right"></i>
+                                </el-button>
+                                <el-dropdown-menu slot="dropdown">
+                                                                            <el-button @click="$router.push({path:'/TestBbbs',query:{column:scope.row.testName+',nameAaa'}})" type="primary" size="small" plain>子表bbb
+                                        </el-button>
+                                                                    </el-dropdown-menu>
+                            </el-dropdown>
+                        
+                    </template>
+                </el-table-column>
             <el-table-column
                     type="index"
                     min-width="50"
@@ -128,37 +153,15 @@
                                 label="部门"
                                 min-width="100">
                         </el-table-column>
-                                                            <el-table-column
-                    label="操作"
-                    align="center"
-                    fixed="right"
-                    min-width="150"
-            >
-                <template slot-scope="scope">
-
-                    <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>
-                                            <el-dropdown>
-                            <el-button type="primary" size="mini" plain>
-                                更多
-                                <i class="el-icon-arrow-down el-icon--right"></i>
-                            </el-button>
-                            <el-dropdown-menu slot="dropdown">
-                                                                    <el-button @click="$router.push({path:'/TestBbbs',query:{column:scope.row.testName+',nameAaa'}})" type="primary" size="small" plain>子表bbb
-                                    </el-button>
-                                                            </el-dropdown-menu>
-                        </el-dropdown>
-                    
-                </template>
-            </el-table-column>
+                                                
             </el-table-column>
         </el-table>
         <div class="pagination-wrapper">
-            <div class="multiple-mode-wrapper" v-if="0">
+            <div class="multiple-mode-wrapper">
                 <el-button size="small" v-if="!multipleMode" @click="toggleMultipleMode(true)">批量编辑</el-button>
                 <el-button-group v-else>
-                    <el-button size="small" @click="operation1">批量操作1</el-button>
-                    <el-button size="small" @click="operation2">批量操作2</el-button>
+                    <el-button size="small" v-if="isModulesShow('del')"  @click="operation1" type="danger" plain>批量删除</el-button>
+                    <el-button size="small" @click="operation2" v-if="0">批量操作2</el-button>
                     <el-button size="small" @click="toggleMultipleMode(false)">取消</el-button>
                 </el-button-group>
             </div>
@@ -179,7 +182,7 @@
 
                 <el-table-column prop="link" label="链接符" align="center">
                     <template slot-scope="{row}">
-                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item">
+                        <el-select placeholder="链接" size="small" v-model="row.link" class="filter-item" :disabled="row.noChange">
                             <el-option label="AND" value="AND">
                             </el-option>
                             <el-option label="OR" value="OR">
@@ -189,7 +192,7 @@
                 </el-table-column>
                 <el-table-column prop="name" label="字段" align="center">
                     <template slot-scope="{row}">
-                        <el-select v-model="row.name">
+                        <el-select v-model="row.name" :disabled="row.noChange">
 
                             <el-option v-for="item in advancedQueryColumns" :label="item.label" :value="item.value"
                                        :key="item.value"></el-option>
@@ -198,20 +201,20 @@
                 </el-table-column>
                 <el-table-column prop="searchMethod" label="搜索方式" width="150" align="center">
                     <template slot-scope="{row}">
-                        <el-select v-model="row.searchMethod">
+                        <el-select v-model="row.searchMethod" :disabled="row.noChange">
                             <el-option v-for="item in searchMethods" :label="item" :value="item"
                                        :key="item"></el-option>
                         </el-select>
                     </template>
                 </el-table-column>
                 <el-table-column prop="value" label="参数" align="center">
-                    <template slot-scope="{row}">
-                        <el-input v-model="row.value"></el-input>
+                    <template slot-scope="{row}" >
+                        <el-input v-model="row.value" :disabled="row.noChange"></el-input>
                     </template>
                 </el-table-column>
                 <el-table-column width="60" align="center">
                     <template slot-scope="{ row, column, $index }">
-                        <el-button @click="removeField($index)" size="small" type="text">删除</el-button>
+                        <el-button @click="removeField($index)" size="small" type="text" v-if="!row.noChange">删除</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -363,7 +366,21 @@
              ,
                 multipleMode: false,
                 showAdvancedQueryDialog: false,
-                advancedQueryFields: [],
+                advancedQueryFields: [
+                                                            {
+                            link: 'AND',
+                            name: 'del_flag',
+                            searchMethod: '=',
+                            value: 'N',
+                                                            noChange: true,
+                                                    },
+                                                                                {
+                            link: 'AND',
+                            name: 'del_flag',
+                            searchMethod: '=',
+                            value: 'N',
+                                                    },
+                                                ],
                 showTableSortDialog: false,
                 tableSortFields: [
                                                             {
@@ -560,12 +577,32 @@
                 this.editDialogVisible = true
             },
             operation1() {
+                if (this.selection.length > 0) {
+                    this.$alert('删除将无法恢复,确认要删除么?', '警告', {type: 'error'}).then(() => {
+                        return this.$http.post({
+                            url: '/testAaa/del',
+                            data: {idStr: this.selection.join()}
+                        })
+                    }).then(() => {
+                        this.$message.success('删除成功');
+                    this.getData();
+                }).catch(action => {
+                        if (action === 'cancel') {
+                        this.$message.info('删除取消');
+                    } else {
+                        this.$message.error('删除失败');
+                    }
+                })
+                }
+
+
+            },
+            operation2() {
                 this.$notify({
                     title: '提示',
                     message: this.selection
                 });
-            },
-            operation2() {
+
                 this.$message('操作2');
             },
             addField() {
@@ -647,6 +684,9 @@
                 this.imgSrc = img;
                 this.imageDialogVisible = true;
             },
+            goBack() {
+                this.$router.go(-1);
+            },
 
         },
     components: {