sr 4 years ago
parent
commit
2311ee37a1

+ 18 - 0
boman-web-core/src/main/java/com/boman/web/core/constant/MaskConstant.java

@@ -0,0 +1,18 @@
+package com.boman.web.core.constant;
+
+
+/**
+ * @author shiqian
+ * @date 2021年04月13日 13:29
+ **/
+public class MaskConstant {
+
+    /**  新增可修改  **/
+    public static final String INSERT_CAN_EDIT = "1";
+
+    /**  修改可修改  **/
+    public static final String UPDATE_CAN_EDIT = "1";
+
+    /**  列表可修改  **/
+    public static final String LIST_CAN_EDIT = "1";
+}

+ 15 - 0
boman-web-core/src/main/java/com/boman/web/core/domain/ActionType.java

@@ -0,0 +1,15 @@
+package com.boman.web.core.domain;
+
+
+/**
+ * @author shiqian
+ * @date 2021年04月13日 14:38
+ **/
+public enum ActionType {
+
+    /**  新增 */
+    INSERT,
+
+    /**  修改 */
+    UPDATE
+}

+ 157 - 0
boman-web-core/src/main/java/com/boman/web/core/domain/TableContext.java

@@ -0,0 +1,157 @@
+package com.boman.web.core.domain;
+
+import com.alibaba.fastjson.JSONObject;
+import com.boman.common.core.utils.SpringUtils;
+import com.boman.common.redis.RedisKey;
+import com.boman.common.redis.service.RedisService;
+import com.boman.gen.domain.GenTable;
+import com.boman.gen.domain.GenTableColumn;
+import com.boman.web.core.utils.IdUtils;
+
+import java.sql.Timestamp;
+import java.util.List;
+import java.util.Map;
+
+import static com.boman.common.core.utils.obj.ObjectUtils.ltZero;
+import static com.boman.common.core.utils.obj.ObjectUtils.requireNonNull;
+import static com.boman.web.core.constant.MaskConstant.INSERT_CAN_EDIT;
+import static com.boman.web.core.constant.MaskConstant.UPDATE_CAN_EDIT;
+
+/**
+ * @author shiqian
+ * @date 2021年04月13日 11:07
+ **/
+public class TableContext {
+
+    private Long id;
+    private String pkName;
+    private GenTable table;
+    private ActionType actionType;
+    private String tableName;
+    private JSONObject fixedData;
+    private JSONObject commitData;
+    private List<GenTableColumn> columns;
+
+    public static TableContext createContext(BaseTableSaveDTO dto) {
+        TableContext context = new TableContext();
+        context.setId(dto.getObjId());
+        String tableName = requireNonNull(dto.getTable(), "tableName is empty");
+        context.setTableName(tableName);
+
+        RedisService redisService = SpringUtils.getBean(RedisService.class);
+        GenTable table = redisService.getCacheObject(RedisKey.TABLE_INFO + tableName);
+        requireNonNull(table, "redis中没有此表,表名: " + tableName);
+        context.setTable(table);
+        List<GenTableColumn> columns = table.getColumns();
+        context.setColumns(table.getColumns());
+        String pkName = IdUtils.getPkName(columns);
+        context.setPkName(pkName);
+
+        JSONObject fixedData = requireNonNull(dto.getFixedData(), "fixedData is empty");
+        context.setFixedData(fixedData);
+        JSONObject commitData = new JSONObject();
+        packCommitData(dto, context, columns, fixedData, commitData);
+        context.setCommitData(commitData);
+        return context;
+
+    }
+
+    private static void packCommitData(BaseTableSaveDTO dto, TableContext context, List<GenTableColumn> columns
+            , JSONObject fixedData, JSONObject commitData) {
+        boolean isInsert = ltZero(dto.getObjId());
+        context.setActionType(isInsert ? ActionType.INSERT : ActionType.UPDATE);
+        for (GenTableColumn column : columns) {
+            String[] maskArray = requireNonNull(column.getMask(), "mask is empty").split("");
+            assert maskArray.length == 6;
+            // 新增可修改 修改可修改
+            String insertVisible = maskArray[1], updateVisible = maskArray[3];
+            for (Map.Entry<String, Object> entry : fixedData.entrySet()) {
+                if (column.getColumnName().equalsIgnoreCase(entry.getKey())) {
+                    // 新增
+                    if (isInsert) {
+                        // 新增可修改, 把新增的字段单独拿出来
+                        if (INSERT_CAN_EDIT.equals(insertVisible)) {
+                            commitData.put(entry.getKey(), entry.getValue());
+                        } else {
+                            // ignore
+                        }
+                    } else {
+                        // 编辑可修改
+                        if (UPDATE_CAN_EDIT.equals(updateVisible)) {
+                            commitData.put(entry.getKey(), entry.getValue());
+                        } else {
+                            // ignore
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+
+    /**                 get and set                               **/
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getPkName() {
+        return pkName;
+    }
+
+    public void setPkName(String pkName) {
+        this.pkName = pkName;
+    }
+
+    public GenTable getTable() {
+        return table;
+    }
+
+    public void setTable(GenTable table) {
+        this.table = table;
+    }
+
+    public String getTableName() {
+        return tableName;
+    }
+
+    public void setTableName(String tableName) {
+        this.tableName = tableName;
+    }
+
+    public JSONObject getFixedData() {
+        return fixedData;
+    }
+
+    public void setFixedData(JSONObject fixedData) {
+        this.fixedData = fixedData;
+    }
+
+    public JSONObject getCommitData() {
+        return commitData;
+    }
+
+    public void setCommitData(JSONObject commitData) {
+        this.commitData = commitData;
+    }
+
+    public List<GenTableColumn> getColumns() {
+        return columns;
+    }
+
+    public void setColumns(List<GenTableColumn> columns) {
+        this.columns = columns;
+    }
+
+    public ActionType getActionType() {
+        return actionType;
+    }
+
+    public void setActionType(ActionType actionType) {
+        this.actionType = actionType;
+    }
+}

+ 59 - 25
boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java

@@ -74,43 +74,77 @@ public class TableServiceCmdService {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(TableServiceCmdService.class);
 
-    private BaseTableDTO packTableDTO(BaseTableSaveDTO baseTableSaveDTO) {
-        BaseTableDTO baseTableDTO = new BaseTableDTO();
-        baseTableDTO.setFixedData(baseTableSaveDTO.getFixedData());
-        baseTableDTO.setObjId(baseTableSaveDTO.getObjId());
-        baseTableDTO.setTable(baseTableSaveDTO.getTable());
-        return baseTableDTO;
-    }
-
-    public final AjaxResult objectSave(BaseTableSaveDTO baseTableSaveDTO) {
+//    private BaseTableDTO packTableDTO(BaseTableSaveDTO baseTableSaveDTO) {
+//        BaseTableDTO baseTableDTO = new BaseTableDTO();
+//        baseTableDTO.setFixedData(baseTableSaveDTO.getFixedData());
+//        baseTableDTO.setObjId(baseTableSaveDTO.getObjId());
+//        baseTableDTO.setTable(baseTableSaveDTO.getTable());
+//        return baseTableDTO;
+//    }
+
+//    public final AjaxResult objectSave(BaseTableSaveDTO baseTableSaveDTO) {
+//        AjaxResult result = AjaxResult.success();
+//        BaseTableDTO baseTableDTO = packTableDTO(baseTableSaveDTO);
+//        TableServiceContext context = TableServiceContext.createFrom(baseTableDTO);
+//        // 拿到pkName和maxId
+//        List<GenTableColumn> columns = context.getTable().getColumns();
+//        String pkName = IdUtils.getPkName(columns);
+//        requireNonNull(pkName, "主键名称为空");
+//
+//        // 新增
+//        if (ObjectUtils.ltZero(baseTableDTO.getObjId())) {
+//            Long maxId = IdUtils.getMaxId(baseTableDTO.getTable(), pkName);
+//            RowResult rowResult = saveService.insertRow(context.getRealTableName(), pkName, maxId, context.getRows().get(0), columns);
+//            if (RowResult.checkSuccess(rowResult)) {
+//                LOGGER.info("保存成功,封装到数据库的数据为: {}", JSON.toJSONString(rowResult.getData()));
+//            } else {
+//                LOGGER.error("保存失败,保持的原始数据为: {}", JSON.toJSONString(baseTableSaveDTO));
+//                result = AjaxResult.error();
+//            }
+//        }else {
+//            JSONObject commitData = context.getRows().get(0).getCommitData();
+//
+//            // 编辑
+//            int effective = updateService.updateByIdList(context, pkName
+//                    , Collections.singletonList(baseTableDTO.getObjId()), commitData);
+//            if (effective > 0) {
+//                LOGGER.info("修改成功,封装到数据库的数据为: {}", JSON.toJSONString(context.getRows().get(0).getCommitData()));
+//            } else {
+//                LOGGER.error("修改失败,前台传来的原始数据为: {}", JSON.toJSONString(context.getRows().get(0).getCommitData()));
+//                result = AjaxResult.error();
+//            }
+//        }
+//
+//        return result;
+//
+//    }
+
+    public final AjaxResult objectSave(BaseTableSaveDTO dto) {
         AjaxResult result = AjaxResult.success();
-        BaseTableDTO baseTableDTO = packTableDTO(baseTableSaveDTO);
-        TableServiceContext context = TableServiceContext.createFrom(baseTableDTO);
+
+        TableContext context = TableContext.createContext(dto);
         // 拿到pkName和maxId
-        List<GenTableColumn> columns = context.getTable().getColumns();
-        String pkName = IdUtils.getPkName(columns);
-        requireNonNull(pkName, "主键名称为空");
+        List<GenTableColumn> columns = context.getColumns();
+        String pkName = context.getPkName();
+        JSONObject commitData = context.getCommitData();
 
         // 新增
-        if (ObjectUtils.ltZero(baseTableDTO.getObjId())) {
-            Long maxId = IdUtils.getMaxId(baseTableDTO.getTable(), pkName);
-            RowResult rowResult = saveService.insertRow(context.getRealTableName(), pkName, maxId, context.getRows().get(0), columns);
+        if (ActionType.INSERT.equals(context.getActionType())) {
+            Long maxId = IdUtils.getMaxId(dto.getTable(), pkName);
+            RowResult rowResult = saveService.insertRow(context.getTableName(), pkName, maxId, commitData, columns);
             if (RowResult.checkSuccess(rowResult)) {
                 LOGGER.info("保存成功,封装到数据库的数据为: {}", JSON.toJSONString(rowResult.getData()));
             } else {
-                LOGGER.error("保存失败,保持的原始数据为: {}", JSON.toJSONString(baseTableSaveDTO));
+                LOGGER.error("保存失败,保持的原始数据为: {}", JSON.toJSONString(dto));
                 result = AjaxResult.error();
             }
-        }else {
-            JSONObject commitData = context.getRows().get(0).getCommitData();
-
+        } else {
             // 编辑
-            int effective = updateService.updateByIdList(context, pkName
-                    , Collections.singletonList(baseTableDTO.getObjId()), commitData);
+            int effective = updateService.updateByIdList(context, pkName, Collections.singletonList(context.getId()), commitData, columns);
             if (effective > 0) {
-                LOGGER.info("修改成功,封装到数据库的数据为: {}", JSON.toJSONString(context.getRows().get(0).getCommitData()));
+                LOGGER.info("修改成功,封装到数据库的数据为: {}", JSON.toJSONString(commitData));
             } else {
-                LOGGER.error("修改失败,前台传来的原始数据为: {}", JSON.toJSONString(context.getRows().get(0).getCommitData()));
+                LOGGER.error("修改失败,前台传来的原始数据为: {}", JSON.toJSONString(commitData));
                 result = AjaxResult.error();
             }
         }

+ 10 - 31
boman-web-core/src/main/java/com/boman/web/core/service/save/BaseSaveServiceImpl.java

@@ -1,12 +1,11 @@
 package com.boman.web.core.service.save;
 
 import com.alibaba.fastjson.JSONObject;
-import com.boman.common.core.utils.SecurityUtils;
 import com.boman.gen.domain.GenTableColumn;
 import com.boman.web.core.constant.FormDataConstant;
-import com.boman.web.core.domain.MainTableRecord;
 import com.boman.web.core.domain.RowResult;
 import com.boman.web.core.mapper.StandardlyMapper;
+import com.boman.web.core.utils.ColumnUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,39 +30,19 @@ public class BaseSaveServiceImpl implements IBaseSaveService {
     /**
      * 功能描述: 保存一行
      *
-     * @param tableName tableName
-     * @param pkName    主键名称
-     * @param maxId     最大的SEQ
-     * @param row       要保存的数据
-     * @param columns   这是此表的所有字段属性名称,用来判断是否所有UPDATE_BY和UPDATE_TIME,和时间类型
+     * @param tableName  tableName
+     * @param pkName     主键名称
+     * @param maxId      最大的SEQ
+     * @param commitData commitData
+     * @param columns    这是此表的所有字段属性名称,用来判断是否所有UPDATE_BY和UPDATE_TIME,和时间类型
      * @return com.boman.system.common.RowResult
      */
     @Override
-    public RowResult insertRow(String tableName, String pkName, Long maxId, MainTableRecord row, List<GenTableColumn> columns) {
-        JSONObject commitData = row.getMainData().getCommitData();
+    public RowResult insertRow(String tableName, String pkName, Long maxId, JSONObject commitData, List<GenTableColumn> columns) {
         Timestamp currentTime = new Timestamp(System.currentTimeMillis());
-        for (GenTableColumn column : columns) {
-            // 判断是否有修改人、修改时间
-            if (column.getColumnName().equalsIgnoreCase(FormDataConstant.UPDATE_BY)) {
-                commitData.put(FormDataConstant.UPDATE_BY, SecurityUtils.getUserId());
-            }
-            if (column.getColumnName().equalsIgnoreCase(FormDataConstant.UPDATE_TIME)) {
-                commitData.put(FormDataConstant.UPDATE_TIME, currentTime);
-            }
-
-            // 如果某一列是datetime类型,需要把类型转成datetime,否则数据库会报错
-            if (FormDataConstant.DATETIME.equalsIgnoreCase(column.getColumnType())) {
-                String columnName = column.getColumnName().toUpperCase();
-                commitData.put(columnName, commitData.getTimestamp(columnName));
-            }
-        }
-
-        // 新增
-        if (row.getId() > 0) {
-            commitData.put(FormDataConstant.UPDATE_TIME, currentTime);
-            commitData.put(FormDataConstant.UPDATE_BY, SecurityUtils.getUserId());
-        }
-
+        ColumnUtils.packUpdateByAndTime(columns, commitData, currentTime);
+        commitData.put(FormDataConstant.CREATE_TIME.toUpperCase(), currentTime);
+        commitData.put(FormDataConstant.CREATE_BY.toUpperCase(), "张三");
         commitData.put(pkName.toUpperCase(), maxId);
         int ret = mapper.insert(tableName, commitData);
         if (ret > 0) {

+ 7 - 7
boman-web-core/src/main/java/com/boman/web/core/service/save/IBaseSaveService.java

@@ -1,8 +1,8 @@
 package com.boman.web.core.service.save;
 
 
+import com.alibaba.fastjson.JSONObject;
 import com.boman.gen.domain.GenTableColumn;
-import com.boman.web.core.domain.MainTableRecord;
 import com.boman.web.core.domain.RowResult;
 
 import java.util.List;
@@ -18,13 +18,13 @@ public interface IBaseSaveService {
     /**
      * 功能描述: 保存一行
      *
-     * @param tableName tableName
-     * @param pkName    主键名称
-     * @param maxId     最大的SEQ
-     * @param row       要保存的数据
-     * @param columns   这是此表的所有字段属性名称,用来判断是否所有UPDATE_BY和UPDATE_TIME,和时间类型
+     * @param tableName  tableName
+     * @param pkName     主键名称
+     * @param maxId      最大的SEQ
+     * @param commitData commitData
+     * @param columns    这是此表的所有字段属性名称,用来判断是否所有UPDATE_BY和UPDATE_TIME,和时间类型
      * @return com.boman.system.common.RowResult
      */
-    RowResult insertRow(String tableName, String pkName, Long maxId, MainTableRecord row, List<GenTableColumn> columns);
+    RowResult insertRow(String tableName, String pkName, Long maxId, JSONObject commitData, List<GenTableColumn> columns);
 
 }

+ 11 - 5
boman-web-core/src/main/java/com/boman/web/core/service/update/BaseUpdateServiceImpl.java

@@ -3,13 +3,15 @@ package com.boman.web.core.service.update;
 import com.alibaba.fastjson.JSONObject;
 import com.boman.common.core.utils.obj.ObjectUtils;
 import com.boman.gen.domain.GenTableColumn;
-import com.boman.web.core.domain.TableServiceContext;
+import com.boman.web.core.domain.TableContext;
 import com.boman.web.core.mapper.StandardlyMapper;
+import com.boman.web.core.utils.ColumnUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.sql.Timestamp;
 import java.util.List;
 import java.util.Map;
 
@@ -36,17 +38,21 @@ public class BaseUpdateServiceImpl implements IBaseUpdateService {
      * @param pkName     主键名
      * @param idList     idList
      * @param commitData 需要更改的model, 已经转义好了,不需要到mapper层再去转义
+     * @param columns    这是此表的所有字段属性名称,用来判断是否所有UPDATE_BY和UPDATE_TIME,和时间类型
      * @return int
      */
     @Override
-    public int updateByIdList(TableServiceContext context, String pkName, List<Long> idList, JSONObject commitData) {
-        requireNonNull(context.getRealTableName(), "表名为空");
+    public int updateByIdList(TableContext context, String pkName, List<Long> idList, JSONObject commitData, List<GenTableColumn> columns) {
+        requireNonNull(context.getTableName(), "表名为空");
         requireNonNull(pkName, "主键名称为空");;
         requireNonNull(idList, "需要修改的idList为空");
         requireNonNull(commitData, "需要更改的参数为空");
 
-        commitData = ObjectUtils.ifNullSetEmpty(escapeByQueryType(context.getTable().getColumns(), commitData));
-        return mapper.updateByIdList(context.getRealTableName(), pkName, idList, commitData);
+        Timestamp currentTime = new Timestamp(System.currentTimeMillis());
+        commitData = ObjectUtils.ifNullSetEmpty(escapeByQueryType(columns, commitData));
+        ColumnUtils.packUpdateByAndTime(columns, commitData, currentTime);
+
+        return mapper.updateByIdList(context.getTableName(), pkName, idList, commitData);
     }
 
     private JSONObject escapeByQueryType(List<GenTableColumn> columns, JSONObject commitData) {

+ 3 - 2
boman-web-core/src/main/java/com/boman/web/core/service/update/IBaseUpdateService.java

@@ -1,7 +1,8 @@
 package com.boman.web.core.service.update;
 
 import com.alibaba.fastjson.JSONObject;
-import com.boman.web.core.domain.TableServiceContext;
+import com.boman.gen.domain.GenTableColumn;
+import com.boman.web.core.domain.TableContext;
 
 import java.util.List;
 
@@ -20,5 +21,5 @@ public interface IBaseUpdateService {
      * @param commitData 需要更改的model, 已经转义好了,不需要到mapper层再去转义
      * @return int
      */
-    int updateByIdList(TableServiceContext context, String pkName, List<Long> idList, JSONObject commitData);
+    int updateByIdList(TableContext context, String pkName, List<Long> idList, JSONObject commitData, List<GenTableColumn> columns);
 }

+ 40 - 0
boman-web-core/src/main/java/com/boman/web/core/utils/ColumnUtils.java

@@ -0,0 +1,40 @@
+package com.boman.web.core.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.boman.gen.domain.GenTableColumn;
+import com.boman.web.core.constant.FormDataConstant;
+
+import java.sql.Timestamp;
+import java.util.List;
+
+/**
+ * @author shiqian
+ * @date 2021年04月13日 15:37
+ **/
+public class ColumnUtils {
+
+    /**
+     * 功能描述: 新增或者修改的时候,是否需要给修改人修改时间赋值
+     *
+     * @param columns     所有的列
+     * @param jsonObject  需要返回的数据
+     * @param currentTime currentTime
+     */
+    public static void packUpdateByAndTime(List<GenTableColumn> columns, JSONObject jsonObject, Timestamp currentTime) {
+        for (GenTableColumn column : columns) {
+            // 判断是否有修改人、修改时间
+            if (FormDataConstant.UPDATE_BY.equalsIgnoreCase(column.getColumnName())) {
+                jsonObject.put(FormDataConstant.UPDATE_BY, "张三");
+            }
+            if (FormDataConstant.UPDATE_TIME.equalsIgnoreCase(column.getColumnName())) {
+                jsonObject.put(FormDataConstant.UPDATE_TIME, currentTime);
+            }
+
+            // 如果某一列是datetime类型,需要把类型转成datetime,否则数据库会报错
+            if (FormDataConstant.DATETIME.equalsIgnoreCase(column.getColumnType())) {
+                String columnName = column.getColumnName().toUpperCase();
+                jsonObject.put(columnName, jsonObject.getTimestamp(columnName));
+            }
+        }
+    }
+}

+ 7 - 0
ruoyi-ui/src/api/tool/gen.js

@@ -75,6 +75,13 @@ export function delTable(tableId) {
     method: 'delete'
   })
 }
+// 删除
+export function delPost(id) {
+  return request({
+    url: '/genTableColumn/columnIds/' + id,
+    method: 'delete'
+  })
+}
 
 // 生成代码(自定义路径)
 export function genCode(tableName) {

BIN
ruoyi-ui/src/assets/images/login-background.jpg


+ 3 - 0
ruoyi-ui/src/main.js

@@ -48,6 +48,9 @@ Vue.prototype.msgInfo = function (msg) {
   this.$message.info(msg);
 }
 
+import directive from "@/components/Directives";
+Vue.use(directive)
+
 // 全局组件挂载
 Vue.component('Pagination', Pagination)
 Vue.component('RightToolbar', RightToolbar)

+ 211 - 56
ruoyi-ui/src/views/tool/gen/editTable.vue

@@ -1,11 +1,47 @@
 <template>
   <el-card>
+    <el-row type="flex" v-if="activeName=='cloum'" justify="space-between" style="margin: 10px 0;">
+      <el-col :span="1.5" style="display: flex; align-items: center;">
+        <el-form label-width="100px" style="display: flex; align-items: center;">
+          <el-form-item style="text-align: center;margin-left:-100px;margin-top:0; margin-bottom: 0;">
+            <el-button type="primary" @click="submitForm()">保存</el-button>
+            <el-button @click="close()">返回</el-button>
+          </el-form-item>
+        </el-form>
+      </el-col>
+      <el-row type="flex" :gutter="10"  justify="end">
+        <el-col :span="1.5" style="display: flex; align-items: center;">
+          <el-button
+            type="warning"
+            plain
+            icon="el-icon-plus"
+            size="mini"
+            @click="handleAdd"
+            v-hasPermi="['system:post:add']"
+          >新增</el-button>
+        </el-col>
+        <el-col :span="1.5" style="display: flex; align-items: center;">
+          <el-button
+            type="danger"
+            plain
+            icon="el-icon-delete"
+            size="mini"
+            :disabled="multiple"
+            @click="handleDelete"
+            v-hasPermi="['system:post:remove']"
+          >删除</el-button>
+        </el-col>
+        <!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> -->
+      </el-row>
+    </el-row>
+
     <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="cloum">
-        <el-table ref="dragTable" :data="cloumns" row-key="columnId" :max-height="tableHeight">
+        <el-table ref="dragTable" :data="cloumns" row-key="columnId" :max-height="tableHeight" @selection-change="handleSelectionChange">
+          <el-table-column type="selection" width="55" align="center" />
           <el-table-column label="序号" type="index" min-width="5%" class-name="allowDrag" />
           <el-table-column
             label="字段列名"
@@ -13,7 +49,11 @@
             min-width="10%"
             :show-overflow-tooltip="true"
           />
-          <el-table-column label="字段描述" align="center" prop="columnComment" min-width="10%"  />
+          <el-table-column label="字段描述" min-width="10%">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.columnComment"></el-input>
+            </template>
+          </el-table-column>
           <el-table-column
             label="物理类型"
             prop="columnType"
@@ -21,7 +61,7 @@
             :show-overflow-tooltip="true"
           />
           <el-table-column label="字段显示规则" align="center" prop="mask" min-width="11%"/>
-          <el-table-column label="排序" min-width="5%" align="center" prop="sort"/>
+          <el-table-column label="排序" min-width="8%" align="center" prop="sort"/>
           <el-table-column label="输入字段" min-width="10%">
             <template slot-scope="scope">
               <el-checkbox true-label="1" v-model="scope.row.isIn"></el-checkbox>
@@ -32,7 +72,7 @@
               <el-checkbox true-label="1" v-model="scope.row.isOut"></el-checkbox>
             </template>
           </el-table-column>
-          <el-table-column label="查询" min-width="5%">
+          <el-table-column label="查询" min-width="8%">
             <template slot-scope="scope">
               <el-checkbox true-label="1" v-model="scope.row.isQuery"></el-checkbox>
             </template>
@@ -40,27 +80,52 @@
           <el-table-column label="关联HR字段" min-width="10%" align="center" prop="hrParentId"/>
           <el-table-column label="缺省值" min-width="10%" align="center" prop="defaultValue"/>
           <el-table-column label="外键" min-width="10%" align="center" prop="foreignKey"/>
-          <el-table-column label="必填" min-width="5%">
+          <el-table-column label="必填" min-width="8%">
             <template slot-scope="scope">
               <el-checkbox true-label="1" v-model="scope.row.isRequired"></el-checkbox>
             </template>
           </el-table-column>
-          <el-table-column label="显示类型" min-width="12%" align="center" prop="htmlType"/>
-          <el-table-column label="字典类型" min-width="12%" align="center" prop="dictType"/>
+          <el-table-column label="显示类型" min-width="12%">
+            <template slot-scope="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 slot-scope="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" :menus="menus"/>
       </el-tab-pane> -->
       <el-tab-pane label="关联表" name="genInfo">
-        <el-row style="margin-bottom: 20px;">
-          <el-col :span="12">
-            <!-- <el-button style="background-color: #1591FF;color: #fff;border: 1px solid #1591FF;">保存</el-button>
-            <el-button style="background-color: #fff;color: #5B636C;border: 1px solid #ECECEC;">返回</el-button> -->
+        <el-row style="margin-bottom: 20px;" type="flex" :gutter="10"  justify="end">
+          <el-col :span="1.5">
+            <el-button @click="handleAdd_gl" icon="el-icon-plus" size="mini" style="background-color: #FFE9ED;color: #E58481;border: 1px solid #E58481;">新增</el-button>
           </el-col>
-          <el-col :span="12">
-            <el-button @click="handleAdd" style="background-color: #FFE9ED;color: #E58481;border: 1px solid #E58481;">新增</el-button>
-            <el-button style="background-color: #FFD6B0;color: #EA551A;border: 1px solid #F4AD6B;">删除</el-button>
+          <el-col :span="1.5">
+            <el-button icon="el-icon-delete" size="mini" style="background-color: #FFD6B0;color: #EA551A;border: 1px solid #F4AD6B;">删除</el-button>
           </el-col>
         </el-row>
          <el-table ref="dragTable" v-loading="loading" :data="postList" row-key="columnId" align="center" :max-height="tableHeight">
@@ -73,11 +138,19 @@
              </el-table-column>
            <el-table-column label="序号" align="center" prop="sort" />
            <el-table-column label="描述" align="center" prop="description" />
-           <el-table-column label="关联表" align="center" prop="relationParentId" />
-           <el-table-column label="字段(关联到主表PK)" align="center" prop="relationChildId"/>
+           <el-table-column label="关联表" align="center" prop="tableName" />
+           <el-table-column label="字段(关联到主表PK)" align="center" prop="columnName"/>
            <el-table-column label="显示条件" align="center" prop="displayConditions" />
-           <el-table-column label="关联方式" align="center" prop="relationType" />
-           <el-table-column label="内嵌编辑" align="center" prop="embedEdit" />
+           <el-table-column label="关联方式" align="center" prop="relationType" >
+             <template slot-scope="scope">
+               {{scope.row.relationType | relationTypeFn}}
+             </template>
+           </el-table-column>
+           <el-table-column label="内嵌编辑" align="center" prop="embedEdit">
+             <template slot-scope="scope">
+                 {{scope.row.embedEdit | embedEditFn}}
+               </template>
+             </el-table-column>
            <el-table-column label="修改人" align="center" prop="updateBy"/>
            <el-table-column label="修改时间" align="center" prop="updateTime" />
          </el-table>
@@ -104,38 +177,46 @@
           </el-form>
        </el-tab-pane>
     </el-tabs>
-    <el-form label-width="100px">
-      <el-form-item v-if="activeName=='cloum'" style="text-align: center;margin-left:-100px;margin-top:10px;">
-        <el-button type="primary" @click="submitForm()">提交</el-button>
-        <el-button @click="close()">返回</el-button>
-      </el-form-item>
-    </el-form>
     <!-- 添加或修改岗位对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
         <el-form-item label="描述:" prop="postName">
-          <el-input v-model="form.postName" placeholder="请输入岗位名称" />
+          <el-input v-model="form.description" placeholder="请输入描述" />
         </el-form-item>
-        <el-form-item label="关联表:" prop="postCode">
-          <el-input v-model="form.postCode" placeholder="请输入编码名称" />
+        <el-form-item label="关联表:" prop="relationParentId">
+          <el-input v-model="form.relationParentId" placeholder="请输入编码名称" />
         </el-form-item>
-        <el-form-item label="字段(关联到主表PK):" prop="postSort">
-          <el-input-number v-model="form.postSort" controls-position="right" :min="0" />
+        <el-form-item label="字段:" prop="relationChildId">
+          <el-input-number v-model="form.relationChildId" controls-position="right" :min="0" />
         </el-form-item>
-        <el-form-item label="显示条件:" prop="postSort">
-          <el-input-number v-model="form.postSort" controls-position="right" :min="0" />
+        <el-form-item label="显示条件:" prop="displayConditions">
+          <el-input-number v-model="form.displayConditions" controls-position="right" :min="0" />
         </el-form-item>
-        <el-form-item label="关联方式:" prop="postSort">
-          <el-input-number v-model="form.postSort" controls-position="right" :min="0" />
+        <el-form-item label="关联方式:" prop="relationType">
+          <el-select v-model="form.relationType" placeholder="岗位状态" clearable size="small">
+            <el-option
+              v-for="dict in relationType"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            />
+          </el-select>
         </el-form-item>
-        <el-form-item label="内嵌编辑:" prop="postSort">
-          <el-input-number v-model="form.postSort" controls-position="right" :min="0" />
+        <el-form-item label="内嵌编辑:" prop="embedEdit">
+          <el-select v-model="form.embedEdit" placeholder="岗位状态" clearable size="small">
+            <el-option
+              v-for="dict in embedEdit"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
+            />
+          </el-select>
         </el-form-item>
-        <el-form-item label="序号:" prop="status">
-
+        <el-form-item label="序号:" prop="sort">
+          <el-input-number v-model="form.sort" controls-position="right" :min="0" />
         </el-form-item>
-        <el-form-item label="可用:" prop="remark">
-          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        <el-form-item label="是否可用:" prop="isDel">
+          <el-checkbox true-label="Y" disabled v-model="form.isDel"></el-checkbox>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -146,13 +227,14 @@
   </el-card>
 </template>
 <script>
-import { getGenTable, updateGenTable, tabList} from "@/api/tool/gen";
+import { getGenTable, updateGenTable, delPost,tabList} from "@/api/tool/gen";
 import { optionselect as getDictOptionselect } from "@/api/system/dict/type";
 import { listMenu as getMenuTreeselect } from "@/api/system/menu";
 import basicInfoForm from "./basicInfoForm";
 import genInfoForm from "./genInfoForm";
 import Sortable from 'sortablejs'
 
+let _this = ''
 export default {
   name: "GenEdit",
   components: {
@@ -160,21 +242,26 @@ export default {
     genInfoForm
   },
   data() {
+    _this = this
     return {
       title: "",
       loading: false,
-      open: false,
+      open: true,
       form: {},
       rules: {},
       postList: [],
       total: 1,
+      // 关联方式
+
+      // 内嵌编辑
+
       // 关联表查询参数
       queryParams: {
         pageNum: 1,
         pageSize: 10,
       },
       // 选中选项卡的 name
-      activeName: "cloum",
+      activeName: "genInfo",
       // 表格的高度
       tableHeight: document.documentElement.scrollHeight - 245 + "px",
       // 表信息
@@ -186,9 +273,39 @@ export default {
       // 菜单信息
       menus: [],
       // 表详细信息
-      info: {}
+      info: {},
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 关联方式
+      relationType: [],
+      // 内嵌编辑
+      embedEdit: [],
     };
   },
+  filters: {
+    relationTypeFn(data) {
+      let is = ''
+      for(let item of _this.relationType){
+        if(item.dictValue == data){
+          is = item.dictLabel
+        }
+      }
+      return is
+    },
+    embedEditFn(data) {
+      let is = ''
+      for(let item of _this.embedEdit){
+        if(item.dictValue == data){
+          is = item.dictLabel
+        }
+      }
+      return is
+    },
+  },
   created() {
     const tableId = this.$route.params && this.$route.params.tableId;
     if (tableId) {
@@ -203,13 +320,26 @@ export default {
         this.dictOptions = response.data;
       });
       /** 查询菜单下拉列表 */
-      getMenuTreeselect().then(response => {
-        this.menus = this.handleTree(response.data, "menuId");
+      // getMenuTreeselect().then(response => {
+      //   this.menus = this.handleTree(response.data, "menuId");
+      // });
+      // 关联方式
+      this.getDicts("relation_type").then(response => {
+        this.relationType = response.data;
+      });
+      // 内嵌编辑
+      this.getDicts("embed_edit").then(response => {
+        this.embedEdit = response.data;
       });
     }
     this.tabList()
   },
   methods: {
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
     // 关联表数据
     tabList() {
       this.loading = true;
@@ -220,7 +350,7 @@ export default {
       });
     },
     /** 新增按钮操作 */
-    handleAdd() {
+    handleAdd_gl() {
       this.reset();
       this.open = true;
       this.title = "新增关联表";
@@ -235,19 +365,19 @@ export default {
     /** 提交按钮 */
     submitForm() {
       const basicForm = this.$refs.basicInfo.$refs.basicInfoForm;
-      const genForm = this.$refs.genInfo.$refs.genInfoForm;
+      // const genForm = this.$refs.genInfo.$refs.genInfoForm;
       // console.log(basicForm)
-      Promise.all([basicForm, genForm].map(this.getFormPromise)).then(res => {
+      Promise.all([basicForm].map(this.getFormPromise)).then(res => {
         const validateResult = res.every(item => !!item);
         if (validateResult) {
-          const genTable = Object.assign({}, basicForm.model, genForm.model);
+          const genTable = Object.assign({}, basicForm.model);
           genTable.columns = this.cloumns;
-          genTable.params = {
-            treeCode: genTable.treeCode,
-            treeName: genTable.treeName,
-            treeParentCode: genTable.treeParentCode,
-            parentMenuId: genTable.parentMenuId
-          };
+          // genTable.params = {
+          //   treeCode: genTable.treeCode,
+          //   treeName: genTable.treeName,
+          //   treeParentCode: genTable.treeParentCode,
+          //   parentMenuId: genTable.parentMenuId
+          // };
           updateGenTable(genTable).then(res => {
             this.msgSuccess(res.msg);
             if (res.code === 200) {
@@ -270,6 +400,31 @@ export default {
     close() {
       this.$store.dispatch("tagsView/delView", this.$route);
       this.$router.push({ path: "/tool/gen", query: { t: Date.now()}})
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      console.log(selection)
+      this.ids = selection.map(item => item.columnId)
+      this.single = selection.length!=1
+      this.multiple = !selection.length
+      console.log(this.ids)
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$confirm('是否确认删除岗位编号为"' + ids + '"的数据项?', "警告", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        }).then(function() {
+          return delPost(ids);
+        }).then(() => {
+          this.getList();
+          this.msgSuccess("删除成功");
+        })
+    },
+    handleAdd(){
+
     }
   },
   mounted() {