From e9d51762bf342f3f9b542ef0214ed41a6ff7d679 Mon Sep 17 00:00:00 2001
From: jinlin <jinlin>
Date: 星期二, 07 十一月 2023 13:58:45 +0800
Subject: [PATCH] Changes

---
 modules/mainPart/src/main/java/com/zt/life/modules/project/service/ProjectService.java       |    2 
 modules/mainPart/src/main/java/com/zt/life/modules/project/model/Project.java                |   40 ++++-
 zt/core/src/main/resources/template/index.vue.vm                                             |   19 ++
 zt/core/src/main/java/com/zt/generator/controller/SysGeneratorController.java                |    4 
 zt/core/src/main/java/com/zt/generator/utils/GenUtils.java                                   |    5 
 modules/mainPart/src/main/java/com/zt/life/modules/project/dao/ProjectDao.java               |    2 
 zt/core/src/main/resources/template/add-or-update.vue.vm                                     |    6 
 /dev/null                                                                                    |   49 -------
 web/src/views/modules/project/Project-AddOrUpdate.vue                                        |  109 +++++++++++++++
 web/src/views/modules/project/Project.vue                                                    |   90 ++++++++++++
 zt/core/src/main/java/com/zt/generator/data/DBUtil.java                                      |   30 +++-
 web/packages/views/pages/generator.vue                                                       |   37 +++--
 modules/mainPart/src/main/java/com/zt/life/modules/project/controller/ProjectController.java |    4 
 13 files changed, 299 insertions(+), 98 deletions(-)

diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/ProjectController.java b/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/ProjectController.java
index 483d93a..d28c818 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/ProjectController.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/project/controller/ProjectController.java
@@ -30,7 +30,7 @@
  * project
  *
  * @author zt generator 
- * @since 1.0.0 2023-11-06
+ * @since 1.0.0 2023-11-07
  */
 @RestController
 @RequestMapping("/project/")
@@ -46,7 +46,7 @@
         @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
         @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
         @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
-    })
+        @ApiImplicitParam(name = "entrustUnitName", value = "濮旀墭鍗曚綅鍚嶇О", dataType = Constant.QT.STRING, format = "entrust_unit_name^LK"),        @ApiImplicitParam(name = "developUnitName", value = "寮�鍙戝崟浣嶅悕绉�", dataType = Constant.QT.STRING, format = "develop_unit_name^LK"),        @ApiImplicitParam(name = "software", value = "杞欢鍚嶇О", dataType = Constant.QT.STRING, format = "software^LK"),        @ApiImplicitParam(name = "code", value = "椤圭洰缂栧彿", dataType = Constant.QT.STRING, format = "CODE^LK"),        @ApiImplicitParam(name = "identity", value = "椤圭洰鏍囪瘑", dataType = Constant.QT.STRING, format = "IDENTITY^LK"),        @ApiImplicitParam(name = "criticalLevel", value = "鍏抽敭绛夌骇", dataType = Constant.QT.STRING, format = "critical_level^EQ"),        @ApiImplicitParam(name = "testLevel", value = "娴嬭瘯绾у埆", dataType = Constant.QT.STRING, format = "test_level^EQ")    })
     public PageResult<Project> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
 
         return PageResult.ok(projectService.page(queryFilter));
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/project/dao/ProjectDao.java b/modules/mainPart/src/main/java/com/zt/life/modules/project/dao/ProjectDao.java
index 0a88920..a5b0fb4 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/project/dao/ProjectDao.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/project/dao/ProjectDao.java
@@ -13,7 +13,7 @@
  * project
  *
  * @author zt generator 
