Browse Source

20181130通用查询

suochencheng 7 years ago
parent
commit
73dc45f6b5

+ 39 - 0
src/main/java/com/izouma/awesomeadmin/web/GenCodeController.java

@@ -278,5 +278,44 @@ public class GenCodeController {
         return new Result(false, "获取失败");
     }
 
+
+    @RequestMapping(value = "/check", method = RequestMethod.GET)
+    @ResponseBody
+    public Result check(GenCode record) {
+
+        GenCode genCode = new GenCode();
+        if (StringUtils.isNotEmpty(record.getClassName())) {
+            //手动填写
+            genCode.setClassName(CaseUtils.toCamelCase(record.getClassName(), true, '_'));
+        } else {
+            //根据表名生成类名
+            genCode.setClassName(CaseUtils.toCamelCase(record.getTableName(), true, '_'));
+        }
+        GenCode data = genCodeService.getGenCode(genCode);
+        if (data != null) {
+            if (record.getId() != null) {
+                if (!record.getId().equals(data.getId())) {
+                    return new Result(false, "类名冲突");
+                }
+            } else {
+                return new Result(false, "类名冲突");
+            }
+        }
+
+        if (record.getGenTable()) {
+            GenCode genCode2 = new GenCode();
+            genCode2.setTableName(record.getTableName());
+            genCode2 = genCodeService.getGenCode(genCode2);
+
+            if (genCode2 != null) {
+                return new Result(true, "-1");
+            }
+
+        }
+
+
+        return new Result(true, "1");
+    }
+
 }
 

+ 5 - 0
src/main/resources/templates/ListTemplate.vm

@@ -40,6 +40,7 @@
                 ref="table"
                 size="small"
                 border
+                v-loading="loading"
         >
             <el-table-column label="${model.remark}" align="center" >
             <el-table-column
@@ -345,6 +346,7 @@
                 orderByStr: '',
                 imgSrc: '',
                 imageDialogVisible: false,
+                loading:false,
             }
         },
         computed: {
@@ -421,6 +423,8 @@
                     data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
                 }
 
