| <template> | 
|   <div class="fa-card-a calcHeight" style="height: calc(100vh - 198px);overflow-y: hidden"> | 
|     <div class="mod-sys__generator"> | 
|       <el-form :model="dataForm" label-width="80px" @keyup.enter.native="getDataList()"> | 
|         <el-form-item> | 
|           选择功能表 <el-select v-model="dataForm.tableName"> | 
|             <el-option v-for="item in tableList" :key="item.tableName" :label="item.tableName" :value="item.tableName"> | 
|             </el-option> | 
|           </el-select> | 
|           <el-button @click="getTableInfo()">查询</el-button> | 
|         </el-form-item> | 
|       </el-form> | 
|       <el-table :data="dataForm.tableData" height="320" stripe style="width: 100%"> | 
|         <el-table-column prop="columnName" label="CODE"></el-table-column> | 
|         <el-table-column prop="remarks" label="名称"> | 
|           <template v-slot="{ row }"> | 
|             <el-input size="small" v-model="row.remarks"></el-input> | 
|           </template> | 
|         </el-table-column> | 
|         <el-table-column prop="typeName" label="数据类型"></el-table-column> | 
|         <el-table-column prop="dictType" label="字典类型"> | 
|           <template v-slot="{ row }"> | 
|             <el-input size="small" v-model="row.dictType"></el-input> | 
|           </template> | 
|         </el-table-column> | 
|         <!-- <el-table-column prop="columnSize" label="数据长度"></el-table-column> --> | 
|         <el-table-column prop="isTableColumn" label="页面表格列"> | 
|           <template v-slot="{ row }"> | 
|             <el-checkbox v-model="row.isTableColumn"></el-checkbox> | 
|           </template> | 
|         </el-table-column> | 
|         <el-table-column prop="isSelectColumn" label="页面查询列"> | 
|           <template v-slot="{ row }"> | 
|             <el-checkbox v-model="row.isSelectColumn"></el-checkbox> | 
|           </template> | 
|         </el-table-column> | 
|         <el-table-column prop="op" label="查询条件表达式"> | 
|           <template v-slot="{ row }"> | 
|             <el-select v-model="row.op" v-bind:disabled="!row.isSelectColumn"> | 
|               <el-option v-for="item in eqList" :key="item.op" :label="item.title" :value="item.op"> | 
|               </el-option> | 
|             </el-select> | 
|           </template> | 
|         </el-table-column> | 
|       </el-table> | 
|   | 
|       <el-divider> | 
|         <el-tag type="primary">生成代码参数:</el-tag> | 
|       </el-divider> | 
|   | 
|       <div v-show="dataForm.tableData.length > 0" style="height:300px;overflow-y: auto"> | 
|         <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="200px"> | 
|           <el-form-item prop="className" label="实体类名称" style="width: 60%"> | 
|             <el-input v-model="dataForm.className" placeholder="请输入生成的实体对象名称"></el-input> | 
|           </el-form-item> | 
|   | 
|           <el-form-item prop="packName" label="包名" style="width: 60%"> | 
|             <el-input v-model="dataForm.packName" placeholder="请输入生成的Java包名"></el-input> | 
|           </el-form-item> | 
|   | 
|           <el-form-item prop="javaFilePath" label="Java项目路径" :inline="true"> | 
|   | 
|             <el-select v-model="dataForm.javaFilePath" placeholder="请选择"> | 
|               <el-option v-for="item in modules" :key="item.filePath" :label="item.fileName" :value="item.filePath"/> | 
|             </el-select> | 
|             <el-input style="padding-left: 15px;width: 60%" v-model="dataForm.javaFilePath" | 
|                       placeholder="请输入Java项目路径"></el-input> | 
|           </el-form-item> | 
|   | 
|           <el-form-item prop="isPageFlag" label="是否生成页面"> | 
|             <el-checkbox v-model="dataForm.isPageFlag"></el-checkbox> | 
|           </el-form-item> | 
|   | 
|           <el-form-item v-if="dataForm.isPageFlag" prop="vueFilePath" label="Vue项目路径"> | 
|             <el-select v-model="dataForm.vueFilePath" placeholder="请选择"> | 
|               <el-option v-for="item in modules" :key="item.filePath" :label="item.fileName" :value="item.filePath"/> | 
|             </el-select> | 
|             <el-input style="padding-left: 15px;width: 60%" v-model="dataForm.vueFilePath" | 
|                       placeholder="请输入Vue项目路径"></el-input> | 
|           </el-form-item> | 
|           <el-form-item prop="checked" label="是否生成service"> | 
|             <el-checkbox v-model="dataForm.checked"></el-checkbox> | 
|           </el-form-item> | 
|   | 
|           <!-- <el-form-item prop="isExport" label="是否需要导出功能"> | 
|             <el-checkbox v-model="dataForm.isExport"></el-checkbox> | 
|           </el-form-item> --> | 
|         </el-form> | 
|         <el-button style="margin-left: 20%" type="primary" @click="formSubmit()">生成</el-button> | 
|       </div> | 
|     </div> | 
|   </div> | 
| </template> | 
|   | 
| <script> | 
|   | 
|   export default { | 
|     data() { | 
|       return { | 
|         modules: [{id: '11', fileName: '后端', filePath: 'D:\\test_project\\modules\\mainPart'}, { | 
|           id: '22', | 
|           fileName: '前端', | 
|           filePath: 'D:\\test_project\\web' | 
|         }], // 后台modules | 
|         eqList: [], | 
|         dataForm: { | 
|           tableName: '', | 
|           className: '', | 
|           javaFilePath: '', | 
|           vueFilePath: '', | 
|           checked: true, | 
|           packName: 'com.zt.life.modules', | 
|           isPageFlag: true, | 
|           isExport: false, | 
|           tableData: [], | 
|           tableList:[] | 
|         } | 
|   | 
|       } | 
|     }, | 
|   | 
|     computed: { | 
|       dataRule() { | 
|         return { | 
|           className: [ | 
|             {required: true, message: '请输入实体类名称', trigger: 'change'} | 
|           ], | 
|           packName: [ | 
|             {required: true, message: '请输入生成的Java包名', trigger: 'change'} | 
|           ], | 
|           javaFilePath: [ | 
|             {required: true, message: '请输入Java项目路径', trigger: 'change'} | 
|           ], | 
|           vueFilePath: [ | 
|             {required: true, message: '请输入Vue项目路径', trigger: 'change'} | 
|           ], | 
|           checked: [ | 
|             {required: true, message: '请选择是否生成service', trigger: 'change'} | 
|           ], | 
|           isPageFlag: [ | 
|             {required: true, message: '请选择是否生成页面', trigger: 'change'} | 
|           ], | 
|           isExport: [ | 
|             {required: true, message: '是否需要导出功能', trigger: 'change'} | 
|           ] | 
|         } | 
|       } | 
|     }, | 
|   | 
|     created() { | 
|       this.getInfo() | 
|     }, | 
|     methods: { | 
|       // 获取信息 | 
|       async getInfo() { | 
|         let res = await this.$http.get(`/sys/generator/properties`) | 
|         if (res.success) { | 
|           this.modules = res.data.modules | 
|           this.eqList = res.data.eqList | 
|           this.tableList = res.data.tableList | 
|         } | 
|       }, | 
|       async getTableInfo() { | 
|         if (!this.dataForm.tableName) { | 
|           this.$tip.error('请输入表名') | 
|           return | 
|         } | 
|         let res = await this.$http.get('/sys/generator/getTable?tableName=' + this.dataForm.tableName) | 
|         if (res.success) { | 
|           this.dataForm.tableData = res.data | 
|           this.dataForm.className = this.dataForm.tableName.replace(/_(\w)/g, function (all, letter) { | 
|             return letter.toUpperCase() | 
|           }).replace(/\b(\w)|\s(\w)/g, function (m) { | 
|             return m.toUpperCase() | 
|           }) | 
|         } | 
|       }, | 
|       // 表单提交 | 
|       formSubmit() { | 
|         this.$refs['dataForm'].validate(async valid => { | 
|           if (valid) { | 
|             let data = { | 
|               ...this.dataForm | 
|             } | 
|             data.tableData = JSON.stringify(this.dataForm.tableData) | 
|             let res = await this.$http[!this.dataForm.id ? 'post' : 'post']('/sys/generator', data) | 
|             if (res.success) { | 
|               this.$tip.success('生成代码!赶紧去验证把!') | 
|             } | 
|           } | 
|         }) | 
|       } | 
|   | 
|     } | 
|   } | 
|   | 
| </script> | 
| <style> | 
|   | 
| </style> |