zhuxinbo hace 4 años
padre
commit
9a5e249e97

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 18943
package-lock.json


+ 1 - 1
package.json

@@ -3,7 +3,7 @@
   "version": "2.0.2",
   "private": true,
   "scripts": {
-    "serve": "vue-cli-service serve --open",
+    "serve": "vue-cli-service serve --open --max_old_space_size=10048",
     "build": "vue-cli-service build",
     "lint": "vue-cli-service lint",
     "test:unit": "vue-cli-service test:unit",

+ 18 - 0
src/views/modules/Statistics/refuseDataCreat.vue

@@ -20,6 +20,17 @@
             <a-button type="primary" style="margin-left:10px" @click="clickAgain" v-if="selectedRowKeys.length>0"
               :loading="loadingList">一键重提
             </a-button>
+            <a-radio-group v-model="putStatus" button-style="solid" style="margin-left:10px" @change="changeSlide">
+              <a-radio-button value="0">
+                全部
+              </a-radio-button>
+              <a-radio-button value="1">
+                开启
+              </a-radio-button>
+              <a-radio-button value="2">
+                已关闭
+              </a-radio-button>
+            </a-radio-group>
             <a-button type="primary" style="position:absolute;right:0" @click="syncCreative"
               :loading="loadingSyncCreative">
               同步创意
@@ -256,6 +267,7 @@
 
     data: function () {
       return {
+        putStatus: '0',
         title: '被拒创意列表',
         visibleFail: false,
         visibleAgain: false,
@@ -356,6 +368,9 @@
       }
     },
     methods: {
+      changeSlide() {
+        this.addUser()
+      },
       // 广告语改变
       DescriptionChange(e){
         console.log(e.target.value);
@@ -594,12 +609,15 @@
       addUser() {
         this.loading = true
         var params = {}
+        this.selectedRowKeys = []
+        this.selectedRowKeysValue = []
         //  localStorage.setItem('accountIdCreat', record.campaignId)
         // localStorage.setItem('accountIdCreatNow', this.appId)
         params.accountId = localStorage.getItem('accountIdCreatNow')
         params.campaignId = localStorage.getItem('accountIdCreat')
         params.pageSize = this.ipagination.pageSize
         params.pageNo = this.ipagination.current
+        params.putStatus = this.putStatus == "0" ? null : this.putStatus
         getAction('/MaterialRefuse/getRefuseCreative', params).then(res => {
           if (res.code == 0) {
             this.dataList = res.result.records.map((v, index) => {

+ 28 - 10
src/views/modules/Statistics/refuseDataCreatNew.vue

@@ -20,6 +20,17 @@
             <a-button type="primary" style="margin-left:10px" @click="clickAgain" v-if="selectedRowKeys.length>0"
               :loading="loadingList">一键重提
             </a-button>
+            <a-radio-group v-model="putStatus" button-style="solid" style="margin-left:10px" @change="changeSlide">
+              <a-radio-button value="0">
+                全部
+              </a-radio-button>
+              <a-radio-button value="1">
+                开启
+              </a-radio-button>
+              <a-radio-button value="2">
+                已关闭
+              </a-radio-button>
+            </a-radio-group>
             <a-button type="primary" style="position:absolute;right:0" @click="syncCreative"
               :loading="loadingSyncCreative">
               同步创意
@@ -59,7 +70,7 @@
       <a-textarea v-model="editWord" autosize />
     </a-modal>
     <a-modal title="一键重提" @cancel="handleClose" :visible="visibleAgain" @ok="handleOkAgain"
-      :confirmLoading="againLoading" :width="650" >
+      :confirmLoading="againLoading" :width="650">
       <a-form :form="form">
         <a-form-item label="是否修改" :labelCol="{ lg: { span: 4 }, sm: { span: 6 } }"
           :wrapperCol="{ lg: { span: 18 }, sm: { span: 18 } }">
@@ -256,6 +267,7 @@
 
     data: function () {
       return {
+        putStatus: '0',
         title: '被拒创意列表',
         visibleFail: false,
         visibleAgain: false,
@@ -303,7 +315,7 @@
         dataOne: [],
         value: '',
 
-        updateDescription:'',//广告语的字符
+        updateDescription: '', //广告语的字符
       }
     },
     filters: {
@@ -357,11 +369,14 @@
       }
     },
     methods: {
+      changeSlide() {
+          this.addUser()
+      },
       // 广告语改变
-      DescriptionChange(e){
+      DescriptionChange(e) {
         console.log(e.target.value);
-        if(e.target.value.length>30){
-          
+        if (e.target.value.length > 30) {
+
           // this.updateDescription=e.target.value.substr(0,30);
           // console.log(this.updateDescription)
           this.$message.error('广告语最多30字!')
@@ -381,7 +396,7 @@
         // this.form.setFieldsValue({
         //   updateDescription: item.title
         // })
-        this.updateDescription=item.title;
+        this.updateDescription = item.title;
         this.cunTitleVisible = false;
         this.cunTitleList = []
       },
@@ -390,7 +405,7 @@
         // this.form.setFieldsValue({
         //   updateDescription: item
         // })
-        this.updateDescription=item;
+        this.updateDescription = item;
         this.titleVisible = false;
         this.dataOne = []
         this.value = ""
@@ -522,13 +537,13 @@
         //    this.selectedRowKeysValue.length > 0 ? this.selectedRowKeysValue :
       },
       handleOkAgain(e) {
-        if(this.updateDescription.length>30&&this.getData('type')==1){
+        if (this.updateDescription.length > 30 && this.getData('type') == 1) {
           this.$message.error('广告语最多30个字,请修正后再次提交!')
-        }else{
+        } else {
           this.againLoading = true
           this.form.validateFields((err, values) => {
             if (!err) {
-              values.updateDescription=this.updateDescription;
+              values.updateDescription = this.updateDescription;
               var params = {
 
                 ...values,
@@ -592,12 +607,15 @@
       addUser() {
         this.loading = true
         var params = {}
+        this.selectedRowKeys = []
+        this.selectedRowKeysValue = []
         //  localStorage.setItem('accountIdCreat', record.campaignId)
         // localStorage.setItem('accountIdCreatNow', this.appId)
         params.accountId = this.appId
         // params.campaignId = localStorage.getItem('accountIdCreat')
         params.pageSize = this.ipagination.pageSize
         params.pageNo = this.ipagination.current
+        params.putStatus = this.putStatus == "0" ? null : this.putStatus
         getAction('/MaterialRefuse/getRefuseCreative', params).then(res => {
           if (res.code == 0) {
             this.dataList = res.result.records.map((v, index) => {

+ 0 - 2
src/views/modules/advertiser/ProjectMemberList.vue

@@ -182,7 +182,6 @@
 </template>
 
 <script>
-  import ProjectMemberModal from './modules/ProjectMemberModal'
   import {
     httpAction,
     getAction,
@@ -202,7 +201,6 @@
   export default {
     name: 'ProjectMemberList',
     components: {
-      ProjectMemberModal,
       JSelectUserByDep
     },
     mixins: [JeecgListMixin],

+ 0 - 31
src/views/modules/advertiser/modules/ProjectMemberModal.vue

@@ -83,38 +83,7 @@
       handleOk () {
         const that = this;
         // 触发表单验证
-        this.form.validateFields((err, values) => {
-          if (!err) {
-            that.confirmLoading = true;
-            let httpurl = '';
-            let method = '';
-            if(!this.model.id){
-              httpurl+=this.url.add;
-              method = 'post';
-            }else{
-              httpurl+=this.url.edit;
-               method = 'put';
-            }
-            let formData = Object.assign(this.model, values);
-            //时间格式化
-            
-            console.log(formData)
-            httpAction(httpurl,formData,method).then((res)=>{
-              if(res.success){
-                that.$message.success(res.message);
-                that.$emit('ok');
-              }else{
-                that.$message.warning(res.message);
-              }
-            }).finally(() => {
-              that.confirmLoading = false;
-              that.close();
-            })
 
-
-
-          }
-        })
       },
       handleCancel () {
         this.close()

+ 233 - 598
src/views/modules/material/labelMaterial.vue

@@ -1,116 +1,111 @@
-<template xmlns:background-color="http://www.w3.org/1999/xhtml">
-  <a-row :gutter="10">
-    <a-col :md="12" :sm="24">
-      <a-card :bordered="false">
+<template>
+  <a-card :bordered="false">
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline">
+        <a-row :gutter="24">
+          <a-col :md="6" :sm="6">
+            <a-form-item label="标签名称">
+              <a-input placeholder="请输入标签名称" v-model="queryParam.tagName"></a-input>
+            </a-form-item>
+          </a-col>
+          <!--  -->
+          <a-col :md="6" :sm="6">
+            <a-form-item label="标签分类">
+              <a-select v-model="queryParam.tagCategoryId" placeholder="请选择">
+                <a-select-option value="1">形式</a-select-option>
+                <a-select-option value="2">基调</a-select-option>
+                <a-select-option value="3">内容</a-select-option>
+                <a-select-option value="4">场景</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="6">
+            <a-form-item label="标签等级">
+              <a-select v-model="queryParam.level" placeholder="请选择">
+                <a-select-option value="1">一级标签</a-select-option>
+                <a-select-option value="2">二级标签</a-select-option>
+                <a-select-option value="3">三级标签</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
 
-        <!-- 按钮操作区域 -->
-        <a-row style="margin-left: 14px">
-          <a-button @click="handleAdd(1)" type="primary">添加标签</a-button>
-          <a-button @click="handleAdd(2)" type="primary" style="margin-left: 14px">添加下级</a-button>
-          <!-- <a-button type="primary" icon="download" @click="handleExportXls('部门信息')">导出</a-button>
-          <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
-            :action="importExcelUrl" @change="handleImportExcel">
-            <a-button type="primary" icon="import">导入</a-button>
-          </a-upload> -->
-          <!-- <a-button title="删除多条数据" @click="batchDel" type="default">批量删除</a-button> -->
-          <!--<a-button @click="refresh" type="default" icon="reload" :loading="loading">刷新</a-button>-->
-        </a-row>
-        <div style="background: #fff;padding-left:16px;height: 100%; margin-top: 5px">
-          <a-alert type="info" :showIcon="true">
-            <div slot="message">
-              当前选择:<span v-if="this.currSelected.title">{{ getCurrSelectedTitle() }}</span>
-              <a v-if="this.currSelected.title" style="margin-left: 10px" @click="onClearSelected">取消选择</a>
-            </div>
-          </a-alert>
-          <a-input-search @search="onSearch" style="width:100%;margin-top: 10px" placeholder="请输入标签名称" />
-          <!-- {{departValue}}
-          <el-cascader placeholder="试试搜索:指南" :options="departTree"
-            :props="{ multiple: true,value:'id',label:'tagName',emitPath:false}" filterable v-model="departValue">
-          </el-cascader> -->
-          <!-- 树-->
-          <a-col :md="10" :sm="24">
-            <template>
-              <a-dropdown :trigger="[this.dropTrigger]" @visibleChange="dropStatus">
-                <span>
-                  <a-tree checkable multiple @select="onSelect" @check="onCheck" @rightClick="rightHandle"
-                    :selectedKeys="selectedKeys" :checkedKeys="checkedKeys" :treeData="departTree"
-                    :checkStrictly="checkStrictly" :expandedKeys="iExpandedKeys" :autoExpandParent="autoExpandParent"
-                    @expand="onExpand" />
-                </span>
-                <!--新增右键点击事件,和增加添加和删除功能-->
-                <a-menu slot="overlay">
-                  <a-menu-item @click="handleAdd(3)" key="1">添加</a-menu-item>
-                  <a-menu-item @click="handleDelete" key="2">删除</a-menu-item>
-                  <a-menu-item @click="closeDrop" key="3">取消</a-menu-item>
-                </a-menu>
-              </a-dropdown>
-            </template>
+          <a-col :md="6" :sm="6">
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+            </span>
           </a-col>
-        </div>
-      </a-card>
-      <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
-      <div class="drawer-bootom-button">
-        <a-dropdown :trigger="['click']" placement="topCenter">
-          <a-menu slot="overlay">
-            <a-menu-item key="1" @click="switchCheckStrictly(1)">父子关联</a-menu-item>
-            <a-menu-item key="2" @click="switchCheckStrictly(2)">取消关联</a-menu-item>
-            <a-menu-item key="3" @click="checkALL">全部勾选</a-menu-item>
-            <a-menu-item key="4" @click="cancelCheckALL">取消全选</a-menu-item>
-            <a-menu-item key="5" @click="expandAll">展开所有</a-menu-item>
-            <a-menu-item key="6" @click="closeAll">合并所有</a-menu-item>
-          </a-menu>
-          <a-button>
-            树操作
-            <a-icon type="up" />
-          </a-button>
-        </a-dropdown>
-      </div>
-      <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
-    </a-col>
-    <a-col :md="12" :sm="24">
-      <a-tabs defaultActiveKey="1">
-        <a-tab-pane tab="基本信息" key="1">
-          <a-card :bordered="false" v-if="selectedKeys.length>0">
-            <a-form :form="form">
-              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签名称">
-                <a-input placeholder="请输入标签名称" v-decorator="['tagName', validatorRules.departName ]" />
-              </a-form-item>
-              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="上级标签">
-                <a-tree-select style="width:100%" :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
-                  :treeData="treeData" :disabled="disable" v-model="model.parentId" placeholder="无">
-                </a-tree-select>
-              </a-form-item>
-              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签描述">
-                <a-input placeholder="请输入标签描述" v-decorator="['description' ]" />
-              </a-form-item>
-              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签编码">
-                <a-input disabled placeholder="请输入标签编码" v-decorator="['tagCode', validatorRules.orgCode ]" />
-              </a-form-item>
-            </a-form>
-            <div class="anty-form-btn">
-              <a-button @click="emptyCurrForm" type="default" htmlType="button" icon="sync">重置</a-button>
-              <a-button @click="submitCurrForm" type="primary" htmlType="button" icon="form">保存</a-button>
-            </div>
-          </a-card>
-          <a-card v-else>
-            <a-empty>
-              <span slot="description"> 请先选择一个标签! </span>
-            </a-empty>
-          </a-card>
-        </a-tab-pane>
-      </a-tabs>
+        </a-row>
+      </a-form>
+    </div>
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+      <!-- <a-button @click="batchDel" v-if="selectedRowKeys.length > 0" ghost type="primary" icon="delete">批量删除
+      </a-button> -->
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+
+      <a-table ref="table" size="middle" bordered rowKey="id" :columns="columns" :dataSource="dataSource"
+        :pagination="ipagination" :loading="loading" @change="handleTableChange">
+        <span slot="tagName" slot-scope="text,record">
+            <span v-if="record.status == 1">
+                {{text}}
+            </span>
+            <span v-else-if="record.status == 0" style="color:red">
+                {{text}}(未审核)
+            </span>
+            <span v-else>
+                {{text}}(已驳回)
+            </span>
+        </span>
+        <span slot="action" slot-scope="text, record">
+          <a href="javascript:;" @click="handleAddSub(record)" :disabled="record.level==3">添加下级</a>
+          <a-divider type="vertical" />
+
+          <a-dropdown>
+            <a class="ant-dropdown-link" @click="e => e.preventDefault()">
+              更多
+            </a>
+            <a-menu slot="overlay">
+              <a-menu-item key="0">
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDeleteElse(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+              <a-menu-item key="1"  :disabled="record.status==1">
+                <a href="javascript:;" @click="handleDeleteStatus(record.id,'1')" :disabled="record.status==1">
+                  通过</a>
+              </a-menu-item>
+              <a-menu-item key="3" :disabled="record.status==1">
+                <a style="margin-right:20px" @click="handleDeleteStatus(record.id,'2')" :disabled="record.status==1">驳回</a>
+
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+        <!-- 字符串超长截取省略号显示-->
+        <span slot="model" slot-scope="text">
+          <!-- <j-ellipsis :value="text" /> -->
+          <video :src="text" v-if="text" style="width: 100%" controls="controls">您的浏览器不支持 video 标签。</video>
+          <span v-else>-</span>
+        </span>
+      </a-table>
 
-    </a-col>
-    <depart-modal ref="departModal" @ok="loadTree"></depart-modal>
-  </a-row>
+    </div>
+    <!-- table区域-end -->
+
+    <permission-modal ref="modalForm" @ok="modalFormOk"></permission-modal>
+
+  </a-card>
 </template>
+
 <script>
-  import DepartModal from './modules/DepartModal'
-  import pick from 'lodash.pick'
+  import PermissionModal from './modules/DepartModal'
   import {
-    queryDepartTreeList,
-    searchByKeywords,
-    deleteByDepartId
+    getPermissionList
   } from '@/api/api'
   import {
     httpAction,
@@ -120,541 +115,181 @@
   import {
     JeecgListMixin
   } from '@/mixins/JeecgListMixin'
-  // 表头
+  //   import PermissionDataRuleList from './PermissionDataRuleList'
+  import JEllipsis from '@/components/jeecg/JEllipsis'
+
   const columns = [{
-      title: '机构名称',
-      dataIndex: 'departName'
+      title: "标签分类",
+      dataIndex: "tagCategoryId_dictText",
+      key: 'tagCategoryId_dictText',
+      align: 'center'
     },
     {
-      title: '机构类型',
+      title: '标签名称',
+      dataIndex: 'tagName',
+      key: 'tagName',
       align: 'center',
-      dataIndex: 'orgType'
-    },
-    {
-      title: '机构编码',
-      dataIndex: 'orgCode',
+      scopedSlots: {
+        customRender: 'tagName'
+      },
     },
+    /*{
+         title: '菜单类型',
+         dataIndex: 'menuType',
+         key: 'menuType',
+         customRender: function(text) {
+           if (text == 0) {
+             return '菜单'
+           } else if (text == 1) {
+             return '菜单'
+           } else if (text == 2) {
+             return '按钮/权限'
+           } else {
+             return text
+           }
+         }
+       },*/
     {
-      title: '手机号',
-      dataIndex: 'mobile'
+      title: '标签编码',
+      dataIndex: 'tagCode',
+      key: 'tagCode',
+      customRender: function (text) {
+        if (text == null) {
+          return '-'
+        } else {
+          return text
+        }
+      },
+      align: 'center'
+    }, {
+      title: '所属一级标签',
+      dataIndex: 'firstTagId_dictText',
+      key: 'firstTagId_dictText',
+      customRender: function (text) {
+        if (text == null) {
+          return '-'
+        } else {
+          return text
+        }
+      },
+      align: 'center'
     },
     {
-      title: '传真',
-      dataIndex: 'fax'
+      title: '所属二级标签',
+      dataIndex: 'secendTagId_dictText',
+      key: 'secendTagId_dictText',
+      customRender: function (text) {
+        if (text == null) {
+          return '-'
+        } else {
+          return text
+        }
+      },
+      align: 'center'
     },
     {
-      title: '地址',
-      dataIndex: 'address'
+      title: '描述',
+      dataIndex: 'description',
+      key: 'description',
+      customRender: function (text) {
+        if (text == null) {
+          return '-'
+        } else {
+          return text
+        }
+      },
+      align: 'center'
     },
     {
-      title: '排序',
+      title: '标签示例',
+      dataIndex: 'model',
+      key: 'model',
+      scopedSlots: {
+        customRender: 'model'
+      },
+      //   customRender: function (text) {
+      //     if (text == null) {
+      //       return '-'
+      //     } else {
+      //       return text
+      //     }
+      //   },
       align: 'center',
-      dataIndex: 'departOrder'
+      width: 200
     },
     {
       title: '操作',
-      align: 'center',
       dataIndex: 'action',
       scopedSlots: {
         customRender: 'action'
-      }
+      },
+      align: 'center',
+      width: 150
     }
   ]
   export default {
-    name: 'DepartList',
+    name: 'PermissionList',
     mixins: [JeecgListMixin],
     components: {
-      DepartModal
+      PermissionModal,
+      JEllipsis
     },
     data() {
       return {
-        departValue: [],
-        iExpandedKeys: [],
-        loading: false,
-        autoExpandParent: true,
-        currFlowId: '',
-        currFlowName: '',
-        disable: true,
-        treeData: [],
-        visible: false,
-        departTree: [],
-        rightClickSelectedKey: '',
-        rightClickSelectedOrgCode: '',
-        hiding: true,
-        model: {},
-        dropTrigger: '',
-        depart: {},
+        description: '标签管理',
+        // 表头
         columns: columns,
-        disableSubmit: false,
-        checkedKeys: [],
-        selectedKeys: [],
-        autoIncr: 1,
-        currSelected: {},
-
-        allTreeKeys: [],
-        checkStrictly: true,
-
-        form: this.$form.createForm(this),
-        labelCol: {
-          xs: {
-            span: 24
-          },
-          sm: {
-            span: 5
-          }
-        },
-        wrapperCol: {
-          xs: {
-            span: 24
-          },
-          sm: {
-            span: 16
-          }
-        },
-        graphDatasource: {
-          nodes: [],
-          edges: []
-        },
-        validatorRules: {
-          departName: {
-            rules: [{
-              required: true,
-              message: '请输入机构/部门名称!'
-            }]
-          },
-          orgCode: {
-            rules: [{
-              required: true,
-              message: '请输入机构编码!'
-            }]
-          },
-          orgCategory: {
-            rules: [{
-              required: true,
-              message: '请输入机构类型!'
-            }]
-          },
-          mobile: {
-            rules: [{
-              validator: this.validateMobile
-            }]
-          }
-        },
+        loading: false,
+        // 展开的行,受控属性
+        expandedRowKeys: [],
         url: {
+          list: '/ctop/tagInfo/list',
           delete: '/ctop/tagInfo/edit',
-          edit: '/ctop/tagInfo/edit',
-          deleteBatch: '/sys/sysDepart/deleteBatch',
-          exportXlsUrl: "sys/sysDepart/exportXls",
-          importExcelUrl: "sys/sysDepart/importExcel",
-        },
-        orgCategoryDisabled: false,
-      }
-    },
-    computed: {
-      importExcelUrl: function () {
-        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+          deleteBatch: '/sys/permission/deleteBatch'
+        }
       }
     },
     methods: {
-      loadData() {
-        this.refresh();
-      },
-      loadTree() {
-        var that = this
-        that.treeData = []
-        that.departTree = []
-        getAction('/ctop/tagInfo/queryTreeList').then((res) => {
+      handleDeleteStatus(id, status) {
+        httpAction('/ctop/tagInfo/edit', {
+          id: id,
+          status: status
+        }, 'post').then(res => {
           if (res.success) {
-            //部门全选后,再添加部门,选中数量增多
-            this.allTreeKeys = [];
-            for (let i = 0; i < res.result.length; i++) {
-              let temp = res.result[i]
-              that.treeData.push(temp)
-              that.departTree.push(temp)
-              that.setThisExpandedKeys(temp)
-              that.getAllKeys(temp);
-              // console.log(temp.id)
-
-            }
-            this.loading = false
-          }
-        })
-      },
-      setThisExpandedKeys(node) {
-        if (node.children && node.children.length > 0) {
-          this.iExpandedKeys.push(node.key)
-          for (let a = 0; a < node.children.length; a++) {
-            this.setThisExpandedKeys(node.children[a])
-          }
-        }
-      },
-      refresh() {
-        this.loading = true
-        this.loadTree()
-      },
-      // 右键操作方法
-      rightHandle(node) {
-        this.dropTrigger = 'contextmenu'
-        console.log(node.node.eventKey)
-        this.rightClickSelectedKey = node.node.eventKey
-        this.rightClickSelectedOrgCode = node.node.dataRef.orgCode
-      },
-      onExpand(expandedKeys) {
-        console.log('onExpand', expandedKeys)
-        // if not set autoExpandParent to false, if children expanded, parent can not collapse.
-        // or, you can remove all expanded children keys.
-        this.iExpandedKeys = expandedKeys
-        this.autoExpandParent = false
-      },
-      backFlowList() {
-        this.$router.back(-1)
-      },
-      // 右键点击下拉框改变事件
-      dropStatus(visible) {
-        if (visible == false) {
-          this.dropTrigger = ''
-        }
-      },
-      // 右键店家下拉关闭下拉框
-      closeDrop() {
-        this.dropTrigger = ''
-      },
-      addRootNode() {
-        this.$refs.nodeModal.add(this.currFlowId, '')
-      },
-      batchDel: function () {
-        console.log(this.checkedKeys)
-        if (this.checkedKeys.length <= 0) {
-          this.$message.warning('请选择一条记录!')
-        } else {
-          var ids = ''
-          for (var a = 0; a < this.checkedKeys.length; a++) {
-            ids += this.checkedKeys[a] + ','
-          }
-          var that = this
-          this.$confirm({
-            title: '确认删除',
-            content: '确定要删除所选中的 ' + this.checkedKeys.length + ' 条数据,以及子节点数据吗?',
-            onOk: function () {
-              deleteAction(that.url.deleteBatch, {
-                ids: ids
-              }).then((res) => {
-                if (res.success) {
-                  that.$message.success(res.message)
-                  that.loadTree()
-                  that.onClearSelected()
-                } else {
-                  that.$message.warning(res.message)
-                }
-              })
-            }
-          })
-        }
-      },
-      onSearch(value) {
-        let that = this
-        if (value) {
-          searchByKeywords({
-            keyWord: value
-          }).then((res) => {
-            if (res.success) {
-              that.departTree = []
-              for (let i = 0; i < res.result.length; i++) {
-                let temp = res.result[i]
-                that.departTree.push(temp)
-              }
-            } else {
-              that.$message.warning(res.message)
-            }
-          })
-        } else {
-          that.loadTree()
-        }
-
-      },
-      nodeModalOk() {
-        this.loadTree()
-      },
-      nodeModalClose() {},
-      hide() {
-        console.log(111)
-        this.visible = false
-      },
-      onCheck(checkedKeys, info) {
-        console.log('onCheck', checkedKeys, info)
-        this.hiding = false
-        //this.checkedKeys = checkedKeys.checked
-        // <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
-        if (this.checkStrictly) {
-          this.checkedKeys = checkedKeys.checked;
-        } else {
-          this.checkedKeys = checkedKeys
-        }
-        // <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
-      },
-      onSelect(selectedKeys, e) {
-        console.log('selected', selectedKeys, e)
-        this.hiding = false
-        let record = e.node.dataRef
-        console.log('onSelect-record', record)
-        this.currSelected = Object.assign({}, record)
-        this.model = this.currSelected
-        this.selectedKeys = [record.key]
-        this.model.parentId = record.parentId
-        this.setValuesToForm(record)
-
-      },
-      // 触发onSelect事件时,为部门树右侧的form表单赋值
-      setValuesToForm(record) {
-        // if (record.orgCategory == '1') {
-        //   this.orgCategoryDisabled = true;
-        // } else {
-        //   this.orgCategoryDisabled = false;
-        // }
-        console.log(record)
-        this.$nextTick(() => {
-          //   this.form.getFieldDecorator('fax', {
-          //     initialValue: ''
-          //   })
-
-          //   this.form.setFieldsValue(pick(dataJson, ['appId', 'urlType', 'url', 'dayBudget', 'speed',
-          //     'showMode'
-          //   ]))
-          this.form.setFieldsValue(pick(record, ['tagName', 'tagCode', 'description']))
-        })
-      },
-      getCurrSelectedTitle() {
-        return !this.currSelected.title ? '' : this.currSelected.title
-      },
-      onClearSelected() {
-        this.hiding = true
-        this.checkedKeys = []
-        this.currSelected = {}
-        this.form.resetFields()
-        this.selectedKeys = []
-      },
-      handleNodeTypeChange(val) {
-        this.currSelected.nodeType = val
-      },
-      notifyTriggerTypeChange(value) {
-        this.currSelected.notifyTriggerType = value
-      },
-      receiptTriggerTypeChange(value) {
-        this.currSelected.receiptTriggerType = value
-      },
-      submitCurrForm() {
-        this.form.validateFields((err, values) => {
-          if (!err) {
-            if (!this.currSelected.id) {
-              this.$message.warning('请点击选择要修改部门!')
-              return
-            }
-
-            let formData = Object.assign(this.currSelected, values)
-            console.log('Received values of form: ', formData)
-            httpAction(this.url.edit, formData, 'post').then((res) => {
-              if (res.success) {
-                this.$message.success('保存成功!')
-                this.loadTree()
-              } else {
-                this.$message.error(res.message)
-              }
-            })
-          }
-        })
-      },
-      emptyCurrForm() {
-        this.form.resetFields()
-      },
-      nodeSettingFormSubmit() {
-        this.form.validateFields((err, values) => {
-          if (!err) {
-            console.log('Received values of form: ', values)
+            //删除成功后,去除已选中中的数据
+            this.loadData(1)
+          } else {
+            this.$message.warning(res.message)
           }
         })
       },
-      openSelect() {
-        this.$refs.sysDirectiveModal.show()
-      },
-      handleAdd(num) {
-        console.log(this.currSelected)
-        if (num == 1) {
-          this.$refs.departModal.add()
-          this.$refs.departModal.title = '新增'
-        } else if (num == 2) {
-          if (this.currSelected.level == 3) {
-            this.$message.warning('标签最多只能存在三级')
+      handleDeleteElse(id) {
+        httpAction('/ctop/tagInfo/edit', {
+          id: id,
+          delFlag: 1
+        }, 'post').then(res => {
+          if (res.success) {
+            //删除成功后,去除已选中中的数据
+            this.loadData(1)
           } else {
-            let key = this.currSelected.key
-            if (!key) {
-              this.$message.warning('请先点击选中上级标签!')
-              return false
-            }
-            this.$refs.departModal.add(this.selectedKeys)
-            this.$refs.departModal.title = '新增'
+            this.$message.warning('删除失败!')
           }
-
-        } else {
-          this.$refs.departModal.add(this.rightClickSelectedKey)
-          this.$refs.departModal.title = '新增'
-        }
-      },
-      handleDelete() {
-        var that = this
-        this.$confirm({
-          title: '确认删除',
-          content: '确定要删除此标签以及子节点数据吗?',
-          onOk: function () {
-            httpAction('/ctop/tagInfo/edit', {
-              id: that.rightClickSelectedKey,
-              delFlag: 1
-            }, 'post').then(res => {
-              if (res.success) {
-                //删除成功后,去除已选中中的数据
-                that.checkedKeys.splice(that.checkedKeys.findIndex(key => key === that.rightClickSelectedKey),
-                  1);
-                that.$message.success('删除成功!')
-                that.loadTree()
-                //删除后同步清空右侧基本信息内容
-                let orgCode = that.form.getFieldValue("orgCode");
-                if (orgCode && orgCode === that.rightClickSelectedOrgCode) {
-                  that.onClearSelected()
-                }
-              } else {
-                that.$message.warning('删除失败!')
-              }
-            })
-            // deleteByDepartId({
-            //   id: that.rightClickSelectedKey
-            // }).then((resp) => {
-
-            // })
-          }
-        })
-      },
-      selectDirectiveOk(record) {
-        console.log('选中指令数据', record)
-        this.nodeSettingForm.setFieldsValue({
-          directiveCode: record.directiveCode
-        })
-        this.currSelected.sysCode = record.sysCode
-      },
-      getFlowGraphData(node) {
-        this.graphDatasource.nodes.push({
-          id: node.id,
-          text: node.flowNodeName
         })
-        if (node.children.length > 0) {
-          for (let a = 0; a < node.children.length; a++) {
-            let temp = node.children[a]
-            this.graphDatasource.edges.push({
-              source: node.id,
-              target: temp.id
-            })
-            this.getFlowGraphData(temp)
-          }
-        }
-      },
-      // <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
-      expandAll() {
-        this.iExpandedKeys = this.allTreeKeys
       },
-      closeAll() {
-        this.iExpandedKeys = []
+      handleAddSub(record) {
+        this.$refs.modalForm.title = "添加子标签";
+        this.$refs.modalForm.edit({
+          status: '1',
+          'parentId': record.id,
+          tagCategoryId: record.tagCategoryId
+        });
       },
-      checkALL() {
-        this.checkStriccheckStrictlytly = false
-        this.checkedKeys = this.allTreeKeys
+      handleExpandedRowsChange(expandedRows) {
+        this.expandedRowKeys = expandedRows
       },
-      cancelCheckALL() {
-        //this.checkedKeys = this.defaultCheckedKeys
-        this.checkedKeys = []
-      },
-      switchCheckStrictly(v) {
-        if (v == 1) {
-          this.checkStrictly = false
-        } else if (v == 2) {
-          this.checkStrictly = true
-        }
-      },
-      getAllKeys(node) {
-        // console.log('node',node);
-        this.allTreeKeys.push(node.key)
-        if (node.children && node.children.length > 0) {
-          for (let a = 0; a < node.children.length; a++) {
-            this.getAllKeys(node.children[a])
-          }
-        }
-      }
-      // <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
-
-    },
-    created() {
-      this.currFlowId = this.$route.params.id
-      this.currFlowName = this.$route.params.name
-      // this.loadTree()
-    },
-
+    }
   }
 </script>
 <style scoped>
-  .ant-card-body .table-operator {
-    margin: 15px;
-  }
-
-  .anty-form-btn {
-    width: 100%;
-    text-align: center;
-  }
-
-  .anty-form-btn button {
-    margin: 0 5px;
-  }
-
-  .anty-node-layout .ant-layout-header {
-    padding-right: 0
-  }
-
-  .header {
-    padding: 0 8px;
-  }
-
-  .header button {
-    margin: 0 3px
-  }
-
-  .ant-modal-cust-warp {
-    height: 100%
-  }
-
-  .ant-modal-cust-warp .ant-modal-body {
-    height: calc(100% - 110px) !important;
-    overflow-y: auto
-  }
-
-  .ant-modal-cust-warp .ant-modal-content {
-    height: 90% !important;
-    overflow-y: hidden
-  }
-
-  #app .desktop {
-    height: auto !important;
-  }
-
-  /** Button按钮间距 */
-  .ant-btn {
-    margin-left: 3px
-  }
-
-  .drawer-bootom-button {
-    /*position: absolute;*/
-    bottom: 0;
-    width: 100%;
-    border-top: 1px solid #e8e8e8;
-    padding: 10px 16px;
-    text-align: left;
-    left: 0;
-    background: #fff;
-    border-radius: 0 0 2px 2px;
-  }
+  @import '~@assets/less/common.less';
 </style>

+ 660 - 0
src/views/modules/material/labelNewMaterial.vue

@@ -0,0 +1,660 @@
+<template xmlns:background-color="http://www.w3.org/1999/xhtml">
+  <a-row :gutter="10">
+    <a-col :md="12" :sm="24">
+      <a-card :bordered="false">
+
+        <!-- 按钮操作区域 -->
+        <a-row style="margin-left: 14px">
+          <a-button @click="handleAdd(1)" type="primary">添加标签</a-button>
+          <a-button @click="handleAdd(2)" type="primary" style="margin-left: 14px">添加下级</a-button>
+          <!-- <a-button type="primary" icon="download" @click="handleExportXls('部门信息')">导出</a-button>
+          <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
+            :action="importExcelUrl" @change="handleImportExcel">
+            <a-button type="primary" icon="import">导入</a-button>
+          </a-upload> -->
+          <!-- <a-button title="删除多条数据" @click="batchDel" type="default">批量删除</a-button> -->
+          <!--<a-button @click="refresh" type="default" icon="reload" :loading="loading">刷新</a-button>-->
+        </a-row>
+        <div style="background: #fff;padding-left:16px;height: 100%; margin-top: 5px">
+          <a-alert type="info" :showIcon="true">
+            <div slot="message">
+              当前选择:<span v-if="this.currSelected.title">{{ getCurrSelectedTitle() }}</span>
+              <a v-if="this.currSelected.title" style="margin-left: 10px" @click="onClearSelected">取消选择</a>
+            </div>
+          </a-alert>
+          <a-input-search @search="onSearch" style="width:100%;margin-top: 10px" placeholder="请输入标签名称" />
+          <!-- {{departValue}}
+          <el-cascader placeholder="试试搜索:指南" :options="departTree"
+            :props="{ multiple: true,value:'id',label:'tagName',emitPath:false}" filterable v-model="departValue">
+          </el-cascader> -->
+          <!-- 树-->
+          <a-col :md="10" :sm="24">
+            <template>
+              <a-dropdown :trigger="[this.dropTrigger]" @visibleChange="dropStatus">
+                <span>
+                  <a-tree  @select="onSelect" @check="onCheck" @rightClick="rightHandle"
+                    :selectedKeys="selectedKeys" :checkedKeys="checkedKeys" :treeData="departTree"
+                    :checkStrictly="checkStrictly" :expandedKeys="iExpandedKeys" :autoExpandParent="autoExpandParent"
+                    @expand="onExpand" />
+                </span>
+                <!--新增右键点击事件,和增加添加和删除功能-->
+                <a-menu slot="overlay">
+                  <a-menu-item @click="handleAdd(3)" key="1">添加</a-menu-item>
+                  <a-menu-item @click="handleDelete" key="2">删除</a-menu-item>
+                  <a-menu-item @click="closeDrop" key="3">取消</a-menu-item>
+                </a-menu>
+              </a-dropdown>
+            </template>
+          </a-col>
+        </div>
+      </a-card>
+      <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
+      <div class="drawer-bootom-button">
+        <a-dropdown :trigger="['click']" placement="topCenter">
+          <a-menu slot="overlay">
+            <a-menu-item key="1" @click="switchCheckStrictly(1)">父子关联</a-menu-item>
+            <a-menu-item key="2" @click="switchCheckStrictly(2)">取消关联</a-menu-item>
+            <a-menu-item key="3" @click="checkALL">全部勾选</a-menu-item>
+            <a-menu-item key="4" @click="cancelCheckALL">取消全选</a-menu-item>
+            <a-menu-item key="5" @click="expandAll">展开所有</a-menu-item>
+            <a-menu-item key="6" @click="closeAll">合并所有</a-menu-item>
+          </a-menu>
+          <a-button>
+            树操作
+            <a-icon type="up" />
+          </a-button>
+        </a-dropdown>
+      </div>
+      <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
+    </a-col>
+    <a-col :md="12" :sm="24">
+      <a-tabs defaultActiveKey="1">
+        <a-tab-pane tab="基本信息" key="1">
+          <a-card :bordered="false" v-if="selectedKeys.length>0">
+            <a-form :form="form">
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签名称">
+                <a-input placeholder="请输入标签名称" v-decorator="['tagName', validatorRules.departName ]" />
+              </a-form-item>
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="上级标签">
+                <a-tree-select style="width:100%" :dropdownStyle="{maxHeight:'200px',overflow:'auto'}"
+                  :treeData="treeData" :disabled="disable" v-model="model.parentId" placeholder="无">
+                </a-tree-select>
+              </a-form-item>
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签描述">
+                <a-input placeholder="请输入标签描述" v-decorator="['description' ]" />
+              </a-form-item>
+              <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签编码">
+                <a-input disabled placeholder="请输入标签编码" v-decorator="['tagCode', validatorRules.orgCode ]" />
+              </a-form-item>
+            </a-form>
+            <div class="anty-form-btn">
+              <a-button @click="emptyCurrForm" type="default" htmlType="button" icon="sync">重置</a-button>
+              <a-button @click="submitCurrForm" type="primary" htmlType="button" icon="form">保存</a-button>
+            </div>
+          </a-card>
+          <a-card v-else>
+            <a-empty>
+              <span slot="description"> 请先选择一个标签! </span>
+            </a-empty>
+          </a-card>
+        </a-tab-pane>
+      </a-tabs>
+
+    </a-col>
+    <depart-modal ref="departModal" @ok="loadTree"></depart-modal>
+  </a-row>
+</template>
+<script>
+  import DepartModal from './modules/DepartModal'
+  import pick from 'lodash.pick'
+  import {
+    queryDepartTreeList,
+    searchByKeywords,
+    deleteByDepartId
+  } from '@/api/api'
+  import {
+    httpAction,
+    deleteAction,
+    getAction
+  } from '@/api/manage'
+  import {
+    JeecgListMixin
+  } from '@/mixins/JeecgListMixin'
+  // 表头
+  const columns = [{
+      title: '机构名称',
+      dataIndex: 'departName'
+    },
+    {
+      title: '机构类型',
+      align: 'center',
+      dataIndex: 'orgType'
+    },
+    {
+      title: '机构编码',
+      dataIndex: 'orgCode',
+    },
+    {
+      title: '手机号',
+      dataIndex: 'mobile'
+    },
+    {
+      title: '传真',
+      dataIndex: 'fax'
+    },
+    {
+      title: '地址',
+      dataIndex: 'address'
+    },
+    {
+      title: '排序',
+      align: 'center',
+      dataIndex: 'departOrder'
+    },
+    {
+      title: '操作',
+      align: 'center',
+      dataIndex: 'action',
+      scopedSlots: {
+        customRender: 'action'
+      }
+    }
+  ]
+  export default {
+    name: 'DepartList',
+    mixins: [JeecgListMixin],
+    components: {
+      DepartModal
+    },
+    data() {
+      return {
+        departValue: [],
+        iExpandedKeys: [],
+        loading: false,
+        autoExpandParent: true,
+        currFlowId: '',
+        currFlowName: '',
+        disable: true,
+        treeData: [],
+        visible: false,
+        departTree: [],
+        rightClickSelectedKey: '',
+        rightClickSelectedOrgCode: '',
+        hiding: true,
+        model: {},
+        dropTrigger: '',
+        depart: {},
+        columns: columns,
+        disableSubmit: false,
+        checkedKeys: [],
+        selectedKeys: [],
+        autoIncr: 1,
+        currSelected: {},
+
+        allTreeKeys: [],
+        checkStrictly: true,
+
+        form: this.$form.createForm(this),
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          }
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          }
+        },
+        graphDatasource: {
+          nodes: [],
+          edges: []
+        },
+        validatorRules: {
+          departName: {
+            rules: [{
+              required: true,
+              message: '请输入机构/部门名称!'
+            }]
+          },
+          orgCode: {
+            rules: [{
+              required: true,
+              message: '请输入机构编码!'
+            }]
+          },
+          orgCategory: {
+            rules: [{
+              required: true,
+              message: '请输入机构类型!'
+            }]
+          },
+          mobile: {
+            rules: [{
+              validator: this.validateMobile
+            }]
+          }
+        },
+        url: {
+          delete: '/ctop/tagInfo/edit',
+          edit: '/ctop/tagInfo/edit',
+          deleteBatch: '/sys/sysDepart/deleteBatch',
+          exportXlsUrl: "sys/sysDepart/exportXls",
+          importExcelUrl: "sys/sysDepart/importExcel",
+        },
+        orgCategoryDisabled: false,
+      }
+    },
+    computed: {
+      importExcelUrl: function () {
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      }
+    },
+    methods: {
+      loadData() {
+        this.refresh();
+      },
+      loadTree() {
+        var that = this
+        that.treeData = []
+        that.departTree = []
+        getAction('/ctop/tagInfo/queryTreeList').then((res) => {
+          if (res.success) {
+            //部门全选后,再添加部门,选中数量增多
+            this.allTreeKeys = [];
+            for (let i = 0; i < res.result.length; i++) {
+              let temp = res.result[i]
+              that.treeData.push(temp)
+              that.departTree.push(temp)
+              that.setThisExpandedKeys(temp)
+              that.getAllKeys(temp);
+              // console.log(temp.id)
+
+            }
+            this.loading = false
+          }
+        })
+      },
+      setThisExpandedKeys(node) {
+        if (node.children && node.children.length > 0) {
+          this.iExpandedKeys.push(node.key)
+          for (let a = 0; a < node.children.length; a++) {
+            this.setThisExpandedKeys(node.children[a])
+          }
+        }
+      },
+      refresh() {
+        this.loading = true
+        this.loadTree()
+      },
+      // 右键操作方法
+      rightHandle(node) {
+        this.dropTrigger = 'contextmenu'
+        console.log(node.node.eventKey)
+        this.rightClickSelectedKey = node.node.eventKey
+        this.rightClickSelectedOrgCode = node.node.dataRef.orgCode
+      },
+      onExpand(expandedKeys) {
+        console.log('onExpand', expandedKeys)
+        // if not set autoExpandParent to false, if children expanded, parent can not collapse.
+        // or, you can remove all expanded children keys.
+        this.iExpandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+      backFlowList() {
+        this.$router.back(-1)
+      },
+      // 右键点击下拉框改变事件
+      dropStatus(visible) {
+        if (visible == false) {
+          this.dropTrigger = ''
+        }
+      },
+      // 右键店家下拉关闭下拉框
+      closeDrop() {
+        this.dropTrigger = ''
+      },
+      addRootNode() {
+        this.$refs.nodeModal.add(this.currFlowId, '')
+      },
+      batchDel: function () {
+        console.log(this.checkedKeys)
+        if (this.checkedKeys.length <= 0) {
+          this.$message.warning('请选择一条记录!')
+        } else {
+          var ids = ''
+          for (var a = 0; a < this.checkedKeys.length; a++) {
+            ids += this.checkedKeys[a] + ','
+          }
+          var that = this
+          this.$confirm({
+            title: '确认删除',
+            content: '确定要删除所选中的 ' + this.checkedKeys.length + ' 条数据,以及子节点数据吗?',
+            onOk: function () {
+              deleteAction(that.url.deleteBatch, {
+                ids: ids
+              }).then((res) => {
+                if (res.success) {
+                  that.$message.success(res.message)
+                  that.loadTree()
+                  that.onClearSelected()
+                } else {
+                  that.$message.warning(res.message)
+                }
+              })
+            }
+          })
+        }
+      },
+      onSearch(value) {
+        let that = this
+        if (value) {
+          searchByKeywords({
+            keyWord: value
+          }).then((res) => {
+            if (res.success) {
+              that.departTree = []
+              for (let i = 0; i < res.result.length; i++) {
+                let temp = res.result[i]
+                that.departTree.push(temp)
+              }
+            } else {
+              that.$message.warning(res.message)
+            }
+          })
+        } else {
+          that.loadTree()
+        }
+
+      },
+      nodeModalOk() {
+        this.loadTree()
+      },
+      nodeModalClose() {},
+      hide() {
+        console.log(111)
+        this.visible = false
+      },
+      onCheck(checkedKeys, info) {
+        console.log('onCheck', checkedKeys, info)
+        this.hiding = false
+        //this.checkedKeys = checkedKeys.checked
+        // <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
+        if (this.checkStrictly) {
+          this.checkedKeys = checkedKeys.checked;
+        } else {
+          this.checkedKeys = checkedKeys
+        }
+        // <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
+      },
+      onSelect(selectedKeys, e) {
+        console.log('selected', selectedKeys, e)
+        this.hiding = false
+        let record = e.node.dataRef
+        console.log('onSelect-record', record)
+        this.currSelected = Object.assign({}, record)
+        this.model = this.currSelected
+        this.selectedKeys = [record.key]
+        this.model.parentId = record.parentId
+        this.setValuesToForm(record)
+
+      },
+      // 触发onSelect事件时,为部门树右侧的form表单赋值
+      setValuesToForm(record) {
+        // if (record.orgCategory == '1') {
+        //   this.orgCategoryDisabled = true;
+        // } else {
+        //   this.orgCategoryDisabled = false;
+        // }
+        console.log(record)
+        this.$nextTick(() => {
+          //   this.form.getFieldDecorator('fax', {
+          //     initialValue: ''
+          //   })
+
+          //   this.form.setFieldsValue(pick(dataJson, ['appId', 'urlType', 'url', 'dayBudget', 'speed',
+          //     'showMode'
+          //   ]))
+          this.form.setFieldsValue(pick(record, ['tagName', 'tagCode', 'description']))
+        })
+      },
+      getCurrSelectedTitle() {
+        return !this.currSelected.title ? '' : this.currSelected.title
+      },
+      onClearSelected() {
+        this.hiding = true
+        this.checkedKeys = []
+        this.currSelected = {}
+        this.form.resetFields()
+        this.selectedKeys = []
+      },
+      handleNodeTypeChange(val) {
+        this.currSelected.nodeType = val
+      },
+      notifyTriggerTypeChange(value) {
+        this.currSelected.notifyTriggerType = value
+      },
+      receiptTriggerTypeChange(value) {
+        this.currSelected.receiptTriggerType = value
+      },
+      submitCurrForm() {
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            if (!this.currSelected.id) {
+              this.$message.warning('请点击选择要修改部门!')
+              return
+            }
+
+            let formData = Object.assign(this.currSelected, values)
+            console.log('Received values of form: ', formData)
+            httpAction(this.url.edit, formData, 'post').then((res) => {
+              if (res.success) {
+                this.$message.success('保存成功!')
+                this.loadTree()
+              } else {
+                this.$message.error(res.message)
+              }
+            })
+          }
+        })
+      },
+      emptyCurrForm() {
+        this.form.resetFields()
+      },
+      nodeSettingFormSubmit() {
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            console.log('Received values of form: ', values)
+          }
+        })
+      },
+      openSelect() {
+        this.$refs.sysDirectiveModal.show()
+      },
+      handleAdd(num) {
+        console.log(this.currSelected)
+        if (num == 1) {
+          this.$refs.departModal.add()
+          this.$refs.departModal.title = '新增'
+        } else if (num == 2) {
+          if (this.currSelected.level == 3) {
+            this.$message.warning('标签最多只能存在三级')
+          } else {
+            let key = this.currSelected.key
+            if (!key) {
+              this.$message.warning('请先点击选中上级标签!')
+              return false
+            }
+            this.$refs.departModal.add(this.selectedKeys)
+            this.$refs.departModal.title = '新增'
+          }
+
+        } else {
+          this.$refs.departModal.add(this.rightClickSelectedKey)
+          this.$refs.departModal.title = '新增'
+        }
+      },
+      handleDelete() {
+        var that = this
+        this.$confirm({
+          title: '确认删除',
+          content: '确定要删除此标签以及子节点数据吗?',
+          onOk: function () {
+            httpAction('/ctop/tagInfo/edit', {
+              id: that.rightClickSelectedKey,
+              delFlag: 1
+            }, 'post').then(res => {
+              if (res.success) {
+                //删除成功后,去除已选中中的数据
+                that.checkedKeys.splice(that.checkedKeys.findIndex(key => key === that.rightClickSelectedKey),
+                  1);
+                that.$message.success('删除成功!')
+                that.loadTree()
+                //删除后同步清空右侧基本信息内容
+                let orgCode = that.form.getFieldValue("orgCode");
+                if (orgCode && orgCode === that.rightClickSelectedOrgCode) {
+                  that.onClearSelected()
+                }
+              } else {
+                that.$message.warning('删除失败!')
+              }
+            })
+            // deleteByDepartId({
+            //   id: that.rightClickSelectedKey
+            // }).then((resp) => {
+
+            // })
+          }
+        })
+      },
+      selectDirectiveOk(record) {
+        console.log('选中指令数据', record)
+        this.nodeSettingForm.setFieldsValue({
+          directiveCode: record.directiveCode
+        })
+        this.currSelected.sysCode = record.sysCode
+      },
+      getFlowGraphData(node) {
+        this.graphDatasource.nodes.push({
+          id: node.id,
+          text: node.flowNodeName
+        })
+        if (node.children.length > 0) {
+          for (let a = 0; a < node.children.length; a++) {
+            let temp = node.children[a]
+            this.graphDatasource.edges.push({
+              source: node.id,
+              target: temp.id
+            })
+            this.getFlowGraphData(temp)
+          }
+        }
+      },
+      // <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
+      expandAll() {
+        this.iExpandedKeys = this.allTreeKeys
+      },
+      closeAll() {
+        this.iExpandedKeys = []
+      },
+      checkALL() {
+        this.checkStriccheckStrictlytly = false
+        this.checkedKeys = this.allTreeKeys
+      },
+      cancelCheckALL() {
+        //this.checkedKeys = this.defaultCheckedKeys
+        this.checkedKeys = []
+      },
+      switchCheckStrictly(v) {
+        if (v == 1) {
+          this.checkStrictly = false
+        } else if (v == 2) {
+          this.checkStrictly = true
+        }
+      },
+      getAllKeys(node) {
+        // console.log('node',node);
+        this.allTreeKeys.push(node.key)
+        if (node.children && node.children.length > 0) {
+          for (let a = 0; a < node.children.length; a++) {
+            this.getAllKeys(node.children[a])
+          }
+        }
+      }
+      // <!---- author:os_chengtgen -- date:20190827 --  for:切换父子勾选模式 =======------>
+
+    },
+    created() {
+      this.currFlowId = this.$route.params.id
+      this.currFlowName = this.$route.params.name
+      // this.loadTree()
+    },
+
+  }
+</script>
+<style scoped>
+  .ant-card-body .table-operator {
+    margin: 15px;
+  }
+
+  .anty-form-btn {
+    width: 100%;
+    text-align: center;
+  }
+
+  .anty-form-btn button {
+    margin: 0 5px;
+  }
+
+  .anty-node-layout .ant-layout-header {
+    padding-right: 0
+  }
+
+  .header {
+    padding: 0 8px;
+  }
+
+  .header button {
+    margin: 0 3px
+  }
+
+  .ant-modal-cust-warp {
+    height: 100%
+  }
+
+  .ant-modal-cust-warp .ant-modal-body {
+    height: calc(100% - 110px) !important;
+    overflow-y: auto
+  }
+
+  .ant-modal-cust-warp .ant-modal-content {
+    height: 90% !important;
+    overflow-y: hidden
+  }
+
+  #app .desktop {
+    height: auto !important;
+  }
+
+  /** Button按钮间距 */
+  .ant-btn {
+    margin-left: 3px
+  }
+
+  .drawer-bootom-button {
+    /*position: absolute;*/
+    bottom: 0;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: left;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 21 - 15
src/views/modules/material/modules/DepartModal.vue

@@ -1,18 +1,30 @@
 <template>
   <a-modal :title="title" :width="800" :ok=false :visible="visible" :confirmLoading="confirmLoading"
     :okButtonProps="{ props: {disabled: disableSubmit} }" @ok="handleOk" @cancel="handleCancel" cancelText="关闭">
-
     <a-spin :spinning="confirmLoading">
       <a-form :form="form">
+
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签分类" :hidden="false" hasFeedback>
+          <a-select v-decorator="['tagCategoryId', {rules: [{ required: true, message: '请选择标签分类'}]} ]" placeholder="请选择">
+            <a-select-option :value="1">形式</a-select-option>
+            <a-select-option :value="2">基调</a-select-option>
+            <a-select-option :value="3">内容</a-select-option>
+            <a-select-option :value="4">场景</a-select-option>
+          </a-select>
+        </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签名称" :hidden="false" hasFeedback>
           <a-input id="tagName" placeholder="请输入标签名称" v-decorator="['tagName', validatorRules.departName ]" />
         </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签编码">
+          <a-input placeholder="请输入标签编码" v-decorator="['tagCode',validatorRules.orgCode]" :maxLength="4" />
+        </a-form-item>
         <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签描述">
           <a-input placeholder="请输入标签描述" v-decorator="['description']" />
         </a-form-item>
-        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签编码">
-          <a-input placeholder="请输入标签描述" v-decorator="['tagCode',validatorRules.orgCode]"  :maxLength="4"/>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="标签示例">
+          <a-input placeholder="请输入标签示例" v-decorator="['model']" />
         </a-form-item>
+
       </a-form>
     </a-spin>
   </a-modal>
@@ -106,29 +118,23 @@
         })
       },
       add(depart) {
-        if (depart) {
-          this.seen = false;
-          this.dictDisabled = false;
-        } else {
-          this.seen = true;
-          this.dictDisabled = true;
-        }
         this.edit(depart);
       },
       edit(record) {
         this.form.resetFields();
         this.model = Object.assign({}, {});
         this.visible = true;
-        this.loadTreeData();
-        this.model.parentId = record != null ? record.toString() : null;
+        // this.loadTreeData();
+        this.model = record
+        console.log(this.model)
         //   if(this.seen){
         //     this.model.orgCategory = '1';
         //   }else{
         //     this.model.orgCategory = '2';
         //   }
-        //   this.$nextTick(() => {
-        //     this.form.setFieldsValue(pick(this.model,'orgCategory','departName','departNameEn','departNameAbbr','departOrder','description','orgType','orgCode','mobile','fax','address','memo','status','delFlag'))
-        //   });
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model, 'tagCategoryId'))
+        });
       },
       close() {
         this.$emit('close');

+ 415 - 0
src/views/modules/material/modules/labelModal.vue

@@ -0,0 +1,415 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="drawerWidth"
+    @close="handleCancel"
+    :visible="visible"
+    :confirmLoading="confirmLoading">
+
+    <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+
+        <a-form-item label="菜单类型" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+          <a-radio-group @change="onChangeMenuType" v-decorator="['menuType',{'initialValue':localMenuType}]">
+            <a-radio :value="0">一级菜单</a-radio>
+            <a-radio :value="1">子菜单</a-radio>
+            <a-radio :value="2">按钮/权限</a-radio>
+          </a-radio-group>
+        </a-form-item>
+
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          :label="menuLabel"
+          hasFeedback >
+          <a-input placeholder="请输入菜单名称" v-decorator="[ 'name', validatorRules.name]" :readOnly="disableSubmit"/>
+        </a-form-item>
+
+
+        <a-form-item
+          v-show="localMenuType!=0"
+          label="上级菜单"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          :validate-status="validateStatus"
+          :hasFeedback="true"
+          :required="true">
+          <span slot="help">{{ validateStatus=='error'?'请选择上级菜单':'&nbsp;&nbsp;' }}</span>
+          <a-tree-select
+            style="width:100%"
+            :dropdownStyle="{ maxHeight: '200px', overflow: 'auto' }"
+            :treeData="treeData"
+            v-model="model.parentId"
+            placeholder="请选择父级菜单"
+            :disabled="disableSubmit"
+            @change="handleParentIdChange">
+          </a-tree-select>
+        </a-form-item>
+
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="菜单路径">
+          <a-input placeholder="请输入菜单路径" v-decorator="[ 'url',validatorRules.url]" :readOnly="disableSubmit"/>
+        </a-form-item>
+
+        <a-form-item
+          v-show="show"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="前端组件">
+          <a-input placeholder="请输入前端组件" v-decorator="[ 'component',validatorRules.component]" :readOnly="disableSubmit"/>
+        </a-form-item>
+
+        <a-form-item
+          v-show="localMenuType==0"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="默认跳转地址">
+          <a-input placeholder="请输入路由参数 redirect" v-decorator="[ 'redirect',{}]" :readOnly="disableSubmit"/>
+        </a-form-item>
+
+        <a-form-item
+          v-show="!show"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="授权标识">
+          <a-input placeholder="多个用逗号分隔, 如: user:list,user:create" v-decorator="[ 'perms', {rules:[{ required: false, message: '请输入授权标识!' },{validator: this.validatePerms }]}]" :readOnly="disableSubmit"/>
+        </a-form-item>
+
+        <a-form-item
+          v-show="!show"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="授权策略">
+          <j-dict-select-tag  v-decorator="['permsType', {}]" placeholder="请选择授权策略" :type="'radio'" :triggerChange="true" dictCode="global_perms_type"/>
+
+
+        </a-form-item>
+        <a-form-item
+          v-show="!show"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="状态">
+          <j-dict-select-tag  v-decorator="['status', {}]" placeholder="请选择状态" :type="'radio'" :triggerChange="true" dictCode="valid_status"/>
+
+        </a-form-item>
+
+
+        <a-form-item
+          v-show="show"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="排序">
+          <a-input-number placeholder="请输入菜单排序" style="width: 200px" v-decorator="[ 'sortNo',validatorRules.sortNo]" :readOnly="disableSubmit"/>
+        </a-form-item>
+
+        <a-form-item
+          v-show="show"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="是否路由菜单">
+          <a-switch checkedChildren="是" unCheckedChildren="否" v-model="routeSwitch"/>
+        </a-form-item>
+
+        <a-form-item
+          v-show="show"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="隐藏路由">
+          <a-switch checkedChildren="是" unCheckedChildren="否" v-model="menuHidden"/>
+        </a-form-item>
+
+        <a-form-item
+          v-show="show"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="是否缓存路由">
+          <a-switch checkedChildren="是" unCheckedChildren="否" v-model="isKeepalive"/>
+        </a-form-item>
+
+
+        <a-form-item
+          v-show="show"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="聚合路由">
+          <a-switch checkedChildren="是" unCheckedChildren="否" v-model="alwaysShow"/>
+        </a-form-item>
+
+        <!--update_begin author:wuxianquan date:20190908 for:增加组件,外链打开方式可选 -->
+        <a-form-item
+          v-show="show"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="打开方式">
+          <a-switch checkedChildren="外部" unCheckedChildren="内部" v-model="internalOrExternal"/>
+        </a-form-item>
+        <!--update_end author:wuxianquan date:20190908 for:增加组件,外链打开方式可选 -->
+
+
+      </a-form>
+
+      <!-- 选择图标 -->
+    </a-spin>
+      <a-row :style="{textAlign:'right'}">
+        <a-button :style="{marginRight: '8px'}" @click="handleCancel">
+          关闭
+        </a-button>
+        <a-button :disabled="disableSubmit" @click="handleOk" type="primary">确定</a-button>
+      </a-row>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+  import {addPermission,editPermission,queryTreeList, duplicateCheck} from '@/api/api'
+  import pick from 'lodash.pick'
+
+  export default {
+    name: "PermissionModal",
+    data () {
+      return {
+        drawerWidth:700,
+        treeData:[],
+        treeValue: '0-0-4',
+        title:"操作",
+        visible: false,
+        disableSubmit:false,
+        model: {},
+        localMenuType:0,
+        alwaysShow:false,//表单元素-聚合路由
+        menuHidden:false,//表单元素-隐藏路由
+        routeSwitch:true, //是否路由菜单
+        /*update_begin author:wuxianquan date:20190908 for:定义变量,初始值代表内部打开*/
+        internalOrExternal:false,//菜单打开方式
+        /*update_end author:wuxianquan date:20190908 for:定义变量,初始值代表内部打开*/
+        isKeepalive:true, //是否缓存路由
+        show:true,//根据菜单类型,动态显示隐藏表单元素
+        menuLabel:'菜单名称',
+        isRequrie:true,  // 是否需要验证
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+
+        iconChooseVisible: false,
+        validateStatus:""
+      }
+    },
+    computed:{
+      validatorRules:function() {
+        return {
+          name:{rules: [{ required: true, message: '请输入菜单标题!' }]},
+          component:{rules: [{ required: this.show, message: '请输入前端组件!' }]},
+          url:{rules: [{ required: this.show, message: '请输入菜单路径!' }]},
+          permsType:{rules: [{ required: true, message: '请输入授权策略!' }]},
+          sortNo:{initialValue:1.0},
+        }
+      }
+    },
+    created () {
+      this.initDictConfig();
+    },
+    methods: {
+      loadTree(){
+        var that = this;
+        queryTreeList().then((res)=>{
+          if(res.success){
+            console.log('----queryTreeList---')
+            console.log(res)
+            that.treeData = [];
+            let treeList = res.result.treeList
+            for(let a=0;a<treeList.length;a++){
+              let temp = treeList[a];
+              temp.isLeaf = temp.leaf;
+              that.treeData.push(temp);
+            }
+          }
+        });
+      },
+      add () {
+        // 默认值
+        this.edit({status:'1',permsType:'1',route:true});
+      },
+      edit (record) {
+        this.resetScreenSize(); // 调用此方法,根据屏幕宽度自适应调整抽屉的宽度
+        this.form.resetFields();
+        this.model = Object.assign({}, record);
+        //--------------------------------------------------------------------------------------------------
+        //根据菜单类型,动态展示页面字段
+        console.log(record)
+        this.alwaysShow = !record.alwaysShow?false:true;
+        this.menuHidden = !record.hidden?false:true;
+
+        if(record.route!=null){
+          this.routeSwitch = record.route?true:false;
+        }
+
+        if(record.keepAlive!=null){
+          this.isKeepalive = record.keepAlive?true:false;
+        }else{
+          this.isKeepalive = false; // 升级兼容 如果没有(后台没有传过来、或者是新建)默认为false
+        }
+
+        /*update_begin author:wuxianquan date:20190908 for:编辑初始化数据*/
+        if(record.internalOrExternal!=null){
+          this.internalOrExternal = record.internalOrExternal?true:false;
+        }else{
+          this.internalOrExternal = false;
+        }
+        /*update_end author:wuxianquan date:20190908 for:编辑初始化数据*/
+
+
+        //console.log('record.menuType', record.menuType);
+        this.show = record.menuType==2?false:true;
+        this.menuLabel = record.menuType==2?'按钮/权限':'菜单名称';
+
+        if(this.model.parentId){
+          this.localMenuType = 1;
+        }else{
+          this.localMenuType = 0;
+        }
+        //----------------------------------------------------------------------------------------------
+
+        this.visible = true;
+        this.loadTree();
+        let fieldsVal = pick(this.model,'name','perms','permsType','component','url','sortNo','menuType','status');
+        this.$nextTick(() => {
+          this.form.setFieldsValue(fieldsVal)
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.disableSubmit = false;
+        this.visible = false;
+      },
+      handleOk () {
+        const that = this;
+        // 触发表单验证
+        this.form.validateFields((err, values) => {
+          if (!err) {
+            this.model.alwaysShow = this.alwaysShow;
+            this.model.hidden = this.menuHidden;
+            this.model.route = this.routeSwitch;
+            this.model.keepAlive = this.isKeepalive;
+            /*update_begin author:wuxianquan date:20190908 for:获取值*/
+            this.model.internalOrExternal = this.internalOrExternal;
+            /*update_end author:wuxianquan date:20190908 for:获取值*/
+
+            let formData = Object.assign(this.model, values);
+            if ((formData.menuType == 1 || formData.menuType == 2) && !formData.parentId) {
+              that.validateStatus = 'error';
+              that.$message.error("请检查你填的类型以及信息是否正确!");
+              return;
+            } else {
+              that.validateStatus = 'success';
+            }
+            that.confirmLoading = true;
+            console.log(formData);
+            let obj;
+            if (!this.model.id) {
+              obj = addPermission(formData);
+            } else {
+              obj = editPermission(formData);
+            }
+            obj.then((res) => {
+              if (res.success) {
+                that.$message.success(res.message);
+                that.$emit('ok');
+              } else {
+                that.$message.warning(res.message);
+              }
+            }).finally(() => {
+              that.confirmLoading = false;
+              that.close();
+            });
+          }
+        })
+      },
+      handleCancel () {
+        this.close()
+      },
+      validateNumber(rule, value, callback){
+        if(!value || new RegExp(/^[0-9]*[1-9][0-9]*$/).test(value)){
+          callback();
+        }else{
+          callback("请输入正整数!");
+        }
+      },
+      validatePerms(rule, value, callback){
+        if(value && value.length>0){
+          //校验授权标识是否存在
+          var params = {
+            tableName: 'sys_permission',
+            fieldName: 'perms',
+            fieldVal: value,
+            dataId: this.model.id
+          };
+          duplicateCheck(params).then((res) => {
+            if (res.success) {
+              callback()
+            } else {
+              callback("授权标识已存在!")
+            }
+          })
+        }else{
+          callback()
+        }
+      },
+      onChangeMenuType(e) {
+        //console.log('localMenuType checked', e.target.value)
+        this.localMenuType=e.target.value
+        if(e.target.value == 2){
+          this.show = false;
+          this.menuLabel = '按钮/权限';
+        }else{
+          this.show = true;
+          this.menuLabel = '菜单名称';
+        }
+        this.$nextTick(() => {
+          this.form.validateFields(['url','component'], { force: true });
+        });
+      },
+      handleIconCancel () {
+        this.iconChooseVisible = false
+      },
+      handleIconChoose (value) {
+        console.log(value)
+        this.model.icon = value
+        this.form.icon = value
+        this.iconChooseVisible = false
+      },
+      // 根据屏幕变化,设置抽屉尺寸
+      resetScreenSize(){
+        let screenWidth = document.body.clientWidth;
+        if(screenWidth < 500){
+          this.drawerWidth = screenWidth;
+        }else{
+          this.drawerWidth = 700;
+        }
+      },
+      initDictConfig() {
+      },
+      handleParentIdChange(value){
+        if(!value){
+          this.validateStatus="error"
+        }else{
+          this.validateStatus="success"
+        }
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 8 - 1
src/views/modules/material/videoMaterial.vue

@@ -764,6 +764,7 @@
               { rules: [{ required: true, message: '请选择标签!' }] }
             ]" :props="{ multiple: true,value:'id',label:'tagName',emitPath:false}" filterable style="width:100%">
           </el-cascader>
+          <a @click="handleAdd({status:0})" style="margin-top:25px">自定义标签新增</a>
         </a-form-item>
         <a-form-item :label-col="labelCol" :wrapper-col="{
             xs: { span: 24 },
@@ -1122,10 +1123,12 @@
     </a-modal>
 
     <account-check ref="check" @synchro="implement"></account-check>
+    <permission-modal ref="modalForm" @ok="modalFormOkElse"></permission-modal>
   </a-card>
 </template>
 
 <script>
+  import PermissionModal from './modules/DepartModal'
   import {
     JeecgListMixin
   } from '@/mixins/JeecgListMixin'
@@ -1168,7 +1171,8 @@
       UploadToAli,
       accountCheck,
       selectTable,
-      uploadFile
+      uploadFile,
+      PermissionModal
     },
 
     data() {
@@ -1412,6 +1416,9 @@
       }
     },
     methods: {
+      modalFormOkElse(){
+        this.getTagListAll()
+      },
       handleOkTag(e) {
         this.loadingTag = true
         postAction('/ctop/materialTagInfo/mark', {

+ 2 - 2
vue.config.js

@@ -60,13 +60,13 @@ module.exports = {
       '/jeecg-boot': {
         //  target: 'http://192.168.1.90:8080', //请求本地 需要jeecg-boot后台项目  蒙蒙
         // target: 'http://192.168.0.59:8088', //请求本地 需要jeecg-boot后台项目  英豪
-        // target: 'http://192.168.1.72:8088', //请求本地 需要jeecg-boot后台项目  英豪
+        target: 'http://192.168.1.72:8088', //请求本地 需要jeecg-boot后台项目  英豪
         // target: 'http://192.168.2.115:8080', //请求本地 需要jeecg-boot后台项目  祚云
         // target: 'http://192.168.1.94:8088', //请求本地 需要jeecg-boot后台项目  孙震
         // target: 'http://192.168.0.230:8088', //请求本地 需要jeecg-boot后台项目  孙震
         // target: 'http://192.168.1.51:8080', //请求本地 需要jeecg-boot后台项目  毕洁泉
 
-        target: 'http://192.168.1.51:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
+        // target: 'http://192.168.1.51:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.0.252:8098', //请求本地 需要jeecg-boot后台项目  毕洁泉
         // target: 'http://192.168.0.170:8088', //请求本地 需要jeecg-boot后台项目  毕洁泉
         //  target: 'http://api.tjyourong.com.cn', //请求本地 需要jeecg-boot后台项目