- * @since 1.0.0 2023-11-06
+ * @since 1.0.0 2023-11-07
  */
 @Mapper
 public interface ProjectDao extends BaseDao<Project> {
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/project/model/Project.java b/modules/mainPart/src/main/java/com/zt/life/modules/project/model/Project.java
index 9d7cdc1..ca54ea8 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/project/model/Project.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/project/model/Project.java
@@ -13,7 +13,7 @@
  * project
  *
  * @author zt generator 
- * @since 1.0.0 2023-11-06
+ * @since 1.0.0 2023-11-07
  */
 @Data
 @EqualsAndHashCode(callSuper=false)
@@ -21,8 +21,32 @@
 public class Project extends BusiEntity {
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty(value = "濮旀墭鍗曚綅鍚嶇О")
+	private String entrustUnitName;
+
+	@ApiModelProperty(value = "濮旀墭鍗曚綅鍦板潃")
+	private String entrustUnitAddress;
+
+	@ApiModelProperty(value = "濮旀墭鍗曚綅鑱旂郴浜�")
+	private String entrustUnitContact;
+
+	@ApiModelProperty(value = "濮旀墭鍗曚綅鑱旂郴鏂瑰紡")
+	private String entrustUnitContWay;
+
+	@ApiModelProperty(value = "寮�鍙戝崟浣嶅悕绉�")
+	private String developUnitName;
+
+	@ApiModelProperty(value = "寮�鍙戝崟浣嶅湴鍧�")
+	private String developUnitAddress;
+
+	@ApiModelProperty(value = "寮�鍙戝崟浣嶈仈绯讳汉")
+	private String developUnitContact;
+
+	@ApiModelProperty(value = "寮�鍙戝崟浣嶈仈绯绘柟寮�")
+	private String developUnitContWay;
+
 	@ApiModelProperty(value = "杞欢鍚嶇О")
-	private String softwarename;
+	private String software;
 
 	@ApiModelProperty(value = "椤圭洰缂栧彿")
 	private String code;
@@ -36,14 +60,8 @@
 	@ApiModelProperty(value = "鍏抽敭绛夌骇")
 	private Integer criticalLevel;
 
-	@ApiModelProperty(value = "杩愯鐜")
-	private String optEnviron;
-
-	@ApiModelProperty(value = "缂栫▼璇█")
-	private String programLang;
-
-	@ApiModelProperty(value = "杞欢绫诲瀷")
-	private Integer softwareType;
+	@ApiModelProperty(value = "娴嬭瘯绾у埆")
+	private Integer testLevel;
 
 	@ApiModelProperty(value = "椤圭洰璐熻矗浜�")
 	private String projectLeader;
@@ -55,6 +73,6 @@
 	private String projectReviewer;
 
 	@ApiModelProperty(value = "鏄惁绛剧讲鍚堝悓")
-	private String isContract;
+	private Integer isContract;
 
 }
diff --git a/modules/mainPart/src/main/java/com/zt/life/modules/project/service/ProjectService.java b/modules/mainPart/src/main/java/com/zt/life/modules/project/service/ProjectService.java
index f9d905c..33fe756 100644
--- a/modules/mainPart/src/main/java/com/zt/life/modules/project/service/ProjectService.java
+++ b/modules/mainPart/src/main/java/com/zt/life/modules/project/service/ProjectService.java
@@ -13,7 +13,7 @@
  * project
  *
  * @author zt generator 
- * @since 1.0.0 2023-11-06
+ * @since 1.0.0 2023-11-07
  */
 @Service
 public class ProjectService  extends BaseService<ProjectDao, Project> {
diff --git a/modules/mainPart/src/main/resources/mapper/mainParts/TaskCenterDao.xml b/modules/mainPart/src/main/resources/mapper/mainParts/TaskCenterDao.xml
deleted file mode 100644
index 21ea4e8..0000000
--- a/modules/mainPart/src/main/resources/mapper/mainParts/TaskCenterDao.xml
+++ /dev/null
@@ -1,241 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="com.zt.life.modules.mainPart.task.dao.TaskCenterDao">
-    <delete id="deleteTable">
-        drop table ${tableName}
-    </delete>
-
-    <select id="page" resultType="com.zt.modules.workflow.model.WfRunTask">
-        SELECT
-        a.id,
-        a.prev_id,
-        a.prev_step_id,
-        a.flow_id,
-        a.step_id,
-        a.step_name,
-        a.biz_id,
-        a.title,
-        a.sender_id,
-        a.sender_name,
-        a.sender_time,
-        a.group_id,
-        a.receive_id,
-        a.receive_name,
-        a.receive_time,
-        a.open_time,
-       /* a.finish_time,*/
-        a.finish_time2,
-        a.comment,
-        a.is_sign,
-        a.sort,
-        a.note,
-        a.remark,
-        a.is_delete,
-        a.dept_id,
-        a.company_id,
-        a.tenant_id,
-        a.topic,
-        a.apply_user_id,
-        a.apply_time,
-/*        a.apply_user,*/
-        a.step_marker,
-        /*--step_router,*/
-        a.flow_code,
-        a.group_id2,
-        a.finish_id,
-        a.finish_name,
-        a.biz_group_id,
-        a.opinion,
-        (case when status = 1 then '琚┏鍥�' else '' end)  as statusName,
-        DateDiff(CURRENT_DATE,a.RECEIVE_TIME) as idleDays,
-        a.topic AS taskName,
-        a.step_name as taskType,
-        a.biz_id as id,
-        0 as Product_id,
-        0 as MAINTAIN_LEVEL,
-        0 as YEAR,
-        a.RECEIVE_NAME as apply_user,
-        date_add(a.RECEIVE_TIME,interval 7 day) AS finishTime,
-        a.STEP_ID as APPROVE_STEP_ID,
-        a.STEP_MARKER,
-        a.FLOW_CODE,
-        a.APPLY_USER as taskPeople,
-        2 code,
-        a.title  as summary,
-        b.STEP_ROUTER,
-        b.STEP_ROUTER_ID
-        FROM WF_RUN_TASK a
-        left join WF_DEF_STEP b on a.step_id = b.id
-        WHERE a.is_delete =0 and a.status in (0,1)
-        AND a.RECEIVE_ID = #{userId}
-        <if test="projectId != null and projectId != ''">
-            and a.biz_group_id = #{projectId}
-         </if>
-        <if test="djxlSystem != null and djxlSystem != ''">
-            and a.FLOW_ID in (select id from wf_def where system_type = #{djxlSystem})
-        </if>
-        ORDER BY a.receive_time DESC
-    </select>
-
-    <update id="pageDone_temp">
-        drop table if exists ${pageDone_temp1};
-        create table ${pageDone_temp1} as
-        SELECT * FROM (
-                          SELECT
-                              a1.id,
-                              a1.title,
-                              a1.topic,
-                              a1.remark,
-                              a1.biz_id,
-                              a1.biz_group_id,
-                              a1.flow_code,
-                              a1.step_id,
-                              a1.step_marker,
-                              /*a.step_name as step_name_my,*/
-                              a1.receive_name as sender_name,
-                              a1.receive_time,
-                              a1.finish_time as finish_time,
-                              a1.status
-                          FROM WF_RUN_TASK a1
-                          WHERE a1.is_delete = 0
-                                and (a1.receive_id=#{userId}
-                                    or EXISTS(SELECT 1 FROM sys_role s1,sys_role_user s2 WHERE s1.ID = s2.role_id AND s2.USER_id = #{userId} AND
-                                    s2.is_delete=0 and s1.CODE in ('all','xtglybm')))
-                                <if test="djxlSystem != null and djxlSystem != ''">
-                                    and a1.FLOW_ID in (select id from wf_def where system_type = #{djxlSystem})
-                                </if>
-
-                      ) a2
-        where status in (20,10)
-        group by a2.biz_id,a2.flow_code,a2.step_id;
-
-        drop table if exists ${pageDone_temp2};
-        create table ${pageDone_temp2} as
-        select * from
-            (select
-                 b1.prev_id,
-                 b1.group_id,
-                 b1.biz_id,
-                 b1.flow_code,
-                 b1.step_id,
-                 b1.step_marker,
-                 b1.step_name,
-                 b1.receive_name,
-                 b1.receive_time,
-                 b1.status
-             from ${pageDone_temp1} a1,
-                  WF_RUN_TASK b1
-             WHERE b1.is_delete = 0
-               and b1.status in(0,1,100)
-
-               and a1.biz_id = b1.biz_id
-               and a1.flow_code = b1.flow_code
-             order by b1.receive_time DESC
-            ) b2 group by biz_id,flow_code,step_id;
-    </update>
-
-    <select id="pageDone" resultType="com.zt.modules.workflow.model.WfRunTask">
-        SELECT
-        a.id,
-        a.title,
-        a.topic,
-        a.remark,
-        a.biz_id,
-        a.flow_code,
-        a.biz_group_id,
-        c.STEP_READ_ROUTER_ID,
-        a.sender_name,
-        a.finish_time,
-        b.prev_id,
-        b.step_marker,
-        b.step_name,
-        case when c.CAN_RECALL=1 and a.id=b.prev_id and c.step_no &lt; d.step_no and d.step_no &lt; 100
-            then 1 else 0 end as canRecall,
-        c.step_no as myStepNo,
-        d.step_no as curStepNo,
-        (select group_concat(DISTINCT receive_name) from ${pageDone_temp2} s where s.group_id=b.group_id limit 0,3) receive_name,
-        b.receive_time,
-        (case when a.status = 10 then '椹冲洖' else '' end)  as statusName,
-        c.name as finishStepName,
-        a.sender_name as finishUserName
-        FROM ${pageDone_temp1} a
-        join ${pageDone_temp2} b on a.biz_id = b.biz_id and a.flow_code = b.flow_code
-        left join WF_DEF_STEP c on a.step_id = c.id
-        left join WF_DEF_STEP d on b.step_id = d.id
-        group by a.biz_id,a.flow_code,a.step_id
-        ORDER BY a.receive_time DESC
-    </select>
-
-    <select id="getRowByProjectId" resultType="com.zt.modules.workflow.model.WfRunTask">
-        SELECT
-            a.id,
-            a.prev_id,
-            a.prev_step_id,
-            a.flow_id,
-            a.step_id,
-            a.step_name,
-            a.biz_id,
-            a.title,
-            a.sender_id,
-            a.sender_name,
-            a.sender_time,
-            a.group_id,
-            a.receive_id,
-            a.receive_name,
-            a.receive_time,
-            a.open_time,
-            a.finish_time,
-            a.finish_time2,
-            a.comment,
-            a.is_sign,
-            a.sort,
-            a.note,
-            a.remark,
-            a.is_delete,
-            a.dept_id,
-            a.company_id,
-            a.tenant_id,
-            a.topic,
-            a.apply_user_id,
-            a.apply_time,
-            a.apply_user,
-            a.step_marker,
-            /*--step_router,*/
-            a.flow_code,
-            a.group_id2,
-            a.finish_id,
-            a.finish_name,
-            a.biz_group_id,
-            a.opinion,
-            (case when status = 1 then '琚┏鍥�' else '' end)  as statusName,
-            DateDiff(CURRENT_DATE,a.RECEIVE_TIME) as idleDays,
-            a.topic AS taskName,
-            a.step_name as taskType,
-            a.biz_id as id,
-            0 as Product_id,
-            0 as MAINTAIN_LEVEL,
-            0 as YEAR,
-            a.RECEIVE_TIME AS finishTime,
-            a.STEP_ID as APPROVE_STEP_ID,
-            a.STEP_MARKER,
-            a.FLOW_CODE,
-            a.APPLY_USER as taskPeople,
-            2 code,
-            a.title  as summary,
-            b.STEP_ROUTER,
-            b.STEP_ROUTER_ID
-        FROM WF_RUN_TASK a
-                 left join WF_DEF_STEP b on a.step_id = b.id
-        WHERE a.is_delete =0 and a.status in (0,1)
-          and a.topic=(select model_name from wx_project where id=#{projectId})
-          and a.step_marker='jsfa_sc'
-        ORDER BY a.receive_time DESC limit 1
-    </select>
-
-    <update id="oneKeyDoneCy">
-        update wf_run_task
-        set status=20, UPDATER=#{userId}, UPDATE_DATE=CURRENT_TIMESTAMP
-        where STEP_MARKER in('rjh_cy','zjh_cy','yjh_cy') and status=0 and RECEIVE_ID=#{userId}
-    </update>
-</mapper>
diff --git a/web/packages/views/pages/generator.vue b/web/packages/views/pages/generator.vue
index 0915787..b9c071b 100644
--- a/web/packages/views/pages/generator.vue
+++ b/web/packages/views/pages/generator.vue
@@ -1,14 +1,15 @@
 <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-input style="width: 30%;margin-right: 20px;" v-model="dataForm.tableName" placeholder="璇疯緭鍏ヨ〃鍚�" clearable></el-input>
-            <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>
+    <div class="mod-sys__generator">
+      <el-form :model="dataForm" label-width="80px" @keyup.enter.native="getDataList()">
+        <el-form-item>
+          <el-input style="width: 30%;margin-right: 20px;" v-model="dataForm.tableName" placeholder="璇疯緭鍏ヨ〃鍚�"
+                    clearable></el-input>
+          <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>
@@ -23,7 +24,7 @@
         <!-- <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>
+            <el-checkbox v-model="row.isTableColumn"></el-checkbox>
           </template>
         </el-table-column>
         <el-table-column prop="isSelectColumn" label="椤甸潰鏌ヨ鍒�">
@@ -41,16 +42,18 @@
         </el-table-column>
       </el-table>
 
-      <el-divider><el-tag type="primary">鐢熸垚浠g爜鍙傛暟:</el-tag></el-divider>
+      <el-divider>
+        <el-tag type="primary">鐢熸垚浠g爜鍙傛暟:</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-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-input v-model="dataForm.packName" placeholder="璇疯緭鍏ョ敓鎴愮殑Java鍖呭悕"></el-input>
           </el-form-item>
 
           <el-form-item prop="javaFilePath" label="Java椤圭洰璺緞" :inline="true">
@@ -92,7 +95,11 @@
   export default {
     data() {
       return {
-        modules: [], // 鍚庡彴modules
+        modules: [{id: '11', fileName: '鍚庣', filePath: 'D:\\test_project\\modules\\mainPart'}, {
+          id: '22',
+          fileName: '鍓嶇',
+          filePath: 'D:\\test_project\\web'
+        }], // 鍚庡彴modules
         eqList: [],
         dataForm: {
           tableName: '',
@@ -100,7 +107,7 @@
           javaFilePath: '',
           vueFilePath: '',
           checked: true,
-          packName: 'com.zt.modules',
+          packName: 'com.zt.life.modules',
           isPageFlag: true,
           isExport: false,
           tableData: []
diff --git a/web/src/views/modules/project/Project-AddOrUpdate.vue b/web/src/views/modules/project/Project-AddOrUpdate.vue
new file mode 100644
index 0000000..e0f1801
--- /dev/null
+++ b/web/src/views/modules/project/Project-AddOrUpdate.vue
@@ -0,0 +1,109 @@
+<template>
+  <zt-dialog ref="dialog" column="2" @confirm="formSubmit">
+    <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
+      <zt-form-item label="濮旀墭鍗曚綅鍚嶇О" prop="entrustUnitName" rules="required">
+                        <el-input v-model="dataForm.entrustUnitName"></el-input>
+                </zt-form-item>
+      <zt-form-item label="濮旀墭鍗曚綅鍦板潃" prop="entrustUnitAddress" rules="required">
+                        <el-input v-model="dataForm.entrustUnitAddress"></el-input>
+                </zt-form-item>
+      <zt-form-item label="濮旀墭鍗曚綅鑱旂郴浜�" prop="entrustUnitContact" rules="required">
+                        <el-input v-model="dataForm.entrustUnitContact"></el-input>
+                </zt-form-item>
+      <zt-form-item label="濮旀墭鍗曚綅鑱旂郴鏂瑰紡" prop="entrustUnitContWay" rules="required">
+                        <el-input v-model="dataForm.entrustUnitContWay"></el-input>
+                </zt-form-item>
+      <zt-form-item label="寮�鍙戝崟浣嶅悕绉�" prop="developUnitName" rules="required">
+                        <el-input v-model="dataForm.developUnitName"></el-input>
+                </zt-form-item>
+      <zt-form-item label="寮�鍙戝崟浣嶅湴鍧�" prop="developUnitAddress" rules="required">
+                        <el-input v-model="dataForm.developUnitAddress"></el-input>
+                </zt-form-item>
+      <zt-form-item label="寮�鍙戝崟浣嶈仈绯讳汉" prop="developUnitContact" rules="required">
+                        <el-input v-model="dataForm.developUnitContact"></el-input>
+                </zt-form-item>
+      <zt-form-item label="寮�鍙戝崟浣嶈仈绯绘柟寮�" prop="developUnitContWay" rules="required">
+                        <el-input v-model="dataForm.developUnitContWay"></el-input>
+                </zt-form-item>
+      <zt-form-item label="杞欢鍚嶇О" prop="software" rules="required">
+                        <el-input v-model="dataForm.software"></el-input>
+                </zt-form-item>
+      <zt-form-item label="椤圭洰缂栧彿" prop="code" rules="required">
+                        <el-input v-model="dataForm.code"></el-input>
+                </zt-form-item>
+      <zt-form-item label="椤圭洰鏍囪瘑" prop="identity" rules="required">
+                        <el-input v-model="dataForm.identity"></el-input>
+                </zt-form-item>
+      <zt-form-item label="瀵嗙骇" prop="secretClass" rules="required">
+                        <zt-dict v-model="dataForm.secretClass" dict="secret_class"></zt-dict>
+                </zt-form-item>
+      <zt-form-item label="鍏抽敭绛夌骇" prop="criticalLevel" rules="required">
+                        <zt-dict v-model="dataForm.criticalLevel" dict="critical_level"></zt-dict>
+                </zt-form-item>
+      <zt-form-item label="娴嬭瘯绾у埆" prop="testLevel" rules="required">
+                        <zt-dict v-model="dataForm.testLevel" dict="test_level"></zt-dict>
+                </zt-form-item>
+      <zt-form-item label="椤圭洰璐熻矗浜�" prop="projectLeader" rules="required">
+                        <el-input v-model="dataForm.projectLeader"></el-input>
+                </zt-form-item>
+      <zt-form-item label="椤圭洰娴嬭瘯浜哄憳" prop="projectTesters" rules="required">
+                        <el-input v-model="dataForm.projectTesters"></el-input>
+                </zt-form-item>
+      <zt-form-item label="椤圭洰瀹℃牳浜哄憳" prop="projectReviewer" rules="required">
+                        <el-input v-model="dataForm.projectReviewer"></el-input>
+                </zt-form-item>
+      <zt-form-item label="鏄惁绛剧讲鍚堝悓" prop="isContract" rules="required">
+                        <zt-dict v-model="dataForm.isContract" dict="is_or_not"></zt-dict>
+                </zt-form-item>
+    </el-form>
+  </zt-dialog>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        dataForm: {
+          id: '',
+          entrustUnitName: '',
+          entrustUnitAddress: '',
+          entrustUnitContact: '',
+          entrustUnitContWay: '',
+          developUnitName: '',
+          developUnitAddress: '',
+          developUnitContact: '',
+          developUnitContWay: '',
+          software: '',
+          code: '',
+          identity: '',
+          secretClass: '',
+          criticalLevel: '',
+          testLevel: '',
+          projectLeader: '',
+          projectTesters: '',
+          projectReviewer: '',
+          isContract: ''
+        }
+      }
+    },
+    methods: {
+      // 鑾峰彇淇℃伅
+      async getInfo() {
+        let res = await this.$http.get(`/project//${this.dataForm.id}`)
+        this.dataForm = {
+          ...this.dataForm,
+          ...res.data
+        }
+      },
+      // 琛ㄥ崟鎻愪氦
+      async formSubmit() {
+        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/project//', this.dataForm)
+        if (res.success) {
+          await this.$tip.success()
+          this.$refs.dialog.close()
+          this.$emit('refreshDataList')
+        }
+      }
+    }
+  }
+</script>
diff --git a/web/src/views/modules/project/Project.vue b/web/src/views/modules/project/Project.vue
new file mode 100644
index 0000000..599ad11
--- /dev/null
+++ b/web/src/views/modules/project/Project.vue
@@ -0,0 +1,90 @@
+<template>
+  <el-card shadow="never" class="aui-card--fill">
+    <div class="mod-project-project}">
+      <zt-table-wraper query-url="/project//page" delete-url="/project/" v-slot="{ table }">
+        <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
+          <el-form-item>
+                                <el-input v-model="dataForm.entrustUnitName" placeholder="璇疯緭鍏ュ鎵樺崟浣嶅悕绉�" clearable></el-input>
+              
+          </el-form-item>
+          <el-form-item>
+                                <el-input v-model="dataForm.developUnitName" placeholder="璇疯緭鍏ュ紑鍙戝崟浣嶅悕绉�" clearable></el-input>
+              
+          </el-form-item>
+          <el-form-item>
+                                <el-input v-model="dataForm.software" placeholder="璇疯緭鍏ヨ蒋浠跺悕绉�" clearable></el-input>
+              
+          </el-form-item>
+          <el-form-item>
+                                <el-input v-model="dataForm.code" placeholder="璇疯緭鍏ラ」鐩紪鍙�" clearable></el-input>
+              
+          </el-form-item>
+          <el-form-item>
+                                <el-input v-model="dataForm.identity" placeholder="璇疯緭鍏ラ」鐩爣璇�" clearable></el-input>
+              
+          </el-form-item>
+          <el-form-item>
+                                <zt-dict v-model="dataForm.criticalLevel" dict="critical_level" clearable></zt-dict>
+              
+          </el-form-item>
+          <el-form-item>
+                                <zt-dict v-model="dataForm.testLevel" dict="test_level" clearable></zt-dict>
+              
+          </el-form-item>
+          <el-form-item>
+            <zt-button type="query" @click="table.query()"/>
+            <zt-button type="add" perm="project:add" @click="table.editHandle()"/>
+            <zt-button type="delete" perm="project:delete" @click="table.deleteHandle()"/>
+          </el-form-item>
+        </el-form>
+        <el-table v-loading="table.dataLoading" :data="table.dataList" border @selection-change="table.selectionChangeHandle">
+          <el-table-column type="selection" width="40"/>
+            <el-table-column prop="entrustUnitName" label="濮旀墭鍗曚綅鍚嶇О"/>
+                <el-table-column prop="entrustUnitAddress" label="濮旀墭鍗曚綅鍦板潃"/>
+                <el-table-column prop="entrustUnitContact" label="濮旀墭鍗曚綅鑱旂郴浜�"/>
+                <el-table-column prop="entrustUnitContWay" label="濮旀墭鍗曚綅鑱旂郴鏂瑰紡"/>
+                <el-table-column prop="developUnitName" label="寮�鍙戝崟浣嶅悕绉�"/>
+                <el-table-column prop="developUnitAddress" label="寮�鍙戝崟浣嶅湴鍧�"/>
+                <el-table-column prop="developUnitContact" label="寮�鍙戝崟浣嶈仈绯讳汉"/>
+                <el-table-column prop="developUnitContWay" label="寮�鍙戝崟浣嶈仈绯绘柟寮�"/>
+                <el-table-column prop="software" label="杞欢鍚嶇О"/>
+                <el-table-column prop="code" label="椤圭洰缂栧彿"/>
+                <el-table-column prop="identity" label="椤圭洰鏍囪瘑"/>
+                <zt-table-column-dict prop="secretClass" label="瀵嗙骇" dict="secret_class"/>
+                <zt-table-column-dict prop="criticalLevel" label="鍏抽敭绛夌骇" dict="critical_level"/>
+                <zt-table-column-dict prop="testLevel" label="娴嬭瘯绾у埆" dict="test_level"/>
+                <el-table-column prop="projectLeader" label="椤圭洰璐熻矗浜�"/>
+                <el-table-column prop="projectTesters" label="椤圭洰娴嬭瘯浜哄憳"/>
+                <el-table-column prop="projectReviewer" label="椤圭洰瀹℃牳浜哄憳"/>
+                <zt-table-column-dict prop="isContract" label="鏄惁绛剧讲鍚堝悓" dict="is_or_not"/>
+    
+          <zt-table-column-handle :table="table" edit-perm="project:update" delete-perm="project::delete"/>
+        </el-table>
+        <!-- 寮圭獥, 鏂板 / 淇敼 -->
+        <add-or-update @refreshDataList="table.query"/>
+      </zt-table-wraper>
+    </div>
+  </el-card>
+</template>
+
+<script>
+  import AddOrUpdate from './Project-AddOrUpdate'
+  export default {
+    data() {
+      return {
+        dataForm: {
+          entrustUnitName: '',
+          developUnitName: '',
+          software: '',
+          code: '',
+          identity: '',
+          criticalLevel: '',
+          testLevel: '',
+        }
+      }
+    },
+    components: {
+      AddOrUpdate
+    }
+  }
+</script>
diff --git a/web/src/views/modules/project/project-add-or-update.vue b/web/src/views/modules/project/project-add-or-update.vue
deleted file mode 100644
index 5fac391..0000000
--- a/web/src/views/modules/project/project-add-or-update.vue
+++ /dev/null
@@ -1,85 +0,0 @@
-<template>
-  <zt-dialog ref="dialog" column="2" @confirm="formSubmit">
-    <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
-      <zt-form-item label="杞欢鍚嶇О" prop="softwarename" rules="required">
-        <el-input v-model="dataForm.softwarename"></el-input>
-      </zt-form-item>
-      <zt-form-item label="椤圭洰缂栧彿" prop="code" rules="required">
-        <el-input v-model="dataForm.code"></el-input>
-      </zt-form-item>
-      <zt-form-item label="椤圭洰鏍囪瘑" prop="identity" rules="required">
-        <el-input v-model="dataForm.identity"></el-input>
-      </zt-form-item>
-      <zt-form-item label="瀵嗙骇" prop="secretClass" rules="required">
-        <el-input v-model="dataForm.secretClass"></el-input>
-      </zt-form-item>
-      <zt-form-item label="鍏抽敭绛夌骇" prop="criticalLevel" rules="required">
-        <el-input v-model="dataForm.criticalLevel"></el-input>
-      </zt-form-item>
-      <zt-form-item label="杩愯鐜" prop="optEnviron" rules="required">
-        <el-input v-model="dataForm.optEnviron"></el-input>
-      </zt-form-item>
-      <zt-form-item label="缂栫▼璇█" prop="programLang" rules="required">
-        <el-input v-model="dataForm.programLang"></el-input>
-      </zt-form-item>
-      <zt-form-item label="杞欢绫诲瀷" prop="softwareType" rules="required">
-        <el-input v-model="dataForm.softwareType"></el-input>
-      </zt-form-item>
-      <zt-form-item label="椤圭洰璐熻矗浜�" prop="projectLeader" rules="required">
-        <el-input v-model="dataForm.projectLeader"></el-input>
-      </zt-form-item>
-      <zt-form-item label="椤圭洰娴嬭瘯浜哄憳" prop="projectTesters" rules="required">
-        <el-input v-model="dataForm.projectTesters"></el-input>
-      </zt-form-item>
-      <zt-form-item label="椤圭洰瀹℃牳浜哄憳" prop="projectReviewer" rules="required">
-        <el-input v-model="dataForm.projectReviewer"></el-input>
-      </zt-form-item>
-      <zt-form-item label="鏄惁绛剧讲鍚堝悓" prop="isContract" rules="required">
-        <el-input v-model="dataForm.isContract"></el-input>
-      </zt-form-item>
-    </el-form>
-  </zt-dialog>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        dataForm: {
-          id: '',
-          softwarename: '',
-          code: '',
-          identity: '',
-          secretClass: '',
-          criticalLevel: '',
-          optEnviron: '',
-          programLang: '',
-          softwareType: '',
-          projectLeader: '',
-          projectTesters: '',
-          projectReviewer: '',
-          isContract: ''
-        }
-      }
-    },
-    methods: {
-      // 鑾峰彇淇℃伅
-      async getInfo() {
-        let res = await this.$http.get(`/project//${this.dataForm.id}`)
-        this.dataForm = {
-          ...this.dataForm,
-          ...res.data
-        }
-      },
-      // 琛ㄥ崟鎻愪氦
-      async formSubmit() {
-        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/project//', this.dataForm)
-        if (res.success) {
-          await this.$tip.success()
-          this.$refs.dialog.close()
-          this.$emit('refreshDataList')
-        }
-      }
-    }
-  }
-</script>
diff --git a/web/src/views/modules/project/project.vue b/web/src/views/modules/project/project.vue
deleted file mode 100644
index 8efe674..0000000
--- a/web/src/views/modules/project/project.vue
+++ /dev/null
@@ -1,49 +0,0 @@
-<template>
-  <el-card shadow="never" class="aui-card--fill">
-    <div class="mod-project-project}">
-      <zt-table-wraper query-url="/project//page" delete-url="/project/" v-slot="{ table }">
-        <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
-          <el-form-item>
-            <zt-button type="query" @click="table.query()"/>
-            <zt-button type="add" perm="project::add" @click="table.editHandle()"/>
-            <zt-button type="delete" perm="project::delete" @click="table.deleteHandle()"/>
-          </el-form-item>
-        </el-form>
-        <el-table v-loading="table.dataLoading" :data="table.dataList" border @selection-change="table.selectionChangeHandle">
-          <el-table-column type="selection" width="40"/>
-          <el-table-column prop="softwarename" label="杞欢鍚嶇О"/>
-          <el-table-column prop="code" label="椤圭洰缂栧彿"/>
-          <el-table-column prop="identity" label="椤圭洰鏍囪瘑"/>
-          <el-table-column prop="secretClass" label="瀵嗙骇"/>
-          <el-table-column prop="criticalLevel" label="鍏抽敭绛夌骇"/>
-          <el-table-column prop="optEnviron" label="杩愯鐜"/>
-          <el-table-column prop="programLang" label="缂栫▼璇█"/>
-          <el-table-column prop="softwareType" label="杞欢绫诲瀷"/>
-          <el-table-column prop="projectLeader" label="椤圭洰璐熻矗浜�"/>
-          <el-table-column prop="projectTesters" label="椤圭洰娴嬭瘯浜哄憳"/>
-          <el-table-column prop="projectReviewer" label="椤圭洰瀹℃牳浜哄憳"/>
-          <el-table-column prop="isContract" label="鏄惁绛剧讲鍚堝悓"/>
-
-          <zt-table-column-handle :table="table" edit-perm="project:update" delete-perm="project::delete"/>
-        </el-table>
-        <!-- 寮圭獥, 鏂板 / 淇敼 -->
-        <add-or-update @refreshDataList="table.query"/>
-      </zt-table-wraper>
-    </div>
-  </el-card>
-</template>
-
-<script>
-  import AddOrUpdate from './project-add-or-update'
-  export default {
-    data() {
-      return {
-        dataForm: {
-        }
-      }
-    },
-    components: {
-      AddOrUpdate
-    }
-  }
-</script>
diff --git a/zt/core/src/main/java/com/zt/generator/controller/SysGeneratorController.java b/zt/core/src/main/java/com/zt/generator/controller/SysGeneratorController.java
index e9c794b..a609970 100644
--- a/zt/core/src/main/java/com/zt/generator/controller/SysGeneratorController.java
+++ b/zt/core/src/main/java/com/zt/generator/controller/SysGeneratorController.java
@@ -45,7 +45,7 @@
 public class SysGeneratorController {
 
     @GetMapping("properties")
-    @RequiresPermissions(Constant.Permissions.SUPER_ADMIN)
+    //@RequiresPermissions(Constant.Permissions.SUPER_ADMIN)
     public Result<JSONObject> queryProperties() {
         JSONObject jsonObject = new JSONObject();
         try {
@@ -133,7 +133,7 @@
                 JSONObject json = array.getJSONObject(i);
                 String columnName = json.getString("columnName");
                 if ("is_delete,dept_id,company_id,tenant_id,creator,create_date,updater,update_date"
-                        .indexOf(columnName) >= 0) {
+                        .indexOf(columnName.toLowerCase()) >= 0) {
                     json.put("isTableColumn", "false");
                 }
             }
diff --git a/zt/core/src/main/java/com/zt/generator/data/DBUtil.java b/zt/core/src/main/java/com/zt/generator/data/DBUtil.java
index d9d6eca..1bc6b4f 100644
--- a/zt/core/src/main/java/com/zt/generator/data/DBUtil.java
+++ b/zt/core/src/main/java/com/zt/generator/data/DBUtil.java
@@ -6,10 +6,8 @@
 
 import org.springframework.jdbc.core.JdbcTemplate;
 
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.SQLException;
+import java.sql.*;
+import java.util.HashMap;
 import java.util.Map;
 
 public class DBUtil {
@@ -18,7 +16,7 @@
         try {
             DatabaseMetaData dbm = conn.getMetaData();
             String currentCatalog = conn.getCatalog();
-            String[] types = { "TABLE" };
+            String[] types = {"TABLE"};
             ResultSet tabs = dbm.getTables(currentCatalog, null, tableName, types);
             if (tabs.next()) {
                 return true;
@@ -33,21 +31,35 @@
         try {
             DatabaseMetaData dbm = conn.getMetaData();
             String currentCatalog = conn.getCatalog();
+
+            Map<String, String> mapDict = new HashMap<>();
+            String sql = "SELECT * FROM sys_dict_type WHERE is_delete=0";
+            PreparedStatement preparedStatement = conn.prepareStatement(sql);
+            ResultSet resultSet = preparedStatement.executeQuery();
+            while (resultSet.next()) {
+                String dictType = resultSet.getString("DICT_TYPE");
+                mapDict.put(dictType, dictType);
+            }
+
             ResultSet rs = dbm.getColumns(currentCatalog, null, tableName, null);
-
             DataTable dt = new DataTable(rs);
-
-            rs = dbm.getPrimaryKeys(currentCatalog, null, tableName);
             DataTable keyDt = new DataTable(rs);
             Map map = keyDt.toMap("Column_Name", "PK_Name");
             dt.insertColumn("isKey");
+            dt.insertColumn("dictType");
             for (int i = 0; i < dt.getRowCount(); i++) {
                 DataRow dr = dt.getDataRow(i);
-                if (map.containsKey(dr.getString("Column_Name"))) {
+                String columnName = dr.getString("Column_Name");
+                if (map.containsKey(columnName)) {
                     dr.set("isKey", "Y");
                 } else {
                     dr.set("isKey", "N");
                 }
+                if (mapDict.get(columnName) != null) {
+                    dr.set("dictType", columnName);
+                } else {
+                    dr.set("dictType", "");
+                }
             }
             return dt;
         } catch (Exception e) {
diff --git a/zt/core/src/main/java/com/zt/generator/utils/GenUtils.java b/zt/core/src/main/java/com/zt/generator/utils/GenUtils.java
index bdfc5af..0dfe9a1 100644
--- a/zt/core/src/main/java/com/zt/generator/utils/GenUtils.java
+++ b/zt/core/src/main/java/com/zt/generator/utils/GenUtils.java
@@ -155,6 +155,7 @@
                 pathName = pathName.substring(1);
             }
         }
+        map.put("importPath", tableName.replaceAll("_", "-"));// url璇锋眰鐨�
         map.put("pathName", pathName);// url璇锋眰鐨�
         map.put("permName", pathName.replace("/", ":"));// 鏉冮檺鐨�
         map.put("columns", columsList);
@@ -197,10 +198,10 @@
             String fileName = "";
             String filePath = "";
             if (template.contains("index.vue")) {
-                fileName = tableName.substring(tableName.indexOf("_") + 1).replaceAll("_", "-") + ".vue";
+                fileName = className + ".vue";
                 filePath = getFilePath(template, vueFilePath, packageName, moduleName);
             } else if (template.contains("add-or-update.vue")) {
-                fileName = tableName.substring(tableName.indexOf("_") + 1).replaceAll("_", "-") + "-add-or-update.vue";
+                fileName = className + "-AddOrUpdate.vue";
                 filePath = getFilePath(template, vueFilePath, packageName, moduleName);
             } else if (template.contains("Entity.java.vm")) {
                 fileName = className + ".java";
diff --git a/zt/core/src/main/resources/template/add-or-update.vue.vm b/zt/core/src/main/resources/template/add-or-update.vue.vm
index e7b9b4a..fb3afda 100644
--- a/zt/core/src/main/resources/template/add-or-update.vue.vm
+++ b/zt/core/src/main/resources/template/add-or-update.vue.vm
@@ -3,7 +3,11 @@
     <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
 #foreach($column in $columns)
       <zt-form-item label="${column.comments}" prop="${column.attrName}" rules="required">
-        <el-input v-model="dataForm.${column.attrName}"></el-input>
+          #if($column.dictType != 'null' &&  $column.dictType != '')
+              <zt-dict v-model="dataForm.${column.attrName}" dict="$column.dictType"></zt-dict>
+          #else
+              <el-input v-model="dataForm.${column.attrName}"></el-input>
+          #end
       </zt-form-item>
 #end
     </el-form>
diff --git a/zt/core/src/main/resources/template/index.vue.vm b/zt/core/src/main/resources/template/index.vue.vm
index d1e57e7..67593bd 100644
--- a/zt/core/src/main/resources/template/index.vue.vm
+++ b/zt/core/src/main/resources/template/index.vue.vm
@@ -6,21 +6,30 @@
 #foreach($column in $columns)
 #if($column.isSelectColumn == 'true')
           <el-form-item>
-            <el-input v-model="dataForm.${column.attrName}" placeholder="璇疯緭鍏�${column.comments}" clearable></el-input>
+              #if($column.dictType != 'null' &&  $column.dictType != '')
+                  <zt-dict v-model="dataForm.${column.attrName}" dict="$column.dictType" clearable></zt-dict>
+              #else
+                  <el-input v-model="dataForm.${column.attrName}" placeholder="璇疯緭鍏�${column.comments}" clearable></el-input>
+              #end
+
           </el-form-item>
 #end
 #end
           <el-form-item>
             <zt-button type="query" @click="table.query()"/>
-            <zt-button type="add" perm="${moduleName}::add" @click="table.editHandle()"/>
-            <zt-button type="delete" perm="${moduleName}::delete" @click="table.deleteHandle()"/>
+            <zt-button type="add" perm="${moduleName}:add" @click="table.editHandle()"/>
+            <zt-button type="delete" perm="${moduleName}:delete" @click="table.deleteHandle()"/>
           </el-form-item>
         </el-form>
         <el-table v-loading="table.dataLoading" :data="table.dataList" border @selection-change="table.selectionChangeHandle">
           <el-table-column type="selection" width="40"/>
 #foreach($column in $columns)
 #if($column.isTableColumn == 'true')
-          <el-table-column prop="${column.attrName}" label="${column.comments}"/>
+    #if($column.dictType != 'null' &&  $column.dictType != '')
+        <zt-table-column-dict prop="${column.attrName}" label="${column.comments}" dict="$column.dictType"/>
+    #else
+        <el-table-column prop="${column.attrName}" label="${column.comments}"/>
+    #end
 #end
 #end
 
@@ -34,7 +43,7 @@
 </template>
 
 <script>
-  import AddOrUpdate from './${tableName}-add-or-update'
+  import AddOrUpdate from './${className}-AddOrUpdate'
   export default {
     data() {
       return {

--
Gitblit v1.9.1