update 调整代码格式
This commit is contained in:
		| @ -1,3 +1,3 @@ | ||||
| <template> | ||||
| 	<div>表单构建 <svg-icon icon-class="build" /></div> | ||||
|   <div>表单构建 <svg-icon icon-class="build" /></div> | ||||
| </template> | ||||
|  | ||||
| @ -5,8 +5,8 @@ const prop = defineProps({ | ||||
|   info: { | ||||
|     type: Object as PropType<any>, | ||||
|     default: () => { | ||||
| 			return {}; | ||||
| 		} | ||||
|       return {}; | ||||
|     } | ||||
|   } | ||||
| }); | ||||
|  | ||||
| @ -22,33 +22,33 @@ const rules = ref({ | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
| 	<el-form ref="basicInfoForm" :model="infoForm" :rules="rules" label-width="150px"> | ||||
| 		<el-row> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="表名称" prop="tableName"> | ||||
| 					<el-input placeholder="请输入仓库名称" v-model="infoForm.tableName" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="表描述" prop="tableComment"> | ||||
| 					<el-input placeholder="请输入" v-model="infoForm.tableComment" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="实体类名称" prop="className"> | ||||
| 					<el-input placeholder="请输入" v-model="infoForm.className" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item label="作者" prop="functionAuthor"> | ||||
| 					<el-input placeholder="请输入" v-model="infoForm.functionAuthor" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 			<el-col :span="24"> | ||||
| 				<el-form-item label="备注" prop="remark"> | ||||
| 					<el-input type="textarea" :rows="3" v-model="infoForm.remark"></el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
| 	</el-form> | ||||
|   <el-form ref="basicInfoForm" :model="infoForm" :rules="rules" label-width="150px"> | ||||
|     <el-row> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="表名称" prop="tableName"> | ||||
|           <el-input placeholder="请输入仓库名称" v-model="infoForm.tableName" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="表描述" prop="tableComment"> | ||||
|           <el-input placeholder="请输入" v-model="infoForm.tableComment" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="实体类名称" prop="className"> | ||||
|           <el-input placeholder="请输入" v-model="infoForm.className" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item label="作者" prop="functionAuthor"> | ||||
|           <el-input placeholder="请输入" v-model="infoForm.functionAuthor" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|       <el-col :span="24"> | ||||
|         <el-form-item label="备注" prop="remark"> | ||||
|           <el-input type="textarea" :rows="3" v-model="infoForm.remark"></el-input> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|   </el-form> | ||||
| </template> | ||||
|  | ||||
| @ -1,3 +1,117 @@ | ||||
| <template> | ||||
|   <el-card> | ||||
|     <el-tabs v-model="activeName"> | ||||
|       <el-tab-pane label="基本信息" name="basic"> | ||||
|         <basic-info-form ref="basicInfo" :info="info" /> | ||||
|       </el-tab-pane> | ||||
|       <el-tab-pane label="字段信息" name="columnInfo"> | ||||
|         <el-table ref="dragTable" :data="columns" row-key="columnId" :max-height="tableHeight"> | ||||
|           <el-table-column label="序号" type="index" min-width="5%" /> | ||||
|           <el-table-column label="字段列名" prop="columnName" min-width="10%" :show-overflow-tooltip="true" /> | ||||
|           <el-table-column label="字段描述" min-width="10%"> | ||||
|             <template #default="scope"> | ||||
|               <el-input v-model="scope.row.columnComment"></el-input> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="物理类型" prop="columnType" min-width="10%" :show-overflow-tooltip="true" /> | ||||
|           <el-table-column label="Java类型" min-width="11%"> | ||||
|             <template #default="scope"> | ||||
|               <el-select v-model="scope.row.javaType"> | ||||
|                 <el-option label="Long" value="Long" /> | ||||
|                 <el-option label="String" value="String" /> | ||||
|                 <el-option label="Integer" value="Integer" /> | ||||
|                 <el-option label="Double" value="Double" /> | ||||
|                 <el-option label="BigDecimal" value="BigDecimal" /> | ||||
|                 <el-option label="Date" value="Date" /> | ||||
|                 <el-option label="Boolean" value="Boolean" /> | ||||
|               </el-select> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="java属性" min-width="10%"> | ||||
|             <template #default="scope"> | ||||
|               <el-input v-model="scope.row.javaField"></el-input> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|  | ||||
|           <el-table-column label="插入" min-width="5%"> | ||||
|             <template #default="scope"> | ||||
|               <el-checkbox true-label="1" false-label="0" v-model="scope.row.isInsert"></el-checkbox> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="编辑" min-width="5%"> | ||||
|             <template #default="scope"> | ||||
|               <el-checkbox true-label="1" false-label="0" v-model="scope.row.isEdit"></el-checkbox> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="列表" min-width="5%"> | ||||
|             <template #default="scope"> | ||||
|               <el-checkbox true-label="1" false-label="0" v-model="scope.row.isList"></el-checkbox> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="查询" min-width="5%"> | ||||
|             <template #default="scope"> | ||||
|               <el-checkbox true-label="1" false-label="0" v-model="scope.row.isQuery"></el-checkbox> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="查询方式" min-width="10%"> | ||||
|             <template #default="scope"> | ||||
|               <el-select v-model="scope.row.queryType"> | ||||
|                 <el-option label="=" value="EQ" /> | ||||
|                 <el-option label="!=" value="NE" /> | ||||
|                 <el-option label=">" value="GT" /> | ||||
|                 <el-option label=">=" value="GE" /> | ||||
|                 <el-option label="<" value="LT" /> | ||||
|                 <el-option label="<=" value="LE" /> | ||||
|                 <el-option label="LIKE" value="LIKE" /> | ||||
|                 <el-option label="BETWEEN" value="BETWEEN" /> | ||||
|               </el-select> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="必填" min-width="5%"> | ||||
|             <template #default="scope"> | ||||
|               <el-checkbox true-label="1" false-label="0" v-model="scope.row.isRequired"></el-checkbox> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="显示类型" min-width="12%"> | ||||
|             <template #default="scope"> | ||||
|               <el-select v-model="scope.row.htmlType"> | ||||
|                 <el-option label="文本框" value="input" /> | ||||
|                 <el-option label="文本域" value="textarea" /> | ||||
|                 <el-option label="下拉框" value="select" /> | ||||
|                 <el-option label="单选框" value="radio" /> | ||||
|                 <el-option label="复选框" value="checkbox" /> | ||||
|                 <el-option label="日期控件" value="datetime" /> | ||||
|                 <el-option label="图片上传" value="imageUpload" /> | ||||
|                 <el-option label="文件上传" value="fileUpload" /> | ||||
|                 <el-option label="富文本控件" value="editor" /> | ||||
|               </el-select> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|           <el-table-column label="字典类型" min-width="12%"> | ||||
|             <template #default="scope"> | ||||
|               <el-select v-model="scope.row.dictType" clearable filterable placeholder="请选择"> | ||||
|                 <el-option v-for="dict in dictOptions" :key="dict.dictType" :label="dict.dictName" :value="dict.dictType"> | ||||
|                   <span style="float: left">{{ dict.dictName }}</span> | ||||
|                   <span style="float: right; color: #8492a6; font-size: 13px">{{ dict.dictType }}</span> | ||||
|                 </el-option> | ||||
|               </el-select> | ||||
|             </template> | ||||
|           </el-table-column> | ||||
|         </el-table> | ||||
|       </el-tab-pane> | ||||
|       <el-tab-pane label="生成信息" name="genInfo"> | ||||
|         <gen-info-form ref="genInfo" :info="info" :tables="tables" /> | ||||
|       </el-tab-pane> | ||||
|     </el-tabs> | ||||
|     <el-form label-width="100px"> | ||||
|       <div style="text-align: center;margin-left:-100px;margin-top:10px;"> | ||||
|         <el-button type="primary" @click="submitForm()">提交</el-button> | ||||
|         <el-button @click="close()">返回</el-button> | ||||
|       </div> | ||||
|     </el-form> | ||||
|   </el-card> | ||||
| </template> | ||||
|  | ||||
| <script setup name="GenEdit" lang="ts"> | ||||
| import { getGenTable, updateGenTable } from '@/api/tool/gen'; | ||||
| import { DbColumnVO, DbTableVO } from '@/api/tool/gen/types'; | ||||
| @ -22,168 +136,54 @@ const genInfo = ref(genInfoForm); | ||||
|  | ||||
| /** 提交按钮 */ | ||||
| const submitForm = () => { | ||||
|   const basicForm = basicInfo.value.$refs.basicInfoForm; | ||||
|   const genForm = genInfo.value.$refs.genInfoForm; | ||||
|     const basicForm = basicInfo.value.$refs.basicInfoForm; | ||||
|     const genForm = genInfo.value.$refs.genInfoForm; | ||||
|  | ||||
|   Promise.all([basicForm, genForm].map(getFormPromise)).then(async res => { | ||||
|     const validateResult = res.every(item => !!item); | ||||
|     if (validateResult) { | ||||
|       const genTable: any = Object.assign({}, info.value); | ||||
|       genTable.columns = columns.value; | ||||
|       genTable.params = { | ||||
|         treeCode: info.value?.treeCode, | ||||
|         treeName: info.value.treeName, | ||||
|         treeParentCode: info.value.treeParentCode, | ||||
|         parentMenuId: info.value.parentMenuId | ||||
| 			}; | ||||
| 			console.log(genTable) | ||||
| 			const response = await updateGenTable(genTable); | ||||
| 			proxy?.$modal.msgSuccess(response.msg); | ||||
| 			if (response.code === 200) { | ||||
| 				close(); | ||||
| 			} | ||||
|     } else { | ||||
|       proxy?.$modal.msgError("表单校验未通过,请重新检查提交内容"); | ||||
|     } | ||||
|   }); | ||||
|     Promise.all([basicForm, genForm].map(getFormPromise)).then(async res => { | ||||
|         const validateResult = res.every(item => !!item); | ||||
|         if (validateResult) { | ||||
|             const genTable: any = Object.assign({}, info.value); | ||||
|             genTable.columns = columns.value; | ||||
|             genTable.params = { | ||||
|                 treeCode: info.value?.treeCode, | ||||
|                 treeName: info.value.treeName, | ||||
|                 treeParentCode: info.value.treeParentCode, | ||||
|                 parentMenuId: info.value.parentMenuId | ||||
|             }; | ||||
|             console.log(genTable) | ||||
|             const response = await updateGenTable(genTable); | ||||
|             proxy?.$modal.msgSuccess(response.msg); | ||||
|             if (response.code === 200) { | ||||
|                 close(); | ||||
|             } | ||||
|         } else { | ||||
|             proxy?.$modal.msgError("表单校验未通过,请重新检查提交内容"); | ||||
|         } | ||||
|     }); | ||||
| } | ||||
| const getFormPromise = (form: any) => { | ||||
|   return new Promise(resolve => { | ||||
|     form.validate((res: any) => { | ||||
|       resolve(res); | ||||
|     return new Promise(resolve => { | ||||
|         form.validate((res: any) => { | ||||
|             resolve(res); | ||||
|         }); | ||||
|     }); | ||||
|   }); | ||||
| } | ||||
| const close = () => { | ||||
|   const obj = { path: "/tool/gen", query: { t: Date.now(), pageNum: route.query.pageNum } }; | ||||
|   proxy?.$tab.closeOpenPage(obj); | ||||
|     const obj = { path: "/tool/gen", query: { t: Date.now(), pageNum: route.query.pageNum } }; | ||||
|     proxy?.$tab.closeOpenPage(obj); | ||||
| } | ||||
|  | ||||
| (async () => { | ||||
|   const tableId = route.params && route.params.tableId as string; | ||||
|   if (tableId) { | ||||
|     // 获取表详细信息 | ||||
| 		const res = await getGenTable(tableId); | ||||
| 		columns.value = res.data.rows; | ||||
| 		info.value = res.data.info; | ||||
| 		tables.value = res.data.tables; | ||||
|     /** 查询字典下拉列表 */ | ||||
| 		const response = await getDictOptionselect(); | ||||
| 		dictOptions.value = response.data; | ||||
|   } | ||||
|     const tableId = route.params && route.params.tableId as string; | ||||
|     if (tableId) { | ||||
|         // 获取表详细信息 | ||||
|         const res = await getGenTable(tableId); | ||||
|         columns.value = res.data.rows; | ||||
|         info.value = res.data.info; | ||||
|         tables.value = res.data.tables; | ||||
|         /** 查询字典下拉列表 */ | ||||
|         const response = await getDictOptionselect(); | ||||
|         dictOptions.value = response.data; | ||||
|     } | ||||
| })(); | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
| 	<el-card> | ||||
| 		<el-tabs v-model="activeName"> | ||||
| 			<el-tab-pane label="基本信息" name="basic"> | ||||
| 				<basic-info-form ref="basicInfo" :info="info" /> | ||||
| 			</el-tab-pane> | ||||
| 			<el-tab-pane label="字段信息" name="columnInfo"> | ||||
| 				<el-table ref="dragTable" :data="columns" row-key="columnId" :max-height="tableHeight"> | ||||
| 					<el-table-column label="序号" type="index" min-width="5%" /> | ||||
| 					<el-table-column label="字段列名" prop="columnName" min-width="10%" :show-overflow-tooltip="true" /> | ||||
| 					<el-table-column label="字段描述" min-width="10%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-input v-model="scope.row.columnComment"></el-input> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
| 					<el-table-column label="物理类型" prop="columnType" min-width="10%" :show-overflow-tooltip="true" /> | ||||
| 					<el-table-column label="Java类型" min-width="11%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-select v-model="scope.row.javaType"> | ||||
| 								<el-option label="Long" value="Long" /> | ||||
| 								<el-option label="String" value="String" /> | ||||
| 								<el-option label="Integer" value="Integer" /> | ||||
| 								<el-option label="Double" value="Double" /> | ||||
| 								<el-option label="BigDecimal" value="BigDecimal" /> | ||||
| 								<el-option label="Date" value="Date" /> | ||||
| 								<el-option label="Boolean" value="Boolean" /> | ||||
| 							</el-select> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
| 					<el-table-column label="java属性" min-width="10%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-input v-model="scope.row.javaField"></el-input> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
|  | ||||
| 					<el-table-column label="插入" min-width="5%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-checkbox true-label="1" false-label="0" v-model="scope.row.isInsert"></el-checkbox> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
| 					<el-table-column label="编辑" min-width="5%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-checkbox true-label="1" false-label="0" v-model="scope.row.isEdit"></el-checkbox> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
| 					<el-table-column label="列表" min-width="5%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-checkbox true-label="1" false-label="0" v-model="scope.row.isList"></el-checkbox> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
| 					<el-table-column label="查询" min-width="5%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-checkbox true-label="1" false-label="0" v-model="scope.row.isQuery"></el-checkbox> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
| 					<el-table-column label="查询方式" min-width="10%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-select v-model="scope.row.queryType"> | ||||
| 								<el-option label="=" value="EQ" /> | ||||
| 								<el-option label="!=" value="NE" /> | ||||
| 								<el-option label=">" value="GT" /> | ||||
| 								<el-option label=">=" value="GE" /> | ||||
| 								<el-option label="<" value="LT" /> | ||||
| 								<el-option label="<=" value="LE" /> | ||||
| 								<el-option label="LIKE" value="LIKE" /> | ||||
| 								<el-option label="BETWEEN" value="BETWEEN" /> | ||||
| 							</el-select> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
| 					<el-table-column label="必填" min-width="5%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-checkbox true-label="1" false-label="0" v-model="scope.row.isRequired"></el-checkbox> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
| 					<el-table-column label="显示类型" min-width="12%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-select v-model="scope.row.htmlType"> | ||||
| 								<el-option label="文本框" value="input" /> | ||||
| 								<el-option label="文本域" value="textarea" /> | ||||
| 								<el-option label="下拉框" value="select" /> | ||||
| 								<el-option label="单选框" value="radio" /> | ||||
| 								<el-option label="复选框" value="checkbox" /> | ||||
| 								<el-option label="日期控件" value="datetime" /> | ||||
| 								<el-option label="图片上传" value="imageUpload" /> | ||||
| 								<el-option label="文件上传" value="fileUpload" /> | ||||
| 								<el-option label="富文本控件" value="editor" /> | ||||
| 							</el-select> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
| 					<el-table-column label="字典类型" min-width="12%"> | ||||
| 						<template #default="scope"> | ||||
| 							<el-select v-model="scope.row.dictType" clearable filterable placeholder="请选择"> | ||||
| 								<el-option v-for="dict in dictOptions" :key="dict.dictType" :label="dict.dictName" :value="dict.dictType"> | ||||
| 									<span style="float: left">{{ dict.dictName }}</span> | ||||
| 									<span style="float: right; color: #8492a6; font-size: 13px">{{ dict.dictType }}</span> | ||||
| 								</el-option> | ||||
| 							</el-select> | ||||
| 						</template> | ||||
| 					</el-table-column> | ||||
| 				</el-table> | ||||
| 			</el-tab-pane> | ||||
| 			<el-tab-pane label="生成信息" name="genInfo"> | ||||
| 				<gen-info-form ref="genInfo" :info="info" :tables="tables" /> | ||||
| 			</el-tab-pane> | ||||
| 		</el-tabs> | ||||
| 		<el-form label-width="100px"> | ||||
| 			<div style="text-align: center;margin-left:-100px;margin-top:10px;"> | ||||
| 				<el-button type="primary" @click="submitForm()">提交</el-button> | ||||
| 				<el-button @click="close()">返回</el-button> | ||||
| 			</div> | ||||
| 		</el-form> | ||||
| 	</el-card> | ||||
| </template> | ||||
|  | ||||
| @ -41,25 +41,25 @@ const subSelectChange = () => { | ||||
| const tplSelectChange = (value: string) => { | ||||
|   if (value !== "sub") { | ||||
|     infoForm.value.subTableName = ""; | ||||
| 		infoForm.value.subTableFkName = ""; | ||||
|     infoForm.value.subTableFkName = ""; | ||||
|   } | ||||
| } | ||||
| const setSubTableColumns = (value: string) => { | ||||
| 	table.value.forEach(item => { | ||||
| 		const name = item.tableName; | ||||
| 		if (value === name) { | ||||
| 			subColumns.value = item.columns; | ||||
| 			return; | ||||
|   table.value.forEach(item => { | ||||
|     const name = item.tableName; | ||||
|     if (value === name) { | ||||
|       subColumns.value = item.columns; | ||||
|       return; | ||||
|     } | ||||
| 	}) | ||||
|   }) | ||||
| } | ||||
| /** 查询菜单下拉树结构 */ | ||||
| const getMenuTreeselect = async () => { | ||||
| 	const res = await listMenu(); | ||||
| 	const data = proxy?.handleTree<MenuOptionsType>(res.data, "menuId"); | ||||
| 	if (data) { | ||||
| 		menuOptions.value = data | ||||
| 	} | ||||
|   const res = await listMenu(); | ||||
|   const data = proxy?.handleTree<MenuOptionsType>(res.data, "menuId"); | ||||
|   if (data) { | ||||
|     menuOptions.value = data | ||||
|   } | ||||
| } | ||||
|  | ||||
| watch(() => props.info.subTableName, val => { | ||||
| @ -67,223 +67,223 @@ watch(() => props.info.subTableName, val => { | ||||
| }); | ||||
|  | ||||
| onMounted(() => { | ||||
| 	getMenuTreeselect(); | ||||
|   getMenuTreeselect(); | ||||
| }) | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
| 	<el-form ref="genInfoForm" :model="infoForm" :rules="rules" label-width="150px"> | ||||
| 		<el-row> | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item prop="tplCategory"> | ||||
| 					<template #label>生成模板</template> | ||||
| 					<el-select v-model="infoForm.tplCategory" @change="tplSelectChange"> | ||||
| 						<el-option label="单表(增删改查)" value="crud" /> | ||||
| 						<el-option label="树表(增删改查)" value="tree" /> | ||||
| 					</el-select> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|   <el-form ref="genInfoForm" :model="infoForm" :rules="rules" label-width="150px"> | ||||
|     <el-row> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item prop="tplCategory"> | ||||
|           <template #label>生成模板</template> | ||||
|           <el-select v-model="infoForm.tplCategory" @change="tplSelectChange"> | ||||
|             <el-option label="单表(增删改查)" value="crud" /> | ||||
|             <el-option label="树表(增删改查)" value="tree" /> | ||||
|           </el-select> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item prop="packageName"> | ||||
| 					<template #label> | ||||
| 						生成包路径 | ||||
| 						<el-tooltip content="生成在哪个java包下,例如 com.ruoyi.system" placement="top"> | ||||
| 							<el-icon><question-filled /></el-icon> | ||||
| 						</el-tooltip> | ||||
| 					</template> | ||||
| 					<el-input v-model="infoForm.packageName" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item prop="packageName"> | ||||
|           <template #label> | ||||
|             生成包路径 | ||||
|             <el-tooltip content="生成在哪个java包下,例如 com.ruoyi.system" placement="top"> | ||||
|               <el-icon><question-filled /></el-icon> | ||||
|             </el-tooltip> | ||||
|           </template> | ||||
|           <el-input v-model="infoForm.packageName" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item prop="moduleName"> | ||||
| 					<template #label> | ||||
| 						生成模块名 | ||||
| 						<el-tooltip content="可理解为子系统名,例如 system" placement="top"> | ||||
| 							<el-icon><question-filled /></el-icon> | ||||
| 						</el-tooltip> | ||||
| 					</template> | ||||
| 					<el-input v-model="infoForm.moduleName" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item prop="moduleName"> | ||||
|           <template #label> | ||||
|             生成模块名 | ||||
|             <el-tooltip content="可理解为子系统名,例如 system" placement="top"> | ||||
|               <el-icon><question-filled /></el-icon> | ||||
|             </el-tooltip> | ||||
|           </template> | ||||
|           <el-input v-model="infoForm.moduleName" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item prop="businessName"> | ||||
| 					<template #label> | ||||
| 						生成业务名 | ||||
| 						<el-tooltip content="可理解为功能英文名,例如 user" placement="top"> | ||||
| 							<el-icon><question-filled /></el-icon> | ||||
| 						</el-tooltip> | ||||
| 					</template> | ||||
| 					<el-input v-model="infoForm.businessName" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item prop="businessName"> | ||||
|           <template #label> | ||||
|             生成业务名 | ||||
|             <el-tooltip content="可理解为功能英文名,例如 user" placement="top"> | ||||
|               <el-icon><question-filled /></el-icon> | ||||
|             </el-tooltip> | ||||
|           </template> | ||||
|           <el-input v-model="infoForm.businessName" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item prop="functionName"> | ||||
| 					<template #label> | ||||
| 						生成功能名 | ||||
| 						<el-tooltip content="用作类描述,例如 用户" placement="top"> | ||||
| 							<el-icon><question-filled /></el-icon> | ||||
| 						</el-tooltip> | ||||
| 					</template> | ||||
| 					<el-input v-model="infoForm.functionName" /> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item prop="functionName"> | ||||
|           <template #label> | ||||
|             生成功能名 | ||||
|             <el-tooltip content="用作类描述,例如 用户" placement="top"> | ||||
|               <el-icon><question-filled /></el-icon> | ||||
|             </el-tooltip> | ||||
|           </template> | ||||
|           <el-input v-model="infoForm.functionName" /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item> | ||||
| 					<template #label> | ||||
| 						上级菜单 | ||||
| 						<el-tooltip content="分配到指定菜单下,例如 系统管理" placement="top"> | ||||
| 							<el-icon><question-filled /></el-icon> | ||||
| 						</el-tooltip> | ||||
| 					</template> | ||||
| 					<tree-select | ||||
| 						v-model:value="infoForm.parentMenuId" | ||||
| 						:options="menuOptions" | ||||
| 						:objMap="{ value: 'menuId', label: 'menuName', children: 'children' }" | ||||
| 						placeholder="请选择系统菜单" | ||||
| 					/> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item> | ||||
|           <template #label> | ||||
|             上级菜单 | ||||
|             <el-tooltip content="分配到指定菜单下,例如 系统管理" placement="top"> | ||||
|               <el-icon><question-filled /></el-icon> | ||||
|             </el-tooltip> | ||||
|           </template> | ||||
|           <tree-select | ||||
|             v-model:value="infoForm.parentMenuId" | ||||
|             :options="menuOptions" | ||||
|             :objMap="{ value: 'menuId', label: 'menuName', children: 'children' }" | ||||
|             placeholder="请选择系统菜单" | ||||
|           /> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
| 			<el-col :span="12"> | ||||
| 				<el-form-item prop="genType"> | ||||
| 					<template #label> | ||||
| 						生成代码方式 | ||||
| 						<el-tooltip content="默认为zip压缩包下载,也可以自定义生成路径" placement="top"> | ||||
| 							<el-icon><question-filled /></el-icon> | ||||
| 						</el-tooltip> | ||||
| 					</template> | ||||
| 					<el-radio v-model="infoForm.genType" label="0">zip压缩包</el-radio> | ||||
| 					<el-radio v-model="infoForm.genType" label="1">自定义路径</el-radio> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
|       <el-col :span="12"> | ||||
|         <el-form-item prop="genType"> | ||||
|           <template #label> | ||||
|             生成代码方式 | ||||
|             <el-tooltip content="默认为zip压缩包下载,也可以自定义生成路径" placement="top"> | ||||
|               <el-icon><question-filled /></el-icon> | ||||
|             </el-tooltip> | ||||
|           </template> | ||||
|           <el-radio v-model="infoForm.genType" label="0">zip压缩包</el-radio> | ||||
|           <el-radio v-model="infoForm.genType" label="1">自定义路径</el-radio> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|  | ||||
| 			<el-col :span="24" v-if="infoForm.genType == '1'"> | ||||
| 				<el-form-item prop="genPath"> | ||||
| 					<template #label> | ||||
| 						自定义路径 | ||||
| 						<el-tooltip content="填写磁盘绝对路径,若不填写,则生成到当前Web项目下" placement="top"> | ||||
| 							<el-icon><question-filled /></el-icon> | ||||
| 						</el-tooltip> | ||||
| 					</template> | ||||
| 					<el-input v-model="infoForm.genPath"> | ||||
| 						<template #append> | ||||
| 							<el-dropdown> | ||||
| 								<el-button type="primary"> | ||||
| 									最近路径快速选择 | ||||
| 									<i class="el-icon-arrow-down el-icon--right"></i> | ||||
| 								</el-button> | ||||
| 								<template #dropdown> | ||||
| 									<el-dropdown-menu> | ||||
| 										<el-dropdown-item @click="infoForm.genPath = '/'">恢复默认的生成基础路径</el-dropdown-item> | ||||
| 									</el-dropdown-menu> | ||||
| 								</template> | ||||
| 							</el-dropdown> | ||||
| 						</template> | ||||
| 					</el-input> | ||||
| 				</el-form-item> | ||||
| 			</el-col> | ||||
| 		</el-row> | ||||
|       <el-col :span="24" v-if="infoForm.genType == '1'"> | ||||
|         <el-form-item prop="genPath"> | ||||
|           <template #label> | ||||
|             自定义路径 | ||||
|             <el-tooltip content="填写磁盘绝对路径,若不填写,则生成到当前Web项目下" placement="top"> | ||||
|               <el-icon><question-filled /></el-icon> | ||||
|             </el-tooltip> | ||||
|           </template> | ||||
|           <el-input v-model="infoForm.genPath"> | ||||
|             <template #append> | ||||
|               <el-dropdown> | ||||
|                 <el-button type="primary"> | ||||
|                   最近路径快速选择 | ||||
|                   <i class="el-icon-arrow-down el-icon--right"></i> | ||||
|                 </el-button> | ||||
|                 <template #dropdown> | ||||
|                   <el-dropdown-menu> | ||||
|                     <el-dropdown-item @click="infoForm.genPath = '/'">恢复默认的生成基础路径</el-dropdown-item> | ||||
|                   </el-dropdown-menu> | ||||
|                 </template> | ||||
|               </el-dropdown> | ||||
|             </template> | ||||
|           </el-input> | ||||
|         </el-form-item> | ||||
|       </el-col> | ||||
|     </el-row> | ||||
|  | ||||
| 		<template v-if="info.tplCategory == 'tree'"> | ||||
| 			<h4 class="form-header">其他信息</h4> | ||||
| 			<el-row v-show="info.tplCategory == 'tree'"> | ||||
| 				<el-col :span="12"> | ||||
| 					<el-form-item> | ||||
| 						<template #label> | ||||
| 							树编码字段 | ||||
| 							<el-tooltip content="树显示的编码字段名, 如:dept_id" placement="top"> | ||||
| 								<el-icon><question-filled /></el-icon> | ||||
| 							</el-tooltip> | ||||
| 						</template> | ||||
| 						<el-select v-model="infoForm.treeCode" placeholder="请选择"> | ||||
| 							<el-option | ||||
| 								v-for="(column, index) in info.columns" | ||||
| 								:key="index" | ||||
| 								:label="column.columnName + ':' + column.columnComment" | ||||
| 								:value="column.columnName" | ||||
| 							></el-option> | ||||
| 						</el-select> | ||||
| 					</el-form-item> | ||||
| 				</el-col> | ||||
| 				<el-col :span="12"> | ||||
| 					<el-form-item> | ||||
| 						<template #label> | ||||
| 							树父编码字段 | ||||
| 							<el-tooltip content="树显示的父编码字段名, 如:parent_Id" placement="top"> | ||||
| 								<el-icon><question-filled /></el-icon> | ||||
| 							</el-tooltip> | ||||
| 						</template> | ||||
| 						<el-select v-model="infoForm.treeParentCode" placeholder="请选择"> | ||||
| 							<el-option | ||||
| 								v-for="(column, index) in infoForm.columns" | ||||
| 								:key="index" | ||||
| 								:label="column.columnName + ':' + column.columnComment" | ||||
| 								:value="column.columnName" | ||||
| 							></el-option> | ||||
| 						</el-select> | ||||
| 					</el-form-item> | ||||
| 				</el-col> | ||||
| 				<el-col :span="12"> | ||||
| 					<el-form-item> | ||||
| 						<template #label> | ||||
| 							树名称字段 | ||||
| 							<el-tooltip content="树节点的显示名称字段名, 如:dept_name" placement="top"> | ||||
| 								<el-icon><question-filled /></el-icon> | ||||
| 							</el-tooltip> | ||||
| 						</template> | ||||
| 						<el-select v-model="infoForm.treeName" placeholder="请选择"> | ||||
| 							<el-option | ||||
| 								v-for="(column, index) in info.columns" | ||||
| 								:key="index" | ||||
| 								:label="column.columnName + ':' + column.columnComment" | ||||
| 								:value="column.columnName" | ||||
| 							></el-option> | ||||
| 						</el-select> | ||||
| 					</el-form-item> | ||||
| 				</el-col> | ||||
| 			</el-row> | ||||
| 		</template> | ||||
|     <template v-if="info.tplCategory == 'tree'"> | ||||
|       <h4 class="form-header">其他信息</h4> | ||||
|       <el-row v-show="info.tplCategory == 'tree'"> | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item> | ||||
|             <template #label> | ||||
|               树编码字段 | ||||
|               <el-tooltip content="树显示的编码字段名, 如:dept_id" placement="top"> | ||||
|                 <el-icon><question-filled /></el-icon> | ||||
|               </el-tooltip> | ||||
|             </template> | ||||
|             <el-select v-model="infoForm.treeCode" placeholder="请选择"> | ||||
|               <el-option | ||||
|                 v-for="(column, index) in info.columns" | ||||
|                 :key="index" | ||||
|                 :label="column.columnName + ':' + column.columnComment" | ||||
|                 :value="column.columnName" | ||||
|               ></el-option> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item> | ||||
|             <template #label> | ||||
|               树父编码字段 | ||||
|               <el-tooltip content="树显示的父编码字段名, 如:parent_Id" placement="top"> | ||||
|                 <el-icon><question-filled /></el-icon> | ||||
|               </el-tooltip> | ||||
|             </template> | ||||
|             <el-select v-model="infoForm.treeParentCode" placeholder="请选择"> | ||||
|               <el-option | ||||
|                 v-for="(column, index) in infoForm.columns" | ||||
|                 :key="index" | ||||
|                 :label="column.columnName + ':' + column.columnComment" | ||||
|                 :value="column.columnName" | ||||
|               ></el-option> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item> | ||||
|             <template #label> | ||||
|               树名称字段 | ||||
|               <el-tooltip content="树节点的显示名称字段名, 如:dept_name" placement="top"> | ||||
|                 <el-icon><question-filled /></el-icon> | ||||
|               </el-tooltip> | ||||
|             </template> | ||||
|             <el-select v-model="infoForm.treeName" placeholder="请选择"> | ||||
|               <el-option | ||||
|                 v-for="(column, index) in info.columns" | ||||
|                 :key="index" | ||||
|                 :label="column.columnName + ':' + column.columnComment" | ||||
|                 :value="column.columnName" | ||||
|               ></el-option> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|       </el-row> | ||||
|     </template> | ||||
|  | ||||
| 		<template v-if="info.tplCategory == 'sub'"> | ||||
| 			<h4 class="form-header">关联信息</h4> | ||||
| 			<el-row> | ||||
| 				<el-col :span="12"> | ||||
| 					<el-form-item> | ||||
| 						<template #label> | ||||
| 							关联子表的表名 | ||||
| 							<el-tooltip content="关联子表的表名, 如:sys_user" placement="top"> | ||||
| 								<el-icon><question-filled /></el-icon> | ||||
| 							</el-tooltip> | ||||
| 						</template> | ||||
| 						<el-select v-model="infoForm.subTableName" placeholder="请选择" @change="subSelectChange"> | ||||
| 							<el-option v-for="(t, index) in table" :key="index" :label="t.tableName + ':' + t.tableComment" :value="t.tableName"></el-option> | ||||
| 						</el-select> | ||||
| 					</el-form-item> | ||||
| 				</el-col> | ||||
| 				<el-col :span="12"> | ||||
| 					<el-form-item> | ||||
| 						<template #label> | ||||
| 							子表关联的外键名 | ||||
| 							<el-tooltip content="子表关联的外键名, 如:user_id" placement="top"> | ||||
| 								<el-icon><question-filled /></el-icon> | ||||
| 							</el-tooltip> | ||||
| 						</template> | ||||
| 						<el-select v-model="infoForm.subTableFkName" placeholder="请选择"> | ||||
| 							<el-option | ||||
| 								v-for="(column, index) in subColumns" | ||||
| 								:key="index" | ||||
| 								:label="column.columnName + ':' + column.columnComment" | ||||
| 								:value="column.columnName" | ||||
| 							></el-option> | ||||
| 						</el-select> | ||||
| 					</el-form-item> | ||||
| 				</el-col> | ||||
| 			</el-row> | ||||
| 		</template> | ||||
| 	</el-form> | ||||
|     <template v-if="info.tplCategory == 'sub'"> | ||||
|       <h4 class="form-header">关联信息</h4> | ||||
|       <el-row> | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item> | ||||
|             <template #label> | ||||
|               关联子表的表名 | ||||
|               <el-tooltip content="关联子表的表名, 如:sys_user" placement="top"> | ||||
|                 <el-icon><question-filled /></el-icon> | ||||
|               </el-tooltip> | ||||
|             </template> | ||||
|             <el-select v-model="infoForm.subTableName" placeholder="请选择" @change="subSelectChange"> | ||||
|               <el-option v-for="(t, index) in table" :key="index" :label="t.tableName + ':' + t.tableComment" :value="t.tableName"></el-option> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|         <el-col :span="12"> | ||||
|           <el-form-item> | ||||
|             <template #label> | ||||
|               子表关联的外键名 | ||||
|               <el-tooltip content="子表关联的外键名, 如:user_id" placement="top"> | ||||
|                 <el-icon><question-filled /></el-icon> | ||||
|               </el-tooltip> | ||||
|             </template> | ||||
|             <el-select v-model="infoForm.subTableFkName" placeholder="请选择"> | ||||
|               <el-option | ||||
|                 v-for="(column, index) in subColumns" | ||||
|                 :key="index" | ||||
|                 :label="column.columnName + ':' + column.columnComment" | ||||
|                 :value="column.columnName" | ||||
|               ></el-option> | ||||
|             </el-select> | ||||
|           </el-form-item> | ||||
|         </el-col> | ||||
|       </el-row> | ||||
|     </template> | ||||
|   </el-form> | ||||
| </template> | ||||
|  | ||||
| @ -1,3 +1,37 @@ | ||||
| <template> | ||||
|   <!-- 导入表 --> | ||||
|   <el-dialog title="导入表" v-model="visible" width="800px" top="5vh" append-to-body> | ||||
|     <el-form :model="queryParams" ref="queryFormRef" :inline="true"> | ||||
|       <el-form-item label="表名称" prop="tableName"> | ||||
|         <el-input v-model="queryParams.tableName" placeholder="请输入表名称" clearable @keyup.enter="handleQuery" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item label="表描述" prop="tableComment"> | ||||
|         <el-input v-model="queryParams.tableComment" placeholder="请输入表描述" clearable @keyup.enter="handleQuery" /> | ||||
|       </el-form-item> | ||||
|       <el-form-item> | ||||
|         <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> | ||||
|         <el-button icon="Refresh" @click="resetQuery">重置</el-button> | ||||
|       </el-form-item> | ||||
|     </el-form> | ||||
|     <el-row> | ||||
|       <el-table @row-click="clickRow" ref="tableRef" :data="dbTableList" @selection-change="handleSelectionChange" height="260px"> | ||||
|         <el-table-column type="selection" width="55"></el-table-column> | ||||
|         <el-table-column prop="tableName" label="表名称" :show-overflow-tooltip="true"></el-table-column> | ||||
|         <el-table-column prop="tableComment" label="表描述" :show-overflow-tooltip="true"></el-table-column> | ||||
|         <el-table-column prop="createTime" label="创建时间"></el-table-column> | ||||
|         <el-table-column prop="updateTime" label="更新时间"></el-table-column> | ||||
|       </el-table> | ||||
|       <pagination v-show="total>0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|     </el-row> | ||||
|     <template #footer> | ||||
|       <div class="dialog-footer"> | ||||
|         <el-button type="primary" @click="handleImportTable">确 定</el-button> | ||||
|         <el-button @click="visible = false">取 消</el-button> | ||||
|       </div> | ||||
|     </template> | ||||
|   </el-dialog> | ||||
| </template> | ||||
|  | ||||
| <script setup lang="ts"> | ||||
| import { listDbTable, importTable } from '@/api/tool/gen'; | ||||
| import { DbTableQuery, DbTableVO } from '@/api/tool/gen/types'; | ||||
| @ -14,93 +48,59 @@ const tableRef = ref(ElTable); | ||||
| const queryFormRef = ref(ElForm); | ||||
|  | ||||
| const queryParams = reactive<DbTableQuery>({ | ||||
|   pageNum: 1, | ||||
|   pageSize: 10, | ||||
|   tableName: '', | ||||
|   tableComment: '' | ||||
|     pageNum: 1, | ||||
|     pageSize: 10, | ||||
|     tableName: '', | ||||
|     tableComment: '' | ||||
| }); | ||||
|  | ||||
| const emit = defineEmits(["ok"]); | ||||
|  | ||||
| /** 查询参数列表 */ | ||||
| const show = () => { | ||||
|   getList(); | ||||
|   visible.value = true; | ||||
|     getList(); | ||||
|     visible.value = true; | ||||
| } | ||||
| /** 单击选择行 */ | ||||
| const clickRow = (row: DbTableVO) => { | ||||
|   tableRef.value.toggleRowSelection(row); | ||||
|     tableRef.value.toggleRowSelection(row); | ||||
| } | ||||
| /** 多选框选中数据 */ | ||||
| const handleSelectionChange = (selection: DbTableVO[]) => { | ||||
|   tables.value = selection.map(item => item.tableName); | ||||
|     tables.value = selection.map(item => item.tableName); | ||||
| } | ||||
| /** 查询表数据 */ | ||||
| const getList = async () => { | ||||
| 	const res = await listDbTable(queryParams); | ||||
| 	dbTableList.value = res.rows; | ||||
| 	total.value = res.total; | ||||
|     const res = await listDbTable(queryParams); | ||||
|     dbTableList.value = res.rows; | ||||
|     total.value = res.total; | ||||
| } | ||||
| /** 搜索按钮操作 */ | ||||
| const handleQuery = () => { | ||||
|   queryParams.pageNum = 1; | ||||
|   getList(); | ||||
|     queryParams.pageNum = 1; | ||||
|     getList(); | ||||
| } | ||||
| /** 重置按钮操作 */ | ||||
| const resetQuery = () => { | ||||
| 	queryFormRef.value.resetFields(); | ||||
|   handleQuery(); | ||||
|     queryFormRef.value.resetFields(); | ||||
|     handleQuery(); | ||||
| } | ||||
| /** 导入按钮操作 */ | ||||
| const handleImportTable = async () => { | ||||
|   const tableNames = tables.value.join(","); | ||||
|   if (tableNames == "") { | ||||
|     proxy?.$modal.msgError("请选择要导入的表"); | ||||
|     return; | ||||
|   } | ||||
| 	const res = await importTable({ tables: tableNames }); | ||||
| 	proxy?.$modal.msgSuccess(res.msg); | ||||
| 	if (res.code === 200) { | ||||
| 		visible.value = false; | ||||
| 		emit("ok"); | ||||
| 	} | ||||
|     const tableNames = tables.value.join(","); | ||||
|     if (tableNames == "") { | ||||
|         proxy?.$modal.msgError("请选择要导入的表"); | ||||
|         return; | ||||
|     } | ||||
|     const res = await importTable({ tables: tableNames }); | ||||
|     proxy?.$modal.msgSuccess(res.msg); | ||||
|     if (res.code === 200) { | ||||
|         visible.value = false; | ||||
|         emit("ok"); | ||||
|     } | ||||
| } | ||||
|  | ||||
| defineExpose({ | ||||
|   show, | ||||
|     show, | ||||
| }); | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
| 	<!-- 导入表 --> | ||||
| 	<el-dialog title="导入表" v-model="visible" width="800px" top="5vh" append-to-body> | ||||
| 		<el-form :model="queryParams" ref="queryFormRef" :inline="true"> | ||||
| 			<el-form-item label="表名称" prop="tableName"> | ||||
| 				<el-input v-model="queryParams.tableName" placeholder="请输入表名称" clearable @keyup.enter="handleQuery" /> | ||||
| 			</el-form-item> | ||||
| 			<el-form-item label="表描述" prop="tableComment"> | ||||
| 				<el-input v-model="queryParams.tableComment" placeholder="请输入表描述" clearable @keyup.enter="handleQuery" /> | ||||
| 			</el-form-item> | ||||
| 			<el-form-item> | ||||
| 				<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> | ||||
| 				<el-button icon="Refresh" @click="resetQuery">重置</el-button> | ||||
| 			</el-form-item> | ||||
| 		</el-form> | ||||
| 		<el-row> | ||||
| 			<el-table @row-click="clickRow" ref="tableRef" :data="dbTableList" @selection-change="handleSelectionChange" height="260px"> | ||||
| 				<el-table-column type="selection" width="55"></el-table-column> | ||||
| 				<el-table-column prop="tableName" label="表名称" :show-overflow-tooltip="true"></el-table-column> | ||||
| 				<el-table-column prop="tableComment" label="表描述" :show-overflow-tooltip="true"></el-table-column> | ||||
| 				<el-table-column prop="createTime" label="创建时间"></el-table-column> | ||||
| 				<el-table-column prop="updateTime" label="更新时间"></el-table-column> | ||||
| 			</el-table> | ||||
| 			<pagination v-show="total>0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
| 		</el-row> | ||||
| 		<template #footer> | ||||
| 			<div class="dialog-footer"> | ||||
| 				<el-button type="primary" @click="handleImportTable">确 定</el-button> | ||||
| 				<el-button @click="visible = false">取 消</el-button> | ||||
| 			</div> | ||||
| 		</template> | ||||
| 	</el-dialog> | ||||
| </template> | ||||
|  | ||||
| @ -1,3 +1,111 @@ | ||||
| <template> | ||||
|   <div class="p-2"> | ||||
|     <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"> | ||||
|       <div class="search" v-show="showSearch"> | ||||
|         <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> | ||||
|           <el-form-item label="数据源" prop="dataName"> | ||||
|             <el-input v-model="queryParams.dataName" placeholder="请输入数据源名称" clearable style="width: 200px" @keyup.enter="handleQuery" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="表名称" prop="tableName"> | ||||
|             <el-input v-model="queryParams.tableName" placeholder="请输入表名称" clearable style="width: 200px" @keyup.enter="handleQuery" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="表描述" prop="tableComment"> | ||||
|             <el-input v-model="queryParams.tableComment" placeholder="请输入表描述" clearable style="width: 200px" @keyup.enter="handleQuery" /> | ||||
|           </el-form-item> | ||||
|           <el-form-item label="创建时间" style="width: 308px"> | ||||
|             <el-date-picker | ||||
|               v-model="dateRange" | ||||
|               value-format="YYYY-MM-DD" | ||||
|               type="daterange" | ||||
|               range-separator="-" | ||||
|               start-placeholder="开始日期" | ||||
|               end-placeholder="结束日期" | ||||
|             ></el-date-picker> | ||||
|           </el-form-item> | ||||
|           <el-form-item> | ||||
|             <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> | ||||
|             <el-button icon="Refresh" @click="resetQuery">重置</el-button> | ||||
|           </el-form-item> | ||||
|         </el-form> | ||||
|       </div> | ||||
|     </transition> | ||||
|  | ||||
|     <el-card shadow="never"> | ||||
|       <template #header> | ||||
|         <el-row :gutter="10" class="mb8"> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="primary" plain icon="Download" @click="handleGenTable()" v-hasPermi="['tool:gen:code']">生成</el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="info" plain icon="Upload" @click="openImportTable" v-hasPermi="['tool:gen:import']">导入</el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="success" plain icon="Edit" :disabled="single" @click="handleEditTable()" v-hasPermi="['tool:gen:edit']">修改</el-button> | ||||
|           </el-col> | ||||
|           <el-col :span="1.5"> | ||||
|             <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['tool:gen:remove']"> | ||||
|               删除 | ||||
|             </el-button> | ||||
|           </el-col> | ||||
|           <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> | ||||
|         </el-row> | ||||
|       </template> | ||||
|  | ||||
|       <el-table v-loading="loading" :data="tableList" @selection-change="handleSelectionChange"> | ||||
|         <el-table-column type="selection" align="center" width="55"></el-table-column> | ||||
|         <el-table-column label="序号" type="index" width="50" align="center"> | ||||
|           <template #default="scope"> | ||||
|             <span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|         <el-table-column label="表名称" align="center" prop="tableName" :show-overflow-tooltip="true" /> | ||||
|         <el-table-column label="表描述" align="center" prop="tableComment" :show-overflow-tooltip="true" /> | ||||
|         <el-table-column label="实体" align="center" prop="className" :show-overflow-tooltip="true" /> | ||||
|         <el-table-column label="创建时间" align="center" prop="createTime" width="160" /> | ||||
|         <el-table-column label="更新时间" align="center" prop="updateTime" width="160" /> | ||||
|         <el-table-column label="操作" align="center" width="330" class-name="small-padding fixed-width"> | ||||
|           <template #default="scope"> | ||||
|             <el-tooltip content="预览" placement="top"> | ||||
|               <el-button link type="primary" icon="View" @click="handlePreview(scope.row)" v-hasPermi="['tool:gen:preview']"></el-button> | ||||
|             </el-tooltip> | ||||
|             <el-tooltip content="编辑" placement="top"> | ||||
|               <el-button link type="primary" icon="Edit" @click="handleEditTable(scope.row)" v-hasPermi="['tool:gen:edit']"></el-button> | ||||
|             </el-tooltip> | ||||
|             <el-tooltip content="删除" placement="top"> | ||||
|               <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['tool:gen:remove']"></el-button> | ||||
|             </el-tooltip> | ||||
|             <el-tooltip content="同步" placement="top"> | ||||
|               <el-button link type="primary" icon="Refresh" @click="handleSynchDb(scope.row)" v-hasPermi="['tool:gen:edit']"></el-button> | ||||
|             </el-tooltip> | ||||
|             <el-tooltip content="生成代码" placement="top"> | ||||
|               <el-button link type="primary" icon="Download" @click="handleGenTable(scope.row)" v-hasPermi="['tool:gen:code']"></el-button> | ||||
|             </el-tooltip> | ||||
|           </template> | ||||
|         </el-table-column> | ||||
|       </el-table> | ||||
|       <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
|     </el-card> | ||||
|  | ||||
|     <!-- 预览界面 --> | ||||
|     <el-dialog :title="dialog.title" v-model="dialog.visible" width="80%" top="5vh" append-to-body class="scrollbar"> | ||||
|       <el-tabs v-model="preview.activeName"> | ||||
|         <el-tab-pane | ||||
|           v-for="(value, key) in preview.data" | ||||
|           :label="(key as any).substring((key as any).lastIndexOf('/') + 1, (key as any).indexOf('.vm'))" | ||||
|           :name="(key as any).substring((key as any).lastIndexOf('/') + 1, (key as any).indexOf('.vm'))" | ||||
|           :key="value" | ||||
|         > | ||||
|           <el-link :underline="false" icon="DocumentCopy" v-copyText="value" v-copyText:callback="copyTextSuccess" style="float:right" | ||||
|             > 复制</el-link | ||||
|           > | ||||
|           <pre>{{ value }}</pre> | ||||
|         </el-tab-pane> | ||||
|       </el-tabs> | ||||
|     </el-dialog> | ||||
|     <import-table ref="importRef" @ok="handleQuery" /> | ||||
|   </div> | ||||
| </template> | ||||
|  | ||||
| <script setup name="Gen" lang="ts"> | ||||
| import { listTable, previewTable, delTable, genCode, synchDb } from '@/api/tool/gen'; | ||||
| import { TableQuery, TableVO } from '@/api/tool/gen/types'; | ||||
| @ -24,221 +132,113 @@ const queryFormRef = ref(ElForm); | ||||
| const importRef = ref(importTable); | ||||
|  | ||||
| const queryParams = ref<TableQuery>({ | ||||
| 	pageNum: 1, | ||||
| 	pageSize: 10, | ||||
| 	tableName: '', | ||||
| 	tableComment: '', | ||||
| 	dataName: "master" | ||||
|     pageNum: 1, | ||||
|     pageSize: 10, | ||||
|     tableName: '', | ||||
|     tableComment: '', | ||||
|     dataName: "master" | ||||
| }) | ||||
|  | ||||
| const preview = ref <any>({ | ||||
| 	data: {}, | ||||
| 	activeName: 'domain.java' | ||||
|     data: {}, | ||||
|     activeName: 'domain.java' | ||||
| }) | ||||
| const dialog = reactive<DialogOption>({ | ||||
|   visible: false, | ||||
|   title: '代码预览' | ||||
|     visible: false, | ||||
|     title: '代码预览' | ||||
| }); | ||||
|  | ||||
| localStorage.setItem('dataName', queryParams.value.dataName); | ||||
|  | ||||
| onActivated(() => { | ||||
| 	const time = route.query.t; | ||||
| 	if (time != null && time != uniqueId.value) { | ||||
| 		uniqueId.value = time as string; | ||||
| 		queryParams.value.pageNum = Number(route.query.pageNum); | ||||
| 		dateRange.value = ['', '']; | ||||
| 		queryFormRef.value.resetFields(); | ||||
| 		getList(); | ||||
| 	} | ||||
|     const time = route.query.t; | ||||
|     if (time != null && time != uniqueId.value) { | ||||
|         uniqueId.value = time as string; | ||||
|         queryParams.value.pageNum = Number(route.query.pageNum); | ||||
|         dateRange.value = ['', '']; | ||||
|         queryFormRef.value.resetFields(); | ||||
|         getList(); | ||||
|     } | ||||
| }) | ||||
|  | ||||
| /** 查询表集合 */ | ||||
| const getList = async () => { | ||||
| 	loading.value = true; | ||||
| 	const res = await listTable(proxy?.addDateRange(queryParams.value, dateRange.value)); | ||||
| 	tableList.value = res.rows; | ||||
| 	total.value = res.total; | ||||
| 	loading.value = false; | ||||
|     loading.value = true; | ||||
|     const res = await listTable(proxy?.addDateRange(queryParams.value, dateRange.value)); | ||||
|     tableList.value = res.rows; | ||||
|     total.value = res.total; | ||||
|     loading.value = false; | ||||
| } | ||||
| /** 搜索按钮操作 */ | ||||
| const handleQuery = () => { | ||||
| 	localStorage.setItem('dataName', queryParams.value.dataName); | ||||
| 	queryParams.value.pageNum = 1; | ||||
| 	getList(); | ||||
|     localStorage.setItem('dataName', queryParams.value.dataName); | ||||
|     queryParams.value.pageNum = 1; | ||||
|     getList(); | ||||
| } | ||||
| /** 生成代码操作 */ | ||||
| const handleGenTable = async (row?: TableVO) => { | ||||
| 	const tbNames = row?.tableName || tableNames.value; | ||||
| 	if (tbNames == "") { | ||||
| 		proxy?.$modal.msgError('请选择要生成的数据'); | ||||
| 		return; | ||||
| 	} | ||||
| 	if (row?.genType === "1") { | ||||
| 		await genCode(row.tableName); | ||||
| 		proxy?.$modal.msgSuccess('成功生成到自定义路径:' + row.genPath); | ||||
| 	} else { | ||||
| 		proxy?.$download.zip('/tool/gen/batchGenCode?tables=' + tbNames, 'ruoyi.zip'); | ||||
| 	} | ||||
|     const tbNames = row?.tableName || tableNames.value; | ||||
|     if (tbNames == "") { | ||||
|         proxy?.$modal.msgError('请选择要生成的数据'); | ||||
|         return; | ||||
|     } | ||||
|     if (row?.genType === "1") { | ||||
|         await genCode(row.tableName); | ||||
|         proxy?.$modal.msgSuccess('成功生成到自定义路径:' + row.genPath); | ||||
|     } else { | ||||
|         proxy?.$download.zip('/tool/gen/batchGenCode?tables=' + tbNames, 'ruoyi.zip'); | ||||
|     } | ||||
| } | ||||
| /** 同步数据库操作 */ | ||||
| const handleSynchDb = async (row: TableVO) => { | ||||
| 	const tableName = row.tableName; | ||||
| 	await proxy?.$modal.confirm('确认要强制同步"' + tableName + '"表结构吗?'); | ||||
| 	await synchDb(tableName); | ||||
| 	proxy?.$modal.msgSuccess('同步成功'); | ||||
|     const tableName = row.tableName; | ||||
|     await proxy?.$modal.confirm('确认要强制同步"' + tableName + '"表结构吗?'); | ||||
|     await synchDb(tableName); | ||||
|     proxy?.$modal.msgSuccess('同步成功'); | ||||
| } | ||||
| /** 打开导入表弹窗 */ | ||||
| const openImportTable = () => { | ||||
| 	importRef.value.show(); | ||||
|     importRef.value.show(); | ||||
| } | ||||
| /** 重置按钮操作 */ | ||||
| const resetQuery = () => { | ||||
| 	dateRange.value = ['', '']; | ||||
| 	queryFormRef.value.resetFields(); | ||||
| 	handleQuery(); | ||||
|     dateRange.value = ['', '']; | ||||
|     queryFormRef.value.resetFields(); | ||||
|     handleQuery(); | ||||
| } | ||||
| /** 预览按钮 */ | ||||
| const handlePreview = async (row: TableVO) => { | ||||
| 	const res = await previewTable(row.tableId); | ||||
| 	preview.value.data = res.data; | ||||
| 	dialog.visible = true; | ||||
| 	preview.value.activeName = 'domain.java'; | ||||
|     const res = await previewTable(row.tableId); | ||||
|     preview.value.data = res.data; | ||||
|     dialog.visible = true; | ||||
|     preview.value.activeName = 'domain.java'; | ||||
| } | ||||
| /** 复制代码成功 */ | ||||
| const copyTextSuccess = () => { | ||||
| 	proxy?.$modal.msgSuccess('复制成功'); | ||||
|     proxy?.$modal.msgSuccess('复制成功'); | ||||
| } | ||||
| // 多选框选中数据 | ||||
| const handleSelectionChange = (selection: TableVO[]) => { | ||||
| 	ids.value = selection.map(item => item.tableId); | ||||
| 	tableNames.value = selection.map(item => item.tableName); | ||||
| 	single.value = selection.length != 1; | ||||
| 	multiple.value = !selection.length; | ||||
|     ids.value = selection.map(item => item.tableId); | ||||
|     tableNames.value = selection.map(item => item.tableName); | ||||
|     single.value = selection.length != 1; | ||||
|     multiple.value = !selection.length; | ||||
| } | ||||
| /** 修改按钮操作 */ | ||||
| const handleEditTable = (row?: TableVO) => { | ||||
| 	const tableId = row?.tableId || ids.value[0]; | ||||
| 	router.push({ path: '/tool/gen-edit/index/' + tableId, query: { pageNum: queryParams.value.pageNum } }); | ||||
|     const tableId = row?.tableId || ids.value[0]; | ||||
|     router.push({ path: '/tool/gen-edit/index/' + tableId, query: { pageNum: queryParams.value.pageNum } }); | ||||
| } | ||||
| /** 删除按钮操作 */ | ||||
| const handleDelete = async (row?: TableVO) => { | ||||
| 	const tableIds = row?.tableId || ids.value; | ||||
| 	await proxy?.$modal.confirm('是否确认删除表编号为"' + tableIds + '"的数据项?'); | ||||
| 	await delTable(tableIds); | ||||
| 	getList(); | ||||
| 	proxy?.$modal.msgSuccess('删除成功'); | ||||
|     const tableIds = row?.tableId || ids.value; | ||||
|     await proxy?.$modal.confirm('是否确认删除表编号为"' + tableIds + '"的数据项?'); | ||||
|     await delTable(tableIds); | ||||
|     getList(); | ||||
|     proxy?.$modal.msgSuccess('删除成功'); | ||||
| } | ||||
|  | ||||
| onMounted(() => { | ||||
| 	getList(); | ||||
|     getList(); | ||||
| }) | ||||
| </script> | ||||
|  | ||||
| <template> | ||||
| 	<div class="p-2"> | ||||
| 		<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"> | ||||
| 			<div class="search" v-show="showSearch"> | ||||
| 				<el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> | ||||
| 					<el-form-item label="数据源" prop="dataName"> | ||||
| 						<el-input v-model="queryParams.dataName" placeholder="请输入数据源名称" clearable style="width: 200px" @keyup.enter="handleQuery" /> | ||||
| 					</el-form-item> | ||||
| 					<el-form-item label="表名称" prop="tableName"> | ||||
| 						<el-input v-model="queryParams.tableName" placeholder="请输入表名称" clearable style="width: 200px" @keyup.enter="handleQuery" /> | ||||
| 					</el-form-item> | ||||
| 					<el-form-item label="表描述" prop="tableComment"> | ||||
| 						<el-input v-model="queryParams.tableComment" placeholder="请输入表描述" clearable style="width: 200px" @keyup.enter="handleQuery" /> | ||||
| 					</el-form-item> | ||||
| 					<el-form-item label="创建时间" style="width: 308px"> | ||||
| 						<el-date-picker | ||||
| 							v-model="dateRange" | ||||
| 							value-format="YYYY-MM-DD" | ||||
| 							type="daterange" | ||||
| 							range-separator="-" | ||||
| 							start-placeholder="开始日期" | ||||
| 							end-placeholder="结束日期" | ||||
| 						></el-date-picker> | ||||
| 					</el-form-item> | ||||
| 					<el-form-item> | ||||
| 						<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> | ||||
| 						<el-button icon="Refresh" @click="resetQuery">重置</el-button> | ||||
| 					</el-form-item> | ||||
| 				</el-form> | ||||
| 			</div> | ||||
| 		</transition> | ||||
|  | ||||
| 		<el-card shadow="never"> | ||||
| 			<template #header> | ||||
| 				<el-row :gutter="10" class="mb8"> | ||||
| 					<el-col :span="1.5"> | ||||
| 						<el-button type="primary" plain icon="Download" @click="handleGenTable()" v-hasPermi="['tool:gen:code']">生成</el-button> | ||||
| 					</el-col> | ||||
| 					<el-col :span="1.5"> | ||||
| 						<el-button type="info" plain icon="Upload" @click="openImportTable" v-hasPermi="['tool:gen:import']">导入</el-button> | ||||
| 					</el-col> | ||||
| 					<el-col :span="1.5"> | ||||
| 						<el-button type="success" plain icon="Edit" :disabled="single" @click="handleEditTable()" v-hasPermi="['tool:gen:edit']">修改</el-button> | ||||
| 					</el-col> | ||||
| 					<el-col :span="1.5"> | ||||
| 						<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['tool:gen:remove']"> | ||||
| 							删除 | ||||
| 						</el-button> | ||||
| 					</el-col> | ||||
| 					<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> | ||||
| 				</el-row> | ||||
| 			</template> | ||||
|  | ||||
| 			<el-table v-loading="loading" :data="tableList" @selection-change="handleSelectionChange"> | ||||
| 				<el-table-column type="selection" align="center" width="55"></el-table-column> | ||||
| 				<el-table-column label="序号" type="index" width="50" align="center"> | ||||
| 					<template #default="scope"> | ||||
| 						<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span> | ||||
| 					</template> | ||||
| 				</el-table-column> | ||||
| 				<el-table-column label="表名称" align="center" prop="tableName" :show-overflow-tooltip="true" /> | ||||
| 				<el-table-column label="表描述" align="center" prop="tableComment" :show-overflow-tooltip="true" /> | ||||
| 				<el-table-column label="实体" align="center" prop="className" :show-overflow-tooltip="true" /> | ||||
| 				<el-table-column label="创建时间" align="center" prop="createTime" width="160" /> | ||||
| 				<el-table-column label="更新时间" align="center" prop="updateTime" width="160" /> | ||||
| 				<el-table-column label="操作" align="center" width="330" class-name="small-padding fixed-width"> | ||||
| 					<template #default="scope"> | ||||
| 						<el-tooltip content="预览" placement="top"> | ||||
| 							<el-button link type="primary" icon="View" @click="handlePreview(scope.row)" v-hasPermi="['tool:gen:preview']"></el-button> | ||||
| 						</el-tooltip> | ||||
| 						<el-tooltip content="编辑" placement="top"> | ||||
| 							<el-button link type="primary" icon="Edit" @click="handleEditTable(scope.row)" v-hasPermi="['tool:gen:edit']"></el-button> | ||||
| 						</el-tooltip> | ||||
| 						<el-tooltip content="删除" placement="top"> | ||||
| 							<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['tool:gen:remove']"></el-button> | ||||
| 						</el-tooltip> | ||||
| 						<el-tooltip content="同步" placement="top"> | ||||
| 							<el-button link type="primary" icon="Refresh" @click="handleSynchDb(scope.row)" v-hasPermi="['tool:gen:edit']"></el-button> | ||||
| 						</el-tooltip> | ||||
| 						<el-tooltip content="生成代码" placement="top"> | ||||
| 							<el-button link type="primary" icon="Download" @click="handleGenTable(scope.row)" v-hasPermi="['tool:gen:code']"></el-button> | ||||
| 						</el-tooltip> | ||||
| 					</template> | ||||
| 				</el-table-column> | ||||
| 			</el-table> | ||||
| 			<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" /> | ||||
| 		</el-card> | ||||
|  | ||||
| 		<!-- 预览界面 --> | ||||
| 		<el-dialog :title="dialog.title" v-model="dialog.visible" width="80%" top="5vh" append-to-body class="scrollbar"> | ||||
| 			<el-tabs v-model="preview.activeName"> | ||||
| 				<el-tab-pane | ||||
| 					v-for="(value, key) in preview.data" | ||||
| 					:label="(key as any).substring((key as any).lastIndexOf('/') + 1, (key as any).indexOf('.vm'))" | ||||
| 					:name="(key as any).substring((key as any).lastIndexOf('/') + 1, (key as any).indexOf('.vm'))" | ||||
| 					:key="value" | ||||
| 				> | ||||
| 					<el-link :underline="false" icon="DocumentCopy" v-copyText="value" v-copyText:callback="copyTextSuccess" style="float:right" | ||||
| 						> 复制</el-link | ||||
| 					> | ||||
| 					<pre>{{ value }}</pre> | ||||
| 				</el-tab-pane> | ||||
| 			</el-tabs> | ||||
| 		</el-dialog> | ||||
| 		<import-table ref="importRef" @ok="handleQuery" /> | ||||
| 	</div> | ||||
| </template> | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 疯狂的狮子Li
					疯狂的狮子Li