+                this.loading = true;
+
                 this.${esc.d}http.get({
                     url: '/${display.uncapitalize($model.className)}/page',
                     data: data
@@ -429,6 +433,7 @@
                         this.totalNumber = res.data.page.totalNumber;
                         this.tableData = res.data.pp;
                     }
+                    this.loading = false;
                 })
             },
             isColumnShow(column) {

+ 48 - 6
src/main/vue/src/pages/CommonQuery.vue

@@ -24,7 +24,7 @@
                         <template v-else-if="item.formType=='select'">
 
                             <el-select v-model="formData[item.name]" clearable placeholder="请选择">
-                                <el-option v-for="optionItem in selectOptions[item.name]" :key="optionItem" :label="optionItem" :value="optionItem">
+                                <el-option v-for="optionItem in selectOptions[item.name]" :key="optionItem.value" :label="optionItem.label" :value="optionItem.value">
                                 </el-option>
                             </el-select>
 
@@ -32,7 +32,7 @@
 
                         <template v-else-if="item.formType=='multiSelect'">
                             <el-select v-model="formData[item.name]" multiple clearable placeholder="请选择">
-                                <el-option v-for="optionItem in selectOptions[item.name]" :key="optionItem" :label="optionItem" :value="optionItem">
+                                <el-option v-for="optionItem in selectOptions[item.name]" :key="optionItem.value" :label="optionItem.label" :value="optionItem.value">
                                 </el-option>
                             </el-select>
                         </template>
@@ -338,17 +338,21 @@ export default {
                         columns.forEach(element => {
                             //下拉框选项
                             if (element.optionsValue) {
-                                if (element.apiFlag) {
+                                if (element.apiFlag == "2") {
 
                                     this.$http.get({
-                                        url: element.optionsValue.split(',')[0],
+                                        url: element.optionsMethod,
                                         data: {}
                                     }).then(res => {
                                         if (res.success) {
 
                                             var tempOptions = [];
                                             res.data.forEach(item => {
-                                                tempOptions.push(item[element.optionsValue.split(',')[1]])
+                                                var val = {
+                                                    lable: item[element.optionsLabel],
+                                                    value: item[element.optionsValue],
+                                                }
+                                                tempOptions.push(val)
                                             });
 
                                             this.selectOptions = {
@@ -358,10 +362,48 @@ export default {
                                         }
                                     })
 
+                                } else if (element.apiFlag == "3") {
+                                    this.$http.get({
+                                        url: '/commonQuery/all',
+                                        data: {
+                                            tableName: element.optionsMethod,
+                                            databasetype: element.optionsDataBaseType,
+                                            dataSourceCode: element.optionsDataSourceCode,
+                                        }
+                                    }).then(res => {
+                                        if (res.success) {
+
+                                            var tempOptions = [];
+                                            if (res.data.length > 0) {
+                                                res.data.forEach(item => {
+                                                    var val = {
+                                                        lable: item[element.optionsLabel],
+                                                        value: item[element.optionsValue],
+                                                    }
+                                                    tempOptions.push(val)
+                                                })
+                                            }
+
+                                            this.selectOptions = {
+                                                ...this.selectOptions,
+                                                [element.name]: tempOptions
+                                            };
+                                        }
+                                    });
+
                                 } else {
+                                    var tempOptions = [];
+
+                                    element.optionsValue.split(',').forEach(item => {
+                                        var val = {
+                                            lable: item,
+                                            value: item,
+                                        }
+                                        tempOptions.push(val)
+                                    })
                                     this.selectOptions = {
                                         ...this.selectOptions,
-                                        [element.name]: element.optionsValue.split(',')
+                                        [element.name]: tempOptions
                                     };
                                 }
                             }

+ 5 - 1
src/main/vue/src/pages/CommonQuerys.vue

@@ -27,7 +27,7 @@
                 </el-dropdown-menu>
             </el-dropdown>
         </div>
-        <el-table :data="tableData" :height="tableHeight" row-key="id" ref="table" @sort-change="changeTableSort" border>
+        <el-table :data="tableData" :height="tableHeight" row-key="id" ref="table" @sort-change="changeTableSort" border v-loading="loading">
             <el-table-column type="index" min-width="50" align="center">
             </el-table-column>
             <template v-for="item in tableColumns" v-if="isColumnShow(item.name)">
@@ -159,6 +159,7 @@ export default {
             modules: [],
             dataSourceCode: 'dataSource',
             subtables: [],
+            loading: false,
 
         }
     },
@@ -304,6 +305,7 @@ export default {
             }
 
 
+            this.loading = true;
             this.$http.get({
                 url: '/commonQuery/page',
                 data: {
@@ -323,6 +325,8 @@ export default {
                     this.totalNumber = res.data.page.totalNumber;
                     this.tableData = res.data.pp;
                 }
+
+                this.loading = false;
             })
         },
         isColumnShow(column) {

+ 46 - 13
src/main/vue/src/pages/GenCode.vue

@@ -467,15 +467,15 @@
 
         <el-dialog title="从表中添加字段" :visible.sync="addFieldFromTableFieldsDialog" width='60%'>
 
-          <el-row  :gutter="20">
-              <el-col :span="12" >
+            <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 }" >
+                            <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>
-                               
+
+                                <el-button v-else disabled size="mini" type="text">已添加</el-button>
+
                             </template>
                             <!-- <template slot-scope="{ row, column, $index }" v-else>
                                 <span>已添加</span>
@@ -487,10 +487,10 @@
                         </el-table-column>
 
                     </el-table>
-              </el-col>
-              <el-col  :span="12">
+                </el-col>
+                <el-col :span="12">
                     <el-table :data="fields" border size="small" height='60vh'>
-                        <el-table-column  label="展示表" align="center">
+                        <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> -->
@@ -503,8 +503,8 @@
                         </el-table-column>
 
                     </el-table>
-              </el-col>
-              </el-row>
+                </el-col>
+            </el-row>
         </el-dialog>
 
     </div>
@@ -783,12 +783,45 @@ export default {
         onSave() {
             this.$refs.form.validate((valid) => {
                 if (valid) {
-                    this.submit();
+                    this.checkClassName();
                 } else {
                     return false;
                 }
             });
         },
+
+        checkClassName() {
+
+            this.$http.get({
+                url: '/genCode/check',
+                data: {
+                    id: this.formData.id,
+                    className: this.formData.className,
+                    tableName: this.formData.tableName,
+                    genTable: this.formData.genTable,
+                }
+            }).then(res => {
+                if (res.success) {
+
+                    if (res.data < 0) {
+                        this.$alert('表已经存在请谨慎操作', '警告', { type: 'error' }).then(() => {
+                            this.submit();
+                        }).then(() => {
+                        }).catch(res => {
+                        })
+
+                    } else {
+                        this.submit();
+                    }
+
+                } else {
+                    this.$msgbox({ title: '提示', type: 'error', message: '类名以存在' });
+                }
+            })
+
+
+        },
+
         submit() {
 
             this.formData.fields = this.fields;
@@ -1027,7 +1060,7 @@ export default {
                 value = row.optionsValue;
             } else if (row.apiFlag == '2') {
 
-                value = row.optionsMethod + ',' + row.optionsLabel + ',' + row.optionsValue;
+                value = row.optionsMethod?row.optionsMethod:'' + ',' + row.optionsLabel + ',' + row.optionsValue;
             } else if (row.apiFlag == '3') {
                 value = row.optionsMethod + ',' + row.optionsLabel + ',' + row.optionsValue;
             }

+ 187 - 5
src/main/vue/src/pages/QueryConfig.vue

@@ -76,14 +76,21 @@
                                     </el-select>
                                 </template>
                             </el-table-column>
-                            <el-table-column prop="apiFlag" label="接口" width="50" align="center">
+                            <el-table-column prop="apiFlag" label="接口" width="300" align="center">
                                 <template slot-scope="{row}">
-                                    <el-checkbox v-model="row.apiFlag" :disabled="row.formType!='select'&&row.formType!='multiSelect'"></el-checkbox>
+                                    <el-radio v-model="row.apiFlag" label="1" :disabled="row.formType!='select'&&row.formType!='multiSelect'">枚举</el-radio>
+                                    <el-radio v-model="row.apiFlag" label="2" :disabled="row.formType!='select'&&row.formType!='multiSelect'">接口</el-radio>
+                                    <el-radio v-model="row.apiFlag" label="3" :disabled="row.formType!='select'&&row.formType!='multiSelect'">表</el-radio>
                                 </template>
                             </el-table-column>
+
                             <el-table-column prop="optionsValue" label="选项" min-width="150" align="center">
                                 <template slot-scope="{row}">
-                                    <el-input type="textarea" v-model="row.optionsValue" :disabled="row.formType!='select'&&row.formType!='multiSelect'"></el-input>
+                                    <el-input type="textarea" v-if="row.apiFlag=='1'&&(row.formType=='select'||row.formType=='multiSelect')" v-model="row.optionsValue"></el-input>
+                                    <div v-if="(row.apiFlag=='2'||row.apiFlag=='3')&&(row.formType=='select'||row.formType=='multiSelect')" @click="editSelectField(row)">
+                                        <el-input type="textarea" :value="optionsInfo(row)"></el-input>
+                                    </div>
+
                                 </template>
                             </el-table-column>
 
@@ -189,7 +196,6 @@
                     <el-tab-pane label="排序" name="4">
                         <el-table :data="tablecolumnsFields" border>
 
-                            
                             <el-table-column prop="name" label="字段" width="150" align="center">
                             </el-table-column>
 
@@ -198,7 +204,7 @@
 
                             <el-table-column prop="orderFlag" label="排序" align="center">
                                 <template slot-scope="{row}">
-                                    <el-select v-model="row.orderFlag" clearable >
+                                    <el-select v-model="row.orderFlag" clearable>
                                         <el-option label="降序" value="desc">
                                         </el-option>
                                         <el-option label="升序" value="asc">
@@ -224,6 +230,74 @@
             </div>
         </el-dialog>
 
+        <el-dialog title="接口选项" :visible.sync="showSelectDialog">
+            <el-form :model="selectField">
+                <el-form-item label="接口">
+                    <el-select placeholder="接口" size="small" filterable clearable v-model="selectField.optionsMethod" class="filter-item">
+                        <el-option v-for="item in selectMappings" :label="item.url" :value="item.url" :key="item.url"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="显示">
+                    <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='2'" filterable clearable placeholder="显示" size="small" v-model="selectField.optionsLabel" class="filter-item">
+                        <el-option v-for="item in selectMappingsJson[selectField.optionsMethod].fileds.split(',')" :label="item" :value="item" :key="item"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="选项">
+                    <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='2'" filterable clearable placeholder="选项" size="small" v-model="selectField.optionsValue" class="filter-item">
+                        <el-option v-for="item in selectMappingsJson[selectField.optionsMethod].fileds.split(',')" :label="item" :value="item" :key="item"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="selectMappingSubmit">确定</el-button>
+                </el-form-item>
+            </el-form>
+
+        </el-dialog>
+
+        <el-dialog title="表选项" :visible.sync="showTableSelectDialog">
+            <el-form :model="selectField">
+                <el-form-item label="库类型">
+                    <el-select placeholder="库类型" size="small" filterable clearable v-model="selectField.optionsDataBaseType" @change="changeOptionsDataBaseType" class="filter-item">
+                        <el-option label="Mysql" value="Mysql">
+                        </el-option>
+                        <el-option label="SqlServer" value="SqlServer">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="数据库">
+
+                    <el-select placeholder="数据库" size="small" filterable clearable v-model="selectField.optionsDataSourceCode" @change="changeOptionsDataSourceCode" class="filter-item">
+                        <el-option v-for="item in optionsDatasourceInfoList" :label="item.databaseName" :value="item.code" :key="item.code"></el-option>
+                    </el-select>
+
+                </el-form-item>
+
+                <el-form-item label="表名">
+
+                    <el-select placeholder="表名" size="small" clearable filterable v-model="selectField.optionsMethod" @change="changeOptionsTableName" class="filter-item">
+                        <el-option v-for="item in optionsTableList" :label="item" :value="item" :key="item"></el-option>
+                    </el-select>
+
+                </el-form-item>
+
+                <el-form-item label="显示">
+                    <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='3'" filterable clearable placeholder="显示" size="small" v-model="selectField.optionsLabel" class="filter-item">
+                        <el-option v-for="item in optionsFields" :label="item.name" :value="item.name" :key="item.name"></el-option>
+                    </el-select>
+                </el-form-item>
+
+                <el-form-item label="选项">
+                    <el-select v-if="selectField.optionsMethod&&selectField.apiFlag=='3'" filterable clearable placeholder="选项" size="small" v-model="selectField.optionsValue" class="filter-item">
+                        <el-option v-for="item in optionsFields" :label="item.name" :value="item.name" :key="item.name"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="primary" @click="selectMappingSubmit">确定</el-button>
+                </el-form-item>
+            </el-form>
+
+        </el-dialog>
+
     </div>
 </template>
 <script>
@@ -300,6 +374,21 @@ export default {
             }
         });
 
+        this.$http.get({
+            url: '/dev/selectMappings'
+        }).then(res => {
+            if (res.success) {
+                if (res.data.length > 0) {
+                    var temp = {}
+                    res.data.forEach(item => {
+                        temp[item.url] = item
+                    })
+                }
+                this.selectMappingsJson = temp;
+                this.selectMappings = res.data;
+            }
+        });
+
 
         this.getDatabaseTables();
 
@@ -375,6 +464,15 @@ export default {
             subCodes: [],
             changeRankDialog: false,
 
+            selectMappings: [],
+            selectMappingsJson: {},
+            showSelectDialog: false,
+            selectField: {},
+            showTableSelectDialog: false,
+            optionsDatasourceInfoList: [],
+            optionsTableList: [],
+            optionsFields: [],
+
         }
     },
     methods: {
@@ -506,6 +604,90 @@ export default {
                 this.subtables.splice(i, 1);
             }
         },
+
+        editSelectField(row) {
+            this.selectField = row;
+
+            if (row.apiFlag == '2') {
+
+                this.showSelectDialog = true;
+            } else if (row.apiFlag == '3') {
+                this.showTableSelectDialog = true;
+            }
+        },
+        optionsInfo(row) {
+            var value = '';
+            if (row.apiFlag == '1') {
+                value = row.optionsValue;
+            } else if (row.apiFlag == '2') {
+
+                value = row.optionsMethod + ',' + row.optionsLabel + ',' + row.optionsValue;
+            } else if (row.apiFlag == '3') {
+                value = row.optionsMethod + ',' + row.optionsLabel + ',' + row.optionsValue;
+            }
+            return value;
+        },
+        selectMappingSubmit() {
+
+            if (this.selectField.apiFlag == '2') {
+
+                this.showSelectDialog = false;
+            } else if (this.selectField.apiFlag == '3') {
+                this.showTableSelectDialog = false;
+            }
+
+
+        },
+        changeOptionsDataBaseType() {
+            if ('Mysql' == this.selectField.optionsDataBaseType) {
+                this.optionsDatasourceInfoList = this.MysqlDataSourceInfos;
+                this.selectField.optionsDataSourceCode = 'dataSource';
+                this.getOptionsDatabaseTables();
+            } else if ('SqlServer' == this.selectField.optionsDataBaseType) {
+                this.optionsDatasourceInfoList = this.SqlServerDataSourceInfos;
+                this.selectField.optionsDataSourceCode = '';
+            }
+        },
+        getOptionsDatabaseTables(code) {
+            this.optionsTableList = [];
+            this.$http.get({
+                url: '/genCode/tables',
+                data: {
+                    code: code
+                }
+            }).then(res => {
+                if (res.success) {
+
+                    this.optionsTableList = res.data;
+                }
+            })
+        },
+        changeOptionsDataSourceCode() {
+
+            this.getOptionsDatabaseTables(this.selectField.optionsDataSourceCode);
+        },
+        changeOptionsTableName() {
+
+            this.optionsFields = [];
+
+            this.getOptionsTableFields(this.selectField.optionsMethod);
+        },
+
+        getOptionsTableFields(tableName) {
+            this.$http.get({
+                url: '/genCode/tableFields',
+                data: {
+                    code: this.selectField.optionsDataSourceCode,
+                    tableName: tableName,
+                    databaseType: this.selectField.optionsDataBaseType,
+                }
+            }).then(res => {
+                if (res.success) {
+
+                    this.optionsFields = res.data;
+                }
+            })
+        },
     }
 }
 </script>

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

@@ -1,61 +1,79 @@
 <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 style="width: 215px;"></el-input>
-            </el-form-item>
-            <el-form-item prop="testcTime" label="当前时间">
-                <el-input v-model="formData.testcTime" disabled style="width: 215px;"></el-input>
-            </el-form-item>
-            <el-form-item prop="testcDate" label="当前日期">
-                <el-input v-model="formData.testcDate" disabled style="width: 215px;"></el-input>
-            </el-form-item>
-            <el-form-item prop="workNumber" label="工号">
-                <el-input v-model="formData.workNumber" disabled style="width: 215px;"></el-input>
-            </el-form-item>
-            <el-form-item prop="departId" label="部门">
-                <el-input v-model="formData.departId" disabled style="width: 215px;"></el-input>
-            </el-form-item>
-            <el-form-item>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <el-form-item prop="loginUser" label="登录名">
+                            <el-input v-model="formData.loginUser" disabled style="width: 215px;"></el-input>
+                        </el-form-item>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <el-form-item prop="testcTime" label="当前时间">
+                            <el-input v-model="formData.testcTime" disabled style="width: 215px;"></el-input>
+                        </el-form-item>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="testcDate" label="当前日期">
+                            <el-input v-model="formData.testcDate" disabled style="width: 215px;"></el-input>
+                        </el-form-item>
+                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="workNumber" label="工号">
+                            <el-input v-model="formData.workNumber" disabled style="width: 215px;"></el-input>
+                        </el-form-item>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <el-form-item prop="departId" label="部门">
+                            <el-input v-model="formData.departId" disabled style="width: 215px;"></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>
@@ -70,201 +88,201 @@ import { format } from 'date-fns'
 import zh from 'date-fns/locale/zh_cn'
 
 export default {
-    props: {
-        formData: {
-            type: Object,
-            default: {
+    props:{
+        formData:{
+            type:Object,
+            default:{
+                                                                                                                                                                                                                                                                                
+            multiSelect : [],
 
-                multiSelect: [],
+                                                                                                                                                    loginUser : '',
 
-                loginUser: '',
+                                                        testcTime : format(new Date(), 'YYYY/MM/DD HH:mm', { locale: zh }),
 
-                testcTime: format(new Date(), 'YYYY/MM/DD HH:mm', { locale: zh }),
+                                                                                testcDate : format(new Date(), 'YYYY/MM/DD', { locale: zh }),
 
-                testcDate: format(new Date(), 'YYYY/MM/DD', { locale: zh }),
+                                                                                        workNumber : '',
 
-                workNumber: '',
+                                                                                departId : '',
 
-                departId: '',
-
-            }
+                        }
         }
     },
 
     created() {
 
+                                                                                                                                                                                                                                                                                                
 
 
+                    this.$http.get({
+                        url:'/testBbb/all'
+                    }).then(res => {
+                        if (res.success) {
 
-        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 });
+                    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 '';
-            }
-        },
-    },
-    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;
+            ...mapState(['userInfo']),
+                subColumn(){
+                if(this.formData.subColumn){
+                   return  this.formData.subColumn;
+                }else{
+                    return '';
                 }
-            });
         },
-        logicalValidate() {
-            var data = JSON.parse(JSON.stringify(this.formData));
-
-            var logicalData = {
-                testName: data.testName,
-                remark: data.remark,
-            }
-
-            if (JSON.stringify(logicalData) == '{}') {
-                this.submit();
+},
+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 {
-                this.$http.get({
-                    url: '/testAaa/getOne',
-                    data: logicalData
-                }).then(res => {
-                    if (res.success) {
+                return false;
+    }
+    });
+    },
+    logicalValidate() {
+        var data = JSON.parse(JSON.stringify(this.formData));
 
-                        var logicalFlag = true;
+        var logicalData = {
+                                                                                                testName:data.testName,
+                                                remark:data.remark,
+                                                                                                                                                                    }
 
-                        if (res.data) {
-                            if (this.formData.id) {
-                                if (res.data.id != this.formData.id) {
-                                    logicalFlag = false;
-                                }
-                            } else {
-                                logicalFlag = false;
-                            }
+        if (JSON.stringify(logicalData) == '{}') {
+            this.submit();
+        } else {
+            this.$http.get({
+                url: '/testAaa/getOne',
+                data: logicalData
+            }).then(res => {
+                if (res.success) {
 
-                        }
+                var logicalFlag = true;
 
-                        if (logicalFlag) {
-                            this.submit();
-                        } else {
-                            this.$message.warning('逻辑关键字:' + '枚举单选,接口单选,' + '验证失败')
+                if (res.data) {
+                    if (this.formData.id) {
+                        if (res.data.id != this.formData.id) {
+                            logicalFlag = false;
                         }
-
-
                     } else {
-                        this.$message.warning('逻辑关键字:' + '枚举单选,接口单选,' + '验证失败')
+                        logicalFlag = false;
                     }
-                });
-            }
-        },
-        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));
-            }
+                if (logicalFlag) {
+                    this.submit();
+                } else {
+                    this.$message.warning('逻辑关键字:'+'枚举单选,接口单选,'+'验证失败')
+                }
 
 
-            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('失败')
+            } else {
+                this.$message.warning('逻辑关键字:'+'枚举单选,接口单选,'+'验证失败')
+            }
+        });
+        }
+    },
+    submit() {
+        var data = JSON.parse(JSON.stringify(this.formData));
+
+                                                                                                                                                                                                    if(data.testcTime){
+                    data.testcTime = Date.parse(new Date(data.testcTime));
                 }
-            });
-        },
-        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('删除失败');
+
+                                                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('删除失败');
+        }
+    })
+    },
+}
 }
 </script>
 <style lang="less" scoped>

+ 6 - 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" border>
+        <el-table :data="tableData" :height="tableHeight" row-key="id" ref="table" size="small" border v-loading="loading">
             <el-table-column label="test_aaa" align="center">
                 <el-table-column v-if="multipleMode" align="center" type="selection" width="50">
                 </el-table-column>
@@ -365,6 +365,7 @@ export default {
             orderByStr: '',
             imgSrc: '',
             imageDialogVisible: false,
+            loading:false,
         }
     },
     computed: {
@@ -441,6 +442,8 @@ export default {
                 data[tempColumn.split(',')[1]] = tempColumn.split(',')[0];
             }
 
+            this.loading = true;
+
             this.$http.get({
                 url: '/testAaa/page',
                 data: data
@@ -449,6 +452,8 @@ export default {
                     this.totalNumber = res.data.page.totalNumber;
                     this.tableData = res.data.pp;
                 }
+
+                this.loading = false;
             })
         },
         isColumnShow(column) {