浏览代码

Merge remote-tracking branch 'origin/mergeBranch' into mergeBranch

qymljy 3 年之前
父节点
当前提交
d8aba71d90

+ 98 - 0
src/HDrpManagement/BrandManage/component/saleclass/components/addTop.vue

@@ -0,0 +1,98 @@
+<template>
+  <div class="add">
+    <el-button size="mini" type="primary" @click="dialogVisible=true">新增一级分类</el-button>
+    <el-dialog
+      title="新增一级分类"
+      :visible.sync="dialogVisible"
+      width="500px"
+      append-to-body
+      :before-close="handleClose">
+      <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="130px" class="demo-ruleForm">
+        <el-form-item label="营销类别名" prop="itemclassname">
+          <div class="flex-align-center">
+            <el-input v-model="ruleForm.itemclassname" size="small" class="inline-16" placeholder="请输入营销类别名">
+            </el-input>
+            <el-input v-model="ruleForm.num" size="small" style="width:90px" placeholder="排序">
+            </el-input>
+          </div>
+        </el-form-item>
+        <el-form-item label="营销类别编号" prop="itemclassnum">
+          <el-input v-model="ruleForm.itemclassnum"  size="small" placeholder="请输入营销类别编号"></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-checkbox v-model="ruleForm.istool" :true-label="1" :false-label="0">是否工具</el-checkbox>
+          <el-checkbox v-model="ruleForm.ishide" :true-label="1" :false-label="0">是否隐藏</el-checkbox>
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div>
+          <el-button @click="dialogVisible = false" size="small">取 消</el-button>
+          <el-button type="primary" @click="submit" size="small">确 定</el-button>
+        </div>
+      </span>
+    </el-dialog>
+  </div>
+  
+</template>
+
+<script>
+export default {
+  name: '',
+  data() {
+    return {
+      currentData:'',
+      dialogVisible:false,
+      ruleForm: {
+        "itemclassnum":'',
+        "itemclassname":'',
+      },
+      rules:{
+        itemclassname: [
+          { required: true, message: '请输入营销类别名', trigger: 'blur' },
+        ],
+        itemclassnum: [
+          { required: true, message: '请输入营销类别编号', trigger: 'blur' },
+        ],
+      }
+    }
+  },
+  props:['type','sa_brandid'],
+  computed:{
+  },
+  methods: {
+    handleClose() {
+      this.dialogVisible = false
+    },
+    submit() {
+      this.$refs.ruleForm.validate(async val => {
+        if(val) {
+          let res = await this.$api.requested({
+            "accesstoken": "bed2f4500c0e799a29ddbbe47a2a04b6",
+            "id": "20220922110303",
+            "version":1,
+            "content": {
+                "itemclassid":0,     
+                "sa_brandid":this.sa_brandid,
+                "parentid":0,
+                "itemclassnum":this.ruleForm.itemclassnum,
+                "itemclassname":this.ruleForm.itemclassname,
+                "num":this.ruleForm.num,
+                "istool":this.ruleForm.istool,
+                "ishide":this.ruleForm.ishide,
+                "classtype":"营销"
+            }
+          })
+          this.tool.showMessage(res,() => {
+            this.$emit('addSuccess')
+            this.$refs.ruleForm.resetFields()
+            this.dialogVisible = false
+          })
+        }
+      })
+    }
+  },
+};
+</script>
+
+<style scoped>
+</style>

+ 1 - 1
src/HDrpManagement/BrandManage/component/saleclass/components/delete.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="padding-left:10px">
     <el-popconfirm title="确定删除当前数据吗?" @confirm="deleteRow()">
-      <i class="el-icon-delete" slot="reference"></i>
+      <el-button size="mini" type="text"  slot="reference" icon="el-icon-delete">删 除</el-button>
     </el-popconfirm>
   </div>
 </template>

+ 4 - 20
src/HDrpManagement/BrandManage/component/saleclass/components/edit.vue

@@ -1,11 +1,12 @@
 <template>
   <div class="add">
