Kaynağa Gözat

销售预测调整

qymljy 2 yıl önce
ebeveyn
işleme
13eaa4c211
24 değiştirilmiş dosya ile 408 ekleme ve 79 silme
  1. 18 6
      src/HDrpManagement/invoicePredictionManage/details/index.vue
  2. 1 1
      src/HDrpManagement/invoicePredictionManage/details/modules/custom.vue
  3. 6 0
      src/HDrpManagement/invoicePredictionManage/details/modules/order.vue
  4. 16 7
      src/HDrpManagement/invoicePredictionManage/details/modules/subordinate.vue
  5. 4 2
      src/HDrpManagement/invoicePredictionManage/index.vue
  6. 23 0
      src/HDrpManagement/invoicePredictionManage/modules/detailInfo.vue
  7. 3 3
      src/HDrpManagement/predictionRule/modules/editMonth.vue
  8. 10 9
      src/HDrpManagement/predictionRule/modules/editWeek.vue
  9. 79 0
      src/HDrpManagement/projectChange/components/defeat.vue
  10. 5 5
      src/HDrpManagement/projectChange/components/del.vue
  11. 63 5
      src/HDrpManagement/projectChange/components/finish.vue
  12. 5 0
      src/HDrpManagement/projectChange/index.vue
  13. 7 3
      src/HDrpManagement/projectChange/modules/detail.vue
  14. 10 1
      src/HDrpManagement/projectPredictionManage/details/index.vue
  15. 11 11
      src/HDrpManagement/projectPredictionManage/details/modules/projectList.vue
  16. 1 0
      src/HDrpManagement/projectPredictionManage/details/modules/subordinate.vue
  17. 2 2
      src/HManagement/siteManage/securityConfig/modules/edit.vue
  18. 4 1
      src/SDrpManagement/invoicePrediction/index.vue
  19. 44 0
      src/SDrpManagement/invoicePrediction/modules/detailInfo.vue
  20. 45 0
      src/SDrpManagement/invoicePrediction/modules/edit.vue
  21. 6 2
      src/SDrpManagement/projectPrediction/detail/index.vue
  22. 17 17
      src/components/normal-basic-layout/details/index.vue
  23. 27 3
      src/template/prediction/addProjectTemp.vue
  24. 1 1
      src/views/mediaStatistics/modules/salesfunnel.vue

+ 18 - 6
src/HDrpManagement/invoicePredictionManage/details/index.vue

@@ -55,6 +55,10 @@
                   <div v-if="scope.column.columnname === 'operation'">
                     <span>{{scope.column.data[scope.column.columnname]}}</span>
                   </div>
+                  <div v-else-if="scope.column.columnname === 'projectamount'">
+                    <span v-if="!scope.column.data.sa_salesforecastbillid" style="color: #ff0000">{{'¥'+tool.formatAmount(scope.column.data.projectamount,2)}}</span>
+                    <span v-else>{{'¥'+tool.formatAmount(scope.column.data.projectamount,2)}}</span>
+                  </div>
                   <p v-else>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
                 </template>
                 <template v-slot:opreation="scope">
@@ -76,13 +80,13 @@
         </div>
       </template>
       <div slot="slot0" class=" normal-panel">
-        <orderList @onSuccess="onSuccess" :id="$route.query.id"  ></orderList>
+        <orderList @onSuccess="onSuccess" :id="$route.query.id"  :isDisabled="$route.query.isDetail == 1 ?true:false"></orderList>
       </div>
       <div slot="slot1" class=" normal-panel">
-        <projectList @onSuccess="onSuccess" :id="$route.query.id"  ></projectList>
+        <projectList @onSuccess="onSuccess" :id="$route.query.id"  :isDisabled="$route.query.isDetail == 1 ?true:false"></projectList>
       </div>
       <div slot="slot2" class=" normal-panel">
-        <customList @onSuccess="onSuccess" :id="$route.query.id"  ></customList>
+        <customList @onSuccess="onSuccess" :id="$route.query.id"  :isDisabled="$route.query.isDetail == 1 ?true:false"></customList>
       </div>
     </newDetails>
     <el-drawer
@@ -93,7 +97,7 @@
         append-to-body
     >
       <div class="detail__panel">
-        <subordinateDetail :id="id" ref="subordinate"></subordinateDetail>
+        <subordinateDetail :id="id" ref="subordinate" :isDisabled="$route.query.isDetail == 1 ?true:false"></subordinateDetail>
       </div>
     </el-drawer>
   </div>
@@ -201,11 +205,19 @@ export default {
         },
         {
           label:'出货预测金额',
-          value: this.tool.formatAmount(this.mainData.orderoutamount,2)
+          value: '¥'+this.tool.formatAmount(this.mainData.orderoutamount,2),
+          style: ()=> {
+            let style = {color:'#ff0000'}
+            return style
+          }
         },
         {
           label:'开票预测金额',
-          value: this.tool.formatAmount(this.mainData.orderinvoamount,2)
+          value: '¥'+this.tool.formatAmount(this.mainData.orderinvoamount,2),
+          style: ()=> {
+            let style = {color:'#ff0000'}
+            return style
+          }
         },
       ]
     },

