浏览代码

企业设置项目报备跨领域,组织架构部门新增报备领域,销售漏斗新增日期筛选

qymljy 1 年之前
父节点
当前提交
39e09bcb69

+ 19 - 2
src/HManagement/department/modules/add_dep.vue

@@ -27,6 +27,18 @@
               <el-input class="item_width-full" v-model="form.sequence" placeholder="请输入部门排序号" autocomplete="off"></el-input>
             </el-form-item>
           </el-col>
+          <el-col  :span="12">
+            <el-form-item label="报备领域" prop="tradefield">
+              <el-select v-model="form.tradefield" style="width:100%" placeholder="请选择报备领域" multiple clearable>
+                <el-option
+                    v-for="item in tradefields"
+                    :key="item.index"
+                    :label="item.value"
+                    :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
             <el-form-item label="是否启用">
               <el-checkbox v-model="form.isused" :false-label="0" :true-label="1">是否启用</el-checkbox>
@@ -68,8 +80,10 @@ export default {
         "depno":'',
         "parentid":this.data.departmentid,
         "remarks":"",
-        "sequence":""
-      }
+        "sequence":"",
+        "tradefield":""
+      },
+      tradefields:[]
     }
   },
   computed:{
@@ -80,6 +94,9 @@ export default {
   methods:{
     append () {
       this.dialogDepVisible = true
+      this.$store.dispatch('optiontypeselect','tradefield').then(res=>{
+        this.tradefields = res.data
+      })
     },
     onSubmit () {
       this.$refs['form'].validate(async (valid) => {

+ 4 - 3
src/HManagement/department/modules/dep_list.vue

@@ -44,7 +44,7 @@ export default {
       })
       // 数据格式转换成elementui-tree所需的格式
       this.deplist = this.createMenu(res.data)
-      
+
       this.$store.dispatch('setDeplistData',this.deplist)
       callback?callback():""
     },
@@ -67,9 +67,10 @@ export default {
           createby:node['createby'],
           depno:node['depno'],
           sequence:node['sequence'],
+          tradefield:node['tradefield'],
           children: []
         }
-          
+
         if (node.subdep && node.subdep.length > 0) {
           // 如果存在子节点
           for (var index = 0; index < node.subdep.length; index++) {
@@ -128,4 +129,4 @@ export default {
   background: #FAFAFA;
 }
 
-</style>
+</style>

+ 29 - 11
src/HManagement/department/modules/edit_dep.vue

@@ -20,12 +20,12 @@
               <el-input class="item_width-full" v-model="form.depno" placeholder="请输入部门编号" autocomplete="off"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="12">  
+          <el-col :span="12">
             <el-form-item class="item_width-full" label="部门描述" prop="remarks">
               <el-input class="item_width-full" v-model="form.remarks" placeholder="请输入部门描述" autocomplete="off"></el-input>
             </el-form-item>
           </el-col>
-          <el-col :span="12">  
+          <el-col :span="12">
             <el-form-item class="item_width-full" label="排序">
               <el-input class="item_width-full" v-model="form.sequence" placeholder="请输入部门排序号" autocomplete="off"></el-input>
             </el-form-item>
@@ -33,17 +33,29 @@
           <el-col :span="12">
             <el-form-item label="上级部门">
               <select-area ref="selectArea" @onClick="onClick">
-                <el-input 
-                  type="text" 
-                  size="small" 
-                  v-model="form.parentname" 
-                  slot="input" 
+                <el-input
+                  type="text"
+                  size="small"
+                  v-model="form.parentname"
+                  slot="input"
                   placeholder="请选择上级部门"
                   @focus="$refs.selectArea.dialogDepVisible=true"
                 ></el-input>
               </select-area>
             </el-form-item>
           </el-col>
+          <el-col  :span="12">
+            <el-form-item label="报备领域" prop="tradefield">
+              <el-select v-model="form.tradefield" style="width:100%" placeholder="请选择报备领域" multiple clearable>
+                <el-option
+                    v-for="item in tradefields"
+                    :key="item.index"
+                    :label="item.value"
+                    :value="item.value">
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <el-col :span="12">
             <el-form-item label="是否启用">
               <el-checkbox v-model="form.isused" :false-label="0" :true-label="1">是否启用</el-checkbox>
@@ -81,15 +93,21 @@ export default {
       form:{
         depname:'',
         parentid:'',
-        parentname:''
-      }
+        parentname:'',
+        tradefield:''
+      },
+      tradefields:[]
     }
   },
   methods:{
     append () {
+      console.log(this.data,'data编辑')
       this.form = Object.assign({},this.form,this.data)
-      this.form.depname = this.form.label 
+      this.form.depname = this.form.label
       this.dialogDepVisible = true
+      this.$store.dispatch('optiontypeselect','tradefield').then(res=>{
+        this.tradefields = res.data
+      })
     },
     onSubmit () {
       this.$refs['form'].validate(async (valid) => {
@@ -124,4 +142,4 @@ export default {
   margin-top:32px;
   text-align: center;
 }
-</style>
+</style>

+ 20 - 2
src/HManagement/siteManage/securityConfig/index.vue

@@ -165,6 +165,20 @@
         <quotedPrice v-if="tool.checkAuth($route.name,'quotedPrice')"  @queryRule="querySite_Parameter" :data="setData"></quotedPrice>
       </div>
     </div>
+    <div class="panel" style="margin-bottom:16px">
+      <div class="flex-align-center flex-between">
+        <div class="flex-align-stretch">
+          <img width="72" height="72" src="../../../assets/icons/projectTradefield.svg" alt="">
+          <div class="text-panel">
+            <p class="explain-title">项目报备跨领域限制</p>
+            <p class="explain-tips">当前设置:
+              <span>{{project_tradefield == 0?'关闭':'开启'}}</span>
+            </p>
+          </div>
+        </div>
+        <ProReportField v-if="tool.checkAuth($route.name,'ProReportField')" @queryRule="querySite_Parameter" :data="setData"></ProReportField>
+      </div>
+    </div>
     <div class="container normal-panel" style="display:flex;justify-content:space-around;border-bottom:none">
       <el-descriptions title="广告位管理"></el-descriptions>
     </div>
@@ -194,6 +208,7 @@ import projectCheckRule from "@/HManagement/siteManage/securityConfig/modules/pr
 import projectReportRule from "@/HManagement/siteManage/securityConfig/modules/projectReportRule";
 import projectTarget from './components/projectTarget/index'
 import quotedPrice from './modules/quotedPrice'
+import ProReportField from './modules/ProReportField'
 import {log} from "@antv/g2plot/lib/utils";
 
 export default {
@@ -210,7 +225,8 @@ export default {
     projectCheckRule,
     projectReportRule,
     projectTarget,
-    quotedPrice
+    quotedPrice,
+    ProReportField
   },
   data () {
     return {
@@ -224,7 +240,8 @@ export default {
       project_occupancy_ratio:[],
       projectprotectionperiod:'',
       setData:'',
-      quotedpricerecheck:''
+      quotedpricerecheck:'',
+      project_tradefield:''
     }
   },
   computed:{
@@ -265,6 +282,7 @@ export default {
       }
       this.project_occupancy_ratio = res.data.project_occupancy_ratio
       this.quotedpricerecheck = res.data.quotedpricerecheck
+      this.project_tradefield = res.data.project_tradefield
       console.log(res.data,'数据2');
       this.setData = res.data
       this.$refs.messageTips.form = Object.assign({},this.$refs.messageTips.form,res.data)

+ 61 - 0
src/HManagement/siteManage/securityConfig/modules/ProReportField.vue

@@ -0,0 +1,61 @@
+<template>
+  <div>
+    <el-button size="small" style="width:120px" type="primary" @click="querySite_Parameter">设 置</el-button>
+    <el-dialog title="报价单特价审批设置" append-to-body :visible.sync="dialogSetVisible" width="860px">
+      <el-row :gutter="16" style="text-align: center">
+        <el-col :span="24" style="margin-top: -20px">
+          <span style="color: #8C8C8C">是否开启项目报备跨领域限制?</span>
+        </el-col>
+        <el-col :span="24" style="margin-top: 20px">
+          <div style="width: 780px;" class="inline-16" >
+            <el-radio-group v-model="project_tradefield">
+              <el-radio :label="1" style="color: #8C8C8C">开启</el-radio>
+              <el-radio :label="0" style="color: #8C8C8C">关闭</el-radio>
+            </el-radio-group>
+          </div>
+        </el-col>
+      </el-row>
+      <div class="dialog-footer">
+        <el-button size="small" @click="dialogSetVisible = false" class="normal-btn-width">取 消</el-button>
+        <el-button size="small" type="warning"  class="normal-btn-width btn-warning" @click="onSubmit">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "ProReportField",
+  props:["data"],
+  data() {
+    return {
+      dialogSetVisible:false,
+      project_tradefield:0
+    }
+  },
+  methods:{
+    querySite_Parameter(){
+      console.log(this.data,'data')
+      this.dialogSetVisible = true
+      this.project_tradefield = this.data.project_tradefield
+    },
+    async onSubmit(){
+      const res = await this.$api.requested({
+        "classname": "webmanage.site.site",
+        "method":"updateSite_Parameter",
+        "content": {
+          "project_tradefield":this.project_tradefield
+        }
+      })
+      this.tool.showMessage(res,()=>{
+        this.$emit('queryRule')
+        this.dialogSetVisible = false
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

文件差异内容过多而无法显示
+ 0 - 0
src/assets/icons/projectTradefield.svg


+ 79 - 4
src/views/mediaStatistics/modules/salesfunnel.vue

@@ -16,7 +16,7 @@
         </el-option>
       </el-select>
     </div>
-    <div class="inline-16">
+    <div class="inline-16" style="margin-top:0px;margin-bottom: 20px">
       <el-button-group>
         <el-button size="small" :type="dataParam.content.dateType==1?'primary':''" @click="dataChange(1)" >近一年</el-button>
         <el-button size="small" :type="dataParam.content.dateType==2?'primary':''" @click="dataChange(2)">近九个月</el-button>
@@ -24,6 +24,20 @@
         <el-button size="small" :type="dataParam.content.dateType==4?'primary':''" @click="dataChange(4)">近三个月</el-button>
       </el-button-group>
     </div>
+    <div class="inline-16" style="margin-top:0px;margin-bottom: 20px">
+      <el-date-picker
+          size="small"
+          v-model="dateSelect"
+          @change="dateChange"
+          type="daterange"
+          :clearable="false"
+          format="yyyy-MM-dd"
+          value-format="yyyy-MM-dd"
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期">
+      </el-date-picker>
+    </div>
     <div>
       <el-row>
         <el-col :xs="15" :sm="15" :md="15" :lg="15" :xl="14">
@@ -203,6 +217,7 @@ export default {
           'dateType':1,
           "where": {
             "begindate": "",
+            "begdate":"",
             "enddate":"",
             "departmentid":""
           }
@@ -216,9 +231,14 @@ export default {
           "type": '',
           "dataid": '',
           "dateType": '',
-          "sa_projstagemagid":''
+          "sa_projstagemagid":'',
+          "where": {
+            "begdate":"",
+            "enddate":"",
+          }
         }
-      }
+      },
+      dateSelect:[]
     }
   },
   methods:{
@@ -303,6 +323,60 @@ export default {
     },
     dataChange(val){
       this.dataParam.content.dateType = val
+      this.projectParam.content.dateType = val
+      if (val == '1'){
+        let currentDate = new Date(); // 获取当前日期
+        let startDate = new Date(currentDate.getFullYear() - 1, currentDate.getMonth(), currentDate.getDate() + 1); // 计算起始日期
+        let endDate = currentDate; // 结束日期为当前日期
+        this.dateSelect = [startDate.toISOString().split('T')[0],endDate.toISOString().split('T')[0]]
+      }else if (val == '2'){
+        let currentDate = new Date(); // 获取当前日期
+        let startDate = new Date(currentDate.getFullYear(), currentDate.getMonth() - 8, currentDate.getDate() + 1); // 计算起始日期
+        let endDate = currentDate; // 结束日期为当前日期
+        this.dateSelect = [startDate.toISOString().split('T')[0],endDate.toISOString().split('T')[0]]
+      }else if (val == '3'){
+        let currentDate = new Date(); // 获取当前日期
+        let startDate = new Date(currentDate.getFullYear(), currentDate.getMonth() - 5, currentDate.getDate() + 1); // 计算起始日期
+        let endDate = currentDate; // 结束日期为当前日期
+        this.dateSelect = [startDate.toISOString().split('T')[0],endDate.toISOString().split('T')[0]]
+      }else if (val == '4'){
+        let currentDate = new Date(); // 获取当前日期
+        let startDate = new Date(currentDate.getFullYear(), currentDate.getMonth() - 2, currentDate.getDate() + 1); // 计算起始日期
+        let endDate = currentDate; // 结束日期为当前日期
+        this.dateSelect = [startDate.toISOString().split('T')[0],endDate.toISOString().split('T')[0]]
+      }
+      this.getProportionOfFileModel()
+    },
+    dateSet(val){
+      if (val == '1'){
+        let currentDate = new Date(); // 获取当前日期
+        let startDate = new Date(currentDate.getFullYear() - 1, currentDate.getMonth(), currentDate.getDate() + 1); // 计算起始日期
+        let endDate = currentDate; // 结束日期为当前日期
+        this.dateSelect = [startDate.toISOString().split('T')[0],endDate.toISOString().split('T')[0]]
+      }else if (val == '2'){
+        let currentDate = new Date(); // 获取当前日期
+        let startDate = new Date(currentDate.getFullYear(), currentDate.getMonth() - 9, currentDate.getDate() + 1); // 计算起始日期
+        let endDate = currentDate; // 结束日期为当前日期
+        this.dateSelect = [startDate.toISOString().split('T')[0],endDate.toISOString().split('T')[0]]
+      }else if (val == '3'){
+        let currentDate = new Date(); // 获取当前日期
+        let startDate = new Date(currentDate.getFullYear(), currentDate.getMonth() - 6, currentDate.getDate() + 1); // 计算起始日期
+        let endDate = currentDate; // 结束日期为当前日期
+        this.dateSelect = [startDate.toISOString().split('T')[0],endDate.toISOString().split('T')[0]]
+      }else if (val == '4'){
+        let currentDate = new Date(); // 获取当前日期
+        let startDate = new Date(currentDate.getFullYear(), currentDate.getMonth() - 3, currentDate.getDate() + 1); // 计算起始日期
+        let endDate = currentDate; // 结束日期为当前日期
+        this.dateSelect = [startDate.toISOString().split('T')[0],endDate.toISOString().split('T')[0]]
+      }
+    },
+    dateChange(){
+      this.dataParam.content.dateType = 0
+      this.dataParam.content.where.begdate = this.dateSelect[0]
+      this.dataParam.content.where.enddate = this.dateSelect[1]
+      this.projectParam.content.dateType = 0
+      this.projectParam.content.where.begdate = this.dateSelect[0]
+      this.projectParam.content.where.enddate = this.dateSelect[1]
       this.getProportionOfFileModel()
     },
     renderPie() {
@@ -689,7 +763,7 @@ export default {
     async getProjectList(){
       this.projectParam.content.type = this.dataParam.content.type
       this.projectParam.content.dataid = this.dataParam.content.dataid
-      this.projectParam.content.dateType = this.dataParam.content.dateType
+      /*this.projectParam.content.dateType = this.dataParam.content.dateType*/
       this.projectParam.content.sa_projstagemagid = this.sa_projstagemagid
       const res = await this.$api.requested(this.projectParam)
       this.projectList = res.data
@@ -709,6 +783,7 @@ export default {
   mounted () {
    /* this.renderPie()*/
     this.departmentrtment()
+    this.dateSet(1)
   },
   created() {
     this.tablecols = this.tool.tabelCol(this.$route.name).projectTable.tablecols

部分文件因为文件数量过多而无法显示