Kaynağa Gözat

近期调整

lilinfeng 1 ay önce
ebeveyn
işleme
334c3cc8bc

+ 2 - 3
.env.production

@@ -4,7 +4,6 @@ ENV = 'production'
 
  #测试地址
 # VUE_APP_BASE_API = 'http://192.168.103.104:58080'
-VUE_APP_BASE_API = 'https://test.api.shidaiyun.net:8888'
 
 
 
@@ -13,5 +12,5 @@ VUE_APP_BASE_API = 'https://test.api.shidaiyun.net:8888'
 # VUE_APP_BASE_API = 'http://28.168.123.222:58080'
 
 
-#正式地址
-# VUE_APP_BASE_API =  "https://api.shidaiyun.net"
+# 正式地址
+VUE_APP_BASE_API =  "https://api.shidaiyun.net"

+ 47 - 0
src/api/governmentCloud/officialAccount/menuManagement/menuManagement.js

@@ -0,0 +1,47 @@
+import request from "@/utils/request";
+
+// 创建公众号菜单
+export const createMenuByJson2 = (data) => {
+  return request({
+    url: `/api/wechat/wxmp/createMenuByJson2`,
+    method: "POST",
+    data: data
+  });
+};
+
+// 获取公众号菜单列表
+export const getMenu2 = () => {
+  return request({
+    url: `/api/wechat/wxmp/getMenu2`,
+    method: "GET",
+  });
+};
+
+// 公众号修改菜单
+export const updateMenuByJson2 = (data) => {
+  return request({
+    url: `/api/wechat/wxmp/updateMenuByJson2`,
+    method: "POST",
+    data: data
+  });
+};
+
+
+
+// 删除公众号菜单
+export const deleteMenu2 = (params) => {
+  return request({
+    url: `/api/wechat/wxmp/deleteMenu2`,
+    method: "DELETE",
+    params: params
+  });
+};
+
+// 获取公众号一级菜单
+export const getFirstMenu = (params) => {
+  return request({
+    url: `/api/wechat/wxmp/getFirstMenu`,
+    method: "GET",
+    params: params
+  });
+};

+ 0 - 0
src/api/governmentCloud/officialAccount/updateRecord/updateRecord.js


+ 9 - 0
src/api/permission/user.js

@@ -284,3 +284,12 @@ export function addItsmUser(data) {
     data
   })
 }
+
+// 给用户分配标签
+export function LabelManagementRelation(data) {
+  return request({
+    url: '/api/mp/LabelManagementRelation',
+    method: 'post',
+    data
+  })
+}

+ 5 - 5
src/utils/apiUrl.js

@@ -1,21 +1,21 @@
 module.exports = {
   // 开发环境接口配置
-  // APIURl: "http://10.0.0.112:30000",
+  // APIURl: "http://10.0.0.157:30000",
   // APIURl: "http://10.21.12.137:30000",
   // APIURl: "http://192.168.103.104:58080",
-  // APIURl: "https://test.api.shidaiyun.net",
+  // APIURl: "https://testapi.shidaiyun.net",
   APIURl: "https://api.shidaiyun.net",
-  // APIURl: "http://10.21.12.250:30000",
+  // APIURl: "http://10.21.12.147:30000",
 
 
 
 
   //测试
-  minioPath: process.env.NODE_ENV === 'development' ? 'https://oss.shidaiyun.net/' : 'http://192.168.103.105:18000/'
+  // minioPath: process.env.NODE_ENV === 'development' ? 'https://oss.shidaiyun.net/' : 'http://192.168.103.105:18000/'
 
   //双活  
   // minioPath: process.env.NODE_ENV === 'development' ? 'https://oss.shidaiyun.net/' : 'http://28.168.105.206:9000/'
 
   //正式
-  // minioPath: 'https://oss.shidaiyun.net/'
+  minioPath: 'https://oss.shidaiyun.net/'
 };

+ 334 - 334
src/views/dashboard/admin/index.vue

@@ -1,6 +1,6 @@
 <template>
-  <div class="dashboard-editor-container">
-    <div class="sale">
+    <div class="dashboard-editor-container">
+        <!-- <div class="sale">
       <div class="sale_title">
         <h1>重磅升级</h1>
 
@@ -12,94 +12,94 @@
 
         
       </div>
-    </div>
+    </div> -->
 
-    <el-row :gutter="10" class="notice">
-      <el-col :span="12">
-        <div class="notice_left">
-          <div class="notice_title">
-            <div class="title_left">
-              <span>公告通知</span>
-            </div>
-            <div class="title_right">
-              查看更多 >
-            </div>
-          </div>
-          <div class="no_left_massage">
-            <ul>
-              <li v-for="(item,index) in massageList" :key="index">
-                <p class="com-hover">{{item.title}}</p>
-                <span class="time">{{item.listDate}}</span>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </el-col>
-      <el-col :span="12">
-        <div class="notice_right">
-          <div class="notice_title">
-            <div class="title_left">
-              <span>进行中的项目</span>
-            </div>
-            <div class="title_right">
-              查看更多 >
-            </div>
-          </div>
-          <ul class="no_right_massage">
-            <li>
-              <div class="right_item lineb">
-                <div class="right-top">
-                  <img src="@/assets/images/home/Group.png" alt="">
-                  <span>销售管理信息项目</span>
-                </div>
-                <p>销售管理信息项目是为全面提升企业市场占有率和竞争力,越来越多企业已经意识到上销售管理软件...</p>
-                <div class="bt">
-                  <span>项目组名: 超越超越卓尔不凡</span>
-                  <span>5 小时前</span>
-                </div>
-              </div>
-              <div class="right_item linet">
-                <div class="right-top">
-                  <img src="@/assets/images/home/Group.png" alt="">
-                  <span>知识库管理搭建</span>
-                </div>
-                <p>知识库管理搭建是一个企业内部信息的汇总,建立知识库,对这些知识进行统一管理能够有效帮助企业提高...</p>
-                <div class="bt">
-                  <span>项目组名:快乐每一天</span>
-                  <span>5 小时前</span>
-                </div>
-              </div>
-            </li>
-            <li>
-              <div class="right_item">
-                <div class="right-top">
-                  <img src="@/assets/images/home/Group2.png" alt="">
-                  <span>报表样式调整</span>
+        <!-- <el-row :gutter="10" class="notice">
+            <el-col :span="12">
+                <div class="notice_left">
+                    <div class="notice_title">
+                        <div class="title_left">
+                            <span>公告通知</span>
+                        </div>
+                        <div class="title_right">
+                            查看更多 >
+                        </div>
+                    </div>
+                    <div class="no_left_massage">
+                        <ul>
+                            <li v-for="(item,index) in massageList" :key="index">
+                                <p class="com-hover">{{item.title}}</p>
+                                <span class="time">{{item.listDate}}</span>
+                            </li>
+                        </ul>
+                    </div>
                 </div>
-                <p>报表引用UReport2是一款基于架构在Spring之上纯Java的高性能报表引擎,通过迭代单元格可以实现任意...</p>
-                <div class="bt">
-                  <span>项目组名: 超越超越卓尔不凡</span>
-                  <span>5 小时前</span>
+            </el-col>
+            <el-col :span="12">
+                <div class="notice_right">
+                    <div class="notice_title">
+                        <div class="title_left">
+                            <span>进行中的项目</span>
+                        </div>
+                        <div class="title_right">
+                            查看更多 >
+                        </div>
+                    </div>
+                    <ul class="no_right_massage">
+                        <li>
+                            <div class="right_item lineb">
+                                <div class="right-top">
+                                    <img src="@/assets/images/home/Group.png" alt="">
+                                    <span>销售管理信息项目</span>
+                                </div>
+                                <p>销售管理信息项目是为全面提升企业市场占有率和竞争力,越来越多企业已经意识到上销售管理软件...</p>
+                                <div class="bt">
+                                    <span>项目组名: 超越超越卓尔不凡</span>
+                                    <span>5 小时前</span>
+                                </div>
+                            </div>
+                            <div class="right_item linet">
+                                <div class="right-top">
+                                    <img src="@/assets/images/home/Group.png" alt="">
+                                    <span>知识库管理搭建</span>
+                                </div>
+                                <p>知识库管理搭建是一个企业内部信息的汇总,建立知识库,对这些知识进行统一管理能够有效帮助企业提高...</p>
+                                <div class="bt">
+                                    <span>项目组名:快乐每一天</span>
+                                    <span>5 小时前</span>
+                                </div>
+                            </div>
+                        </li>
+                        <li>
+                            <div class="right_item">
+                                <div class="right-top">
+                                    <img src="@/assets/images/home/Group2.png" alt="">
+                                    <span>报表样式调整</span>
+                                </div>
+                                <p>报表引用UReport2是一款基于架构在Spring之上纯Java的高性能报表引擎,通过迭代单元格可以实现任意...</p>
+                                <div class="bt">
+                                    <span>项目组名: 超越超越卓尔不凡</span>
+                                    <span>5 小时前</span>
+                                </div>
+                            </div>
+                            <div class="right_item linet">
+                                <div class="right-top">
+                                    <img src="@/assets/images/home/Group3.png" alt="">
+                                    <span>企业门户平台</span>
+                                </div>
+                                <p>企业统一门户为企业提供一个统一入口访问企业各种资源信息,企业的员工、客户、合作伙伴和供应商等都可...</p>
+                                <div class="bt">
+                                    <span>项目组名:智慧成功人士</span>
+                                    <span>5 小时前</span>
+                                </div>
+                            </div>
+                        </li>
+                    </ul>
                 </div>
-              </div>
-              <div class="right_item linet">
-                <div class="right-top">
-                  <img src="@/assets/images/home/Group3.png" alt="">
-                  <span>企业门户平台</span>
-                </div>
-                <p>企业统一门户为企业提供一个统一入口访问企业各种资源信息,企业的员工、客户、合作伙伴和供应商等都可...</p>
-                <div class="bt">
-                  <span>项目组名:智慧成功人士</span>
-                  <span>5 小时前</span>
-                </div>
-              </div>
-            </li>
-          </ul>
-        </div>
-      </el-col>
-    </el-row>
-    <p class="componey">{{sysConfig.copyright}}</p>
-  </div>
+            </el-col>
+        </el-row> -->
+        <!-- <p class="componey">{{sysConfig.copyright}}</p> -->
+    </div>
 </template>
 
 <script>