+ 1 - 1
src/HDrpManagement/invoicePredictionManage/details/modules/custom.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <addCustom v-if="!isDisabled" ref="addOrder" :param="paramAdd" :tablecols="tablecolsAdd" :title="'添加订单'" class="inline-16" @add="addCustom" @adds="addCustoms"></addCustom>
+    <addCustom v-if="!isDisabled" ref="addOrder" :param="paramAdd" :tablecols="tablecolsAdd" :title="'添加客户'" class="inline-16" @add="addCustom" @adds="addCustoms"></addCustom>
     <el-button v-if="!isDisabled" :type="items.length > 0?'primary':''" size="small" @click="delCustom" class="inline-16" :disabled="items.length === 0">删 除</el-button>
     <el-input  style="width:200px;" placeholder="搜索" :suffix-icon="param.content.where.condition?param.content.where.condition.length > 0?'':'':'el-icon-search'" v-model="param.content.where.condition" @keyup.native.enter="listData(param.content.pageNumber = 1)" @clear="listData(param.content.pageNumber = 1)" size="small" class="input-with-select inline-16 layout_search__panel" clearable>
     </el-input>

+ 6 - 0
src/HDrpManagement/invoicePredictionManage/details/modules/order.vue

@@ -178,6 +178,12 @@ export default {
       this.listData()
     },
     async onChange(val,index,data){
+      if (data.outamount < 0){
+        data.outamount = 0
+      }
+      if (data.invoiceamount < 0){
+        data.invoiceamount = 0
+      }
       const res = await this.$api.requested({
         "id": 20230705145204,
         "content": {

+ 16 - 7
src/HDrpManagement/invoicePredictionManage/details/modules/subordinate.vue

@@ -3,27 +3,35 @@
     <basicDetails
         ref="details"
         :titleText="mainData.title"
-        formPath="projectChange"
         :editData="mainData"
         :mainAreaData="mainAreaData"
         idname="sa_salesforecastbillid"
+        :pageChange="true"
         :tags="[]"
-        :tabs="['订单']"
-        @onEditSuccess="queryMainData($route.query.id)"
+        :tabs="['订单','项目','客户']"
+        @onEditSuccess="queryMainData(id)"
        >
       <div slot="slot0" class=" normal-panel">
-
+        <orderList :id="id" :isDisabled="isDisabled"></orderList>
+      </div>
+      <div slot="slot1" class=" normal-panel">
+        <projectList :id="id" :isDisabled="isDisabled"></projectList>
+      </div>
+      <div slot="slot2" class=" normal-panel">
+        <customList :id="id" :isDisabled="isDisabled"></customList>
       </div>
     </basicDetails>
   </div>
 </template>
 
 <script>
-
+import orderList from './order'
+import projectList from './project'
+import customList from './custom'
 export default {
   name: "subordinate",
-  components:{},
-  props:["id"],
+  components:{orderList,projectList,customList},
+  props:["id","isDisabled"],
   data(){
     return {
       mainData:'',
@@ -39,6 +47,7 @@ export default {
         }
       })
       this.mainData = res.data
+      console.log(this.mainData,'6666')
       this.changeDataStructure()
 
     },

+ 4 - 2
src/HDrpManagement/invoicePredictionManage/index.vue

@@ -56,7 +56,8 @@
         </p>
       </template>
       <template v-slot:tbOpreation="scope">
-        <edit :data="scope.data.data"></edit>
+        <edit v-if="scope.data.data.status === '进行中'" :data="scope.data.data"></edit>
+        <detailInfo v-else :data="scope.data.data"></detailInfo>
       </template>
     </basicLayout>
   </div>
@@ -64,9 +65,10 @@
 
 <script>
 import edit from './modules/edit'
+import detailInfo from './modules/detailInfo'
 export default {
   name: "index",
-  components:{edit},
+  components:{edit,detailInfo},
   data(){
     return {
       dateSelect:'',

+ 23 - 0
src/HDrpManagement/invoicePredictionManage/modules/detailInfo.vue

@@ -0,0 +1,23 @@
+<template>
+  <div>
+    <el-button size="mini" type="text" @click="onShow">详 情</el-button>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "edit",
+  props:["data"],
+  methods:{
+    onShow(){
+      let query = {id:this.data.sa_salesforecastbillid,rowindex:this.data.rowindex,isDetail:1}
+      this.$router.push({path:'/invoiceManageDetail',query:query})
+      this.$store.dispatch('changeDetailDrawer',true)
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 3 - 3
src/HDrpManagement/predictionRule/modules/editMonth.vue

@@ -48,7 +48,7 @@
             </el-col>
             <el-col :span="24" :offset="2">
               <div class="normal-title inline-16" style="font-size:14px;margin-right:10px" >部门</div>
-              <addDepartment class="inline-16" style="margin-bottom: 10px" @selectDepartment="selectDepartmentFun" ></addDepartment>
+              <addDepartment v-if="data.status === '关闭'" class="inline-16" style="margin-bottom: 10px" @selectDepartment="selectDepartmentFun" ></addDepartment>
             </el-col>
             <el-col :span="24" :offset="2">
                   <el-table
@@ -80,7 +80,7 @@
             </el-col>
             <el-col :span="24" :offset="2" style="margin-top: 20px">
               <div class="normal-title inline-16" style="font-size:14px;margin-right:10px" >组织内指定人员</div>
-              <addPeople :hrids="form.sales" class="inline-16" style="margin-bottom: 10px" @selectPeople="selectPeople" ></addPeople>
+              <addPeople v-if="data.status === '关闭'" :hrids="form.sales" class="inline-16" style="margin-bottom: 10px" @selectPeople="selectPeople" ></addPeople>
             </el-col>
             <el-col :span="24" :offset="2">
               <el-table
@@ -435,7 +435,7 @@ export default {
     selectDepartmentFun(val){
       console.log(val)
       let addDep = []
-      addDep = val.map(item=>item.departmentid)
+      addDep[0] = val.departmentid
       this.form.departments = this.form.departments.concat(addDep)
       console.log(this.form)
       this.onList(2)

+ 10 - 9
src/HDrpManagement/predictionRule/modules/editWeek.vue

@@ -11,9 +11,9 @@
                 <el-select v-model="form.start" placeholder="请选择" style="width: 100%" clearable>
                   <el-option
                       v-for="item in selectDay"
-                      :key="item"
-                      :label="item"
-                      :value="item">
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value">
                   </el-option>
                 </el-select>
               </el-form-item>
@@ -23,9 +23,9 @@
                 <el-select v-model="form.end" placeholder="请选择" style="width: 100%" clearable>
                   <el-option
                       v-for="item in selectDay"
-                      :key="item"
-                      :label="item"
-                      :value="item">
+                      :key="item.value"
+                      :label="item.label"
+                      :value="item.value">
                   </el-option>
                 </el-select>
               </el-form-item>
@@ -48,7 +48,7 @@
             </el-col>
             <el-col :span="24" :offset="2">
               <div class="normal-title inline-16" style="font-size:14px;margin-right:10px" >部门</div>
-              <addDepartment class="inline-16" style="margin-bottom: 10px" @selectDepartment="selectDepartmentFun" ></addDepartment>
+              <addDepartment v-if="data.status === '关闭'" class="inline-16" style="margin-bottom: 10px" @selectDepartment="selectDepartmentFun" ></addDepartment>
             </el-col>
             <el-col :span="24" :offset="2">
                   <el-table
@@ -80,7 +80,7 @@
             </el-col>
             <el-col :span="24" :offset="2" style="margin-top: 20px">
               <div class="normal-title inline-16" style="font-size:14px;margin-right:10px" >组织内指定人员</div>
-              <addPeople :hrids="form.sales" class="inline-16" style="margin-bottom: 10px" @selectPeople="selectPeople" ></addPeople>
+              <addPeople v-if="data.status === '关闭'" :hrids="form.sales" class="inline-16" style="margin-bottom: 10px" @selectPeople="selectPeople" ></addPeople>
             </el-col>
             <el-col :span="24" :offset="2">
               <el-table
@@ -187,6 +187,7 @@ export default {
       departmentids:[],
       deplist:[],
       depData:[],
+      personData:[],
       listRole:[],
       listPerson:[],
       checkPerson:[],
@@ -438,7 +439,7 @@ export default {
     selectDepartmentFun(val){
       console.log(val)
       let addDep = []
-      addDep = val.map(item=>item.departmentid)
+      addDep[0] = val.departmentid
       this.form.departments = this.form.departments.concat(addDep)
       console.log(this.form)
       this.onList(2)

+ 79 - 0
src/HDrpManagement/projectChange/components/defeat.vue

@@ -0,0 +1,79 @@
+<template>
+  <div>
+    <el-button  size="mini" :type="!disabled?'':'primary'" slot="reference" @click="onShow" :disabled="!disabled">失 败</el-button>
+    <el-dialog title="项目失败" append-to-body :visible.sync="dialogVisible" width="500px">
+      <el-row :gutter="20">
+        <el-form label-position="right" ref="form" :rules="rules"  inline label-width="100px" :model="form" size="small">
+          <el-col :span="24">
+            <el-form-item label="失败原因" prop="defeatreason">
+              <el-input v-model="form.defeatreason" placeholder="请输入项目失败原因" style="width: 100%"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <div slot="footer" class="dialog-footer">
+        <div>
+          <el-button @click="onClose" size="small">取 消</el-button>
+          <el-button type="primary" @click="onDefeat" size="small">确 定</el-button>
+        </div>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "defeat",
+  props:['disabled'],
+  data(){
+    return {
+      dialogVisible:false,
+      formLabelWidth:'120px',
+      form:{
+        "sa_projectid": 4907,
+        "defeatreason":""
+      },
+      rules:{
+        defeatreason:[
+          { required: true, message: '请填写失败原因', trigger: 'blur' }
+        ]
+      }
+    }
+  },
+  methods:{
+    onShow(){
+      this.dialogVisible = true
+    },
+    onDefeat(){
+      this.$refs.form.validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 20230706152904,
+          "content": {
+            "sa_projectid": this.$route.query.id,
+            "defeatreason": this.form.defeatreason
+          }
+        })
+        this.tool.showMessage(res,()=>{
+          this.dialogVisible = false
+          this.form.defeatreason = ''
+          this.$emit('onDefeat')
+        })
+      })
+    },
+    onClose(){
+      this.dialogVisible = false
+      this.form.defeatreason = ''
+    }
+  }
+}
+</script>
+
+<style scoped>
+/deep/.el-form-item {
+  width: 100% !important;
+}
+/deep/.el-form-item__content {
+  width: calc(100% - 100px);
+}
+</style>

+ 5 - 5
src/HDrpManagement/projectChange/components/del.vue

@@ -1,12 +1,12 @@
 <template>
   <div >
     <el-button slot="reference" :type="!disabled ?'':'primary'" size="mini" :disabled="!disabled " @click="dialogTableVisible=true" >作 废</el-button>
-    <el-dialog title="作废项目" append-to-body :visible.sync="dialogTableVisible" width="25%">
+    <el-dialog title="作废项目" append-to-body :visible.sync="dialogTableVisible" width="500px">
       <el-row :gutter="20">
         <el-form label-position="right" ref="form" :rules="rules" inline label-width="100px" :model="form" size="small">
           <el-col :span="24">
-            <el-form-item label="作废原因" prop="deletereason">
-              <el-input v-model="form.deletereason" placeholder="请输入作废原因名称"></el-input>
+            <el-form-item label="作废原因" >
+              <el-input v-model="form.deletereason" placeholder="请输入作废原因" style="width: 100%"></el-input>
             </el-form-item>
           </el-col>
         </el-form>
@@ -22,7 +22,7 @@
 </template>
 
 <script>
-/* 
+/*
 id:数据id
 nameId:接口id
 nameKey:接口字段
@@ -68,4 +68,4 @@ export default {
 /deep/.el-form-item__content {
   width: calc(100% - 100px);
 }
-</style>
+</style>

+ 63 - 5
src/HDrpManagement/projectChange/components/finish.vue

@@ -1,6 +1,23 @@
 <template>
   <div>
-    <el-button  size="mini" :type="!disabled?'':'primary'" slot="reference" @click="onFinish" :disabled="!disabled">结 束</el-button>
+    <el-button  size="mini" :type="!disabled?'':'primary'" slot="reference" @click="onShow" :disabled="!disabled">结 束</el-button>
+    <el-dialog title="项目结束" append-to-body :visible.sync="dialogVisible" width="500px">
+      <el-row :gutter="20">
+        <el-form label-position="right" ref="form" :rules="rules"  inline label-width="100px" :model="form" size="small">
+          <el-col :span="24">
+            <el-form-item label="结束原因" prop="endreason">
+              <el-input v-model="form.endreason" placeholder="请输入项目结束原因" style="width: 100%"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <div slot="footer" class="dialog-footer">
+        <div>
+          <el-button @click="onClose" size="small">取 消</el-button>
+          <el-button type="primary" @click="onFinish" size="small">确 定</el-button>
+        </div>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -8,8 +25,44 @@
 export default {
   name: "finish",
   props:['disabled'],
+  data(){
+    return {
+      dialogVisible:false,
+      form:{
+        endreason:''
+      },
+      rules:{
+        endreason:[
+          { required: true, message: '请填写结束原因', trigger: 'blur' }
+        ]
+      }
+    }
+  },
   methods:{
-    onFinish() {
+    onShow(){
+      this.dialogVisible = true
+    },
+    onFinish(){
+      this.$refs.form.validate(async (valid) => {
+        if (!valid) return false
+        const res = await this.$api.requested({
+          "id": 20221215163702,
+          "content": {
+            "sa_projectid": this.$route.query.id,
+            'endreason':this.form.endreason
+          },
+        })
+        this.tool.showMessage(res,()=>{
+          this.onClose()
+          this.$emit("onFinish")
+        })
+      })
+    },
+    onClose(){
+      this.dialogVisible = false
+      this.form.endreason = ''
+    }
+    /*onFinish() {
       this.$confirm('确定结束当前项目吗?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
@@ -30,11 +83,16 @@ export default {
           message: '已取消结束项目'
         });
       });
-    }
+    }*/
   }
 }
 </script>
 
 <style scoped>
-
-</style>
+/deep/.el-form-item {
+  width: 100% !important;
+}
+/deep/.el-form-item__content {
+  width: calc(100% - 100px);
+}
+</style>

+ 5 - 0
src/HDrpManagement/projectChange/index.vue

@@ -137,6 +137,7 @@
           <span style="color:#52c41a" v-if="scope.data.column.data[[scope.data.column.columnname]] == '跟进中'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
           <span style="color:#fa8c16" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '已成交'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
           <span style="color:#999999" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '已失败'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
+          <span style="color:#999999" v-else-if="scope.data.column.data[[scope.data.column.columnname]] == '已结束'">{{scope.data.column.data[[scope.data.column.columnname]]}}</span>
         </div>
         <div v-else-if="scope.data.column.columnname === 'tag_sys'">
           <div v-for="item in scope.data.column.data.tag_sys" :key="item.index"  style="float: left;margin-left: 5px;margin-bottom: 5px">
@@ -223,6 +224,10 @@ export default {
           {
             value:"已失败",
             label:"已失败"
+          },
+          {
+            value:"已结束",
+            label:"已结束"
           }
         ],
         stageList:[

+ 7 - 3
src/HDrpManagement/projectChange/modules/detail.vue

@@ -19,9 +19,10 @@
       <!-- 此区域提供了自定义操作按钮 -->
       <mindmap ref="mindmap" class="inline-16" :id="this.$route.query.id" name="project"></mindmap>
       <putPeople style=" display: inline-block !important;" @putSuccess="putSuccess" v-if="flagTag !== ''" :rowData="mainData" :flagTag="flagTag" :disabled="mainData.disabled" @onClose="onSuccess"/>
-      <projectRecovery class="inline-16" :data="mainData" v-if="tool.checkAuth($route.name,'recovery')  && mainData.status === '已失败'" :disabled="mainData.disabled" @onRecovery="onSuccess"></projectRecovery>
+      <projectRecovery class="inline-16" :data="mainData" v-if="tool.checkAuth($route.name,'recovery')  && mainData.status === '已结束'" :disabled="mainData.disabled" @onRecovery="onSuccess"></projectRecovery>
       <duplicatesProject class="inline-16" :data="mainData" v-if="tool.checkAuth($route.name,'queryDuplicates') " :disabled="mainData.disabled" @dialogClose="dialogClose"></duplicatesProject>
       <finish class="inline-16" v-if="tool.checkAuth($route.name,'finish')  && mainData.status === '跟进中'" :disabled="mainData.disabled" @onFinish="onSuccess"></finish>
+      <defeat class="inline-16" v-if="tool.checkAuth($route.name,'defeat')  && mainData.status === '跟进中'" :disabled="mainData.disabled" @onDefeat="onSuccess"></defeat>
       <Del class="inline-16" :id="mainData.sa_projectid" :nameId="20221020144302" :rowData="mainData" nameKey="sa_projectids" v-if="tool.checkAuth($route.name,'toVoid') " :disabled="mainData.disabled" @deleteSuccess="deleteSuccess"/>
     </div>
     <template #customBefore>
@@ -96,6 +97,7 @@ import duplicatesProject from "@/components/duplicatesData/duplicatesProject";
 import projectRecovery from "@/components/duplicatesCheck/projectRecovery";
 import mindmap from "@/components/mindmap/index.vue";
 import reportingProgress from './modules/reportingProgress/index.vue'
+import defeat from '../components/defeat'
 
 export default {
   components:{
@@ -118,7 +120,8 @@ export default {
     contract,
     duplicatesProject,
     projectRecovery,
-    mindmap
+    mindmap,
+    defeat
   },
   data () {
     return {
@@ -418,7 +421,8 @@ export default {
           {label:'报备审核人',value:this.mainData.reportcheckby?this.mainData.reportcheckby:'--'},
           {label:'报备审核时间',value:this.mainData.reportcheckdate?this.mainData.reportcheckdate:'--'},
           /*{label:'锁定状态',value:this.mainData.locked == '0' ? '锁定' : '解锁'},*/
-          {label:'作废原因',value:this.mainData.deletereason?this.mainData.deletereason:'--'},
+          {label:'结束原因',value:this.mainData.endreason?this.mainData.endreason:'--'},
+          {label:'失败原因',value:this.mainData.defeatreason?this.mainData.defeatreason:'--'},
           {label:'转手次数',value:this.mainData.leader.length !== 0?this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum:'--'},
         ]
       }

+ 10 - 1
src/HDrpManagement/projectPredictionManage/details/index.vue

@@ -51,6 +51,10 @@
                  <div v-if="scope.column.columnname === 'operation'">
                    <span>{{scope.column.data[scope.column.columnname]}}</span>
                  </div>
+                 <div v-else-if="scope.column.columnname === 'projectamount'">
+                   <span v-if="!scope.column.data.sa_salesforecastbillid" style="color: #ff0000">{{'¥'+tool.formatAmount(scope.column.data.projectamount,2)}}</span>
+                   <span v-else>{{'¥'+tool.formatAmount(scope.column.data.projectamount,2)}}</span>
+                 </div>
                  <p v-else>{{scope.column.data[scope.column.columnname]?scope.column.data[scope.column.columnname]:'--'}}</p>
                </template>
                <template v-slot:opreation="scope">
@@ -117,6 +121,7 @@ export default {
       param:{
         "id": 20230705144804,
         "content": {
+          "nocache":true,
           "type":1,
           "dataid":0,
           "baseonproject":1,
@@ -191,7 +196,11 @@ export default {
         },
         {
           label:'预测金额',
-          value: this.tool.formatAmount(this.mainData.projectamount,2)
+          value: '¥'+this.tool.formatAmount(this.mainData.projectamount,2),
+          style: ()=> {
+            let style = {color:'#ff0000'}
+            return style
+          }
         },
       ]
     },

+ 11 - 11
src/HDrpManagement/projectPredictionManage/details/modules/projectList.vue

@@ -112,7 +112,7 @@ export default {
       brandid:'',
       tradefield:'',
       sa_brandid:'',
-      discountrate:1,
+      discountrate:'',
       projectCols:[],
       productCols:[],
       tablecolsAdd:[],
@@ -225,7 +225,7 @@ export default {
       const res = await this.$api.requested({
         "id": 20230705145104,
         "content": {
-          "sa_salesforecastbillid": this.$route.query.id,
+          "sa_salesforecastbillid": this.id,
           "ownertable": "sa_project",
           "salesforecastproject": [
             {
@@ -247,7 +247,7 @@ export default {
       const res = await this.$api.requested({
         "id": 20230705145104,
         "content": {
-          "sa_salesforecastbillid": this.$route.query.id,
+          "sa_salesforecastbillid": this.id,
           "ownertable": "sa_project",
           "salesforecastproject": ids
         }
@@ -263,7 +263,7 @@ export default {
       const res = await this.$api.requested({
         "id": 20230705145304,
         "content": {
-          "sa_salesforecastbillid":this.$route.query.id,
+          "sa_salesforecastbillid":this.id,
           "sa_salesforecastprojectids":[val.sa_salesforecastprojectid]
         }
       })
@@ -283,7 +283,7 @@ export default {
       const res = await this.$api.requested({
         "id": 20230705145304,
         "content": {
-          "sa_salesforecastbillid":this.$route.query.id,
+          "sa_salesforecastbillid":this.id,
           "sa_salesforecastprojectids":ids
         }
       })
@@ -322,7 +322,7 @@ export default {
       const res = await this.$api.requested({
         "id": 20230705145204,
         "content": {
-          "sa_salesforecastbillid": this.$route.query.id,
+          "sa_salesforecastbillid": this.id,
           "sa_salesforecastprojectid": this.selectProject,
           "salesforecast": [
             {
@@ -355,7 +355,7 @@ export default {
       const res = await this.$api.requested({
         "id": 20230705145204,
         "content": {
-          "sa_salesforecastbillid": this.$route.query.id,
+          "sa_salesforecastbillid": this.id,
           "sa_salesforecastprojectid": this.selectProject,
           "salesforecast": items
         }
@@ -371,7 +371,7 @@ export default {
       const res = await this.$api.requested({
         "id": 20230705145404,
         "content": {
-          "sa_salesforecastbillid":this.$route.query.id,
+          "sa_salesforecastbillid":this.id,
           "sa_salesforecastids":[val.sa_salesforecastid]
         }
       })
@@ -388,7 +388,7 @@ export default {
       const res = await this.$api.requested({
         "id": 20230705145404,
         "content": {
-          "sa_salesforecastbillid":this.$route.query.id,
+          "sa_salesforecastbillid":this.id,
           "sa_salesforecastids":ids
         }
       })
@@ -455,7 +455,7 @@ export default {
       const res = await this.$api.requested({
         "id": 20230705145204,
         "content": {
-          "sa_salesforecastbillid": this.$route.query.id,
+          "sa_salesforecastbillid": this.id,
           "sa_salesforecastprojectid": this.selectProject,
           "salesforecast": [
             {
@@ -494,7 +494,7 @@ export default {
       const res = await this.$api.requested({
         "id": 20230705145104,
         "content": {
-          "sa_salesforecastbillid": this.$route.query.id,
+          "sa_salesforecastbillid": this.id,
           "ownertable": "sa_project",
           "salesforecastproject": [
             {

+ 1 - 0
src/HDrpManagement/projectPredictionManage/details/modules/subordinate.vue

@@ -8,6 +8,7 @@
         :mainAreaData="mainAreaData"
         idname="sa_salesforecastbillid"
         :tags="[]"
+        :pageChange="true"
         :tabs="['项目产品清单']"
         @onEditSuccess="queryMainData($route.query.id)"
        >

+ 2 - 2
src/HManagement/siteManage/securityConfig/modules/edit.vue

@@ -87,7 +87,7 @@ export default {
     }),
     show () {
       console.log(this.siteinfo);
-      
+
       if (this.siteinfo.attinfos.some(item=>item.usetype === 'actionlogo')) {
         return false
       } else {
@@ -221,4 +221,4 @@ export default {
   text-align: center;
 }
 
-</style>
+</style>

+ 4 - 1
src/SDrpManagement/invoicePrediction/index.vue

@@ -57,15 +57,18 @@
       </template>
       <template v-slot:tbOpreation="scope">
         <edit v-if="scope.data.data.status === '进行中'" :data="scope.data.data"></edit>
-        <detailsBtn v-else></detailsBtn>
+        <detailsBtn v-else :data="scope.data.data"></detailsBtn>
       </template>
     </basicLayout>
   </div>
 </template>
 
 <script>
+import edit from './modules/edit'
+import detailsBtn from './modules/detailInfo'
 export default {
   name: "index",
+  components:{edit,detailsBtn},
   data(){
     return {
       dateSelect:'',

+ 44 - 0
src/SDrpManagement/invoicePrediction/modules/detailInfo.vue

@@ -0,0 +1,44 @@
+<template>
+  <div>
+    <el-button size="mini" type="text" @click="goDetail">详 情</el-button>
+    <el-drawer
+        :visible.sync="drawer"
+        :with-header="false"
+        direction="rtl"
+        size="90%"
+        append-to-body
+    >
+      <div class="detail__panel">
+        <detailInfo :id="id" ref="subordinate" :isDisabled="true"></detailInfo>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import detailInfo from '@/HDrpManagement/invoicePredictionManage/details/modules/subordinate'
+export default {
+  name: "edit",
+  props:['data'],
+  components:{detailInfo},
+  data(){
+    return {
+      drawer:false,
+      id:''
+    }
+  },
+  methods:{
+    goDetail(){
+      this.id = this.data.sa_salesforecastbillid
+      this.drawer = true
+      this.$nextTick(()=>{
+        this.$refs.subordinate.queryMainData()
+      })
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 45 - 0
src/SDrpManagement/invoicePrediction/modules/edit.vue

@@ -0,0 +1,45 @@
+<template>
+  <div>
+    <el-button size="mini" type="text" @click="goDetail">编 辑</el-button>
+    <el-drawer
+        :visible.sync="drawer"
+        :with-header="false"
+        direction="rtl"
+        size="90%"
+        append-to-body
+    >
+      <div class="detail__panel">
+        <detailInfo :id="id" ref="subordinate" :isDisabled="false"></detailInfo>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+import detailInfo from '@/HDrpManagement/invoicePredictionManage/details/modules/subordinate'
+export default {
+  name: "edit",
+  props:['data'],
+  components:{detailInfo},
+  data(){
+    return {
+      drawer:false,
+      id:''
+    }
+  },
+  methods:{
+    goDetail(){
+      this.id = this.data.sa_salesforecastbillid
+      this.drawer = true
+      this.$nextTick(()=>{
+        this.$refs.subordinate.queryMainData()
+      })
+
+    },
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 6 - 2
src/SDrpManagement/projectPrediction/detail/index.vue

@@ -6,12 +6,13 @@
         :editData="mainData"
         :mainAreaData="mainAreaData"
         idname="sa_salesforecastbillid"
+        :pageChange="true"
         :tags="[]"
         :tabs="['项目产品清单']"
-        @onEditSuccess="queryMainData($route.query.id)"
+        @onEditSuccess="queryMainData(id)"
        >
       <div slot="slot0" class="normal-panel">
-        <projectList :id="id" :isDisabled="isDisabled"></projectList>
+        <projectList :id="id" :isDisabled="isDisabled" @onSuccess="onSuccess"></projectList>
       </div>
     </basicDetails>
   </div>
@@ -85,6 +86,9 @@ export default {
         },
       ]
     },
+    onSuccess(){
+      this.queryMainData()
+    }
   },
   mounted() {
     this.queryMainData()

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

@@ -19,7 +19,7 @@
             <slot name="customOperation"></slot>
           </div>
           <el-button v-if="tool.checkAuth($route.name,'delete') && delApiId" :type="checkDisabled()?'':'primary'" class="inline-16" size="mini" :disabled="checkDisabled()" @click="deleteData">删 除</el-button>
-         <div>
+         <div v-if="!pageChange">
             <el-button size="mini" icon="el-icon-arrow-left" @click="previous()"></el-button>
             <el-button size="mini" @click="next()"><i class="el-icon-arrow-right"></i></el-button>
           </div>
@@ -70,10 +70,10 @@
         <div v-else style="text-align-center" class="container normal-panel">
           <el-button slot="collapse" type="text" icon="el-icon-s-fold" @click="onCollapse"></el-button>
         </div>
-        
+
       </el-row>
     </div>
-    
+
   </div>
 </template>
 
@@ -122,9 +122,9 @@ export default {
         })
         return data
       } catch (error) {
-        
+
       }
-      
+
     },
     mainAData2 () {
       try {
@@ -135,9 +135,9 @@ export default {
         })
         return data
       } catch (error) {
-        
+
       }
-      
+
     },
     ...mapGetters({
       activeApp:"activeApp",
@@ -178,7 +178,7 @@ export default {
           "systemappid":this.systemappid,
         }
       })
-      
+
       this.reportCenterLsit = res.data || []
       console.log('报表',this.reportCenterLsit);
     },
@@ -191,8 +191,8 @@ export default {
         }
       })
       this.tool.showMessage(res,() => {
-        
-        window.open(this.tool.getBaseUrl() + res.data + `&${this.idname}=${data}`)  
+
+        window.open(this.tool.getBaseUrl() + res.data + `&${this.idname}=${data}`)
       })
     },
     async next () {
@@ -229,7 +229,7 @@ export default {
       const fun = (rs)=>{
         let nowId = this.$route.query.id
         let changeId = ''
-       
+
         if (rs == 0) {
           changeId = this.svlistData.listData[this.svlistData.listData.length - 1][this.idname]
         } else {
@@ -253,7 +253,7 @@ export default {
     },
     onSuccess () {
       this.$emit('onEditSuccess')
-      
+
     },
     deleteData () {
       this.$confirm('确定删除当前数据吗?', '提示', {
@@ -281,12 +281,12 @@ export default {
           this.$store.dispatch('changeDetailDrawer',false)
         })
       }).catch((err) => {
-        
+
         console.log(err)
         this.$message({
           type: 'info',
           message: '已取消删除'
-        });          
+        });
       });
     },
     checkDisabled () {
@@ -322,7 +322,7 @@ export default {
         let n = 0
         this.svlistData.listData.filter((e,index)=>{
           if (e[this.idname] == id){
-            
+
             n = index
           }
         })
@@ -343,7 +343,7 @@ export default {
   mounted () {
     // this.checkPaginationData()
     this.idx = this.$route.query.rowindex
-    
+
   },
   created () {
     this.$emit('detailCreate',this.param)
@@ -396,4 +396,4 @@ export default {
   margin-right:16px;
   line-height: 2rem;
 }
-</style>
+</style>

+ 27 - 3
src/template/prediction/addProjectTemp.vue

@@ -19,7 +19,7 @@
 
         <el-row>
           <el-col :span="24">
-            <tableList :checkbox="true" :data="list" :layout="tablecols" :opwidth="200" :custom="true" fixedName="operation" @selectionChange="checkboxCallBack">
+            <tableList :height="'calc(100vh - 420px)'" :checkbox="true" :data="list"  :layout="tablecols" :opwidth="200" :custom="true" fixedName="operation" @selectionChange="checkboxCallBack">
               <template v-slot:customcol="scope">
                 <div v-if="scope.column.columnname === 'operation'">
                   <span>{{scope.column.data[scope.column.columnname]}}</span>
@@ -42,6 +42,18 @@
                 <el-button size="mini" type="text" @click="add(scope.data)">添 加</el-button>
               </template>
             </tableList>
+            <div  class="container " style="text-align:right;">
+              <el-pagination
+                  background
+                  @size-change="handleSizeChange"
+                  @current-change="handleCurrentChange"
+                  :current-page="param.content.pageNumber"
+                  :page-sizes="[20, 50, 100, 200]"
+                  :page-size="20"
+                  layout="total,sizes, prev, pager, next, jumper"
+                  :total="total">
+              </el-pagination>
+            </div>
           </el-col>
         </el-row>
       </div>
@@ -61,7 +73,8 @@ export default {
       dialogVisible:false,
       tablecols:[],
       list:[],
-      items:[]
+      items:[],
+      total:0
     }
   },
   methods:{
@@ -72,6 +85,7 @@ export default {
     async listData(){
       const res = await this.$api.requested(this.param)
       this.list = res.data
+      this.total = res.total
     },
     add(val){
       this.dialogVisible = false
@@ -92,7 +106,17 @@ export default {
       })
       this.dialogVisible = false
       this.$emit('adds',addItems)
-    }
+    },
+    handleSizeChange(val) {
+      // console.log(`每页 ${val} 条`);
+      this.param.content.pageSize = val
+      this.listData()
+    },
+    handleCurrentChange(val) {
+      // console.log(`当前页: ${val}`);
+      this.param.content.pageNumber = val
+      this.listData()
+    },
   },
   created() {
     this.tablecols = this.tool.tabelCol(this.$route.name).addProject.tablecols

+ 1 - 1
src/views/mediaStatistics/modules/salesfunnel.vue

@@ -112,7 +112,7 @@ export default {
       const res = await this.$api.requested(this.depmentParam)
       this.deplist = this.createMenu(res.data.dep)
       this.personnelList = res.data.hr
-      /*this.range = JSON.parse(window.sessionStorage.getItem('active_account')).name*/
+      this.person = JSON.parse(window.sessionStorage.getItem('active_account')).name
       this.renderPie()
     },
     createMenu (array) {