-    <i style="font-weight:bold" class="el-icon-plus" @click="dialogVisible=true" v-if="type=='add'"></i>
-    <i class="el-icon-edit" @click="editBtn" v-else></i>
+    <el-button size="mini" type="text"  @click="dialogVisible=true" v-if="type=='add'" icon="el-icon-plus">新增下级</el-button>
+    <el-button size="mini" type="text" @click="editBtn" icon="el-icon-edit"  v-else>编 辑</el-button>
     <el-dialog
       :title="type == 'add' ? '新增营销类别' : '编辑营销类别'"
       :visible.sync="dialogVisible"
-      width="30%"
+      width="400px"
+      append-to-body
       :before-close="handleClose">
       <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="130px" class="demo-ruleForm">
         <el-form-item label="营销类别名" prop="itemclassname">
@@ -14,9 +15,6 @@
         <el-form-item label="营销类别编号" prop="itemclassnum">
           <el-input v-model="ruleForm.itemclassnum" :disabled="type!='add'" size="small" placeholder="请输入营销类别编号"></el-input>
         </el-form-item>
-        <!-- <el-form-item label="营销类别全称" prop="itemclassfullname">
-          <el-input v-model="ruleForm.itemclassfullname" size="small" placeholder="请输入营销类别全称"></el-input>
-        </el-form-item> -->
       </el-form>
       <span slot="footer" class="dialog-footer">
         <div>
@@ -104,18 +102,4 @@ export default {
 </script>
 
 <style scoped>
-  .dialog-footer {
-    display: flex;
-    justify-content: space-evenly;
-  }
-  /deep/.el-dialog__body {
-    padding-top: 10px !important;
-    padding-bottom: 0 !important;
-  }
-  /deep/.dialog-footer {
-    margin-top: 10px !important;
-  }
-  /deep/.el-select {
-    width: 100% !important;
-  }
 </style>

+ 0 - 59
src/HDrpManagement/BrandManage/component/saleclass/index copy.vue

@@ -1,59 +0,0 @@
-<template>
-  <div class="brand normal-panel">
-    <dep-list @onClick="onClick" ref="list">
-      <template v-slot:add="scope">
-        <Edit type="add" @addSuccess="addSuccess" :rowData="scope.data" v-if="tool.checkAuth($route.name,'insert')"/>
-      </template>
-      <template v-slot:edit="scope">
-        <Edit type="edit" @addSuccess="addSuccess" v-if="scope.data.itemclassid && tool.checkAuth($route.name,'update')" :rowData="scope.data"/>
-      </template>
-      <template v-slot:del="scope">
-        <Del :id="scope.data.itemclassid" @deleteSuccess="deleteSuccess" v-if="scope.data.itemclassid && tool.checkAuth($route.name,'delete')"/>
-      </template>
-    </dep-list>
-  </div>
-</template>
-
-<script>
-import DepList from './components/dep_list'
-import Edit from './components/edit'
-import Del from './components/delete'
-export default {
-  name: '',
-  
-  data() {
-    return {
-      tablecols1:'',
-      list:''
-    };
-  },
-  components: {DepList,Edit,Del},
-  computed:{
-  },
-  watch:{
-  },
-  created() {
-    this.tablecols1 = this.tool.tabelCol(this.$route.name).salesTable.tablecols
-  },
-  methods: {
-    onClick(node) {
-      console.log(node);
-      this.list = [node.data]
-      // this.list = node
-    },
-    addSuccess() {
-      this.$refs.list.department()
-    },
-    deleteSuccess() {
-      this.$refs.list.department()
-    }
-  },
-};
-</script>
-
-<style scoped>
-  .brand {
-    height: calc(100vh - 100px);
-    display:flex;
-  }
-</style>

+ 109 - 11
src/HDrpManagement/BrandManage/component/saleclass/index.vue

@@ -1,29 +1,88 @@
 <template>
   <div class="brand">
+    <addTop class="mt-10" :sa_brandid="data.sa_brandid" @addSuccess="department"></addTop>
     <el-table
       :data="tableData"
-      row-key="id"
       border
-      :tree-props="{children: 'subdep', hasChildren: 'hasChildren'}">
+      stripe
+      row-key="itemclassid"
+      default-expand-all
+      size="small"
+      :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
+      <el-table-column
+        prop="num"
+        label="序号"
+        width="80">
+      </el-table-column>
+      <el-table-column
+        prop="itemclassfullname"
+        show-overflow-tooltip
+        label="类别名称"
+        width="200">
+        <template slot-scope="scope">
+          <span style="color:#3874f6"><b>{{scope.row.itemclassfullname}}</b></span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="itemclassnum"
+        label="上级类别">
+      </el-table-column>
+      <el-table-column
+        prop="itemclassnum"
+        label="类别编码">
+      </el-table-column>
       <el-table-column
         prop="itemclassname"
-        label="分类名称">
+        label="类别简称">
+        <template slot-scope="scope">
+          <span style="color:#3874f6"><b>{{scope.row.itemclassname}}</b></span>
+        </template>
       </el-table-column>
       <el-table-column
         prop="itemclassnum"
-        label="分类编号">
+        label="是否末级">
+        <template slot-scope="scope">
+          {{scope.row.isdeep === 1?'是':'否'}}
+        </template>
+      </el-table-column>
+       <el-table-column
+        prop="itemclassnum"
+        label="是否工具">
+        <template slot-scope="scope">
+          {{scope.row.istool === 1?'是':'否'}}
+        </template>
       </el-table-column>
       <el-table-column
-        prop="address"
-        label="地址">
+        prop="itemclassnum"
+        label="是否隐藏">
+         <template slot-scope="scope">
+          {{scope.row.ishide === 1?'是':'否'}}
+        </template>
       </el-table-column>
+      <!-- <el-table-column
+        label="操作"
+        width="200">
+        <template slot-scope="scope">
+          <Edit class="inline-16" type="add" @addSuccess="addSuccess" :rowData="scope.row"/>
+          <Edit class="inline-16" type="edit" @addSuccess="addSuccess" :rowData="scope.row"/>
+          <Del  class="inline-16" :id="scope.row.itemclassid" @deleteSuccess="deleteSuccess"/>
+        </template>
+      </el-table-column> -->
     </el-table>
   </div>
 </template>
 
 <script>
+import addTop from './components/addTop.vue'
+import Edit from './components/edit.vue'
+import Del from './components/delete.vue'
 export default {
   props:['data'],
+  components:{
+    addTop,
+    Edit,
+    Del
+  },
   data() {
     return {
       tableData:[]
@@ -40,7 +99,50 @@ export default {
           "sa_brandid":this.data.sa_brandid
         }
       })
-      this.tableData = res.data[0].ttemclass
+      this.tableData = this.createTreeData(res.data[0].ttemclass)
+      
+    },
+    createTreeData (array) {
+      var that = this
+      let arr = []
+      function convertToElementTree(node) {
+        // 新节点
+        var elNode = {
+          num:node['num'],
+          itemclassfullname:node['itemclassfullname'],
+          itemclassname: node["itemclassname"],
+          parentid:node['parentid'],
+          itemclassid:node['itemclassid'],
+          itemclassnum:node['itemclassnum'],
+          sa_brandid:that.data.sa_brandid,
+          ishide:node['ishide'],
+          isdeep:node['isdeep'],
+          istool:node['istool'],
+          children: []
+        }
+          
+        if (node.subdep && node.subdep.length > 0) {
+          // 如果存在子节点
+          for (var index = 0; index < node.subdep.length; index++) {
+          // 遍历子节点, 把每个子节点看做一颗独立的树, 传入递归构造子树, 并把结果放回到新node的children中
+          elNode.children.push(convertToElementTree(node.subdep[index]));
+          }
+        }
+        return elNode;
+      }
+      array.forEach((element) => {
+        arr.push(convertToElementTree(element))
+      });
+      return arr
+    },
+    addTopClass () {
+
+    },
+    addSuccess() {
+      this.department()
+    },
+    deleteSuccess() {
+      this.department()
     }
   },
   mounted () {
@@ -50,8 +152,4 @@ export default {
 </script>
 
 <style scoped>
-  .brand {
-    height: calc(100vh - 100px);
-    display:flex;
-  }
 </style>

+ 1 - 1
src/HDrpManagement/BrandManage/modules/edit.vue

@@ -4,7 +4,7 @@
     <el-drawer
       title="编辑品牌"
       :visible.sync="drawer"
-      size="800px"
+      size="900px"
       direction="rtl"
       append-to-body>
       <div class="drawer__panel">

+ 1 - 4
src/HDrpManagement/saleclass/index.vue

@@ -52,8 +52,5 @@ export default {
 </script>
 
 <style scoped>
-  .brand {
-    height: calc(100vh - 100px);
-    display:flex;
-  }
+
 </style>

+ 5 - 3
src/components/normal-basic-layout/details/index.vue

@@ -20,7 +20,7 @@
       </div>
       <div>
         <el-descriptions :column="5" size="mini">
-          <el-descriptions-item label-class-name="my-label-layout" content-class-name="my-content" v-for="item in mainAreaData" :key="item.index" :label="item.label"><span :style="item.style?item.style():''">{{item.value?item.value:'--'}}</span></el-descriptions-item>
+          <el-descriptions-item label-class-name="my-label-layout" content-class-name="my-content" v-for="item in mainAreaData" :key="item.index" :label="item.label"><span :style="item.style?item.style():''">{{item.value !== ''?item.value:'--'}}</span></el-descriptions-item>
         </el-descriptions>
       </div>
     </div>
@@ -36,6 +36,7 @@
           <slot name="custom"></slot>
         </el-col>
         <el-col v-if="collapse" style="width:400px;" :span="6">
+          <taskTemp></taskTemp>
           <group v-if="activeApp.isdatateam" ref="group" style="margin-bottom:10px" :ownertable="ownertable?ownertable:idname.slice(0, this.idname.length - 2)" @onSuccess="onSuccess">
             <el-button slot="collapse" type="text" icon="el-icon-s-unfold" class="inline-16" @click="onCollapse"></el-button>
           </group>
@@ -58,8 +59,8 @@ import cpEdit from '../modules/cpEdit.vue'
 import followUp from './modules/followUp/followUp.vue'
 import tagTemp from './modules/tags/tag.vue'
 import tabTemp from './modules/tabs/tab.vue'
-
 import group from './modules/group/group.vue'
+import taskTemp from './modules/task/index.vue'
 import {mapGetters} from 'vuex'
 export default {
   props:['titleText','mainAreaData','turnPageId','delApiId','idname','ownertable','formPath','oldFormPath','editData','tags','tabs','statusCheck','pageChange'],
@@ -93,7 +94,8 @@ export default {
     followUp,
     group,
     tagTemp,
-    tabTemp
+    tabTemp,
+    taskTemp
   },
   methods:{
     async queryData (pageNumber) {

+ 0 - 1
src/components/normal-basic-layout/details/modules/group/group.vue

@@ -72,7 +72,6 @@
 <script>
 import accountDialog from './select_account.vue'
 import member from '@/template/menber/index.vue'
-import { settings } from 'nprogress'
 export default {
   props:['ownertable'],
   components:{

+ 7 - 15
src/components/normal-basic-layout/details/modules/tags/tag.vue

@@ -9,19 +9,20 @@
     </div>
     <el-select
       v-else
+      ref="sle"
       style="width:30%;"
       v-model="datatag"
       multiple
       placeholder="请选择标签"
       size="mini"
       @visible-change="addTag"
-      @change="addTag">
+      @change="addTag"
+      @remove-tag="removetag">
       <el-option
         v-for="item in option"
         :key="item.index"
         :label="item.tag"
         :value="item.tag"
-        @click.native="setMutextag(item)"
         :disabled="hasDisabledTag(item)">
         <span style="float: left">{{ item.tag }}</span>
         <span style="float: right; color: #8492a6; font-size: 12px">{{ item.helptips?item.helptips:'暂无描述' }}</span>
@@ -55,7 +56,6 @@ export default {
       this.option = res.data.option
       this.datatag = res.data.datatag
       this.systemtag = res.data.systemtag
-      this.datatag.length > 0?this.setMutextag():''
     },
     async addTag (val) {
       if (val === false) {
@@ -69,20 +69,12 @@ export default {
           }
         })
         res.code === 1?this.queryTag():''
+        
       }
     },
-    setMutextag (item) {
-      //  let _isSame = this.datatag.some(tag=>item.tag === tag)
-      //  if (_isSame) {
-      //     this.mutextag = this.mutextag.concat(item.mutextag)
-      //  } else {
-      //   let a = new Set(this.mutextag);
-      //   let b = new Set(item.mutextag); 
-      //   this.mutextag = Array.from(new Set([...a].filter(x => !b.has(x))))
-      //  }
-      // var arr = this.option.filter(item=>{
-      //     return this.datatag.includes(item.tag)
-      // })
+    removetag () {
+      this.showTag = true
+      this.addTag(false)
     },
     hasDisabledTag (item) {
       let arr = []

+ 92 - 0
src/components/normal-basic-layout/details/modules/task/addTask.vue

@@ -0,0 +1,92 @@
+<template>
+  <div>
+    <el-button size="mini" type="text" @click="dialogTableVisible = true">
+        创建任务
+    </el-button>
+    <el-dialog title="新增待办" append-to-body :visible.sync="dialogTableVisible" width="700px">
+			<el-input class="normal-margin" v-model="form.title" placeholder="输入任务标题" type="text" show-word-limit maxlength="40" size="small"></el-input>
+			<el-input  class="normal-margin" v-model="form.remarks" placeholder="输入任务内容" type="textarea" show-word-limit maxlength="100" size="small"></el-input>
+			<div class="flex-align-center flex-between normal-margin">
+				<p class="task__label"><i class="el-icon-time"></i>&emsp;开始:</p>
+				<el-date-picker
+					v-model="form.starttime"
+					type="date"
+					placeholder="选择日期"
+					size="mini">
+				</el-date-picker>
+				&emsp;- &emsp;
+				<p class="task__label">结束:</p>
+				<el-date-picker
+					v-model="form.endtime"
+					type="date"
+					placeholder="选择日期"
+					size="mini">
+				</el-date-picker>
+			</div>
+			<div class="normal-margin">
+				<p class="task__label"><i class="el-icon-upload2"></i>&emsp;上传附件</p>
+				<upload type="button"></upload>
+			</div>
+			<div class="normal-margin">
+				<p class="mt-10 task__label">关联项目/客户</p>
+				<el-input placeholder="请输入内容" disabled v-model="input3" class="input-with-select" size="small">
+					<el-select v-model="form.nat" slot="prepend" style="width:100px" placeholder="请选择">
+						<el-option label="不关联" value="1"></el-option>
+						<el-option label="项目" value="2"></el-option>
+						<el-option label="客户" value="3"></el-option>
+					</el-select>
+				</el-input>
+			</div>
+			<div>
+				<p class="mt-10 task__label">执行人员</p>
+				<div class="flex-align-center flex-between">
+					<el-input placeholder="请输入内容" v-model="input3" class="input-with-select" size="small">
+						<p slot="prepend">主 办</p>
+					</el-input>
+					&emsp;
+					<el-input placeholder="请输入内容" v-model="input3" class="input-with-select" size="small">
+						<p slot="prepend">协 办</p>
+					</el-input>
+				</div>
+			</div>
+			<div slot="footer" class="dialog-footer">
+        <el-button size="small" style="width:120px" @click="dialogTableVisible = false">取 消</el-button>
+        <el-button type="warning" size="small" style="width:120px" @click="submit">创 建</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import upload from '@/components/upload/preview_upload.vue';
+export default {
+	props:['ownertable'],
+	components:{
+		upload
+	},
+	data () {
+		return {
+			dialogTableVisible:false,
+			form:{
+				"sys_taskid":0,
+        "title":"任务标题",
+        "remarks":"任务说明",
+        "starttime":"",
+        "remindday":1,
+        "ownertable":"归属表",
+        "ownerid":0,
+        "endtime":"",
+				"nat":'1'
+			}
+		}
+	},
+	methods:{
+		submit () {}
+	}
+}
+
+</script>
+<style scoped>
+.task__label{
+	color:rgb(173, 172, 172)
+}
+</style>

+ 35 - 0
src/components/normal-basic-layout/details/modules/task/index.vue

@@ -0,0 +1,35 @@
+
+<template>
+    <div class="normal-panel mt-10">
+      <div class="flex-align-center flex-between " style="border-bottom:1px solid #f1f2f3;padding:10px">
+        待办事项
+        <addTask></addTask>
+      </div>
+    </div>
+  </template>
+  
+  <script>
+  import addTask from './addTask.vue'
+  export default {
+    props:['ownertable'],
+    components:{
+      addTask
+    },
+    data () {
+      return {
+        options:[]
+        
+      }
+    },
+    methods:{
+    }
+  }
+  
+  </script>
+  <style>
+  </style>
+  <style scoped>
+  .normal-panel{
+    border-radius: 5px;
+  }
+  </style>