@@ -108,286 +108,286 @@ import PanelGroup from './components/PanelGroup'
 import LineChart from './components/LineChart'
 import CountTo from 'vue-count-to'
 export default {
-  name: 'DashboardAdmin',
-  components: {
-    PanelGroup,
-    LineChart,
-    CountTo
-  },
-  data() {
-    return {
-      value1: '',
-      charts: '',
-      opinionData: ["3", "2", "4", "4", "5"],
-      massageList: [
-        { title: '【通知】中秋国庆双节放假通知', listDate: '2020-09-19' },
-        { title: '【公告】你好朋友,感谢使用 OA系统', listDate: '2020-09-18' },
-        { title: '【通知】月饼发放通知,请各部门主管到行政部领取', listDate: '2020-09-17' },
-        { title: '【公告】本季度销售之星名单公示', listDate: '2020-09-16' },
-        { title: '【通知】公司上班时间调整通知,下月执行', listDate: '2020-09-15' },
-        { title: '【公告】公司新上任总裁任命书', listDate: '2020-09-14' },
-        { title: '【公告】午餐补贴通知,本月生效', listDate: '2020-09-13' },
-        { title: '【通知】公司技术交流培训课通知', listDate: '2020-09-12' },
-        { title: '【通知】关于公司组织员工秋季旅游通知', listDate: '2020-09-11' },
-      ]
-    }
-  },
-  computed: {
-    sysConfig() {
-      return this.$store.state.settings.sysConfig
-    }
-  },
-  methods: {}
+    name: 'DashboardAdmin',
+    components: {
+        PanelGroup,
+        LineChart,
+        CountTo
+    },
+    data() {
+        return {
+            value1: '',
+            charts: '',
+            opinionData: ["3", "2", "4", "4", "5"],
+            massageList: [
+                { title: '【通知】中秋国庆双节放假通知', listDate: '2020-09-19' },
+                { title: '【公告】你好朋友,感谢使用 OA系统', listDate: '2020-09-18' },
+                { title: '【通知】月饼发放通知,请各部门主管到行政部领取', listDate: '2020-09-17' },
+                { title: '【公告】本季度销售之星名单公示', listDate: '2020-09-16' },
+                { title: '【通知】公司上班时间调整通知,下月执行', listDate: '2020-09-15' },
+                { title: '【公告】公司新上任总裁任命书', listDate: '2020-09-14' },
+                { title: '【公告】午餐补贴通知,本月生效', listDate: '2020-09-13' },
+                { title: '【通知】公司技术交流培训课通知', listDate: '2020-09-12' },
+                { title: '【通知】关于公司组织员工秋季旅游通知', listDate: '2020-09-11' },
+            ]
+        }
+    },
+    computed: {
+        sysConfig() {
+            return this.$store.state.settings.sysConfig
+        }
+    },
+    methods: {}
 }
 </script>
 
 <style lang="scss" scoped>
 .sale {
-  background: #fff;
-  margin-bottom: 10px;
-  border-radius: 4px;
-  .sale_title {
-    padding-top: 16px;
-    padding-left: 22px;
-    span {
-      &:first-child {
-        font-size: 16px;
-        font-weight: bold;
-        color: #333;
-        margin-right: 10px;
-      }
-      &:nth-child(2) {
-        color: #999;
-        font-size: 12px;
-      }
-    }
-  }
-  .sale_items {
-    display: flex;
-    justify-content: space-around;
-    padding: 34px 0;
-    li {
-      display: flex;
-      flex-direction: column;
-      text-align: center;
-      .nums {
-        font-size: 26px !important;
-        padding-top: 13px;
-        padding-bottom: 9px;
-        color: #1890ff;
-        font-weight: 600;
-        span {
-          font-size: 26px !important;
-          padding-top: 13px;
-          padding-bottom: 9px;
-          color: #1890ff !important;
-          font-weight: 600;
-        }
-      }
-      .lastnums {
-        font-size: 26px !important;
-        padding-top: 13px;
-        padding-bottom: 9px;
-        font-weight: 600;
-        color: #333;
-      }
-      &:first-child {
-        span:last-child {
-          color: #08b41f;
-        }
-      }
-      &:nth-child(4) {
-        span {
-          &:last-child {
-            color: #08b41f;
-          }
-        }
-      }
-      &:nth-child(2) {
-        span {
-          &:last-child {
-            color: #b40808;
-          }
-        }
-      }
-      &:nth-child(3) {
-        span {
-          &:last-child {
-            color: #999;
-          }
-        }
-      }
-      &:last-child {
+    background: #fff;
+    margin-bottom: 10px;
+    border-radius: 4px;
+    .sale_title {
+        padding-top: 16px;
+        padding-left: 22px;
         span {
-          &:last-child {
-            color: #000;
-          }
-        }
-      }
-      span {
-        &:nth-child(2) {
-          font-size: 26px !important;
-          padding-top: 13px;
-          padding-bottom: 9px;
-          color: #1890ff;
-          font-weight: 600;
+            &:first-child {
+                font-size: 16px;
+                font-weight: bold;
+                color: #333;
+                margin-right: 10px;
+            }
+            &:nth-child(2) {
+                color: #999;
+                font-size: 12px;
+            }
         }
-        &:nth-child(3) {
-          font-size: 12px;
+    }
+    .sale_items {
+        display: flex;
+        justify-content: space-around;
+        padding: 34px 0;
+        li {
+            display: flex;
+            flex-direction: column;
+            text-align: center;
+            .nums {
+                font-size: 26px !important;
+                padding-top: 13px;
+                padding-bottom: 9px;
+                color: #1890ff;
+                font-weight: 600;
+                span {
+                    font-size: 26px !important;
+                    padding-top: 13px;
+                    padding-bottom: 9px;
+                    color: #1890ff !important;
+                    font-weight: 600;
+                }
+            }
+            .lastnums {
+                font-size: 26px !important;
+                padding-top: 13px;
+                padding-bottom: 9px;
+                font-weight: 600;
+                color: #333;
+            }
+            &:first-child {
+                span:last-child {
+                    color: #08b41f;
+                }
+            }
+            &:nth-child(4) {
+                span {
+                    &:last-child {
+                        color: #08b41f;
+                    }
+                }
+            }
+            &:nth-child(2) {
+                span {
+                    &:last-child {
+                        color: #b40808;
+                    }
+                }
+            }
+            &:nth-child(3) {
+                span {
+                    &:last-child {
+                        color: #999;
+                    }
+                }
+            }
+            &:last-child {
+                span {
+                    &:last-child {
+                        color: #000;
+                    }
+                }
+            }
+            span {
+                &:nth-child(2) {
+                    font-size: 26px !important;
+                    padding-top: 13px;
+                    padding-bottom: 9px;
+                    color: #1890ff;
+                    font-weight: 600;
+                }
+                &:nth-child(3) {
+                    font-size: 12px;
+                }
+            }
         }
-      }
     }
-  }
 }
 .notice {
-  padding-bottom: 20px;
-  .notice_title {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    height: 60px;
-    padding: 0 25px;
-    .title_left {
-      display: flex;
-      align-items: center;
-      span {
-        font-size: 16px;
-        font-weight: bold;
-        color: #333;
-      }
-    }
-    .title_right {
-      font-size: 12px;
-      color: #999;
-      line-height: 30px;
-    }
-  }
-  .notice_right {
-    background: #fff;
-    height: 400px;
-    border-radius: 4px;
-    overflow: hidden;
-    .no_right_massage {
-      li {
+    padding-bottom: 20px;
+    .notice_title {
         display: flex;
-        background: #fff;
-        border: 1;
-        height: 170px;
-        border-top: 1px solid #f2f2f5;
-        .right_item {
-          width: 50%;
-          padding: 16px 20px;
-          display: flex;
-          flex-direction: column;
-          justify-content: space-between;
-          .right-top {
-            font-size: 14px;
+        justify-content: space-between;
+        align-items: center;
+        height: 60px;
+        padding: 0 25px;
+        .title_left {
             display: flex;
             align-items: center;
-            img {
-              margin-right: 10px;
+            span {
+                font-size: 16px;
+                font-weight: bold;
+                color: #333;
             }
-          }
-          p {
-            font-size: 14px;
-            line-height: 22px;
-            padding: 20px 0;
-            color: #999;
-            display: -webkit-box;
-            line-clamp: 3;
-            -webkit-line-clamp: 3;
-            overflow: hidden;
-            text-overflow: ellipsis;
-            /*! autoprefixer: off */
-            -webkit-box-orient: vertical;
-            /* autoprefixer: on */
-          }
-          .bt {
-            display: flex;
-            justify-content: space-between;
+        }
+        .title_right {
             font-size: 12px;
             color: #999;
-          }
+            line-height: 30px;
         }
-        .linet {
-          border-left: 1px solid #f2f2f5;
+    }
+    .notice_right {
+        background: #fff;
+        height: 400px;
+        border-radius: 4px;
+        overflow: hidden;
+        .no_right_massage {
+            li {
+                display: flex;
+                background: #fff;
+                border: 1;
+                height: 170px;
+                border-top: 1px solid #f2f2f5;
+                .right_item {
+                    width: 50%;
+                    padding: 16px 20px;
+                    display: flex;
+                    flex-direction: column;
+                    justify-content: space-between;
+                    .right-top {
+                        font-size: 14px;
+                        display: flex;
+                        align-items: center;
+                        img {
+                            margin-right: 10px;
+                        }
+                    }
+                    p {
+                        font-size: 14px;
+                        line-height: 22px;
+                        padding: 20px 0;
+                        color: #999;
+                        display: -webkit-box;
+                        line-clamp: 3;
+                        -webkit-line-clamp: 3;
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                        /*! autoprefixer: off */
+                        -webkit-box-orient: vertical;
+                        /* autoprefixer: on */
+                    }
+                    .bt {
+                        display: flex;
+                        justify-content: space-between;
+                        font-size: 12px;
+                        color: #999;
+                    }
+                }
+                .linet {
+                    border-left: 1px solid #f2f2f5;
+                }
+            }
         }
-      }
     }
-  }
-  .notice_left {
-    background: #fff;
-    height: 400px;
-    border-radius: 4px;
-    overflow: hidden;
-    .no_left_massage {
-      height: 340px;
-      padding: 10px 20px;
-      border-top: 1px solid #f2f2f5;
-      ul {
-        li {
-          display: flex;
-          justify-content: space-between;
-          font-size: 14px;
-          color: #303133;
-          padding: 10px 0;
-          cursor: pointer;
-          p {
-            width: calc(100% - 80px);
-            white-space: nowrap;
-            overflow: hidden;
-            text-overflow: ellipsis;
-          }
-          .time {
-            width: 80px;
-            display: inline-block;
-            text-align: right;
-            color: #999999;
-          }
+    .notice_left {
+        background: #fff;
+        height: 400px;
+        border-radius: 4px;
+        overflow: hidden;
+        .no_left_massage {
+            height: 340px;
+            padding: 10px 20px;
+            border-top: 1px solid #f2f2f5;
+            ul {
+                li {
+                    display: flex;
+                    justify-content: space-between;
+                    font-size: 14px;
+                    color: #303133;
+                    padding: 10px 0;
+                    cursor: pointer;
+                    p {
+                        width: calc(100% - 80px);
+                        white-space: nowrap;
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                    }
+                    .time {
+                        width: 80px;
+                        display: inline-block;
+                        text-align: right;
+                        color: #999999;
+                    }
+                }
+            }
         }
-      }
     }
-  }
 }
 
 .componey {
-  font-size: 14px;
-  text-align: center;
-  color: #999;
-  padding-bottom: 10px;
+    font-size: 14px;
+    text-align: center;
+    color: #999;
+    padding-bottom: 10px;
 }
 
 .dashboard-editor-container {
-  background-color: #ebeef5;
-  position: relative;
-  width: 100%;
-  overflow: hidden;
+    background-color: #ebeef5;
+    position: relative;
+    width: 100%;
+    overflow: hidden;
 
-  .github-corner {
-    position: absolute;
-    top: 0px;
-    border: 0;
-    right: 0;
-  }
+    .github-corner {
+        position: absolute;
+        top: 0px;
+        border: 0;
+        right: 0;
+    }
 
-  .chart-wrapper {
-    background: #fff;
-    padding: 16px 16px 0;
-    margin-bottom: 20px;
-  }
+    .chart-wrapper {
+        background: #fff;
+        padding: 16px 16px 0;
+        margin-bottom: 20px;
+    }
 }
 .dateSelect {
-  position: absolute;
-  right: 67px;
-  top: 38px;
-  z-index: 100;
-  .el-date-editor {
-    width: 160px;
-  }
+    position: absolute;
+    right: 67px;
+    top: 38px;
+    z-index: 100;
+    .el-date-editor {
+        width: 160px;
+    }
 }
 @media (max-width: 1024px) {
-  .chart-wrapper {
-    padding: 8px;
-  }
+    .chart-wrapper {
+        padding: 8px;
+    }
 }
 </style>

+ 101 - 98
src/views/governmentCloud/labelmanagement/Detail.vue

@@ -1,117 +1,120 @@
 <template>
-<el-dialog title="详情"
-           :close-on-click-modal="false" append-to-body
-           :visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll
-           width="600px">
-<el-row :gutter="15" class="">
-<el-form ref="formRef" :model="dataForm" size="small" label-width="100px" label-position="right" >
-    <template v-if="!loading">
-            <el-col :span="24"  >
-                <jnpf-form-tip-item  label="标签名称"  
- prop="labName"  >
-                    <JnpfInput    v-model="dataForm.labName"
- placeholder="请输入"  disabled
- detailed  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.labName">
-                </JnpfInput>
-                </jnpf-form-tip-item>
-            </el-col>
-            <el-col :span="24"  >
-                <jnpf-form-tip-item  label="标签颜色"  
- prop="color"  >
-                    <JnpfInput    v-model="dataForm.color"
- placeholder="请输入"  disabled
- detailed  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.color">
-                </JnpfInput>
-                </jnpf-form-tip-item>
-            </el-col>
-            <el-col :span="24"  >
-                <jnpf-form-tip-item  label="备注"  
- prop="remark"  >
-                        <p>{{dataForm.remark}}</p>
-                </jnpf-form-tip-item>
-            </el-col>
-    </template>
-</el-form>
-    </el-row>
-    <span slot="footer" class="dialog-footer">
-        <el-button @click="visible = false"> 取 消</el-button>
-    </span>
-    <Detail v-if="detailVisible" ref="Detail" @close="detailVisible = false" />
+    <el-dialog title="详情" :close-on-click-modal="false" append-to-body :visible.sync="visible"
+        class="JNPF-dialog JNPF-dialog_center" lock-scroll width="600px">
+        <el-row :gutter="15" class="">
+            <el-form ref="formRef" :model="dataForm" size="small" label-width="100px"
+                label-position="right">
+                <template v-if="!loading">
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="标签名称" prop="labName">
+                            <JnpfInput v-model="dataForm.labName" placeholder="请输入" disabled
+                                detailed clearable :style='{"width":"100%"}'
+                                :maskConfig="maskConfig.labName">
+                            </JnpfInput>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="标签颜色" prop="color">
+                            <span class="tag"
+                                :style="{ background: dataForm.color, color: '#fff' }">
+                            </span>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="备注" prop="remark">
+                            <p>{{dataForm.remark}}</p>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                </template>
+            </el-form>
+        </el-row>
+        <span slot="footer" class="dialog-footer">
+            <el-button @click="visible = false"> 取 消</el-button>
+        </span>
+        <Detail v-if="detailVisible" ref="Detail" @close="detailVisible = false" />
     </el-dialog>
 </template>
 <script>
-    import request from '@/utils/request'
+import request from '@/utils/request'
 
-    import { getConfigData } from '@/api/onlineDev/visualDev'
-    import jnpf from '@/utils/jnpf'
-    import Detail from '@/views/basic/dynamicModel/list/detail'
-    import { thousandsFormat } from "@/components/Generator/utils/index"
-    export default {
-        components: { Detail},
-        props: [],
-        data() {
-            return {
-                visible: false,
-                detailVisible: false,
-                loading: false,
+import { getConfigData } from '@/api/onlineDev/visualDev'
+import jnpf from '@/utils/jnpf'
+import Detail from '@/views/basic/dynamicModel/list/detail'
+import { thousandsFormat } from "@/components/Generator/utils/index"
+export default {
+    components: { Detail },
+    props: [],
+    data() {
+        return {
+            visible: false,
+            detailVisible: false,
+            loading: false,
 
-                //掩码配置
-                maskConfig: {
-                            labName: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
-                            color: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
-                },
-                //定位属性
-                locationScope: {
-                },
+            //掩码配置
+            maskConfig: {
+                labName: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                color: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+            },
+            //定位属性
+            locationScope: {
+            },
 
             dataForm: {
 
             },
 
         }
-        },
-        computed: {},
-        watch: {},
-        created() {
+    },
+    computed: {},
+    watch: {},
+    created() {
 
-        },
-        mounted() {},
-        methods: {
-            toDetail(defaultValue, modelId) {
-                if (!defaultValue) return
-                getConfigData(modelId).then(res => {
-                    if (!res.data || !res.data.formData) return
-                    let formData = JSON.parse(res.data.formData)
-                    formData.popupType = 'general'
-                    this.detailVisible = true
-                    this.$nextTick(() => {
-                        this.$refs.Detail.init(formData, modelId, defaultValue)
-                    })
+    },
+    mounted() { },
+    methods: {
+        toDetail(defaultValue, modelId) {
+            if (!defaultValue) return
+            getConfigData(modelId).then(res => {
+                if (!res.data || !res.data.formData) return
+                let formData = JSON.parse(res.data.formData)
+                formData.popupType = 'general'
+                this.detailVisible = true
+                this.$nextTick(() => {
+                    this.$refs.Detail.init(formData, modelId, defaultValue)
                 })
-            },
-            dataInfo(dataAll){
-                let _dataAll =dataAll
-                this.dataForm = _dataAll
-            },
+            })
+        },
+        dataInfo(dataAll) {
+            let _dataAll = dataAll
+            this.dataForm = _dataAll
+        },
 
-            init(id) {
-                this.dataForm.id = id || 0;
-                this.visible = true;
-                this.$nextTick(() => {
-                    if(this.dataForm.id){
-                        this.loading = true
-                        request({
-                            url: '/api/mp/LabelManagement/detail/'+this.dataForm.id,
-                            method: 'get'
-                        }).then(res => {
-                            this.dataInfo(res.data)
-                            this.loading = false
-                        })
-                    }
+        init(id) {
+            this.dataForm.id = id || 0;
+            this.visible = true;
+            this.$nextTick(() => {
+                if (this.dataForm.id) {
+                    this.loading = true
+                    request({
+                        url: '/api/mp/LabelManagement/detail/' + this.dataForm.id,
+                        method: 'get'
+                    }).then(res => {
+                        this.dataInfo(res.data)
+                        this.loading = false
+                    })
+                }
 
-                })
-            },
+            })
         },
-    }
+    },
+}
 
 </script>
+
+<style scoped>
+.tag {
+    padding: 5px 10px;
+    border-radius: 4px;
+}
+</style>
+

+ 382 - 385
src/views/governmentCloud/labelmanagement/form.vue

@@ -1,81 +1,78 @@
-
-
-
-    <template>
-        <el-dialog :title="!dataForm.id ? '新建' :'编辑'"
-                   :close-on-click-modal="false" append-to-body
-                   :visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll
-                   width="600px">
+<template>
+    <el-dialog :title="!dataForm.id ? '新建' :'编辑'" :close-on-click-modal="false" append-to-body
+        :visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll width="600px">
         <el-row :gutter="15" class="">
-    <el-form ref="formRef" :model="dataForm" :rules="dataRule" size="small" label-width="100px" label-position="right" >
-    <template v-if="!loading">
-        <!-- 具体表单 -->
-        <el-col :span="24" >
-        <jnpf-form-tip-item
- label="标签名称"              align="left"
- prop="labName" >
-        <JnpfInput   v-model="dataForm.labName" @change="changeData('labName',-1)" 
- placeholder="请输入"  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.labName">
-    </JnpfInput>
-    </jnpf-form-tip-item>
-        </el-col>
-        <el-col :span="24" >
-        <jnpf-form-tip-item
- label="标签颜色"              align="left"
- prop="color" >
-        <JnpfInput   v-model="dataForm.color" @change="changeData('color',-1)" 
- placeholder="请输入"  clearable  :style='{"width":"100%"}' :maskConfig = "maskConfig.color">
-    </JnpfInput>
-    </jnpf-form-tip-item>
-        </el-col>
-        <el-col :span="24" >
-        <jnpf-form-tip-item
- label="备注"              align="left"
- prop="remark" >
-        <JnpfTextarea   v-model="dataForm.remark" @change="changeData('remark',-1)" 
- placeholder="请输入"  :style='{"width":"100%"}' true  type="textarea"  :autosize='{"minRows":4,"maxRows":4}'  :maskConfig = "maskConfig.remark">
-    </JnpfTextarea>
-    </jnpf-form-tip-item>
-        </el-col>
-        <!-- 表单结束 -->
-    </template>
-    </el-form>
-    <SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm"
-                  ref="selectDialog" @select="addForSelect" @close="closeForSelect"/>
-    </el-row>
-    <span slot="footer" class="dialog-footer">
-                    <div class="upAndDown-button" v-if="dataForm.id">
+            <el-form ref="formRef" :model="dataForm" :rules="dataRule" size="small"
+                label-width="100px" label-position="right">
+                <template v-if="!loading">
+                    <!-- 具体表单 -->
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="标签名称" align="left" prop="labName">
+                            <JnpfInput v-model="dataForm.labName" @change="changeData('labName',-1)"
+                                placeholder="请输入" clearable :style='{"width":"100%"}'
+                                :maskConfig="maskConfig.labName">
+                            </JnpfInput>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="标签颜色" align="left" prop="color">
+                            <!-- <JnpfInput v-model="dataForm.color" @change="changeData('color',-1)"
+                                placeholder="请输入" clearable :style='{"width":"100%"}'
+                                :maskConfig="maskConfig.color">
+                            </JnpfInput> -->
+                            <el-color-picker v-model="dataForm.color"></el-color-picker>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="备注" align="left" prop="remark">
+                            <JnpfTextarea v-model="dataForm.remark"
+                                @change="changeData('remark',-1)" placeholder="请输入"
+                                :style='{"width":"100%"}' true type="textarea"
+                                :autosize='{"minRows":4,"maxRows":4}'
+                                :maskConfig="maskConfig.remark">
+                            </JnpfTextarea>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <!-- 表单结束 -->
+                </template>
+            </el-form>
+            <SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm"
+                ref="selectDialog" @select="addForSelect" @close="closeForSelect" />
+        </el-row>
+        <span slot="footer" class="dialog-footer">
+            <div class="upAndDown-button" v-if="dataForm.id">
                 <el-button @click="prev" :disabled='prevDis'>
-                  {{'上一条'}}
+                    {{'上一条'}}
                 </el-button>
                 <el-button @click="next" :disabled='nextDis'>
-                  {{'下一条'}}
+                    {{'下一条'}}
                 </el-button>
-              </div>
-                <el-button type="primary" @click="dataFormSubmit(2)" :loading="continueBtnLoading">
-            {{!dataForm.id ?'确定并新增':'确定并继续'}}</el-button>
-              <el-button @click="visible = false"> 取 消</el-button>
-              <el-button type="primary" @click="dataFormSubmit()" :loading="btnLoading"> 确 定</el-button>
+            </div>
+            <el-button type="primary" @click="dataFormSubmit(2)" :loading="continueBtnLoading">
+                {{!dataForm.id ?'确定并新增':'确定并继续'}}</el-button>
+            <el-button @click="visible = false"> 取 消</el-button>
+            <el-button type="primary" @click="dataFormSubmit()" :loading="btnLoading"> 确
+                定</el-button>
         </span>
     </el-dialog>
-    </template>
+</template>
 
 
 <script>
-    import request from '@/utils/request'
-    import {mapGetters} from "vuex";
-    import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
-    import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
-    import { getDefaultCurrentValueUserId } from '@/api/permission/user'
-    import { getDefaultCurrentValueDepartmentId } from '@/api/permission/organize'
-    import { getDateDay, getLaterData, getBeforeData, getBeforeTime, getLaterTime } from '@/components/Generator/utils/index.js'
-    import { thousandsFormat } from "@/components/Generator/utils/index"
-    import SelectDialog from '@/components/SelectDialog'
+import request from '@/utils/request'
+import { mapGetters } from "vuex";
+import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
+import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
+import { getDefaultCurrentValueUserId } from '@/api/permission/user'
+import { getDefaultCurrentValueDepartmentId } from '@/api/permission/organize'
+import { getDateDay, getLaterData, getBeforeData, getBeforeTime, getLaterTime } from '@/components/Generator/utils/index.js'
+import { thousandsFormat } from "@/components/Generator/utils/index"
+import SelectDialog from '@/components/SelectDialog'
 
-    export default {
-        components: { SelectDialog },
-        props: [],
-        data() {
+export default {
+    components: { SelectDialog },
+    props: [],
+    data() {
         return {
             dataFormSubmitType: 0,
             continueBtnLoading: false,
@@ -87,365 +84,365 @@
             loading: false,
             btnLoading: false,
             formRef: 'formRef',
-            setting:{},
+            setting: {},
             eventType: '',
-            userBoxVisible:false,
+            userBoxVisible: false,
             selectDialogVisible: false,
-            currTableConf:{},
-            dataValueAll:{},
-            addTableConf:{
+            currTableConf: {},
+            dataValueAll: {},
+            addTableConf: {
             },
             //可选范围默认值
-            ableAll:{
+            ableAll: {
             },
-            tableRows:{
-        },
-            Vmodel:"",
-            currVmodel:"",
+            tableRows: {
+            },
+            Vmodel: "",
+            currVmodel: "",
             dataForm: {
-                                    createBy : undefined,
-                                    createTime : undefined,
-                                    updateBy : undefined,
-                                    updateTime : undefined,
-                                labName : undefined,
-                                color : undefined,
-                                remark : undefined,
+                createBy: undefined,
+                createTime: undefined,
+                updateBy: undefined,
+                updateTime: undefined,
+                labName: undefined,
+                color: undefined,
+                remark: undefined,
             },
             tableRequiredData: {},
             dataRule:
             {
-                            labName: [
-                                {
-                                    required: true,
-                                    message: '请输入',
-                                    trigger: 'blur'
-                                },
-                        ],
-                            color: [
-                                {
-                                    required: true,
-                                    message: '请输入',
-                                    trigger: 'blur'
-                                },
-                        ],
+                labName: [
+                    {
+                        required: true,
+                        message: '请输入',
+                        trigger: 'blur'
+                    },
+                ],
+                color: [
+                    {
+                        required: true,
+                        message: '请输入',
+                        trigger: 'blur'
+                    },
+                ],
             },
-            childIndex:-1,
-            isEdit:false,
+            childIndex: -1,
+            isEdit: false,
             interfaceRes: {
-                        createBy:[] ,
-                        createTime:[] ,
-                        updateBy:[] ,
-                        updateTime:[] ,
-                        labName:[] ,
-                        color:[] ,
-                        remark:[] ,
-        },
+                createBy: [],
+                createTime: [],
+                updateBy: [],
+                updateTime: [],
+                labName: [],
+                color: [],
+                remark: [],
+            },
             //掩码配置
             maskConfig: {
-                            labName: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
-                            color: {"prefixType":1,"useUnrealMask":false,"maskType":1,"unrealMaskLength":1,"prefixLimit":0,"suffixLimit":0,"filler":"*","prefixSpecifyChar":"","suffixType":1,"ignoreChar":"","suffixSpecifyChar":""} ,
-                },
+                labName: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                color: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+            },
             //定位属性
             locationScope: {
-                },
-            }
-        },
-        computed: {
-            ...mapGetters(['userInfo']),
+            },
+        }
+    },
+    computed: {
+        ...mapGetters(['userInfo']),
 
 
-        },
-        watch: {},
-        created() {
-            this.dataAll()
-            this.initDefaultData()
-            this.dataValueAll = JSON.parse(JSON.stringify(this.dataForm))
-        },
-        mounted() {},
-        methods: {
-            prev() {
-                this.index--
-                if (this.index === 0) {
-                    this.prevDis = true
-                }
-                this.nextDis = false
-                for (let index = 0; index < this.allList.length; index++) {
-                    const element = this.allList[index];
-                    if (this.index == index) {
-                        this.getInfo(element.id)
-                    }
-                }
-            },
-            next() {
-                this.index++
-                if (this.index === this.allList.length - 1) {
-                    this.nextDis = true
-                }
-                this.prevDis = false
-                for (let index = 0; index < this.allList.length; index++) {
-                    const element = this.allList[index];
-                    if (this.index == index) {
-                        this.getInfo(element.id)
-                    }
+    },
+    watch: {},
+    created() {
+        this.dataAll()
+        this.initDefaultData()
+        this.dataValueAll = JSON.parse(JSON.stringify(this.dataForm))
+    },
+    mounted() { },
+    methods: {
+        prev() {
+            this.index--
+            if (this.index === 0) {
+                this.prevDis = true
+            }
+            this.nextDis = false
+            for (let index = 0; index < this.allList.length; index++) {
+                const element = this.allList[index];
+                if (this.index == index) {
+                    this.getInfo(element.id)
                 }
-            },
-            getInfo(id) {
-                request({
-                    url: '/api/mp/LabelManagement/'+ id,
-                    method: 'get'
-                }).then(res => {
-                    this.dataInfo(res.data)
-                });
-            },
-            goBack() {
-                this.visible = false
-                this.$emit('refreshDataList', true)
-            },
-            changeData(model, index) {
-                this.isEdit = false
-                this.childIndex = index
-                let modelAll = model.split("-");
-                let faceMode = "";
-                for (let i = 0; i < modelAll.length; i++) {
-                    faceMode += modelAll[i];
+            }
+        },
+        next() {
+            this.index++
+            if (this.index === this.allList.length - 1) {
+                this.nextDis = true
+            }
+            this.prevDis = false
+            for (let index = 0; index < this.allList.length; index++) {
+                const element = this.allList[index];
+                if (this.index == index) {
+                    this.getInfo(element.id)
                 }
-                for (let key in this.interfaceRes) {
-                    if (key != faceMode) {
-                        let faceReList = this.interfaceRes[key]
-                        for (let i = 0; i < faceReList.length; i++) {
-                            if (faceReList[i].relationField == model) {
-                                let options = 'get' + key + 'Options';
-                                if(this[options]){
-                                    this[options]()
-                                }
-                                this.changeData(key, index)
+            }
+        },
+        getInfo(id) {
+            request({
+                url: '/api/mp/LabelManagement/' + id,
+                method: 'get'
+            }).then(res => {
+                this.dataInfo(res.data)
+            });
+        },
+        goBack() {
+            this.visible = false
+            this.$emit('refreshDataList', true)
+        },
+        changeData(model, index) {
+            this.isEdit = false
+            this.childIndex = index
+            let modelAll = model.split("-");
+            let faceMode = "";
+            for (let i = 0; i < modelAll.length; i++) {
+                faceMode += modelAll[i];
+            }
+            for (let key in this.interfaceRes) {
+                if (key != faceMode) {
+                    let faceReList = this.interfaceRes[key]
+                    for (let i = 0; i < faceReList.length; i++) {
+                        if (faceReList[i].relationField == model) {
+                            let options = 'get' + key + 'Options';
+                            if (this[options]) {
+                                this[options]()
                             }
+                            this.changeData(key, index)
                         }
                     }
                 }
-            },
-            changeDataFormData(type, data, model,index,defaultValue,edit) {
-                if(!edit) {
-                    if (type == 2) {
-                        for (let i = 0; i < this.dataForm[data].length; i++) {
-                            if (index == -1) {
-                                this.dataForm[data][i][model] = defaultValue
-                            } else if (index == i) {
-                                this.dataForm[data][i][model] = defaultValue
-                            }
+            }
+        },
+        changeDataFormData(type, data, model, index, defaultValue, edit) {
+            if (!edit) {
+                if (type == 2) {
+                    for (let i = 0; i < this.dataForm[data].length; i++) {
+                        if (index == -1) {
+                            this.dataForm[data][i][model] = defaultValue
+                        } else if (index == i) {
+                            this.dataForm[data][i][model] = defaultValue
                         }
-                    } else {
-                        this.dataForm[data] = defaultValue
-                    }
-                }
-            },
-            dataAll(){
-            },
-            clearData(){
-                this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
-            },
-            init(id,isDetail,allList,leftTreeActiveInfo) {
-                this.prevDis = false
-                this.nextDis = false
-                this.allList = allList || []
-                if (allList.length) {
-                    this.index = this.allList.findIndex(item => item.id === id)
-                    if (this.index == 0) {
-                        this.prevDis = true
-                    }
-                    if (this.index == this.allList.length - 1) {
-                        this.nextDis = true
                     }
                 } else {
+                    this.dataForm[data] = defaultValue
+                }
+            }
+        },
+        dataAll() {
+        },
+        clearData() {
+            this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
+        },
+        init(id, isDetail, allList, leftTreeActiveInfo) {
+            this.prevDis = false
+            this.nextDis = false
+            this.allList = allList || []
+            if (allList.length) {
+                this.index = this.allList.findIndex(item => item.id === id)
+                if (this.index == 0) {
                     this.prevDis = true
+                }
+                if (this.index == this.allList.length - 1) {
                     this.nextDis = true
                 }
-                this.dataForm.id = id || 0;
-                this.visible = true;
-                this.$nextTick(() => {
-                    if(this.dataForm.id){
-                        this.loading = true
-                        request({
-                            url: '/api/mp/LabelManagement/'+this.dataForm.id,
-                            method: 'get'
-                        }).then(res => {
-                            this.dataInfo(res.data)
-                            this.loading = false
-                        });
-                    }else{
-                        this.clearData()
-                        this.initDefaultData()
-                        this.dataForm = { ...this.dataForm, ...leftTreeActiveInfo }
-                    }
-                });
-                this.$store.commit('generator/UPDATE_RELATION_DATA', {})
-            },
-            //初始化默认数据
-            initDefaultData() {
-
-            },
-            // 表单提交
-            dataFormSubmit(type) {
-                this.dataFormSubmitType = type ? type : 0
-                this.$refs['formRef'].validate((valid) => {
-                    if (valid) {
-                        this.request()
-                    }
-                })
-            },
-            request() {
-                let _data =this.dataList()
-                if (this.dataFormSubmitType == 2) {
-                    this.continueBtnLoading = true
+            } else {
+                this.prevDis = true
+                this.nextDis = true
+            }
+            this.dataForm.id = id || 0;
+            this.visible = true;
+            this.$nextTick(() => {
+                if (this.dataForm.id) {
+                    this.loading = true
+                    request({
+                        url: '/api/mp/LabelManagement/' + this.dataForm.id,
+                        method: 'get'
+                    }).then(res => {
+                        this.dataInfo(res.data)
+                        this.loading = false
+                    });
                 } else {
-                    this.btnLoading = true
+                    this.clearData()
+                    this.initDefaultData()
+                    this.dataForm = { ...this.dataForm, ...leftTreeActiveInfo }
                 }
-                if (!this.dataForm.id) {
-                    request({
-                        url: '/api/mp/LabelManagement',
-                        method: 'post',
-                        data: _data
-                    }).then((res) => {
-                        this.$message({
-                            message: res.msg,
-                            type: 'success',
-                            duration: 1000,
-                            onClose: () => {
-                                if (this.dataFormSubmitType == 2) {
-                                    this.$nextTick(() => {
-                                        this.clearData()
-                                        this.initDefaultData()
-                                    })
-                                    this.continueBtnLoading = false
-                                    return
-                                }
-                                this.visible = false
-                                this.btnLoading = false
-                                this.$emit('refresh', true)
+            });
+            this.$store.commit('generator/UPDATE_RELATION_DATA', {})
+        },
+        //初始化默认数据
+        initDefaultData() {
+
+        },
+        // 表单提交
+        dataFormSubmit(type) {
+            this.dataFormSubmitType = type ? type : 0
+            this.$refs['formRef'].validate((valid) => {
+                if (valid) {
+                    this.request()
+                }
+            })
+        },
+        request() {
+            let _data = this.dataList()
+            if (this.dataFormSubmitType == 2) {
+                this.continueBtnLoading = true
+            } else {
+                this.btnLoading = true
+            }
+            if (!this.dataForm.id) {
+                request({
+                    url: '/api/mp/LabelManagement',
+                    method: 'post',
+                    data: _data
+                }).then((res) => {
+                    this.$message({
+                        message: res.msg,
+                        type: 'success',
+                        duration: 1000,
+                        onClose: () => {
+                            if (this.dataFormSubmitType == 2) {
+                                this.$nextTick(() => {
+                                    this.clearData()
+                                    this.initDefaultData()
+                                })
+                                this.continueBtnLoading = false
+                                return
                             }
-                        })
-                    }).catch(()=>{
-                        this.btnLoading = false
-                        this.continueBtnLoading = false
+                            this.visible = false
+                            this.btnLoading = false
+                            this.$emit('refresh', true)
+                        }
                     })
-                }else{
-                    request({
-                        url: '/api/mp/LabelManagement/'+this.dataForm.id,
-                        method: 'PUT',
-                        data: _data
-                    }).then((res) => {
-                        this.$message({
-                            message: res.msg,
-                            type: 'success',
-                            duration: 1000,
-                            onClose: () => {
-                                if (this.dataFormSubmitType == 2) return this.continueBtnLoading = false
-                                this.visible = false
-                                this.btnLoading = false
-                                this.$emit('refresh', true)
-                            }
-                        })
-                    }).catch(()=>{
-                        this.btnLoading = false
-                        this.continueBtnLoading = false
+                }).catch(() => {
+                    this.btnLoading = false
+                    this.continueBtnLoading = false
+                })
+            } else {
+                request({
+                    url: '/api/mp/LabelManagement/' + this.dataForm.id,
+                    method: 'PUT',
+                    data: _data
+                }).then((res) => {
+                    this.$message({
+                        message: res.msg,
+                        type: 'success',
+                        duration: 1000,
+                        onClose: () => {
+                            if (this.dataFormSubmitType == 2) return this.continueBtnLoading = false
+                            this.visible = false
+                            this.btnLoading = false
+                            this.$emit('refresh', true)
+                        }
                     })
-                }
-            },
-            openSelectDialog(key,value) {
-                this.currTableConf=this.addTableConf[key + value]
-                this.currVmodel=key
-                this.selectDialogVisible = true
-                this.$nextTick(() => {
-                    this.$refs.selectDialog.init()
+                }).catch(() => {
+                    this.btnLoading = false
+                    this.continueBtnLoading = false
                 })
-            },
-            addForSelect(data) {
-                this.closeForSelect()
-                for (let i = 0; i < data.length; i++) {
-                    let t = data[i]
-                    if(this['get'+this.currVmodel]){
-                        this['get'+this.currVmodel](t,true)
-                    }
+            }
+        },
+        openSelectDialog(key, value) {
+            this.currTableConf = this.addTableConf[key + value]
+            this.currVmodel = key
+            this.selectDialogVisible = true
+            this.$nextTick(() => {
+                this.$refs.selectDialog.init()
+            })
+        },
+        addForSelect(data) {
+            this.closeForSelect()
+            for (let i = 0; i < data.length; i++) {
+                let t = data[i]
+                if (this['get' + this.currVmodel]) {
+                    this['get' + this.currVmodel](t, true)
                 }
-            },
-            closeForSelect() {
-                this.selectDialogVisible = false
-            },
-            dateTime(timeRule, timeType, timeTarget, timeValueData, dataValue) {
-                let timeDataValue = null;
-                let timeValue = Number(timeValueData)
-                if (timeRule) {
-                    if (timeType == 1) {
-                        timeDataValue = timeValue
-                    } else if (timeType == 2) {
-                        timeDataValue = dataValue
-                    } else if (timeType == 3) {
-                        timeDataValue = new Date().getTime()
-                    } else if (timeType == 4) {
-                        let previousDate = '';
-                        if (timeTarget == 1 || timeTarget == 2) {
-                            previousDate = getDateDay(timeTarget, timeType, timeValue)
-                            timeDataValue = new Date(previousDate).getTime()
-                        } else if (timeTarget == 3) {
-                            previousDate = getBeforeData(timeValue)
-                            timeDataValue = new Date(previousDate).getTime()
-                        } else {
-                            timeDataValue = getBeforeTime(timeTarget, timeValue).getTime()
-                        }
-                    } else if (timeType == 5) {
-                        let previousDate = '';
-                        if (timeTarget == 1 || timeTarget == 2) {
-                            previousDate = getDateDay(timeTarget, timeType, timeValue)
-                            timeDataValue = new Date(previousDate).getTime()
-                        } else if (timeTarget == 3) {
-                            previousDate = getLaterData(timeValue)
-                            timeDataValue = new Date(previousDate).getTime()
-                        } else {
-                            timeDataValue = getLaterTime(timeTarget, timeValue).getTime()
-                        }
+            }
+        },
+        closeForSelect() {
+            this.selectDialogVisible = false
+        },
+        dateTime(timeRule, timeType, timeTarget, timeValueData, dataValue) {
+            let timeDataValue = null;
+            let timeValue = Number(timeValueData)
+            if (timeRule) {
+                if (timeType == 1) {
+                    timeDataValue = timeValue
+                } else if (timeType == 2) {
+                    timeDataValue = dataValue
+                } else if (timeType == 3) {
+                    timeDataValue = new Date().getTime()
+                } else if (timeType == 4) {
+                    let previousDate = '';
+                    if (timeTarget == 1 || timeTarget == 2) {
+                        previousDate = getDateDay(timeTarget, timeType, timeValue)
+                        timeDataValue = new Date(previousDate).getTime()
+                    } else if (timeTarget == 3) {
+                        previousDate = getBeforeData(timeValue)
+                        timeDataValue = new Date(previousDate).getTime()
+                    } else {
+                        timeDataValue = getBeforeTime(timeTarget, timeValue).getTime()
+                    }
+                } else if (timeType == 5) {
+                    let previousDate = '';
+                    if (timeTarget == 1 || timeTarget == 2) {
+                        previousDate = getDateDay(timeTarget, timeType, timeValue)
+                        timeDataValue = new Date(previousDate).getTime()
+                    } else if (timeTarget == 3) {
+                        previousDate = getLaterData(timeValue)
+                        timeDataValue = new Date(previousDate).getTime()
+                    } else {
+                        timeDataValue = getLaterTime(timeTarget, timeValue).getTime()
                     }
                 }
-                return timeDataValue;
-            },
-            time(timeRule, timeType, timeTarget, timeValue, formatType, dataValue) {
-                let format = formatType == 'HH:mm' ? 'HH:mm:00' : formatType
-                let timeDataValue = null
-                if (timeRule) {
-                    if (timeType == 1) {
-                        timeDataValue = timeValue || '00:00:00'
-                        if (timeDataValue.split(':').length == 3) {
-                            timeDataValue = timeDataValue
-                        } else {
-                            timeDataValue = timeDataValue + ':00'
-                        }
-                    } else if (timeType == 2) {
-                        timeDataValue = dataValue
-                    } else if (timeType == 3) {
-                        timeDataValue = this.jnpf.toDate(new Date(), format)
-                    } else if (timeType == 4) {
-                        let previousDate = '';
-                        previousDate = getBeforeTime(timeTarget, timeValue)
-                        timeDataValue = this.jnpf.toDate(previousDate, format)
-                    } else if (timeType == 5) {
-                        let previousDate = '';
-                        previousDate = getLaterTime(timeTarget, timeValue)
-                        timeDataValue = this.jnpf.toDate(previousDate, format)
+            }
+            return timeDataValue;
+        },
+        time(timeRule, timeType, timeTarget, timeValue, formatType, dataValue) {
+            let format = formatType == 'HH:mm' ? 'HH:mm:00' : formatType
+            let timeDataValue = null
+            if (timeRule) {
+                if (timeType == 1) {
+                    timeDataValue = timeValue || '00:00:00'
+                    if (timeDataValue.split(':').length == 3) {
+                        timeDataValue = timeDataValue
+                    } else {
+                        timeDataValue = timeDataValue + ':00'
                     }
+                } else if (timeType == 2) {
+                    timeDataValue = dataValue
+                } else if (timeType == 3) {
+                    timeDataValue = this.jnpf.toDate(new Date(), format)
+                } else if (timeType == 4) {
+                    let previousDate = '';
+                    previousDate = getBeforeTime(timeTarget, timeValue)
+                    timeDataValue = this.jnpf.toDate(previousDate, format)
+                } else if (timeType == 5) {
+                    let previousDate = '';
+                    previousDate = getLaterTime(timeTarget, timeValue)
+                    timeDataValue = this.jnpf.toDate(previousDate, format)
                 }
-                return timeDataValue;
-            },
-            dataList(){
-                var _data = this.dataForm;
-                return _data;
-            },
-            dataInfo(dataAll){
-                let _dataAll =dataAll
-                this.dataForm = _dataAll
-                this.isEdit = true
-                this.dataAll()
-                this.childIndex=-1
-            },
+            }
+            return timeDataValue;
+        },
+        dataList() {
+            var _data = this.dataForm;
+            return _data;
+        },
+        dataInfo(dataAll) {
+            let _dataAll = dataAll
+            this.dataForm = _dataAll
+            this.isEdit = true
+            this.dataAll()
+            this.childIndex = -1
         },
-    }
+    },
+}
 
 </script>

+ 11 - 1
src/views/governmentCloud/labelmanagement/index.vue

@@ -51,7 +51,9 @@
                     </el-table-column>
                     <el-table-column prop="color" label="标签颜色" align="left" show-overflow-tooltip>
                         <template slot-scope="scope">
-                            <JnpfInput v-model="scope.row.color" detailed showOverflow />
+                            <span class="tag"
+                                :style="{ background: scope.row.color, color: '#fff' }">
+                            </span>
                         </template>
                     </el-table-column>
                     <el-table-column prop="createBy" label="创建人" align="left" show-overflow-tooltip>
@@ -410,6 +412,7 @@ export default {
                     this.$message({
                         type: 'success',
                         message: res.msg,
+                        duration: 1000,
                         onClose: () => {
                             this.initData()
                         }
@@ -512,3 +515,10 @@ export default {
     }
 }
 </script>
+
+<style scoped>
+.tag {
+    padding: 5px 10px;
+    border-radius: 4px;
+}
+</style>

+ 7 - 7
src/views/governmentCloud/mdm/mdmuser/Detail.vue

@@ -84,8 +84,8 @@
                         <JNPF-table v-loading="listLoading" :data="list"
                             @sort-change='handleTableSort'
                             :header-cell-class-name="handleHeaderClass" :has-c="hasBatchBtn"
-                            :span-method="arraySpanMethod">
-                            <el-table-column prop="batchId" label="批次ID" align="left"
+                            :span-method="arraySpanMethod" :border="true">
+                            <el-table-column prop="batchId" label="批次ID" align="left" width="150"
                                 show-overflow-tooltip>
                                 <template slot-scope="scope">
                                     <JnpfInput v-model="scope.row.batchId" detailed showOverflow />
@@ -116,7 +116,7 @@
                             <el-table-column prop="gender" label="性别" align="left"
                                 show-overflow-tooltip>
                             </el-table-column>
-                            <el-table-column prop="mobile" label="联系电话" align="left"
+                            <el-table-column prop="mobile" label="联系电话" align="left" width="150"
                                 show-overflow-tooltip>
                                 <template slot-scope="scope">
                                     <JnpfInput v-model="scope.row.mobile" detailed showOverflow />
@@ -135,20 +135,20 @@
                                 show-overflow-tooltip>
                             </el-table-column>
                             <el-table-column prop="unionid" label="微信unionid" align="left"
-                                width="100" show-overflow-tooltip>
+                                width="250" show-overflow-tooltip>
                                 <template slot-scope="scope">
                                     <JnpfInput v-model="scope.row.unionid" detailed showOverflow />
                                 </template>
                             </el-table-column>
                             <el-table-column prop="organizationCode" label="所属组织编码" align="left"
-                                width="100" show-overflow-tooltip>
+                                width="200" show-overflow-tooltip>
                                 <template slot-scope="scope">
                                     <JnpfInput v-model="scope.row.organizationCode" detailed
                                         showOverflow />
                                 </template>
                             </el-table-column>
                             <el-table-column prop="organizationName" label="所属组织名称" align="left"
-                                width="100" show-overflow-tooltip>
+                                width="200" show-overflow-tooltip>
                                 <template slot-scope="scope">
                                     <JnpfInput v-model="scope.row.organizationName" detailed
                                         showOverflow />
@@ -190,7 +190,7 @@
                                 </template>
                             </el-table-column>
                             <el-table-column prop="enterpriseWechat" label="企微账号" align="left"
-                                show-overflow-tooltip>
+                                width="150" show-overflow-tooltip>
                                 <template slot-scope="scope">
                                     <JnpfInput v-model="scope.row.enterpriseWechat" detailed
                                         showOverflow />

+ 311 - 0
src/views/governmentCloud/officialAccount/menuManagement/form.vue

@@ -0,0 +1,311 @@
+<template>
+    <el-dialog :title=" isEdit ?'编辑':'新增'" :close-on-click-modal=" false" append-to-body
+        :visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll width="600px"
+        :before-close="clearDataForm">
+        <el-row :gutter="15" class="">
+            <el-form ref="formRef" :model="dataForm" :rules="dataRule" size="small"
+                label-width="100px" label-position="right">
+                <template v-if="!loading">
+                    <!-- 具体表单 -->
+
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="上级" align="left" prop="parentId"
+                            v-if="!dataForm.subButtons.length">
+                            <JnpfTreeSelect v-model="dataForm.parentId" :options="treeList"
+                                clearable :props="treeProps" placeholder="选择上级菜单"
+                                @change="treeSelectChange(arguments,'pc')" />
+                        </jnpf-form-tip-item>
+                    </el-col>
+
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="菜单名称" align="left" prop="name">
+                            <JnpfInput v-model="dataForm.name" placeholder=" 请输入" clearable
+                                :style='{"width":"100%"}'>
+                            </JnpfInput>
+                        </jnpf-form-tip-item>
+                    </el-col>
+
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="菜单类型" align="left" prop="type"
+                            v-if="!dataForm.subButtons.length">
+                            <JnpfSelect v-model="dataForm.type" placeholder=" 请选择" clearable
+                                @change="typeChange" :style='{"width":"100%"}' :options="typeList"
+                                :props="typeProps">
+                            </JnpfSelect>
+                        </jnpf-form-tip-item>
+                    </el-col>
+
+                    <el-col :span="24" v-if="dataForm.type == 'miniprogram'">
+                        <jnpf-form-tip-item label="菜单路径" align="left" prop="pagePath">
+                            <JnpfTextarea v-model="dataForm.pagePath" placeholder="请输入"
+                                :style='{"width":"100%"}' true type="textarea"
+                                :autosize='{"minRows":4,"maxRows":4}'>
+                            </JnpfTextarea>
+                        </jnpf-form-tip-item>
+                    </el-col>
+
+                    <el-col :span="24" v-if="dataForm.type == 'view'">
+                        <jnpf-form-tip-item label="菜单路径" align="left" prop="url">
+                            <JnpfTextarea v-model="dataForm.url" placeholder="请输入"
+                                :style='{"width":"100%"}' true type="textarea"
+                                :autosize='{"minRows":4,"maxRows":4}'>
+                            </JnpfTextarea>
+                        </jnpf-form-tip-item>
+                    </el-col>
+
+                    <el-col :span="24" v-if="dataForm.type == 'click'">
+                        <jnpf-form-tip-item label="KEY值" align="left" prop="key">
+                            <JnpfInput v-model="dataForm.key" placeholder=" 请输入" clearable
+                                :style='{"width":"100%"}'>
+
+                            </JnpfInput>
+                        </jnpf-form-tip-item>
+                    </el-col>
+
+                    <!-- 表单结束 -->
+                </template>
+            </el-form>
+        </el-row>
+        <span slot="footer" class="dialog-footer">
+            <el-button type="info" @click="clearDataForm()"> 取消</el-button>
+            <el-button type="primary" @click="confirm()" :loading="btnLoading"> 确
+                定</el-button>
+        </span>
+    </el-dialog>
+</template>
+
+<script>
+
+import {
+    createMenuByJson2,
+    getFirstMenu,
+    updateMenuByJson2
+} from "@/api/governmentCloud/officialAccount/menuManagement/menuManagement";
+
+
+export default {
+    data() {
+        return {
+            visible: false,
+            loading: false,
+            isEdit: null,
+            dataForm: {
+                name: undefined,
+                type: undefined,
+                url: undefined,
+                parentId: 0,
+                pagePath: undefined,
+                appId: 'wx333b02c66798fc0a',
+                subButtons: []
+            },
+            dataValueAll: {
+                name: undefined,
+                type: undefined,
+                url: undefined,
+                parentId: 0,
+                pagePath: undefined,
+                appId: 'wx333b02c66798fc0a',
+                subButtons: []
+
+            },
+            dataRule: {
+                name: [
+                    {
+                        required: true,
+                        message: '请输入',
+                        trigger: 'blur'
+                    },
+                ],
+                type: [
+                    {
+                        required: true,
+                        message: '请选择',
+                        trigger: 'change'
+                    },
+                ],
+                url: [
+                    {
+                        required: false,
+                        message: '请输入',
+                        trigger: 'blur'
+                    },
+                ],
+                pagePath: [
+                    {
+                        required: false,
+                        message: '请输入',
+                        trigger: 'blur'
+                    },
+                ],
+                key: [
+                    {
+                        required: false,
+                        message: '请输入',
+                        trigger: 'blur'
+                    },
+                ]
+            },
+            btnLoading: false,
+            noneBtnDealImg: false,
+            fileList: [],
+
+            typeList: [
+                {
+                    type: '小程序链接',
+                    value: 'miniprogram'
+                },
+                {
+                    type: 'H5链接',
+                    value: 'view'
+                },
+                {
+                    type: '点击',
+                    value: 'click'
+                }
+            ],
+            typeProps: { "label": "type", "value": "value" },
+            treeList: [],
+            treeProps: {
+                value: 'id',             // ID字段名
+                label: 'name',       // 显示名称
+                children: 'subButtons',    // 子级字段名
+            }
+
+        }
+    },
+    methods: {
+        init(row, isEdit) {
+            this.isEdit = isEdit
+            console.log(row)
+            if (this.isEdit) this.dataForm = row
+            getFirstMenu().then(res => {
+                if (res.code == 200) {
+                    this.treeList = res.data
+                    this.treeList.forEach(item => {
+                        item.children = JSON.parse(JSON.stringify(item.subButtons))
+                        delete item.subButtons
+                    })
+                    this.visible = true
+
+                } else {
+                    this.$message.warning(res.msg)
+                    this.visible = true
+
+                }
+            })
+
+
+        },
+        typeChange(e) {
+            console.log(e)
+            if (e == 'miniprogram') {
+                this.dataRule.url[0].required = false
+                this.dataRule.pagePath[0].required = true
+                this.dataRule.key[0].required = false
+            } else if (e == 'view') {
+                this.dataRule.pagePath[0].required = false
+                this.dataRule.url[0].required = true
+                this.dataRule.key[0].required = false
+            } else if (e == 'click') {
+                this.dataRule.pagePath[0].required = false
+                this.dataRule.url[0].required = false
+                this.dataRule.key[0].required = true
+            }
+        },
+        treeSelectChange(data, type) {
+            console.log(data)
+            console.log(type)
+        },
+        clearDataForm() {
+            this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
+            this.visible = false
+        },
+        confirm() {
+            if (!this.isEdit) {
+                this.addMenu()
+            } else {
+                if (this.dataForm.type == 'view' && !this.startsWithHttps(this.dataForm.url)) {
+                    this.$message.error('网页类型路径必须https://开头')
+                } else {
+                    let params = JSON.parse(JSON.stringify(this.dataForm))
+                    delete params.index
+                    delete params.createTime
+                    updateMenuByJson2(params).then(res => {
+                        console.log(res)
+                        if (res.code == 200) {
+                            this.$message.success(res.msg)
+                            this.$emit('refresh')
+
+                            this.clearDataForm()
+                            this.visible = false
+                        }
+                    })
+                }
+            }
+        },
+        startsWithHttps(url) {
+            // 使用正则表达式检查字符串是否以 "https://" 开头
+            const regex = /^https:\/\//i;
+            return regex.test(url);
+        },
+        addMenu() {
+            let flag = true
+
+            if (this.dataForm.parentId == '0' && this.treeList.length > 2) {
+                this.$message.error('最多存在三个一级菜单')
+                flag = false
+            } else {
+                this.treeList.forEach(item => {
+                    if (item.id == this.dataForm.parentId && item.children.length > 4) {
+                        this.$message.error('该一级菜单最多存在五个二级菜单')
+                        flag = false
+                    }
+                })
+            }
+
+
+
+
+            if (flag) {
+                let params = {
+                    name: this.dataForm.name,
+                    type: this.dataForm.type,
+                    parentId: this.dataForm.parentId,
+                    subButtons: []
+                }
+                if (this.dataForm.type == 'miniprogram') {
+                    params.pagePath = this.dataForm.pagePath
+                    params.appId = this.dataForm.appId
+                    params.url = this.dataForm.pagePath
+                }
+                if (this.dataForm.type == 'view') {
+                    params.url = this.dataForm.url
+                }
+
+                if (this.dataForm.type == 'click') {
+                    params.key = this.dataForm.key
+                }
+                createMenuByJson2(params).then(res => {
+                    console.log(res)
+                    if (res.code == 200) {
+                        this.$message.success(res.msg)
+                        this.$emit('refresh')
+
+                        this.clearDataForm()
+                        this.visible = false
+                    } else {
+                        this.$message.warning(res.msg)
+                    }
+                })
+            }
+        }
+
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+::v-deep .disUoloadSty .el-upload--picture-card {
+    display: none; /* 上传按钮隐藏 */
+}
+</style>

+ 70 - 19
src/views/governmentCloud/officialAccount/menuManagement/index.vue

@@ -3,9 +3,13 @@
         <div class="JNPF-common-layout-center  JNPF-flex-main">
             <div class="JNPF-common-layout-main JNPF-flex-main">
                 <div class="JNPF-common-head">
-                    <el-button type="primary" icon="el-icon-plus" @click="addMenu">
-                        新增
-                    </el-button>
+                    <div>
+                        <el-button type="primary" icon="el-icon-plus" @click="addMenu()">
+                            新增
+                        </el-button>
+                        <el-button icon="el-icon-search" @click="initData()">查询</el-button>
+                    </div>
+
                     <div class="JNPF-common-head-right">
                         <el-tooltip effect="dark" content="展开" placement="top">
                             <el-link v-show="!expands" type="text"
@@ -25,26 +29,51 @@
                 </div>
                 <JNPF-table v-loading="listLoading" :data="treeList" row-key="id"
                     v-if="refreshTable" :default-expand-all="expands"
-                    :tree-props="{ children: 'children', hasChildren: '' }">
-                    <el-table-column prop="label" label="名称"> </el-table-column>
-                    <el-table-column prop="level" label="类型" align="center">
+                    :tree-props="{ children: 'subButtons', hasChildren: '' }">
+                    <el-table-column prop="name" label="菜单名称"> </el-table-column>
+                    <el-table-column prop="type" label="菜单类型" align="center">
+                        <template slot-scope="scope">
+                            <span v-if="scope.row.type == 'miniprogram'">小程序类型</span>
+                            <span v-else-if="scope.row.type == 'view'">网页类型</span>
+                            <span v-else-if="scope.row.type == 'click'">点击类型</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="url" label="菜单路径">
                         <template slot-scope="scope">
-                            <span v-if="scope.row.level == 1">厅局</span>
-                            <span v-else-if="scope.row.level == 2">项目</span>
-                            <span v-else-if="scope.row.level == 3">系统</span>
+                            {{scope.row.pagePath ||  scope.row.url  ||  '--'}}
+                        </template>
+
+                    </el-table-column>
+
+                    <el-table-column prop="key" label=" KEY值">
+                        <template slot-scope="scope">
+                            {{scope.row.key ||  '--'}}
+                        </template>
+                    </el-table-column>
+
+                    <el-table-column label="操作" width="150" fixed="right">
+                        <template slot-scope="scope" sortable>
+                            <span style="color: #f56c6c;cursor: pointer;margin-right: 10px;"
+                                @click="deleteMenu(scope.row)">删除</span>
+                            <span style="color:#1890ff;cursor: pointer;"
+                                @click="editMenu(scope.row,true)">编辑</span>
                         </template>
                     </el-table-column>
                 </JNPF-table>
             </div>
         </div>
+        <Form v-if="formVisible" ref="Form" @refresh="initData" />
     </div>
 </template>
 
 <script>
 import {
-    findTreeList,
-    syncOrganizeProjectSystemDict
-} from "@/api/governmentCloud/dictionaryOfProjectSystemsForDepartmentsAndBureaus/dictionaryOfProjectSystemsForDepartmentsAndBureaus";
+    getMenu2,
+    deleteMenu2
+} from "@/api/governmentCloud/officialAccount/menuManagement/menuManagement";
+
+import Form from './form'
+
 export default {
     name: "menuManagement",
     components: {},
@@ -54,16 +83,16 @@ export default {
                 keyword: ""
             },
             treeList: [],
-            rawData: [],
             expands: true,
             refreshTable: true,
             btnLoading: false,
             listLoading: true,
             formVisible: false,
-            depFormVisible: false,
-            checkUserFormVisible: false
         };
     },
+    components: {
+        Form
+    },
     created() {
         this.initData();
     },
@@ -71,9 +100,8 @@ export default {
         initData() {
             this.loading = true;
             this.listLoading = true;
-            findTreeList(this.listQuery)
+            getMenu2(this.listQuery)
                 .then(res => {
-                    this.rawData = res.data;
                     this.treeList = res.data;
                     if (this.treeList.length > 0) this.setTableIndex(this.treeList);
                     this.listLoading = false;
@@ -84,8 +112,31 @@ export default {
                     this.btnLoading = false;
                 });
         },
-        addMenu() {
-
+        addMenu(id, isEdit = false) {
+            this.formVisible = true
+            this.$nextTick(() => {
+                this.$refs.Form.init(id, isEdit)
+            })
+        },
+        deleteMenu(row) {
+            console.log(row)
+            let params = {
+                menuId: row.id
+            }
+            deleteMenu2(params).then(res => {
+                if (res.code == 200) {
+                    this.$message.success('删除成功')
+                    this.initData()
+                } else {
+                    this.$message.warning(res.msg)
+                }
+            })
+        },
+        editMenu(row, isEdit) {
+            this.formVisible = true
+            this.$nextTick(() => {
+                this.$refs.Form.init(row, isEdit)
+            })
         },
         // 树形列表index层级,实现方法(可复制直接调用)
         setTableIndex(arr, index) {

+ 108 - 0
src/views/governmentCloud/officialAccount/updateRecord/index.vue

@@ -0,0 +1,108 @@
+<template>
+    <div class="JNPF-common-layout">
+        <div class="JNPF-common-layout-center JNPF-flex-main">
+            <div class="JNPF-common-layout-main JNPF-flex-main">
+                <div class="JNPF-common-head">
+                    <div>
+                        <el-button type="primary" icon="el-icon-plus"
+                            @click="addIcon()">新增</el-button>
+                        <el-button icon="el-icon-search" @click="reset()">查询</el-button>
+                    </div>
+
+                    <div class="JNPF-common-head-right">
+                        <el-tooltip effect="dark" :content="$t('common.refresh')" placement="top">
+                            <el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon"
+                                :underline="false" @click="initData()" />
+                        </el-tooltip>
+                    </div>
+                </div>
+                <JNPF-table v-loading="listLoading" :data="tableData">
+                    <el-table-column prop="name" label="菜单名称" width="80">
+                        <template slot-scope="scope" sortable>
+                            <img style="width: 40px;height: 40px;"
+                                :src="minioPath+scope.row.icon"></img>
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="type" label="菜单类型" />
+                    <el-table-column prop="pagePath" label="菜单路径" />
+
+                    <el-table-column label="操作" width="150" fixed="right">
+                        <template slot-scope="scope" sortable>
+                            <span style="color: #f56c6c;cursor: pointer;"
+                                @click="deleteIcon(scope.row)">删除</span>
+                        </template>
+                    </el-table-column>
+                </JNPF-table>
+            </div>
+        </div>
+        <!-- <Form v-if="formVisible" ref="Form" @refreshDataList="getList" @back="getList()" /> -->
+    </div>
+</template>
+
+<script>
+import {
+    delSysTeam
+} from "@/api/governmentCloud/serviceTeamManage/serviceTeamManage";
+import { minioPath } from '@/utils/apiUrl'
+
+
+// import Form from "./Form";
+
+export default {
+    name: "icon-management",
+    components: {
+        // Form
+    },
+    data() {
+        return {
+            minioPath: minioPath,
+            tableData: [],
+            listLoading: false,
+            formVisible: false
+        };
+    },
+    watch: {},
+    created() {
+        this.getList();
+    },
+    methods: {
+        getList() {
+            this.tableData = []
+            this.listLoading = true;
+            // getMenu2()
+            //     .then(res => {
+
+            this.listLoading = false;
+            //     })
+            //     .catch(() => {
+
+            //         this.listLoading = false;
+            //     });
+        },
+        reset() {
+            this.getList()
+        },
+        addIcon() {
+            this.formVisible = true;
+            this.$nextTick(() => {
+                this.$refs.Form.init();
+            });
+        },
+        deleteIcon(row) {
+            const url = row.icon;
+            const startIndex = url.indexOf("process/");
+            const newUrl = url.substring(startIndex);
+            deleteIcon(newUrl).then(res => {
+                if (res.code == 200) {
+                    this.$message({
+                        message: "删除成功",
+                        type: "success",
+                        duration: 1500
+                    });
+                    this.getList();
+                }
+            });
+        },
+    }
+};
+</script>

+ 122 - 0
src/views/governmentCloud/searchjump/Detail.vue

@@ -0,0 +1,122 @@
+<template>
+    <el-dialog title="详情" :close-on-click-modal="false" append-to-body :visible.sync="visible"
+        class="JNPF-dialog JNPF-dialog_center" lock-scroll width="600px">
+        <el-row :gutter="15" class="">
+            <el-form ref="formRef" :model="dataForm" size="small" label-width="110px"
+                label-position="right">
+                <template v-if="!loading">
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="标题" prop="title">
+                            <JnpfInput v-model="dataForm.title" placeholder="请输入" disabled detailed
+                                clearable :style='{"width":"100%"}' :maskConfig="maskConfig.title">
+                            </JnpfInput>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="跳转路径" prop="url">
+                            <JnpfInput v-model="dataForm.url" placeholder="请输入" disabled detailed
+                                clearable :style='{"width":"100%"}' :maskConfig="maskConfig.url">
+                            </JnpfInput>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <!-- <jnpf-form-tip-item label="是否一级菜单" label-width="0px" prop="levelOneMenu">
+                            <p>{{dataForm.levelOneMenu}}</p>
+                        </jnpf-form-tip-item> -->
+                        <jnpf-form-tip-item label="是否一级菜单" prop="levelOneMenu">
+                            {{dataForm.levelOneMenu}}
+
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="描述" prop="desctiption">
+                            <p>{{dataForm.desctiption}}</p>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                </template>
+            </el-form>
+        </el-row>
+        <span slot="footer" class="dialog-footer">
+            <el-button @click="visible = false"> 取 消</el-button>
+        </span>
+        <Detail v-if="detailVisible" ref="Detail" @close="detailVisible = false" />
+    </el-dialog>
+</template>
+<script>
+import request from '@/utils/request'
+
+import { getConfigData } from '@/api/onlineDev/visualDev'
+import jnpf from '@/utils/jnpf'
+import Detail from '@/views/basic/dynamicModel/list/detail'
+import { thousandsFormat } from "@/components/Generator/utils/index"
+export default {
+    components: { Detail },
+    props: [],
+    data() {
+        return {
+            visible: false,
+            detailVisible: false,
+            loading: false,
+
+            //掩码配置
+            maskConfig: {
+                title: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                url: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                keywords: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                count: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+            },
+            //定位属性
+            locationScope: {
+            },
+
+            dataForm: {
+
+            },
+
+        }
+    },
+    computed: {},
+    watch: {},
+    created() {
+
+    },
+    mounted() { },
+    methods: {
+        toDetail(defaultValue, modelId) {
+            if (!defaultValue) return
+            getConfigData(modelId).then(res => {
+                if (!res.data || !res.data.formData) return
+                let formData = JSON.parse(res.data.formData)
+                formData.popupType = 'general'
+                this.detailVisible = true
+                this.$nextTick(() => {
+                    this.$refs.Detail.init(formData, modelId, defaultValue)
+                })
+            })
+        },
+        dataInfo(dataAll) {
+            let _dataAll = dataAll
+            this.dataForm = _dataAll
+        },
+
+        init(id) {
+            this.dataForm.id = id || 0;
+            this.visible = true;
+            this.$nextTick(() => {
+                if (this.dataForm.id) {
+                    this.loading = true
+                    request({
+                        url: '/api/mp/SearchJump/detail/' + this.dataForm.id,
+                        method: 'get'
+                    }).then(res => {
+                        this.dataInfo(res.data)
+                        this.loading = false
+                    })
+                }
+
+            })
+        },
+    },
+}
+
+</script>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
src/views/governmentCloud/searchjump/columnList.js


+ 462 - 0
src/views/governmentCloud/searchjump/form.vue

@@ -0,0 +1,462 @@
+<template>
+    <el-dialog :title="!dataForm.id ? '新建' :'编辑'" :close-on-click-modal="false" append-to-body
+        :visible.sync="visible" class="JNPF-dialog JNPF-dialog_center" lock-scroll width="600px">
+        <el-row :gutter="15" class="">
+            <el-form ref="formRef" :model="dataForm" :rules="dataRule" size="small"
+                label-width="110px" label-position="right">
+                <template v-if="!loading">
+                    <!-- 具体表单 -->
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="标题" align="left" prop="title">
+                            <JnpfInput v-model="dataForm.title" @change="changeData('title',-1)"
+                                placeholder="请输入" clearable :style='{"width":"100%"}'
+                                :maskConfig="maskConfig.title">
+                            </JnpfInput>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="跳转路径" align="left" prop="url">
+                            <JnpfInput v-model="dataForm.url" @change="changeData('url',-1)"
+                                placeholder="请输入" clearable :style='{"width":"100%"}'
+                                :maskConfig="maskConfig.url">
+                            </JnpfInput>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="是否一级菜单" align="left" prop="levelOneMenu">
+                            <JnpfSwitch v-model="dataForm.levelOneMenu"
+                                @change="changeData('levelOneMenu',-1)" :active-value="1"
+                                :inactive-value="0">
+                            </JnpfSwitch>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <el-col :span="24">
+                        <jnpf-form-tip-item label="描述" align="left" prop="desctiption">
+                            <JnpfTextarea v-model="dataForm.desctiption" placeholder="请输入"
+                                :style='{"width":"100%"}' type="textarea"
+                                :maskConfig="maskConfig.desctiption">
+                            </JnpfTextarea>
+                        </jnpf-form-tip-item>
+                    </el-col>
+                    <!-- 表单结束 -->
+                </template>
+            </el-form>
+            <SelectDialog v-if="selectDialogVisible" :config="currTableConf" :formData="dataForm"
+                ref="selectDialog" @select="addForSelect" @close="closeForSelect" />
+        </el-row>
+        <span slot="footer" class="dialog-footer">
+            <div class="upAndDown-button" v-if="dataForm.id">
+                <el-button @click="prev" :disabled='prevDis'>
+                    {{'上一条'}}
+                </el-button>
+                <el-button @click="next" :disabled='nextDis'>
+                    {{'下一条'}}
+                </el-button>
+            </div>
+            <el-button type="primary" @click="dataFormSubmit(2)" :loading="continueBtnLoading">
+                {{!dataForm.id ?'确定并新增':'确定并继续'}}</el-button>
+            <el-button @click="visible = false"> 取 消</el-button>
+            <el-button type="primary" @click="dataFormSubmit()" :loading="btnLoading"> 确
+                定</el-button>
+        </span>
+    </el-dialog>
+</template>
+
+
+<script>
+import request from '@/utils/request'
+import { mapGetters } from "vuex";
+import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
+import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
+import { getDefaultCurrentValueUserId } from '@/api/permission/user'
+import { getDefaultCurrentValueDepartmentId } from '@/api/permission/organize'
+import { getDateDay, getLaterData, getBeforeData, getBeforeTime, getLaterTime } from '@/components/Generator/utils/index.js'
+import { thousandsFormat } from "@/components/Generator/utils/index"
+import SelectDialog from '@/components/SelectDialog'
+
+export default {
+    components: { SelectDialog },
+    props: [],
+    data() {
+        return {
+            dataFormSubmitType: 0,
+            continueBtnLoading: false,
+            index: 0,
+            prevDis: false,
+            nextDis: false,
+            allList: [],
+            visible: false,
+            loading: false,
+            btnLoading: false,
+            formRef: 'formRef',
+            setting: {},
+            eventType: '',
+            userBoxVisible: false,
+            selectDialogVisible: false,
+            currTableConf: {},
+            dataValueAll: {},
+            addTableConf: {
+            },
+            //可选范围默认值
+            ableAll: {
+            },
+            tableRows: {
+            },
+            Vmodel: "",
+            currVmodel: "",
+            dataForm: {
+                createBy: undefined,
+                createTime: undefined,
+                updateBy: undefined,
+                updateTime: undefined,
+                title: undefined,
+                url: undefined,
+                levelOneMenu: 0,
+                keywords: undefined,
+                count: undefined,
+                desctiption: undefined,
+                id: undefined,
+            },
+            tableRequiredData: {},
+            dataRule:
+            {
+                title: [
+                    {
+                        required: true,
+                        message: '请输入',
+                        trigger: 'blur'
+                    },
+                ],
+                url: [
+                    {
+                        required: true,
+                        message: '请输入',
+                        trigger: 'blur'
+                    },
+                ],
+            },
+            childIndex: -1,
+            isEdit: false,
+            interfaceRes: {
+                createBy: [],
+                createTime: [],
+                updateBy: [],
+                updateTime: [],
+                title: [],
+                url: [],
+                levelOneMenu: [],
+                keywords: [],
+                count: [],
+                desctiption: [],
+            },
+            //掩码配置
+            maskConfig: {
+                title: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                url: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                keywords: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                count: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+            },
+            //定位属性
+            locationScope: {
+            },
+        }
+    },
+    computed: {
+        ...mapGetters(['userInfo']),
+
+
+    },
+    watch: {},
+    created() {
+        this.dataAll()
+        this.initDefaultData()
+        this.dataValueAll = JSON.parse(JSON.stringify(this.dataForm))
+    },
+    mounted() { },
+    methods: {
+        prev() {
+            this.index--
+            if (this.index === 0) {
+                this.prevDis = true
+            }
+            this.nextDis = false
+            for (let index = 0; index < this.allList.length; index++) {
+                const element = this.allList[index];
+                if (this.index == index) {
+                    this.getInfo(element.id)
+                }
+            }
+        },
+        next() {
+            this.index++
+            if (this.index === this.allList.length - 1) {
+                this.nextDis = true
+            }
+            this.prevDis = false
+            for (let index = 0; index < this.allList.length; index++) {
+                const element = this.allList[index];
+                if (this.index == index) {
+                    this.getInfo(element.id)
+                }
+            }
+        },
+        getInfo(id) {
+            request({
+                url: '/api/mp/SearchJump/' + id,
+                method: 'get'
+            }).then(res => {
+                this.dataInfo(res.data)
+            });
+        },
+        goBack() {
+            this.visible = false
+            this.$emit('refreshDataList', true)
+        },
+        changeData(model, index) {
+            this.isEdit = false
+            this.childIndex = index
+            let modelAll = model.split("-");
+            let faceMode = "";
+            for (let i = 0; i < modelAll.length; i++) {
+                faceMode += modelAll[i];
+            }
+            for (let key in this.interfaceRes) {
+                if (key != faceMode) {
+                    let faceReList = this.interfaceRes[key]
+                    for (let i = 0; i < faceReList.length; i++) {
+                        if (faceReList[i].relationField == model) {
+                            let options = 'get' + key + 'Options';
+                            if (this[options]) {
+                                this[options]()
+                            }
+                            this.changeData(key, index)
+                        }
+                    }
+                }
+            }
+        },
+        changeDataFormData(type, data, model, index, defaultValue, edit) {
+            if (!edit) {
+                if (type == 2) {
+                    for (let i = 0; i < this.dataForm[data].length; i++) {
+                        if (index == -1) {
+                            this.dataForm[data][i][model] = defaultValue
+                        } else if (index == i) {
+                            this.dataForm[data][i][model] = defaultValue
+                        }
+                    }
+                } else {
+                    this.dataForm[data] = defaultValue
+                }
+            }
+        },
+        dataAll() {
+        },
+        clearData() {
+            this.dataForm = JSON.parse(JSON.stringify(this.dataValueAll))
+        },
+        init(id, isDetail, allList, leftTreeActiveInfo) {
+            this.prevDis = false
+            this.nextDis = false
+            this.allList = allList || []
+            if (allList.length) {
+                this.index = this.allList.findIndex(item => item.id === id)
+                if (this.index == 0) {
+                    this.prevDis = true
+                }
+                if (this.index == this.allList.length - 1) {
+                    this.nextDis = true
+                }
+            } else {
+                this.prevDis = true
+                this.nextDis = true
+            }
+            this.dataForm.id = id || 0;
+            this.visible = true;
+            this.$nextTick(() => {
+                if (this.dataForm.id) {
+                    this.loading = true
+                    request({
+                        url: '/api/mp/SearchJump/' + this.dataForm.id,
+                        method: 'get'
+                    }).then(res => {
+                        this.dataInfo(res.data)
+                        this.loading = false
+                    });
+                } else {
+                    this.clearData()
+                    this.initDefaultData()
+                    this.dataForm = { ...this.dataForm, ...leftTreeActiveInfo }
+                }
+            });
+            this.$store.commit('generator/UPDATE_RELATION_DATA', {})
+        },
+        //初始化默认数据
+        initDefaultData() {
+
+        },
+        // 表单提交
+        dataFormSubmit(type) {
+            this.dataFormSubmitType = type ? type : 0
+            this.$refs['formRef'].validate((valid) => {
+                if (valid) {
+                    this.request()
+                }
+            })
+        },
+        request() {
+            let _data = this.dataList()
+            if (this.dataFormSubmitType == 2) {
+                this.continueBtnLoading = true
+            } else {
+                this.btnLoading = true
+            }
+            if (!this.dataForm.id) {
+                request({
+                    url: '/api/mp/SearchJump',
+                    method: 'post',
+                    data: _data
+                }).then((res) => {
+                    this.$message({
+                        message: res.msg,
+                        type: 'success',
+                        duration: 1000,
+                        onClose: () => {
+                            if (this.dataFormSubmitType == 2) {
+                                this.$nextTick(() => {
+                                    this.clearData()
+                                    this.initDefaultData()
+                                })
+                                this.continueBtnLoading = false
+                                return
+                            }
+                            this.visible = false
+                            this.btnLoading = false
+                            this.$emit('refresh', true)
+                        }
+                    })
+                }).catch(() => {
+                    this.btnLoading = false
+                    this.continueBtnLoading = false
+                })
+            } else {
+                request({
+                    url: '/api/mp/SearchJump/' + this.dataForm.id,
+                    method: 'PUT',
+                    data: _data
+                }).then((res) => {
+                    this.$message({
+                        message: res.msg,
+                        type: 'success',
+                        duration: 1000,
+                        onClose: () => {
+                            if (this.dataFormSubmitType == 2) return this.continueBtnLoading = false
+                            this.visible = false
+                            this.btnLoading = false
+                            this.$emit('refresh', true)
+                        }
+                    })
+                }).catch(() => {
+                    this.btnLoading = false
+                    this.continueBtnLoading = false
+                })
+            }
+        },
+        openSelectDialog(key, value) {
+            this.currTableConf = this.addTableConf[key + value]
+            this.currVmodel = key
+            this.selectDialogVisible = true
+            this.$nextTick(() => {
+                this.$refs.selectDialog.init()
+            })
+        },
+        addForSelect(data) {
+            this.closeForSelect()
+            for (let i = 0; i < data.length; i++) {
+                let t = data[i]
+                if (this['get' + this.currVmodel]) {
+                    this['get' + this.currVmodel](t, true)
+                }
+            }
+        },
+        closeForSelect() {
+            this.selectDialogVisible = false
+        },
+        dateTime(timeRule, timeType, timeTarget, timeValueData, dataValue) {
+            let timeDataValue = null;
+            let timeValue = Number(timeValueData)
+            if (timeRule) {
+                if (timeType == 1) {
+                    timeDataValue = timeValue
+                } else if (timeType == 2) {
+                    timeDataValue = dataValue
+                } else if (timeType == 3) {
+                    timeDataValue = new Date().getTime()
+                } else if (timeType == 4) {
+                    let previousDate = '';
+                    if (timeTarget == 1 || timeTarget == 2) {
+                        previousDate = getDateDay(timeTarget, timeType, timeValue)
+                        timeDataValue = new Date(previousDate).getTime()
+                    } else if (timeTarget == 3) {
+                        previousDate = getBeforeData(timeValue)
+                        timeDataValue = new Date(previousDate).getTime()
+                    } else {
+                        timeDataValue = getBeforeTime(timeTarget, timeValue).getTime()
+                    }
+                } else if (timeType == 5) {
+                    let previousDate = '';
+                    if (timeTarget == 1 || timeTarget == 2) {
+                        previousDate = getDateDay(timeTarget, timeType, timeValue)
+                        timeDataValue = new Date(previousDate).getTime()
+                    } else if (timeTarget == 3) {
+                        previousDate = getLaterData(timeValue)
+                        timeDataValue = new Date(previousDate).getTime()
+                    } else {
+                        timeDataValue = getLaterTime(timeTarget, timeValue).getTime()
+                    }
+                }
+            }
+            return timeDataValue;
+        },
+        time(timeRule, timeType, timeTarget, timeValue, formatType, dataValue) {
+            let format = formatType == 'HH:mm' ? 'HH:mm:00' : formatType
+            let timeDataValue = null
+            if (timeRule) {
+                if (timeType == 1) {
+                    timeDataValue = timeValue || '00:00:00'
+                    if (timeDataValue.split(':').length == 3) {
+                        timeDataValue = timeDataValue
+                    } else {
+                        timeDataValue = timeDataValue + ':00'
+                    }
+                } else if (timeType == 2) {
+                    timeDataValue = dataValue
+                } else if (timeType == 3) {
+                    timeDataValue = this.jnpf.toDate(new Date(), format)
+                } else if (timeType == 4) {
+                    let previousDate = '';
+                    previousDate = getBeforeTime(timeTarget, timeValue)
+                    timeDataValue = this.jnpf.toDate(previousDate, format)
+                } else if (timeType == 5) {
+                    let previousDate = '';
+                    previousDate = getLaterTime(timeTarget, timeValue)
+                    timeDataValue = this.jnpf.toDate(previousDate, format)
+                }
+            }
+            return timeDataValue;
+        },
+        dataList() {
+            var _data = this.dataForm;
+            return _data;
+        },
+        dataInfo(dataAll) {
+            let _dataAll = dataAll
+            this.dataForm = _dataAll
+            this.isEdit = true
+            this.dataAll()
+            this.childIndex = -1
+        },
+    },
+}
+
+</script>

+ 513 - 0
src/views/governmentCloud/searchjump/index.vue

@@ -0,0 +1,513 @@
+<template>
+    <div class="JNPF-common-layout">
+        <div class="JNPF-common-layout-center">
+            <el-row class="JNPF-common-search-box" :gutter="16">
+                <el-form @submit.native.prevent>
+                    <el-col :span="6">
+                        <el-form-item label="标题">
+                            <el-input v-model="query.title" placeholder="请输入" clearable> </el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item>
+                            <el-button type="primary" icon="el-icon-search"
+                                @click="search()">查询</el-button>
+                            <el-button icon="el-icon-refresh-right" @click="reset()">重置</el-button>
+                        </el-form-item>
+                    </el-col>
+                </el-form>
+            </el-row>
+            <div class="JNPF-common-layout-main JNPF-flex-main">
+                <div class="JNPF-common-head">
+                    <div>
+                        <el-button type="primary" icon="icon-ym icon-ym-btn-add"
+                            @click="addOrUpdateHandle()">新增
+                        </el-button>
+                    </div>
+                    <div class="JNPF-common-head-right">
+                        <el-tooltip content="高级查询" placement="top" v-if="true">
+                            <el-link icon="icon-ym icon-ym-filter JNPF-common-head-icon"
+                                :underline="false" @click="openSuperQuery()" />
+                        </el-tooltip>
+                        <el-tooltip effect="dark" :content="$t('common.refresh')" placement="top">
+                            <el-link icon="icon-ym icon-ym-Refresh JNPF-common-head-icon"
+                                :underline="false" @click="initData()" />
+                        </el-tooltip>
+                    </div>
+                </div>
+                <JNPF-table v-loading="listLoading" :data="list" @sort-change='handleTableSort'
+                    :header-cell-class-name="handleHeaderClass" :has-c="hasBatchBtn"
+                    :span-method="arraySpanMethod">
+                    <el-table-column prop="title" label="标题" align="left" show-overflow-tooltip>
+                        <template slot-scope="scope">
+                            <JnpfInput v-model="scope.row.title" detailed showOverflow />
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="url" label="跳转路径" align="left" show-overflow-tooltip>
+                        <template slot-scope="scope">
+                            <JnpfInput v-model="scope.row.url" detailed showOverflow />
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="count" label="浏览量" align="left" show-overflow-tooltip>
+                        <template slot-scope="scope">
+                            <JnpfInput v-model="scope.row.count" detailed showOverflow />
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="createTime" label="创建时间" align="left"
+                        show-overflow-tooltip>
+                    </el-table-column>
+                    <el-table-column prop="desctiption" label="描述" align="left"
+                        show-overflow-tooltip>
+                    </el-table-column>
+                    <el-table-column label="操作" fixed="right" width="150">
+                        <template slot-scope="scope">
+                            <el-button type="text" @click="addOrUpdateHandle(scope.row)">编辑
+                            </el-button>
+                            <el-button type="text" class="JNPF-table-delBtn"
+                                @click="handleDel(scope.row.id)">删除
+                            </el-button>
+                            <el-button type="text" @click="goDetail(scope.row.id)">详情
+                            </el-button>
+                        </template>
+                    </el-table-column>
+                </JNPF-table>
+                <pagination :total="total" :page.sync="listQuery.currentPage"
+                    :limit.sync="listQuery.pageSize" @pagination="initData" />
+            </div>
+        </div>
+        <JNPF-Form v-if="formVisible" ref="JNPFForm" @refresh="refresh" />
+        <ExportBox v-if="exportBoxVisible" ref="ExportBox" @download="download" />
+
+        <ImportBox v-if="uploadBoxVisible" ref="UploadBox" @refresh="initData" />
+        <Detail v-if="detailVisible" ref="Detail" @refresh="detailVisible=false" />
+        <ToFormDetail v-if="toFormDetailVisible" ref="toFormDetail"
+            @close="toFormDetailVisible = false" />
+        <SuperQuery v-if="superQueryVisible" ref="SuperQuery" :columnOptions="superQueryJson"
+            @superQuery="superQuery" />
+    </div>
+</template>
+
+<script>
+import request from '@/utils/request'
+import { mapGetters } from "vuex";
+import { getDictionaryDataSelector } from '@/api/systemData/dictionary'
+import JNPFForm from './form'
+import Detail from './Detail'
+import ExportBox from '@/components/ExportBox'
+import ToFormDetail from '@/views/basic/dynamicModel/list/detail'
+import { getDataInterfaceRes } from '@/api/systemData/dataInterface'
+import { getConfigData } from '@/api/onlineDev/visualDev'
+import { getDefaultCurrentValueUserIdAsync } from '@/api/permission/user'
+import { getDefaultCurrentValueDepartmentIdAsync } from '@/api/permission/organize'
+import columnList from './columnList'
+import { thousandsFormat } from "@/components/Generator/utils/index"
+import SuperQuery from '@/components/SuperQuery'
+import superQueryJson from './superQueryJson'
+import { noGroupList } from '@/components/Generator/generator/comConfig'
+
+export default {
+    components: {
+        JNPFForm,
+        Detail,
+        ExportBox, ToFormDetail, SuperQuery
+    },
+    data() {
+        return {
+
+            keyword: '',
+            expandsTree: true,
+            refreshTree: true,
+            toFormDetailVisible: false,
+            hasBatchBtn: false,
+            expandObj: {},
+            columnOptions: [],
+            mergeList: [],
+            exportList: [],
+            columnList,
+
+            superQueryVisible: false,
+            superQueryJson,
+            uploadBoxVisible: false,
+            detailVisible: false,
+            query: {
+                title: undefined,
+            },
+            defListQuery: {
+                sort: 'desc',
+                sidx: '',
+            },
+            //排序默认值
+            defaultSortConfig: [],
+            treeProps: {
+                children: 'children',
+                label: 'fullName',
+                value: 'id',
+                isLeaf: 'isLeaf'
+            },
+            list: [],
+            listLoading: true,
+            multipleSelection: [],
+            total: 0,
+            queryData: {},
+            listQuery: {
+                superQueryJson: '',
+                currentPage: 1,
+                pageSize: 20,
+                sort: "",
+                sidx: "",
+            },
+            //多列排序
+            ordersList: [],
+            formVisible: false,
+            flowVisible: false,
+            flowListVisible: false,
+            flowList: [],
+            exportBoxVisible: false,
+            interfaceRes: {
+            },
+            //掩码配置
+            maskConfig: {
+                title: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                url: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                keywords: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+                count: { "prefixType": 1, "useUnrealMask": false, "maskType": 1, "unrealMaskLength": 1, "prefixLimit": 0, "suffixLimit": 0, "filler": "*", "prefixSpecifyChar": "", "suffixType": 1, "ignoreChar": "", "suffixSpecifyChar": "" },
+            },
+        }
+    },
+    computed: {
+        ...mapGetters(['userInfo']),
+        menuId() {
+            return this.$route.meta.modelId || ''
+        }
+    },
+    created() {
+        this.getColumnList(),
+            this.initSearchDataAndListData()
+        this.queryData = JSON.parse(JSON.stringify(this.query))
+        this.getHasBatchBtn();
+        //排序默认值
+        this.setDefaultQuery(this.defaultSortConfig);
+    },
+    methods: {
+        getHasBatchBtn() {
+            let btnsList = []
+            this.hasBatchBtn = btnsList.some(o => ['batchRemove', 'batchPrint', 'download'].includes(o))
+        },
+
+        treeRefresh() {
+            this.keyword = ''
+            this.treeActiveId = ''
+            this.leftTreeActiveInfo = {}
+            this.$refs.treeBox.setCurrentKey(null)
+            this.getTreeView()
+        },
+
+        toDetail(defaultValue, modelId) {
+            if (!defaultValue) return
+            getConfigData(modelId).then(res => {
+                if (!res.data || !res.data.formData) return
+                let formData = JSON.parse(res.data.formData)
+                formData.popupType = 'general'
+                this.toFormDetailVisible = true
+                this.$nextTick(() => {
+                    this.$refs.toFormDetail.init(formData, modelId, defaultValue)
+                })
+            })
+        },
+        toggleTreeExpand(expands) {
+            this.refreshTree = false
+            this.expandsTree = expands
+            this.$nextTick(() => {
+                this.refreshTree = true
+                this.$nextTick(() => {
+                    this.$refs.treeBox.setCurrentKey(null)
+                })
+            })
+        },
+        filterNode(value, data) {
+            if (!value) return true;
+            return data[this.treeProps.label].indexOf(value) !== -1;
+        },
+        loadNode(node, resolve) {
+            const nodeData = node.data
+            const config = {
+                treeInterfaceId: "",
+                treeTemplateJson: []
+            }
+            if (config.treeInterfaceId) {
+                //这里是为了拿到参数中关联的字段的值,后端自行拿
+                if (config.treeTemplateJson && config.treeTemplateJson.length) {
+                    for (let i = 0; i < config.treeTemplateJson.length; i++) {
+                        const element = config.treeTemplateJson[i];
+                        element.defaultValue = nodeData[element.relationField] || ''
+                    }
+                }
+                //参数
+                let query = {
+                    paramList: config.treeTemplateJson || [],
+                }
+                //接口
+                getDataInterfaceRes(config.treeInterfaceId, query).then(res => {
+                    let data = res.data
+                    if (Array.isArray(data)) {
+                        resolve(data);
+                    } else {
+                        resolve([]);
+                    }
+                })
+            }
+        },
+        getColumnList() {
+            // 没有开启权限
+            this.columnOptions = this.transformColumnList(this.columnList)
+        },
+        transformColumnList(columnList) {
+            let list = []
+            for (let i = 0; i < columnList.length; i++) {
+                const e = columnList[i];
+                if (!e.prop.includes('-')) {
+                    list.push(e)
+                } else {
+                    let prop = e.prop.split('-')[0]
+                    let label = e.label.split('-')[0]
+                    let vModel = e.prop.split('-')[1]
+                    let newItem = {
+                        align: "center",
+                        jnpfKey: "table",
+                        prop,
+                        label,
+                        children: []
+                    }
+                    e.vModel = vModel
+                    if (!this.expandObj.hasOwnProperty(`${prop}Expand`)) this.$set(this.expandObj, `${prop}Expand`, false)
+                    if (!list.some(o => o.prop === prop)) list.push(newItem)
+                    for (let i = 0; i < list.length; i++) {
+                        if (list[i].prop === prop) {
+                            list[i].children.push(e)
+                            break
+                        }
+                    }
+                }
+            }
+            this.getMergeList(list)
+            this.getExportList(list)
+            return list
+        },
+        arraySpanMethod({ column }) {
+            for (let i = 0; i < this.mergeList.length; i++) {
+                if (column.property == this.mergeList[i].prop) {
+                    return [this.mergeList[i].rowspan, this.mergeList[i].colspan]
+                }
+            }
+        },
+        getMergeList(list) {
+            let newList = JSON.parse(JSON.stringify(list))
+            newList.forEach(item => {
+                if (item.children && item.children.length) {
+                    let child = {
+                        prop: item.prop + '-child-first'
+                    }
+                    item.children.unshift(child)
+                }
+            })
+            newList.forEach(item => {
+                if (item.children && item.children.length) {
+                    item.children.forEach((child, index) => {
+                        if (index == 0) {
+                            this.mergeList.push({
+                                prop: child.prop,
+                                rowspan: 1,
+                                colspan: item.children.length
+                            })
+                        } else {
+                            this.mergeList.push({
+                                prop: child.prop,
+                                rowspan: 0,
+                                colspan: 0
+                            })
+                        }
+                    })
+                } else {
+                    this.mergeList.push({
+                        prop: item.prop,
+                        rowspan: 1,
+                        colspan: 1
+                    })
+                }
+            })
+        },
+        getExportList(list) {
+            let exportList = []
+            for (let i = 0; i < list.length; i++) {
+                if (list[i].jnpfKey === 'table') {
+                    for (let j = 0; j < list[i].children.length; j++) {
+                        exportList.push(list[i].children[j])
+                    }
+                } else {
+                    exportList.push(list[i])
+                }
+            }
+            this.exportList = exportList.filter(o => !noGroupList.includes(o.__config__.jnpfKey))
+        },
+        goDetail(id) {
+            this.detailVisible = true
+            this.$nextTick(() => {
+                this.$refs.Detail.init(id)
+            })
+        },
+        sortChange({ column, prop, order }) {
+            this.listQuery.sort = order == 'ascending' ? 'asc' : 'desc'
+            this.listQuery.sidx = !order ? '' : prop
+            this.initData()
+        },
+        async initSearchDataAndListData() {
+            await this.initSearchData()
+            this.initData()
+        },
+        //初始化查询的默认数据
+        async initSearchData() {
+        },
+        initData() {
+            // this.queryData = JSON.parse(JSON.stringify(this.query))导致重置失效
+            this.listLoading = true;
+            let _query = {
+                ...this.listQuery,
+                ...this.query,
+                ...this.defListQuery,
+                keyword: this.keyword,
+                dataType: 0,
+                menuId: this.menuId,
+                moduleId: '613365829009945733',
+                type: 1,
+            };
+            request({
+                url: `/api/mp/SearchJump/getList`,
+                method: 'post',
+                data: _query
+            }).then(res => {
+                var _list = [];
+                for (let i = 0; i < res.data.list.length; i++) {
+                    let _data = res.data.list[i];
+                    _list.push(_data)
+                }
+                this.list = _list.map(o => ({
+                    ...o,
+                    ...this.expandObj,
+                }))
+                this.total = res.data.pagination.total
+                this.listLoading = false
+            })
+        },
+        handleDel(id) {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                type: 'warning'
+            }).then(() => {
+                request({
+                    url: `/api/mp/SearchJump/${id}`,
+                    method: 'DELETE'
+                }).then(res => {
+                    this.$message({
+                        type: 'success',
+                        message: res.msg,
+                        onClose: () => {
+                            this.initData()
+                        }
+                    });
+                })
+            }).catch(() => {
+            });
+        },
+        handelUpload() {
+            this.uploadBoxVisible = true
+            this.$nextTick(() => {
+                this.$refs.UploadBox.init("", "mp/SearchJump", 0, this.flowList)
+            })
+        },
+        openSuperQuery() {
+            this.superQueryVisible = true
+            this.$nextTick(() => {
+                this.$refs.SuperQuery.init()
+            })
+        },
+        superQuery(queryJson) {
+            this.listQuery.superQueryJson = queryJson
+            this.listQuery.currentPage = 1
+            this.initData()
+        },
+        addOrUpdateHandle(row, isDetail) {
+            let id = row ? row.id : ""
+            this.formVisible = true
+            if (!this.treeActiveId) {
+                this.leftTreeActiveInfo = {}
+            }
+            this.$nextTick(() => {
+                this.$refs.JNPFForm.init(id, isDetail, this.list, this.leftTreeActiveInfo)
+            })
+        },
+        exportData() {
+            this.exportBoxVisible = true
+            this.$nextTick(() => {
+                this.$refs.ExportBox.init(this.exportList, this.multipleSelection)
+            })
+        },
+        download(data) {
+            let query = { ...data, ...this.listQuery, ...this.query, menuId: this.menuId }
+            request({
+                url: `/api/mp/SearchJump/Actions/Export`,
+                method: 'post',
+                data: query
+            }).then(res => {
+                if (!res.data.url) return
+                this.jnpf.downloadFile(res.data.url)
+                this.$refs.ExportBox.visible = false
+                this.exportBoxVisible = false
+            })
+        },
+        search() {
+            this.listQuery.currentPage = 1
+            this.listQuery.pageSize = 20
+            this.initData()
+        },
+        refresh(isrRefresh) {
+            this.formVisible = false
+            if (isrRefresh) this.reset()
+        },
+        reset() {
+            this.query = JSON.parse(JSON.stringify(this.queryData))
+            this.search()
+        },
+        colseFlow(isrRefresh) {
+            this.flowVisible = false
+            if (isrRefresh) this.reset()
+        },
+
+        //以下排序相关方法
+        setDefaultQuery(defaultSortList) {
+            const defaultSortConfig = (defaultSortList || []).map(o =>
+                (o.sort === 'desc' ? '-' : '') + o.field);
+            this.defListQuery.sidx = defaultSortConfig.join(',')
+        },
+        handleHeaderClass({ column }) {
+            column.order = column.multiOrder
+        },
+        handleTableSort({ column }) {
+            if (column.sortable !== 'custom') return
+            column.multiOrder = column.multiOrder === 'descending' ? 'ascending' : column.multiOrder ? '' : 'descending';
+            this.handleOrderChange(column.property, column.multiOrder)
+        },
+        handleOrderChange(orderColumn, orderState) {
+            let index = this.ordersList.findIndex(e => e.field === orderColumn);
+            let sort = orderState === 'ascending' ? 'asc' : orderState === 'descending' ? 'desc' : '';
+            if (index > -1) {
+                this.ordersList[index].sort = orderState;
+            } else {
+                this.ordersList.push({ field: orderColumn, sort });
+            }
+            this.ordersList = this.ordersList.filter(e => e.sort);
+            this.ordersList.length ? this.setDefaultQuery(this.ordersList) : this.setDefaultQuery(this.defaultSortConfig)
+            this.initData()
+        },
+        //以上排序相关方法
+    }
+}
+</script>

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
src/views/governmentCloud/searchjump/superQueryJson.js


+ 71 - 6
src/views/permission/user/TagForm.vue

@@ -3,10 +3,13 @@
         :visible.sync="visible" lock-scroll class="JNPF-dialog JNPF-dialog_center" width="600px">
         <el-form ref="dataForm" v-loading="formLoading" :model="dataForm" :rules="dataRule"
             label-width="90px">
-            <el-form-item label="标签" prop="type">
-                <el-select v-model="dataForm.type" placeholder="请选择标签" filterable>
-                    <el-option v-for="item in typeOptions" :key="item.enCode" :label="item.fullName"
-                        :value="item.enCode">
+            <el-form-item label="标签" prop="labelId">
+                <el-select v-model="dataForm.labelId" multiple placeholder="请选择标签" filterable>
+                    <el-option v-for="(item,index) in typeOptions" :key="index"
+                        :label="item.labName" :value="item.id">
+                        <span class="tag" :style="{ background: item.color, color: '#fff' }">
+                            {{item.labName}}
+                        </span>
                     </el-option>
                 </el-select>
             </el-form-item>
@@ -22,6 +25,9 @@
 <script>
 import { createPosition, updatePosition, getPositionInfo } from '@/api/permission/position'
 
+import { LabelManagementRelation } from '@/api/permission/user'
+import request from '@/utils/request'
+
 export default {
     data() {
         return {
@@ -30,8 +36,9 @@ export default {
             btnLoading: false,
             typeOptions: [],
             dataForm: {
-                type: '',
+                labelId: [],
             },
+            userId: null,
             organizeIdTree: [],
             dataRule: {
                 type: [
@@ -42,9 +49,52 @@ export default {
     },
     methods: {
         init(row) {
+            this.userId = row.id
+
+
+
             this.visible = true
             this.organizeIdTree = []
             this.formLoading = true
+
+
+            let _query = {
+                ...this.listQuery,
+                ...this.query,
+                ...this.defListQuery,
+                keyword: this.keyword,
+                dataType: 0,
+                menuId: this.menuId,
+                moduleId: '610009872183864709',
+                type: 1,
+            };
+            request({
+                url: `/api/mp/LabelManagement/getList`,
+                method: 'post',
+                data: _query
+            }).then(res => {
+                var _list = [];
+                for (let i = 0; i < res.data.list.length; i++) {
+                    let _data = res.data.list[i];
+                    _list.push(_data)
+                }
+                this.typeOptions = _list.map(o => ({
+                    ...o,
+                    ...this.expandObj,
+                }))
+
+                this.dataForm.labelId = []
+                row.label.forEach(item => {
+                    this.typeOptions.forEach(item2 => {
+                        if (item.labName == item2.labName) {
+                            this.dataForm.labelId.push(item2.id)
+                        }
+                    })
+                })
+
+            })
+
+
             this.$nextTick(() => {
                 this.$refs['dataForm'].resetFields()
                 // 获取岗位类型
@@ -60,7 +110,14 @@ export default {
                 if (valid) {
                     this.btnLoading = true
                     const formMethod = this.dataForm.id ? updatePosition : createPosition
-                    formMethod(this.dataForm).then(res => {
+
+
+                    let params = {
+                        labelId: this.dataForm.labelId,
+                        userId: this.userId
+                    }
+
+                    LabelManagementRelation(params).then(res => {
                         this.$message({
                             message: res.msg,
                             type: 'success',
@@ -80,3 +137,11 @@ export default {
     }
 }
 </script>
+
+
+<style scoped>
+.tag {
+    padding: 5px 10px;
+    border-radius: 4px;
+}
+</style>

+ 1 - 1
src/views/permission/user/index.vue

@@ -174,7 +174,7 @@
         <WorkHandoverForm v-if="workHandoverVisible" ref="WorkHandoverForm" @complete="initData" />
 
         <!--分配标签弹框  -->
-        <TagForm v-if="tagFormVisible" ref="TagForm" />
+        <TagForm @refreshDataList="initData" v-if="tagFormVisible" ref="TagForm" />
 
         <CheckPermissions v-if="checkPermissionsVisible" ref="checkPermissions"
             @close="checkPermissionsVisible=false" />

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor