Browse Source

任务/悬赏发布

walter 9 months ago
parent
commit
f1651d6871

+ 55 - 19
src/components/SelectRule.vue

@@ -90,6 +90,14 @@ export default {
     isAll:{ //是否可以全选择
       type: Boolean,
       default: false
+    },
+    isScope:{
+      type: Boolean,
+      default: false
+    },
+    multiple:{
+      type: Boolean,
+      default: true
     }
   },
   name: 'SelectRule',
@@ -128,15 +136,19 @@ export default {
       this.visible_ = JSON.parse(JSON.stringify(val));
       if (val) {
         this.selectArrItem = JSON.parse(JSON.stringify(this.selectItems));
-        let employee_map = this.$getEmployeeMap();
-        if (employee_map[this.$userInfo().id].employee_detail.dept_list.length > 0) {
-          //获取当前操作者的所在部门
-          let dept_list = employee_map[this.$userInfo().id].employee_detail.dept_list.map(item => {
-            return item.dept_id;
-          });
-          this.deptIds = dept_list;
+        if (this.isScope){
+          this.getRuleScope()
+        }else {
+          let employee_map = this.$getEmployeeMap();
+          if (employee_map[this.$userInfo().id].employee_detail.dept_list.length > 0) {
+            //获取当前操作者的所在部门
+            let dept_list = employee_map[this.$userInfo().id].employee_detail.dept_list.map(item => {
+              return item.dept_id;
+            });
+            this.deptIds = dept_list;
+          }
+          this.get_department_list();
         }
-        this.get_department_list();
       }
     },
     keyword(val){
@@ -187,18 +199,22 @@ export default {
       this.selectArrItem = [];
     },
     handleSelectionChange(item) {
-      let itemIndex=0;
-      let isPush=true;
-      this.selectArrItem.forEach((e, index) => {
-        if (e.id == item.id) {
-          isPush=false;
-          itemIndex=index;
+      if (this.multiple){
+        let itemIndex=0;
+        let isPush=true;
+        this.selectArrItem.forEach((e, index) => {
+          if (e.id == item.id) {
+            isPush=false;
+            itemIndex=index;
+          }
+        });
+        if(isPush){
+          this.selectArrItem.push(item);
+        }else{
+          this.selectArrItem.splice(itemIndex, 1);
         }
-      });
-      if(isPush){
-        this.selectArrItem.push(item);
-      }else{
-        this.selectArrItem.splice(itemIndex, 1);
+      }else {
+        this.selectArrItem = [item]
       }
     },
     dept_click(item) {
@@ -257,6 +273,26 @@ export default {
         this.list = item_list;
       });
     },
+    getRuleScope(){
+      let data = {
+        cycle_type: '1',
+        pt_id:this.ptId
+      }
+      this.$axiosUser('get','/api/pro/integral/rule/trees/scope',data)
+        .then(res => {
+          this.rule_tree = this.getTreeData2(res.data.data.rule_tree);
+          this.item_list = res.data.data.item_list;
+          this.list = [];
+          let item_list = [];
+          for (let i in this.item_list) {
+            for (let k in this.item_list[i]) {
+              item_list.push(this.item_list[i][k]);
+            }
+          }
+          this.item_all=item_list;
+          this.list = item_list;
+        })
+    },
     getQx() {
       return this.$supremeAuthority('dept_manager') || this.$supremeAuthority('employee');
     },

+ 555 - 0
src/point/views/common/TaskUpdate.vue

@@ -0,0 +1,555 @@
+<template>
+  <el-dialog
+    title="任务更新"
+    :visible.sync="taskVisible"
+    :close-on-click-modal="false"
+    :show-close="false"
+    top="5%"
+    width="600px"
+    @open="loadDetail"
+  >
+    <el-form :model="formData" ref="formData" label-width="80px" v-loading="loading" >
+      <el-form-item
+        label="任务内容"
+        prop="task_name"
+        :rules="[{required:true,message:'请填写任务内容'},{min:3,max:20,message: '长度在3到20个字'}]"
+      >
+        <el-input
+          type="textarea"
+          rows="3"
+          maxlength="20"
+          show-word-limit
+          v-model="formData.task_name"
+          @input="onTaskNameInput"
+        />
+      </el-form-item>
+      <el-form-item
+        label="积分类型"
+        prop="pt_id"
+        :rules="[{required:true,message:'请选择规则积分'}]"
+      >
+        <el-radio-group
+          v-model="formData.pt_id"
+        >
+          <el-radio v-for="(item,index) in pts" :key="index" v-show="item.code !== 'JX'" :label="item.id">{{item.name}}</el-radio>
+        </el-radio-group>
+        <span class="blue cursor" style="padding-left: 20px;font-size: 14px;" @click="$openUrl(17)">什么是A分、B分?</span>
+      </el-form-item>
+
+      <el-form-item label="指定规则">
+        <el-radio-group v-model="formData.rule_type">
+          <el-radio-button :label="0">不指定</el-radio-button>
+          <el-radio-button :label="1">规则分类</el-radio-button>
+          <el-radio-button :label="2">指定规则</el-radio-button>
+        </el-radio-group>
+      </el-form-item>
+
+      <el-form-item label="规则分类" prop="rule_id" v-if="formData.rule_type === 1" :rules="[{required:true,message:'请选择规则分类'}]">
+        <el-cascader
+          class="w250"
+          v-model="formData.rule_id"
+          :options="rule_list"
+          :props="{children:'child',label:'name',value:'id', checkStrictly: true,emitPath:false}"
+        />
+      </el-form-item>
+
+      <el-form-item label="积分规则" prop="rule_item.remark" v-if="formData.rule_type === 2" :rules="[{required:true,message:'请选择积分规则'}]">
+        <el-input placeholder="请选择规则" v-model="formData.rule_item.remark" :disabled="true">
+          <el-button slot="append" icon="el-icon-search" @click.stop="showRuleItems = true"/>
+        </el-input>
+        <i style="color: red">{{itemRemark}}</i>
+        <SelectRule
+          :visible.sync="showRuleItems"
+          :pt-id = "formData.pt_id"
+          :select-items="selectItem"
+          :is-scope="true"
+          :multiple="false"
+          @confirm="onItemConfirm"
+        />
+      </el-form-item>
+
+      <el-form-item label="任务积分" prop="base_point" :rules="[{ required: true, message: '请填写任务积分'}]">
+        <el-input-number ref="base_point" v-model="formData.base_point" :disabled="formData.rule_item.range_type === 1" @change="onBasePointChange"></el-input-number>
+      </el-form-item>
+
+      <el-form-item label="执行人" prop="targets" :rules="[{ required: true, message: '请选择执行人'}]">
+        <el-input auto-complete="off" :disabled="true" v-model="formData.target_name" placeholder="请选择执行人">
+          <el-button slot="append" icon="el-icon-search" @click.stop="showApproval = true" />
+        </el-input>
+        <!--  执行人  -->
+        <EmployeeSelector
+          :employee_list="employee_list"
+          :user_employee_list="true"
+          :multi="false"
+          :selected="formData.target_selected"
+          :visible.sync="showApproval"
+          @confirm="approval_confirm"
+        />
+      </el-form-item>
+      <el-form-item label="审批人" prop="reviewer_id" :rules="[{ required: true, message: '请选择审批人'}]">
+        <el-input auto-complete="off" v-model="formData.reviewer_name" placeholder="请选择审批人" :disabled="true">
+          <el-button slot="append" icon="el-icon-search" @click.stop="showReviewer = true" />
+        </el-input>
+        <EmployeeSelector
+          :multi="false"
+          :is-chec-ked-all="false"
+          :is_manager_only="true"
+          :is_filtration_creator="false"
+          :selected="formData.reviewer_selected"
+          :visible.sync="showReviewer"
+          @confirm="reviewer_confirm"
+        />
+      </el-form-item>
+      <el-form-item
+        label="截止时间"
+        prop="expire_time"
+        :rules="[{required:true,message:'请选择截止时间'}]"
+      >
+        <el-date-picker
+          v-model="formData.expire_time"
+          type="datetime"
+          :picker-options="pickerOptions"
+          placeholder="选择截止时间"
+          format="yyyy-MM-dd HH:mm"
+          value-format="yyyy-MM-dd HH:mm"
+          default-time="18:00"
+          :clearable="false"
+        />
+        <el-tooltip placement="right" style="margin-left: 10px" content="任务截止时间是触发任务提前奖分/逾期扣分的关键属性"><span class="tips">?</span></el-tooltip>
+      </el-form-item>
+
+      <el-form-item
+        label="任务备注"
+        prop="task_remark"
+        :rules="[{max:300,message:'只允许最多300个字'}]"
+      >
+        <el-input
+          type="textarea"
+          :rows="5"
+          maxlength="300"
+          show-word-limit
+          v-model="formData.task_remark"
+          @input="onTaskRemarkInput"
+        />
+      </el-form-item>
+
+      <div style="margin-left: 80px; margin-bottom: 8px;">以天为单位,每 提前/逾期 一天 加分/扣分</div>
+      <el-form-item
+        label="提前奖分"
+        prop="ahead_award_point"
+      >
+        <el-input
+          v-model="formData.ahead_award_point"
+          @input="v => formData.ahead_award_point = v.replace(/[^\d]/g,'')"
+          placeholder="请输入每日奖分" style="width: 150px;"
+        />
+        B分/每天,
+        奖分上限 &nbsp;
+        <el-input
+          v-model="formData.ahead_award_point_limit"
+          @input="v => formData.ahead_award_point_limit = v.replace(/[^\d]/g,'')"
+          placeholder="请输入奖分上限"
+          style="width: 150px;"
+        />
+        B分
+      </el-form-item>
+      <el-form-item
+        label="逾期扣分"
+        prop="timeout_deduction_point"
+      >
+        <el-input
+          v-model="formData.timeout_deduction_point"
+          @input="v => formData.timeout_deduction_point = v.replace(/[^\d]/g,'')"
+          placeholder="请输入每日扣分"
+          style="width: 150px;"/>
+        B分/每天,扣分上限 &nbsp;
+        <el-input
+          v-model="formData.timeout_deduction_point_limit"
+          @input="v => formData.timeout_deduction_point_limit = v.replace(/[^\d]/g,'')"
+          placeholder="请输入扣分上限"
+          style="width: 150px;"
+        />
+        B分
+      </el-form-item>
+      <el-form-item>
+        <el-button @click.stop="close">关闭</el-button>
+        <el-button type="primary" @click.stop="taskSubmit">提交</el-button>
+      </el-form-item>
+    </el-form>
+  </el-dialog>
+</template>
+
+<script>
+
+import Template from "../../../examine/components/Template.vue";
+import SelectRule from "../../../components/SelectRule.vue";
+import EmployeeSelector from "../../../components/EmployeeSelector.vue";
+import {specialFilter} from "../../../utils";
+
+export default {
+  name: "TaskUpdate",
+  components: {EmployeeSelector, SelectRule, Template},
+  props:{
+    taskVisible:{
+      type: Boolean,
+      default: false
+    },
+    workId:{
+      type: Number,
+      default:0
+    }
+  },
+  data() {
+    return {
+      firstInit:true,
+      pts:this.$getTyps(),
+      employee_list: this.$store.getters.user_info.employee_detail.manage_scope,
+      showApproval:false,
+      showReviewer:false,
+      pickerOptions:{
+        disabledDate (time) {
+          //disabledDate 文档上:设置禁用状态,参数为当前日期,要求返回 Boolean
+          // return time.getTime() > Date.now()//选当前时间之前的时间
+          let num=60*60*24*1000
+          return (time.getTime()+num) < Date.now()//选当前时间之后的时间
+        }
+      },
+      // 执行者
+      loading:false,
+      rule_list:[],
+      showRuleItems:false,
+      formData:{
+        rule_type:0,
+        rule_id:0,
+        item_id:0,
+        rule_item:{
+          id:0,
+          remark:"",
+          cycle_type: 0,
+          is_attendance: 0,
+          max_point: 0,
+          min_point: 0,
+          prize_type: 0,
+          pt_id: 0,
+          range_type: 0,
+        },
+        task_name: '',
+        base_point: '',
+        task_remark: '',
+        pt_id: 3,
+        expire_time: '',
+        targets: [],
+        target_name:'',
+        target_selected:{ dept: [], employee: [] },
+        reviewer_id: 0,
+        reviewer_name:'',
+        reviewer_selected:{ dept: [], employee: [] },
+        timeout_deduction_point: null,
+        timeout_deduction_point_limit: null,
+        ahead_award_point: null,
+        ahead_award_point_limit: null,
+      }
+    }
+  },
+  watch:{
+    'formData.rule_type'(val,old) {
+      if (!this.firstInit) this.initRuleData()
+      this.firstInit = false    //防止一进来就将规则选项重置
+    },
+    'formData.pt_id'(val,old){
+      if (!this.firstInit && this.formData.rule_type === 2) this.initRuleData()
+      this.firstInit = false    //防止一进来就将规则选项重置
+    }
+  },
+  computed:{
+    selectItem(){
+      return this.formData.rule_item && this.formData.rule_item.id ? [this.formData.rule_item] : []
+    },
+    itemRemark(){
+      let pt = this.pts.find(pt => pt.id === this.formData.rule_item.pt_id)
+      pt = pt ? pt.name : ''
+      switch (this.formData.rule_item.range_type){
+        case 1:
+          return `${this.formData.rule_item.min_point} ${pt}`
+        case 2:
+          return `${this.formData.rule_item.min_point} -- ${this.formData.rule_item.max_point} ${pt}`
+        default:
+          return ''
+      }
+    }
+  },
+  methods:{
+    initRuleData(){
+      this.formData.rule_id = 0
+      this.formData.item_id = 0
+      this.formData.rule_item = {
+        id:0,
+        remark:"",
+        cycle_type: 0,
+        is_attendance: 0,
+        max_point: 0,
+        min_point: 0,
+        prize_type: 0,
+        pt_id: 0,
+        range_type: 0,
+      }
+      this.formData.base_point = 1
+    },
+    close(){
+      this.$emit('update:taskVisible',false)
+    },
+    loadDetail(){
+      if (this.workId <= 0) return
+      let self = this
+      self.loading = true
+      self.firstInit = true
+      let data = {
+        work_id: this.workId
+      }
+      this.$axiosUser('get','/api/pro/integral/work',data)
+        .then(res =>{
+          if (res.data.code !== 1) {
+            self.$message.error(res.data.msg)
+            return
+          }
+          let info = res.data.data
+          let formData = {
+            rule_type:0,
+            rule_id:info.rule_id,
+            item_id:info.item_id,
+            rule_item:{
+              id:0,
+              remark:"",
+              cycle_type: 0,
+              is_attendance: 0,
+              max_point: 0,
+              min_point: 0,
+              prize_type: 0,
+              pt_id: 0,
+              range_type: 0,
+            },
+            task_name: info.task_name,
+            base_point: info.point_config.base_point || 0,
+            task_remark: info.task_remark,
+            pt_id: info.pt_id,
+            expire_time: info.expire_time,
+            targets: [info.employee_id],
+            target_name:info.employee_name,
+            target_selected:{ dept: [], employee: [{id:info.employee_id,img_url:info.img_url,name:info.employee_name}] },
+            reviewer_id: info.reviewer_id,
+            reviewer_name:info.reviewer_name,
+            reviewer_selected:{ dept: [], employee: [{id:info.reviewer_id,img_url:info.reviewer_img_url,name:info.reviewer_name}] },
+            timeout_deduction_point: info.point_config.timeout_deduction_point || '',
+            timeout_deduction_point_limit: info.point_config.timeout_deduction_point_limit || '',
+            ahead_award_point: info.point_config.ahead_award_point || '',
+            ahead_award_point_limit: info.point_config.ahead_award_point_limit || '',
+          }
+          if (info.item_info){
+            formData.rule_item = {
+              id:info.item_id,
+              remark:info.item_info.remark,
+              cycle_type: info.item_info.cycle_type,
+              is_attendance: info.item_info.is_attendance,
+              max_point: info.item_info.max_point,
+              min_point: info.item_info.min_point,
+              prize_type: info.item_info.prize_type,
+              pt_id: info.item_info.pt_id,
+              range_type: info.item_info.range_type,
+            }
+          }
+          formData.rule_type = info.item_id && info.rule_id ? 2 : (info.rule_id ? 1 : 0)
+          self.formData = formData
+          self.loading = false
+        })
+        .catch(err => {
+          self.$message.error(err)
+        })
+    },
+    getRuleList(){
+      let data = {
+        cycle_type:'1',
+        pt_id: this.formData.pt_id
+      }
+      this.$axiosUser('get','/api/pro/integral/rule/trees/scope',data)
+        .then(res => {
+          this.rule_list = this.getTreeData(res.data.data.rule_tree)
+        })
+    },
+    getTreeData(data) {
+      for (var i = 0; i < data.length; i++) {
+        if (data[i].child.length < 1) {
+          // child若为空数组,则将child设为undefined
+          data[i].child = undefined;
+        } else {
+          // child若不为空数组,则继续 递归调用 本方法
+          this.getTreeData(data[i].child);
+        }
+      }
+      return data;
+    },
+    onItemConfirm(selectArrItem){
+      this.formData.rule_item = selectArrItem.length > 0 ? selectArrItem[0] : {
+        id:0,
+        remark:"",
+        cycle_type: 0,
+        is_attendance: 0,
+        max_point: 0,
+        min_point: 0,
+        prize_type: 0,
+        pt_id: 0,
+        range_type: 0,
+      }
+      this.formData.item_id = this.formData.rule_item.id
+      this.formData.rule_id = this.formData.rule_item.rule_id
+      this.formData.base_point = this.formData.rule_item.min_point !== 0 ? this.formData.rule_item.min_point : 1
+    },
+    onBasePointChange(currentValue,oldValue){
+      //限制范围分的上下限拦截
+      if (this.formData.rule_type !== 2 && this.formData.rule_item.range_type !== 2) return
+
+      if (currentValue < this.formData.rule_item.min_point) {
+        this.$nextTick(() => {
+          this.formData.base_point = this.formData.rule_item.min_point
+        })
+      }
+      if (currentValue > this.formData.rule_item.max_point) {
+        this.$nextTick( () => {
+          this.formData.base_point = this.formData.rule_item.max_point
+        })
+      }
+    },
+    approval_confirm(data) {
+      this.formData.target_selected = { dept: [], employee: [] };
+      this.formData.targets = [];
+      this.formData.target_name = '';
+      if (data.employee !== null && data.employee.length != 0) {
+        this.formData.target_selected = data;
+        this.formData.targets.push(data.employee[0].id);
+        this.formData.target_name = data.employee[0].name;
+      }
+    },
+    reviewer_confirm(data){
+      this.formData.reviewer_selected = { dept: [], employee: [] };
+      this.formData.reviewer_id = '';
+      this.formData.reviewer_name = '';
+      if (data.employee !== null && data.employee.length != 0) {
+        this.formData.reviewer_selected = data;
+        this.formData.reviewer_id = data.employee[0].id;
+        this.formData.reviewer_name = data.employee[0].name;
+      }
+    },
+    onTaskNameInput(val){
+      this.formData.task_name = specialFilter(val)
+    },
+    onTaskRemarkInput(val){
+      this.formData.task_remark = specialFilter(val)
+    },
+    ahead_timeout(item,arr,codes,code){
+      if(item){
+        if(arr){
+          if(Number(item) > Number(arr)){
+            this.$message.warning(code +'上限不能小于每日'+ codes)
+            return true
+          }
+        }else{
+          this.$message.warning( codes + '不为0时,'+ code +'上限不能为空')
+          return true
+        }
+      }
+    },
+    taskSubmit(){
+      if (this.formData.rule_type === 1 && this.formData.rule_id <= 0){
+        this.$message.error("请选择规则分类")
+        return
+      }
+      if (this.formData.rule_type === 2 && this.formData.item_id <= 0){
+        this.$message.error("请选择规积分规则")
+        return
+      }
+      this.$refs['formData'].validate(valid => {
+        if (valid){
+          let data = {
+            ahead_award_point:this.formData.ahead_award_point ? this.formData.ahead_award_point : 0,
+            ahead_award_point_limit:this.formData.ahead_award_point_limit ? this.formData.ahead_award_point_limit : 0,
+            timeout_deduction_point:this.formData.timeout_deduction_point ? this.formData.timeout_deduction_point : 0,
+            timeout_deduction_point_limit:this.formData.timeout_deduction_point_limit ? this.formData.timeout_deduction_point_limit : 0,
+            targets:this.formData.targets,
+            task_name:this.formData.task_name,
+            task_remark:this.formData.task_remark,
+            rule_id:this.formData.rule_id,
+            item_id:this.formData.item_id,
+            id:this.workId,
+            base_point:this.formData.base_point,
+            expire_time:this.formData.expire_time,
+            reviewer_id:this.formData.reviewer_id,
+            package_id:0,
+            weight:0,
+          }
+
+          if(!data.ahead_award_point && data.ahead_award_point_limit){
+            this.$message.warning('奖分上限不为0时,提前奖分不能为空')
+            return
+          }else if(data.ahead_award_point && !data.ahead_award_point_limit){
+            this.$message.warning('提前奖分不为0时,奖分上限不能为空')
+            return
+          }
+
+          if(!data.timeout_deduction_point && data.timeout_deduction_point_limit){
+            this.$message.warning('扣分上限不为0时,逾期扣分不能为空')
+            return
+          }else if(data.timeout_deduction_point && !data.timeout_deduction_point_limit){
+            this.$message.warning('逾期扣分不为0时,扣分上限不能为空')
+            return
+          }
+
+          if(this.ahead_timeout(data.ahead_award_point,data.ahead_award_point_limit,'提前奖分','奖分')) return
+          if(this.ahead_timeout(data.timeout_deduction_point,data.timeout_deduction_point_limit,'逾期扣分','扣分')) return
+
+          let point_limit = this.$userInfo().point_config.point_limit ? this.$userInfo().point_config.point_limit.find(pt => pt.pt_id === 3) : null
+          if(!this.$supremeAuthority('creator') && point_limit){
+            let entry_limit =  Number(point_limit.point)
+            if(entry_limit > 0){
+              if(data.ahead_award_point > entry_limit || data.timeout_deduction_point > entry_limit ){
+                this.$message.warning('每日奖扣分 不能超过您的奖扣分权限(您的奖扣分权限:' + entry_limit + '分)')
+                return
+              }
+              if(data.ahead_award_point_limit > entry_limit*10 || data.timeout_deduction_point_limit > entry_limit*10 ){
+                this.$message.warning('奖扣分上限不能超过' + entry_limit*10 + '分(您的奖扣分权限' + entry_limit + '分*10)')
+                return
+              }
+            }
+          }
+
+          let self = this
+          self.loading = true
+
+          self.$axiosUser('post', '/api/pro/integral/work/update', data)
+            .then(res => {
+              if (res.data.code !== 1){
+                self.$message.error(res.data.msg)
+                self.loading = false
+                return
+              }
+              self.$emit('hasSubmit')
+              self.$message.success(res.data.msg)
+              self.$emit('update:taskVisible',false)
+            })
+            .catch(err => {
+              // self.$message.error(err)
+              self.loading = false
+            })
+
+
+        }
+      })
+    }
+  },
+  mounted() {
+    this.getRuleList()
+  }
+}
+</script>
+
+<style scoped lang="scss">
+
+</style>

+ 7 - 1
src/point/views/common/applicationIntegrationPopup.vue

@@ -124,7 +124,13 @@
       </el-table>
     </el-dialog>
 
-    <SelectRule :visible.sync="isShowRule" @confirm="ruleConfirm" :ptId="0"  :selectItems="selectItem"></SelectRule>
+    <SelectRule
+      :visible.sync="isShowRule"
+      :ptId="0"
+      :selectItems="selectItem"
+      :is-scope="true"
+      @confirm="ruleConfirm"
+    />
 
     <el-dialog title="提交结果" :visible.sync="isResult"  width="1000" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false">
     	<div v-if="!isShowError">

+ 11 - 3
src/point/views/common/bonusPointsPopup.vue

@@ -142,7 +142,13 @@
         <el-table-column prop="rule_item" label="备注信息"></el-table-column>
       </el-table>
     </el-dialog>
-    <SelectRule :visible.sync="isShowRule" @confirm="ruleConfirm" :ptId="ptId" :selectItems="selectItem"></SelectRule>
+    <SelectRule
+      :visible.sync="isShowRule"
+      :ptId="ptId"
+      :selectItems="selectItem"
+      :is-scope="true"
+      @confirm="ruleConfirm"
+    />
     <el-dialog title="提交结果" :visible.sync="isResult"  width="1000" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false">
     	<div v-if="!isShowError">
     		<div style="text-align: center;margin-bottom: 10px;" class="red" v-if="isShowError2">{{errorMsg}}</div>
@@ -408,7 +414,6 @@ export default {
     ruleChange(value,obj) {
       this.$nextTick(()=>{
         let nodes=this.$refs['ruleCascader'].getCheckedNodes()//选择的节点数据
-        // console.log(nodes)
         let itemIds=value.map(e=>{
           return e[e.length-1]
         })
@@ -560,9 +565,12 @@ export default {
       if (this.deptIds.length > 0 && this.getQx()) {//选择指定部门规则,创始人,公司,积分专员不限制
         data['dep_ids'] = JSON.stringify(this.deptIds);
       }
-      this.$axiosUser('get', '/api/pro/integral/rule/trees', data).then(res => {
+      this.$axiosUser('get', '/api/pro/integral/rule/trees/scope', data).then(res => {
         this.rule_list = this.getTreeData(res.data.data.rule_tree);
       });
+      // this.$axiosUser('get', '/api/pro/integral/rule/trees', data).then(res => {
+      //   this.rule_list = this.getTreeData(res.data.data.rule_tree);
+      // });
     },
 
     // 递归判断列表,把最后的child设为undefined

+ 224 - 84
src/point/views/common/repeatTaskDetailsPopup.vue

@@ -4,102 +4,237 @@
     <el-drawer :visible.sync="Delay_to_open" :with-header="false" :size="'500px'" :before-close="handleClose" :custom-class="'drawer_details'">
       <div class="details_title">{{ title }}</div>
       <div class="details_content" v-if="workDetailData" v-loading="loading">
-        <ul>
-          <li class="flex-box">
-            <div class="label">任务内容</div>
-            <div class="content_text">{{ workDetailData.name }}</div>
-          </li>
-          <li class="flex-box">
-            <div class="label">任务备注</div>
-            <div class="content_text orange">{{ workDetailData.remark }}</div>
-          </li>
-          <li class="flex-box">
-            <div class="label">执行周期</div>
-            <div class="content_text orange">{{workDetailData.target_info.length>0? '临时任务-':'悬赏任务-'}}{{ workDetailData.task_cycle_mark }}</div>
-          </li>
-          <li class="flex-box" v-if="workDetailData.point_config">
-          	<div class="label">任务积分</div>
-          	<div class="content_text orange">
-          		{{ workDetailData.point_config.base_point }}
-          		<span>{{ workDetailData.pt_id == 2 ? 'A分' : workDetailData.pt_id == 3 ? 'B分' : '' }}</span>
-          	</div>
-          </li>
-          <li class="flex-box" v-if="workDetailData.file_list && workDetailData.file_list.length > 0">
-          	<div class="label">任务附件</div>
-          	<div class="content_text">
-          		<el-image
-          			v-for="(item, index) in workDetailData.file_list"
-          			:key="index"
-          			style="width: 100px; height: 100px;margin-right:8px"
-          			:src="item"
-          			:preview-src-list="workDetailData.file_list"
-          		></el-image>
-          	</div>
-          </li>
-          <li class="flex-box">
-          	<div class="label">发布人</div>
-          	<div class="content_text">{{ workDetailData.owner_name }}</div>
-          </li>
-          <li class="flex-box">
-          	<div class="label">截止时间</div>
-          	<div class="content_text">
-          		<span v-if="workDetailData.task_cycle == '1'">{{workDetailData.task_cycle_mark}}{{ dayTime(workDetailData.task_cycle_value) }}截止</span>
-          		<span v-if="workDetailData.task_cycle == '2'">
+<!--        <ul>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">任务内容</div>-->
+<!--            <div class="content_text">{{ workDetailData.name }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">任务备注</div>-->
+<!--            <div class="content_text orange">{{ workDetailData.remark }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">执行周期</div>-->
+<!--            <div class="content_text orange">{{workDetailData.target_info.length>0? '临时任务-':'悬赏任务-'}}{{ workDetailData.task_cycle_mark }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box" v-if="workDetailData.point_config">-->
+<!--          	<div class="label">任务积分</div>-->
+<!--          	<div class="content_text orange">-->
+<!--          		{{ workDetailData.point_config.base_point }}-->
+<!--          		<span>{{ workDetailData.pt_id == 2 ? 'A分' : workDetailData.pt_id == 3 ? 'B分' : '' }}</span>-->
+<!--          	</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box" v-if="workDetailData.file_list && workDetailData.file_list.length > 0">-->
+<!--          	<div class="label">任务附件</div>-->
+<!--          	<div class="content_text">-->
+<!--          		<el-image-->
+<!--          			v-for="(item, index) in workDetailData.file_list"-->
+<!--          			:key="index"-->
+<!--          			style="width: 100px; height: 100px;margin-right:8px"-->
+<!--          			:src="item"-->
+<!--          			:preview-src-list="workDetailData.file_list"-->
+<!--          		></el-image>-->
+<!--          	</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--          	<div class="label">发布人</div>-->
+<!--          	<div class="content_text">{{ workDetailData.owner_name }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--          	<div class="label">截止时间</div>-->
+<!--          	<div class="content_text">-->
+<!--          		<span v-if="workDetailData.task_cycle == '1'">{{workDetailData.task_cycle_mark}}{{ dayTime(workDetailData.task_cycle_value) }}截止</span>-->
+<!--          		<span v-if="workDetailData.task_cycle == '2'">-->
+<!--          			<span>{{workDetailData.task_cycle_mark}}{{ weekList[workDetailData.task_cycle_value - 1] }}截止</span>-->
+<!--          		</span>-->
+<!--          		<span v-if="workDetailData.task_cycle == '3'">{{workDetailData.task_cycle_mark}}{{ workDetailData.task_cycle_value }}号截止</span>-->
+<!--          	</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box" v-if="workDetailData.schedule_expire_time">-->
+<!--            <div class="label">有效日期</div>-->
+<!--            <div class="content_text" >-->
+<!--              <span v-if="!isExpire(workDetailData.schedule_expire_time)" >{{workDetailData.schedule_expire_time}}</span>-->
+<!--              <el-alert v-else :title="workDetailData.schedule_expire_time" type="warning" :closable="false" ></el-alert>-->
+<!--            </div>-->
+<!--          </li>-->
+<!--          <li class="flex-box" v-if="workDetailData.department_info">-->
+<!--          	<div class="label">可见范围</div>-->
+<!--          	<div class="content_text" v-if="workDetailData.department_info.length>0">-->
+<!--          	<span v-for="(item,index) in workDetailData.department_info" :key="index">-->
+<!--          		{{item.name}}-->
+<!--          		<span v-if="(workDetailData.department_info.length - 1) > index"> ,</span>-->
+<!--          	</span>-->
+<!--          	</div>-->
+<!--          	<div class="content_text" v-else>全公司</div>-->
+<!--          </li>-->
+<!--					<li class="flex-box" v-if="workDetailData.point_config">-->
+<!--						<div class="label">逾期扣分</div>-->
+<!--						<div class="content_text">{{ workDetailData.point_config.timeout_deduction_point }}/天</div>-->
+<!--					</li>-->
+<!--					<li class="flex-box" v-if="workDetailData.point_config">-->
+<!--						<div class="label">提前奖分</div>-->
+<!--						<div class="content_text">{{ workDetailData.point_config.ahead_award_point }}/天</div>-->
+<!--					</li>-->
+<!--        </ul>-->
+<!--        <el-row style=" margin-bottom: 20px;">-->
+<!--          <el-col :span="24" style="line-height: 30px;">审批人</el-col>-->
+<!--          <el-col :span="24">-->
+<!--            <div>-->
+<!--              <userImage class="fl" :id="workDetailData.reviewer_id" :user_name="workDetailData.reviewer_name" width="50px" height="50px" style=" margin-right: 15px;"></userImage>-->
+<!--              <p style="margin: 0; line-height: 50px;">{{ workDetailData.reviewer_name }}</p>-->
+<!--            </div>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+<!--        <el-row v-if="workDetailData.target_info.length>0">-->
+<!--          <el-col :span="24" style="line-height: 30px;">执行人</el-col>-->
+<!--          <el-col :span="24">-->
+<!--            <div v-for="(item, index) in workDetailData.target_info" style="margin-bottom: 10px;">-->
+<!--              <userImage class="fl" :id="item.id" :user_name="item.name" width="50px" height="50px" style=" margin-right: 15px;"></userImage>-->
+<!--              <p style="margin: 0; line-height: 50px;">{{ item.name }}</p>-->
+<!--            </div>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+
+        <el-card shadow="always">
+          <template slot="header">
+            <div class="flex-box flex-v-ce">
+              <userImage
+                style="margin-right: 15px;"
+                width="50px"
+                height="50px"
+                class="fl"
+                :id="workDetailData.owner_id"
+                :user_name="workDetailData.owner_name"
+                :img_url="workDetailData.owner_img_url"
+              />
+              <div>
+                {{workDetailData.owner_name}}
+                {{ $getTypsName(workDetailData.pt_id) }}{{scheduleTypeMark}}&nbsp;
+                <el-tag>{{ workDetailData.point_config.base_point }}分</el-tag>
+              </div>
+            </div>
+          </template>
+          <el-descriptions
+            :title="scheduleTypeMark + '信息'"
+            direction="vertical"
+            :column="2"
+            size="small"
+            :label-style="{width:'80px',textAlign:'center'}"
+            :content-style="{width:'80px',textAlign: 'center'}"
+            border
+          >
+            <el-descriptions-item :label="scheduleTypeMark + '内容'">
+              {{workDetailData.name}}
+            </el-descriptions-item>
+            <el-descriptions-item :label="scheduleTypeMark + '备注'">
+              {{workDetailData.remark}}
+            </el-descriptions-item>
+            <el-descriptions-item label="执行周期">
+              {{workDetailData.target_info.length>0? '临时任务-':'悬赏任务-'}}{{ workDetailData.task_cycle_mark }}
+            </el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.point_config"
+              :label="scheduleTypeMark + '积分'"
+            >
+              {{ workDetailData.point_config.base_point }}
+              <span>{{ $getTypsName(workDetailData.pt_id) }}</span>
+            </el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.file_list && workDetailData.file_list.length > 0"
+              title="附件"
+            >
+              <el-image
+                v-for="(item, index) in workDetailData.file_list"
+                :key="index"
+                style="width: 100px; height: 100px;margin-right:8px"
+                :src="item"
+                :preview-src-list="workDetailData.file_list"
+              ></el-image>
+            </el-descriptions-item>
+            <el-descriptions-item
+              label="截止时间"
+            >
+              <span v-if="workDetailData.task_cycle == '1'">{{workDetailData.task_cycle_mark}}{{ dayTime(workDetailData.task_cycle_value) }}截止</span>
+              <span v-if="workDetailData.task_cycle == '2'">
           			<span>{{workDetailData.task_cycle_mark}}{{ weekList[workDetailData.task_cycle_value - 1] }}截止</span>
           		</span>
-          		<span v-if="workDetailData.task_cycle == '3'">{{workDetailData.task_cycle_mark}}{{ workDetailData.task_cycle_value }}号截止</span>
-          	</div>
-          </li>
-          <li class="flex-box" v-if="workDetailData.schedule_expire_time">
-            <div class="label">有效日期</div>
-            <div class="content_text" >
+              <span v-if="workDetailData.task_cycle == '3'">{{workDetailData.task_cycle_mark}}{{ workDetailData.task_cycle_value }}号截止</span>
+            </el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.schedule_expire_time"
+              label="有效日期"
+            >
               <span v-if="!isExpire(workDetailData.schedule_expire_time)" >{{workDetailData.schedule_expire_time}}</span>
               <el-alert v-else :title="workDetailData.schedule_expire_time" type="warning" :closable="false" ></el-alert>
-            </div>
-          </li>
-          <li class="flex-box" v-if="workDetailData.department_info">
-          	<div class="label">可见范围</div>
-          	<div class="content_text" v-if="workDetailData.department_info.length>0">
-          	<span v-for="(item,index) in workDetailData.department_info" :key="index">
+            </el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.department_info"
+              label="可见范围"
+            >
+              <div v-if="workDetailData.department_info.length>0">
+                <span v-for="(item,index) in workDetailData.department_info" :key="index">
           		{{item.name}}
           		<span v-if="(workDetailData.department_info.length - 1) > index"> ,</span>
           	</span>
-          	</div>
-          	<div class="content_text" v-else>全公司</div>
-          </li>
-					<li class="flex-box" v-if="workDetailData.point_config">
-						<div class="label">逾期扣分</div>
-						<div class="content_text">{{ workDetailData.point_config.timeout_deduction_point }}/天</div>
-					</li>
-					<li class="flex-box" v-if="workDetailData.point_config">
-						<div class="label">提前奖分</div>
-						<div class="content_text">{{ workDetailData.point_config.ahead_award_point }}/天</div>
-					</li>
-        </ul>
-        <el-row style=" margin-bottom: 20px;">
-          <el-col :span="24" style="line-height: 30px;">审批人</el-col>
-          <el-col :span="24">
-            <div>
-              <userImage class="fl" :id="workDetailData.reviewer_id" :user_name="workDetailData.reviewer_name" width="50px" height="50px" style=" margin-right: 15px;"></userImage>
-              <p style="margin: 0; line-height: 50px;">{{ workDetailData.reviewer_name }}</p>
-            </div>
-          </el-col>
-        </el-row>
-        <el-row v-if="workDetailData.target_info.length>0">
-          <el-col :span="24" style="line-height: 30px;">执行人</el-col>
-          <el-col :span="24">
-            <div v-for="(item, index) in workDetailData.target_info" style="margin-bottom: 10px;">
-              <userImage class="fl" :id="item.id" :user_name="item.name" width="50px" height="50px" style=" margin-right: 15px;"></userImage>
-              <p style="margin: 0; line-height: 50px;">{{ item.name }}</p>
-            </div>
-          </el-col>
-        </el-row>
+              </div>
+              <div v-else>
+                全公司
+              </div>
+            </el-descriptions-item>
+            <template v-if="workDetailData.point_config">
+              <el-descriptions-item
+                label="逾期扣分"
+              >
+                {{ workDetailData.point_config.timeout_deduction_point }}&nbsp;B/天
+              </el-descriptions-item>
+              <el-descriptions-item
+                label="提前奖分"
+              >
+                {{ workDetailData.point_config.ahead_award_point }}&nbsp;B分/天
+              </el-descriptions-item>
+            </template>
+            <el-descriptions-item label="审批人">
+              <div style="width: fit-content;margin: 0 auto;">
+                <userImage
+                  width="50px"
+                  height="50px"
+                  class="fl"
+                  :id="workDetailData.reviewer_id"
+                  :user_name="workDetailData.reviewer_name"
+                  :img_url="workDetailData.reviewer_img_url"
+                />
+                <div>{{ workDetailData.reviewer_name }}</div>
+              </div>
+            </el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.target_info.length > 0"
+              label="执行人"
+            >
+              <div style="width: fit-content;margin: 0 auto;">
+                <div
+                  v-for="(item, index) in workDetailData.target_info"
+                  :key="index"
+                  style="margin-bottom: 10px; display: inline-block;margin-right: 5px;"
+                >
+                  <userImage class="fl" :id="item.id" :user_name="item.name" width="50px" height="50px" />
+                  <div>{{ item.name }}</div>
+                </div>
+              </div>
+            </el-descriptions-item>
+
+
+          </el-descriptions>
+        </el-card>
+
+
       </div>
     </el-drawer>
   </div>
 </template>
 
 <script>
+import Template from "../../../examine/components/Template.vue";
+
 export default {
   name: 'repeatTaskDetailsPopup',
   props: {
@@ -127,8 +262,13 @@ export default {
       weekList: ['一', '二', '三', '四', '五', '六', '日']
     };
   },
-  components: {},
+  components: {Template},
   watch: {},
+  computed:{
+    scheduleTypeMark(){
+      return !this.workDetailData ? '--' : (this.workDetailData.type === 2 ? '悬赏' : '任务')
+    }
+  },
   mounted() {
     this.getData();
     this.Delay_to_open = this.visible; //更换打开抽屉时机,避免打开两次

+ 181 - 16
src/point/views/common/rewardTask.vue

@@ -12,8 +12,47 @@
             <el-input type="textarea" rows="3" maxlength="20" show-word-limit v-model="formData.task_name" placeholder="请输入任务内容(限20字)" class="reward_textarea" @input="onTaskNameInput"></el-input>
           </el-form-item>
 
+          <el-form-item label="积分类型" prop="pt_id" :rules="[{ required: true, message: '请选择积分类型'}]">
+            <el-radio-group v-model="formData.pt_id">
+              <el-radio v-for="(item, index) in pts" :key="index" v-show="item.code !== 'JX'" :label="item.id">{{ item.name }}</el-radio>
+            </el-radio-group>
+            <span class="blue cursor" style="padding-left: 20px;font-size: 14px;" @click="$openUrl(17)">什么是A分、B分?</span>
+          </el-form-item>
+
+          <el-form-item label="指定规则">
+            <el-radio-group v-model="formData.rule_type">
+              <el-radio-button :label="0">不指定</el-radio-button>
+              <el-radio-button :label="1">规则分类</el-radio-button>
+              <el-radio-button :label="2">指定规则</el-radio-button>
+            </el-radio-group>
+          </el-form-item>
+
+          <el-form-item label="规则分类" prop="rule_id" v-if="formData.rule_type === 1" :rules="[{required:true,message:'请选择规则分类'}]">
+            <el-cascader
+              class="w250"
+              v-model="formData.rule_id"
+              :options="rule_list"
+              :props="{children:'child',label:'name',value:'id', checkStrictly: true,emitPath:false}"
+            />
+          </el-form-item>
+          <el-form-item label="积分规则" prop="rule_item.remark" v-if="formData.rule_type === 2" :rules="[{required:true,message:'请选择积分规则'}]">
+            <el-input placeholder="请选择规则" v-model="formData.rule_item.remark" :disabled="true">
+              <el-button slot="append" icon="el-icon-search" @click.stop="showRuleItems = true"/>
+            </el-input>
+            <i style="color: red">{{itemRemark}}</i>
+            <SelectRule
+              :visible.sync="showRuleItems"
+              :pt-id = "formData.pt_id"
+              :select-items="selectItem"
+              :is-scope="true"
+              :multiple="false"
+              @confirm="onItemConfirm"
+            />
+          </el-form-item>
+
+
           <el-form-item label="任务积分" prop="base_point" :rules="[{ required: true, message: '请填写任务积分'}]">
-            <el-input-number v-model="formData.base_point" :min="1"></el-input-number>
+            <el-input-number v-model="formData.base_point" :disabled="formData.rule_item.range_type === 1" @change="onBasePointChange" />
           </el-form-item>
           <el-form-item label="审批人" prop="reviewer_id" :rules="[{ required: true, message: '请选择审批人'}]">
             <el-row>
@@ -33,12 +72,7 @@
             />
           </el-form-item>
 
-          <el-form-item label="规则积分" prop="pt_id" :rules="[{ required: true, message: '请选择规则积分'}]">
-            <el-radio-group v-model="formData.pt_id">
-              <el-radio v-for="(item, index) in $getTyps()" :key="index" v-show="item.code !== 'JX'" :label="item.id">{{ item.name }}</el-radio>
-            </el-radio-group>
-            <span class="blue cursor" style="padding-left: 20px;font-size: 14px;" @click="$openUrl(17)">什么是A分、B分?</span>
-          </el-form-item>
+
           <el-form-item label="重复周期" prop="task_cycle">
             <el-select v-model="formData.task_cycle" placeholder="请选择重复周期">
               <el-option v-for="(item, index) in task_cycle_arr" :key="index" :label="item.name" :value="item.value"></el-option>
@@ -119,30 +153,35 @@
 
 					<div style="margin-left: 80px; margin-bottom: 8px;">以天为单位,每 提前/逾期 一天 加分/扣分</div>
 					<el-form-item label="提前奖分" prop="ahead_award_point">
-						<el-input v-model="formData.ahead_award_point" oninput="value=value.replace(/[^\d]/g,'')" placeholder="请输入每日奖分" style="width: 150px;"></el-input>
+						<el-input
+              v-model="formData.ahead_award_point"
+              @input="v => formData.ahead_award_point = v.replace(/[^\d]/g,'')"
+              placeholder="请输入每日奖分"
+              style="width: 150px;"
+            />
 						B分/每天, 奖分上限 &nbsp;
 						<el-input
 							v-model="formData.ahead_award_point_limit"
-							oninput="value=value.replace(/[^\d]/g,'')"
+              @input="v => formData.ahead_award_point_limit = v.replace(/[^\d]/g,'')"
 							placeholder="请输入奖分上限"
 							style="width: 150px;"
-						></el-input>
+						/>
 						B分
 					</el-form-item>
 					<el-form-item label="逾期扣分" prop="timeout_deduction_point">
 						<el-input
 							v-model="formData.timeout_deduction_point"
-							oninput="value=value.replace(/[^\d]/g,'')"
+              @input="v => formData.timeout_deduction_point = v.replace(/[^\d]/g,'')"
 							placeholder="请输入每日扣分"
 							style="width: 150px;"
-						></el-input>
+						/>
 						B分/每天, 扣分上限 &nbsp;
 						<el-input
 							v-model="formData.timeout_deduction_point_limit"
-							oninput="value=value.replace(/[^\d]/g,'')"
+              @input="v => formData.timeout_deduction_point_limit = v.replace(/[^\d]/g,'')"
 							placeholder="请输入扣分上限"
 							style="width: 150px;"
-						></el-input>
+						/>
 						B分
 					</el-form-item>
 
@@ -169,6 +208,7 @@
 import moment from 'moment';
 import EmployeeSelector from '@/components/EmployeeSelector';
 import {specialFilter} from "../../../utils";
+import SelectRule from "../../../components/SelectRule.vue";
 export default {
   name: 'bonusPoints',
   props: {
@@ -189,6 +229,7 @@ export default {
   },
   data() {
     return {
+      pts:this.$getTyps(),
       pickerOptions:{
           disabledDate (time) {
             //disabledDate 文档上:设置禁用状态,参数为当前日期,要求返回 Boolean
@@ -198,7 +239,23 @@ export default {
           }
       },
       forTheTaskLoading: false,
+      showRuleItems:false,
+      rule_list:[],
       formData: {
+        rule_type:0,
+        rule_id:0,
+        rule_item:{
+          id:0,
+          remark:"",
+          cycle_type: 0,
+          is_attendance: 0,
+          max_point: 0,
+          min_point: 0,
+          prize_type: 0,
+          pt_id: 0,
+          range_type: 0,
+          rule_id: 0,
+        },
         task_type: '1',
         pt_id: 3,
         task_name: '',
@@ -298,7 +355,24 @@ export default {
       show_dept_selector: false
     };
   },
-  components: { EmployeeSelector },
+  computed:{
+    selectItem(){
+      return this.formData.rule_item && this.formData.rule_item.id ? [this.formData.rule_item] : []
+    },
+    itemRemark(){
+      let pt = this.pts.find(pt => pt.id === this.formData.rule_item.pt_id)
+      pt = pt ? pt.name : ''
+      switch (this.formData.rule_item.range_type){
+        case 1:
+          return `${this.formData.rule_item.min_point} ${pt}`
+        case 2:
+          return `${this.formData.rule_item.min_point} -- ${this.formData.rule_item.max_point} ${pt}`
+        default:
+          return ''
+      }
+    }
+  },
+  components: {SelectRule, EmployeeSelector },
   watch: {
     'formData.task_cycle'(val) {
       if (val) {
@@ -308,9 +382,39 @@ export default {
         this.formData.schedule_expire_date = '';
       }
     },
+    'formData.rule_type'(val) {
+      this.initRuleData()
+    },
+    'formData.pt_id'(val){
+      if (this.formData.rule_type === 2) this.initRuleData()
+    }
   },
   methods: {
+    initRuleData(){
+      this.formData.rule_id = 0
+      this.formData.rule_item = {
+        id:0,
+        remark:"",
+        cycle_type: 0,
+        is_attendance: 0,
+        max_point: 0,
+        min_point: 0,
+        prize_type: 0,
+        pt_id: 0,
+        range_type: 0,
+        rule_id: 0,
+      }
+      this.formData.base_point = 1
+    },
     sub(formName) {
+      if (this.formData.rule_type === 1 && this.formData.rule_id <= 0){
+        this.$message.error('请选择规则分类')
+        return
+      }
+      if (this.formData.rule_type === 2 && this.formData.rule_item.id <= 0){
+        this.$message.error('请选择积分规则')
+        return
+      }
       this.$refs[formName].validate(valid => {
         if (valid) {
           this.saveFun(formName);
@@ -322,6 +426,8 @@ export default {
       this.$refs[formName].resetFields();
       this.executorName = '';
       this.reviewerName = '';
+      this.formData.rule_type = 0
+      this.initRuleData()
     },
     ahead_timeout(item, arr, codes, code) {
     	if (item) {
@@ -343,6 +449,7 @@ export default {
     saveFun(formName) {
       let self = this;
       let data = JSON.parse(JSON.stringify(self.formData));
+      data.item_id = data.rule_item.id
       if (data.task_cycle == 0) {
         delete data.task_cycle;
         delete data.task_expire_day;
@@ -368,7 +475,7 @@ export default {
       }
       if (this.ahead_timeout(data.ahead_award_point, data.ahead_award_point_limit, '提前奖分', '奖分')) return;
       if (this.ahead_timeout(data.timeout_deduction_point, data.timeout_deduction_point_limit, '逾期扣分', '扣分')) return;
-      if (!this.$supremeAuthority('creator') || this.$userInfo().point_config.point_limit.length != 0) {
+      if (!this.$supremeAuthority('creator') && this.$userInfo().point_config.point_limit.length != 0) {
       	let entry_limit = Number(this.$userInfo().point_config.point_limit[1].point);
       	if (entry_limit > 0) {
       		if (data.ahead_award_point > entry_limit || data.timeout_deduction_point > entry_limit) {
@@ -487,6 +594,8 @@ export default {
     closeDialog() {
       this.formData.timeout_deduction_point_limit = null;
       this.formData.ahead_award_point_limit = null;
+      this.formData.rule_type = 0
+      this.initRuleData()
       this.resetForm('formData');
       // this.$emit('update:dialogVisible', false)
     },
@@ -506,7 +615,63 @@ export default {
     },
     onTaskRemarkInput(val){
       this.formData.task_remark = specialFilter(val)
+    },
+    getRuleList(){
+      let data = {
+        cycle_type:'1',
+        pt_id: this.formData.pt_id
+      }
+      this.$axiosUser('get','/api/pro/integral/rule/trees/scope',data)
+        .then(res => {
+          this.rule_list = this.getTreeData(res.data.data.rule_tree)
+        })
+    },
+    getTreeData(data) {
+      for (var i = 0; i < data.length; i++) {
+        if (data[i].child.length < 1) {
+          // child若为空数组,则将child设为undefined
+          data[i].child = undefined;
+        } else {
+          // child若不为空数组,则继续 递归调用 本方法
+          this.getTreeData(data[i].child);
+        }
+      }
+      return data;
+    },
+    onItemConfirm(selectArrItem){
+      this.formData.rule_item = selectArrItem.length > 0 ? selectArrItem[0] : {
+        id:0,
+        remark:"",
+        cycle_type: 0,
+        is_attendance: 0,
+        max_point: 0,
+        min_point: 0,
+        prize_type: 0,
+        pt_id: 0,
+        range_type: 0,
+        rule_id: 0,
+      }
+      this.formData.rule_id = this.formData.rule_item.rule_id
+      this.formData.base_point = this.formData.rule_item.min_point !== 0 ? this.formData.rule_item.min_point : 1
+    },
+    onBasePointChange(currentValue,oldValue){
+      //限制范围分的上下限拦截
+      if (this.formData.rule_type !== 2 && this.formData.rule_item.range_type !== 2) return
+
+      if (currentValue < this.formData.rule_item.min_point) {
+        this.$nextTick(() => {
+          this.formData.base_point = this.formData.rule_item.min_point
+        })
+      }
+      if (currentValue > this.formData.rule_item.max_point) {
+        this.$nextTick( () => {
+          this.formData.base_point = this.formData.rule_item.max_point
+        })
+      }
     }
+  },
+  mounted() {
+    this.getRuleList()
   }
 };
 </script>

+ 193 - 61
src/point/views/common/rewardTaskDetailsPopup.vue

@@ -4,9 +4,83 @@
     <el-drawer :visible.sync="Delay_to_open" :with-header="false" :size="'500px'" :before-close="handleClose" :custom-class="'drawer_details'">
       <div class="details_title">{{ title }}</div>
       <div class="details_content" v-if="workDetailData" v-loading="loading">
-        <el-row>
-          <el-col :span="24">
-            <div class="">
+<!--        <el-row>-->
+<!--          <el-col :span="24">-->
+<!--            <div class="">-->
+<!--              <userImage-->
+<!--                style="margin-right: 15px;"-->
+<!--                width="50px"-->
+<!--                height="50px"-->
+<!--                class="fl"-->
+<!--                :id="workDetailData.owner_id"-->
+<!--                :user_name="workDetailData.owner_name"-->
+<!--                :img_url="workDetailData.owner_img_url"-->
+<!--              ></userImage>-->
+<!--              <div>-->
+<!--                <div style="line-height: 25px;">-->
+<!--                  我悬赏的{{ $getTypsName(workDetailData.pt_id) }}任务 {{ workDetailData.point_config.base_point }}{{ $getTypsName(workDetailData.pt_id) }}-->
+<!--                </div>-->
+<!--                <div style="color: #909399; line-height: 25px;">-->
+<!--                  <b>{{ workDetailData.receiver_name }}</b>-->
+<!--                  {{ workDetailData.status_mark }}-->
+<!--                </div>-->
+<!--              </div>-->
+<!--            </div>-->
+<!--          </el-col>-->
+<!--        </el-row>-->
+
+<!--        <ul>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">任务内容</div>-->
+<!--            <div class="content_text">{{ workDetailData.task_name }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box" v-if="workDetailData.status == 2 && workDetailData.receiver_id != 0">-->
+<!--            <div class="label">领取人</div>-->
+<!--            <div class="content_text">{{ workDetailData.receiver_name }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box" v-if="workDetailData.status == 3 && workDetailData.receiver_id != 0">-->
+<!--            <div class="label">完成人</div>-->
+<!--            <div class="content_text">{{ workDetailData.receiver_name }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box" v-if="workDetailData.task_remark">-->
+<!--            <div class="label">任务备注</div>-->
+<!--            <div class="content_text">{{ workDetailData.task_remark }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box" v-if="workDetailData.point_config">-->
+<!--            <div class="label">任务积分</div>-->
+<!--            <div class="content_text orange">{{ workDetailData.point_config.base_point }}{{ $getTypsName(workDetailData.pt_id) }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">发布时间</div>-->
+<!--            <div class="content_text">{{ workDetailData.create_time }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">截止时间</div>-->
+<!--            <div class="content_text">{{ workDetailData.end_time }}</div>-->
+<!--          </li>-->
+<!--					<li class="flex-box" v-if="workDetailData.point_config">-->
+<!--						<div class="label">逾期扣分</div>-->
+<!--						<div class="content_text">{{ workDetailData.point_config.timeout_deduction_point }}/天</div>-->
+<!--					</li>-->
+<!--					<li class="flex-box" v-if="workDetailData.point_config.ahead_award_point">-->
+<!--						<div class="label">提前奖分</div>-->
+<!--						<div class="content_text">{{ workDetailData.point_config.ahead_award_point }}/天</div>-->
+<!--					</li>-->
+<!--          <li class="flex-box" v-if="workDetailData.department_info">-->
+<!--            <div class="label">可见范围</div>-->
+<!--            <div class="content_text">-->
+<!--              <span v-for="(item, index) in workDetailData.department_info">{{ item.name }},</span>-->
+<!--            </div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">任务类型</div>-->
+<!--            <div class="content_text">{{ workDetailData.source_type_mark }}</div>-->
+<!--          </li>-->
+<!--        </ul>-->
+
+        <el-card shadow="always">
+          <template slot="header">
+            <div class="flex-box flex-v-ce">
               <userImage
                 style="margin-right: 15px;"
                 width="50px"
@@ -15,76 +89,128 @@
                 :id="workDetailData.owner_id"
                 :user_name="workDetailData.owner_name"
                 :img_url="workDetailData.owner_img_url"
-              ></userImage>
+              />
               <div>
-                <div style="line-height: 25px;">
-                  我悬赏的{{ $getTypsName(workDetailData.pt_id) }}任务 {{ workDetailData.point_config.base_point }}{{ $getTypsName(workDetailData.pt_id) }}
-                </div>
-                <div style="color: #909399; line-height: 25px;">
-                  <b>{{ workDetailData.receiver_name }}</b>
-                  {{ workDetailData.status_mark }}
-                </div>
+                {{workDetailData.owner_name}}
+                {{ $getTypsName(workDetailData.pt_id) }}任务
+                <el-tag>{{ workDetailData.point_config.base_point }}分</el-tag>
+                <el-tag type="info">{{ workDetailData.receiver_name }}{{ workDetailData.status_mark }}</el-tag>
               </div>
             </div>
-          </el-col>
-        </el-row>
+          </template>
+          <el-descriptions
+            title="任务信息"
+            direction="vertical"
+            :column="2"
+            size="small"
+            :label-style="{width:'80px',textAlign:'center'}"
+            :content-style="{width:'80px',textAlign: 'center'}"
+            border
+          >
+            <el-descriptions-item
+              label="任务内容"
+            >{{workDetailData.task_name}}
+            </el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.receiver_id !== 0"
+              :label="workDetailData.status == 3 ? '完成人' : '领取人'"
+            >{{workDetailData.receiver_name}}
+            </el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.task_remark"
+              label="任务备注"
+            >{{workDetailData.task_remark}}
+            </el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.point_config"
+              label="任务积分"
+            >
+              {{ workDetailData.point_config.base_point }}{{ $getTypsName(workDetailData.pt_id) }}
+            </el-descriptions-item>
+            <el-descriptions-item label="发布时间">{{workDetailData.create_time}}</el-descriptions-item>
+            <el-descriptions-item label="截止时间">{{workDetailData.end_time}}</el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.point_config"
+              label="逾期扣分"
+            >
+              {{ workDetailData.point_config.timeout_deduction_point }}/天
+            </el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.point_config.ahead_award_point"
+              label="提前奖分"
+            >
+              {{ workDetailData.point_config.ahead_award_point }}/天
+            </el-descriptions-item>
+            <el-descriptions-item
+              v-if="workDetailData.department_info"
+              label="可见范围"
+            >
+              <div class="content_text" v-if="workDetailData.department_info.length > 0">
+                <span
+                  v-for="(item, index) in workDetailData.department_info"
+                  :key="index"
+                >
+                  {{ item.name }}&nbsp;
+                </span>
+              </div>
+              <div v-else >
+                <el-tag>全公司可见</el-tag>
+              </div>
+            </el-descriptions-item>
+            <el-descriptions-item label="任务类型">{{ workDetailData.source_type_mark }}</el-descriptions-item>
+          </el-descriptions>
 
-        <ul>
-          <li class="flex-box">
-            <div class="label">任务内容</div>
-            <div class="content_text">{{ workDetailData.task_name }}</div>
-          </li>
-          <li class="flex-box" v-if="workDetailData.status == 2 && workDetailData.receiver_id != 0">
-            <div class="label">领取人</div>
-            <div class="content_text">{{ workDetailData.receiver_name }}</div>
-          </li>
-          <li class="flex-box" v-if="workDetailData.status == 3 && workDetailData.receiver_id != 0">
-            <div class="label">完成人</div>
-            <div class="content_text">{{ workDetailData.receiver_name }}</div>
-          </li>
-          <li class="flex-box" v-if="workDetailData.task_remark">
-            <div class="label">任务备注</div>
-            <div class="content_text">{{ workDetailData.task_remark }}</div>
-          </li>
-          <li class="flex-box" v-if="workDetailData.point_config">
-            <div class="label">任务积分</div>
-            <div class="content_text orange">{{ workDetailData.point_config.base_point }}{{ $getTypsName(workDetailData.pt_id) }}</div>
-          </li>
-          <li class="flex-box">
-            <div class="label">发布时间</div>
-            <div class="content_text">{{ workDetailData.create_time }}</div>
-          </li>
-          <li class="flex-box">
-            <div class="label">截止时间</div>
-            <div class="content_text">{{ workDetailData.end_time }}</div>
-          </li>
-					<li class="flex-box" v-if="workDetailData.point_config">
-						<div class="label">逾期扣分</div>
-						<div class="content_text">{{ workDetailData.point_config.timeout_deduction_point }}/天</div>
-					</li>
-					<li class="flex-box" v-if="workDetailData.point_config.ahead_award_point">
-						<div class="label">提前奖分</div>
-						<div class="content_text">{{ workDetailData.point_config.ahead_award_point }}/天</div>
-					</li>
-          <li class="flex-box" v-if="workDetailData.department_info">
-            <div class="label">可见范围</div>
-            <div class="content_text">
-              <span v-for="(item, index) in workDetailData.department_info">{{ item.name }},</span>
-            </div>
-          </li>
-          <li class="flex-box">
-            <div class="label">任务类型</div>
-            <div class="content_text">{{ workDetailData.source_type_mark }}</div>
-          </li>
-        </ul>
+          <el-descriptions
+            v-if="workDetailData.item_info"
+            style="margin-top: 20px"
+            title="规则依据"
+            direction="vertical"
+            :column="2"
+            size="small"
+            :label-style="{width:'80px',textAlign:'center'}"
+            :content-style="{width:'80px',textAlign: 'center'}"
+            border
+          >
+            <el-descriptions-item label="规则">{{workDetailData.item_info.remark}}</el-descriptions-item>
+            <el-descriptions-item label="积分">{{pointRemark}}</el-descriptions-item>
+            <el-descriptions-item label="规则状态" v-if="workDetailData.item_info.has_delete">
+              <el-tag type="warning">规则已删除</el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item v-if="workDetailData.rule_info" label="分类">{{workDetailData.rule_info.name}}</el-descriptions-item>
+            <el-descriptions-item v-if="workDetailData.rule_info && workDetailData.rule_info.has_delete" label="分类状态">
+              <el-tag type="warning">分类已删除</el-tag>
+            </el-descriptions-item>
+          </el-descriptions>
+
+          <el-descriptions
+            v-else-if="workDetailData.rule_info"
+            style="margin-top: 20px"
+            title="规则分类"
+            direction="vertical"
+            :column="2"
+            size="small"
+            :label-style="{width:'80px',textAlign:'center'}"
+            :content-style="{width:'80px',textAlign: 'center'}"
+            border
+          >
+            <el-descriptions-item label="分类">{{workDetailData.rule_info.name}}</el-descriptions-item>
+            <el-descriptions-item label="分类状态" v-if="workDetailData.rule_info.has_delete">
+              <el-tag type="warning">分类已删除</el-tag>
+            </el-descriptions-item>
+          </el-descriptions>
+
+        </el-card>
       </div>
     </el-drawer>
   </div>
 </template>
 
 <script>
+import Template from "../../../examine/components/Template.vue";
+
 export default {
   name: 'rewardTaskDetailsPopup',
+  components: {Template},
   props: {
     title: {
       type: String,
@@ -108,6 +234,12 @@ export default {
       }
     };
   },
+  computed:{
+    pointRemark(){
+      if (!(this.workDetailData && this.workDetailData.item_info)) return ''
+      return this.workDetailData.item_info.range_type === 1 ? `${this.workDetailData.item_info.min_point} ${this.$getTypsName(this.workDetailData.item_info.pt_id)}` : `${this.workDetailData.item_info.min_point} -- ${this.workDetailData.item_info.max_point} ${this.$getTypsName(this.workDetailData.item_info.pt_id)}`
+    }
+  },
   mounted() {
     this.getData();
     this.Delay_to_open = this.visible; //更换打开抽屉时机,避免打开两次

+ 145 - 59
src/point/views/common/taskDetailsPopup.vue

@@ -4,64 +4,144 @@
     <el-drawer  :visible.sync="Delay_to_open" :with-header="false" :size="'500px'" :before-close="handleClose" :custom-class="'drawer_details'">
       <div class="details_title">{{ title }}</div>
       <div class="details_content"  v-loading="loading">
-        <div class="flex-box flex-v-ce">
-          <userImage class="user_img person_imghead" width="46px" height="46px" :user_name="workDetailData.employee_name" :img_url="workDetailData.img_url"></userImage>
-          <div class="d_userMessage">
-            <div>{{ workDetailData.employee_name }}</div>
-            <div v-if="detailType != 2 && workDetailData.dept_list[0]">{{ workDetailData.dept_list[0].dept_name }}</div>
-          </div>
-          <div style="margin-left: 5px;" class="flex-box flex-v-ce">
-            <div v-if="workDetailData.point_config.review_point > 0" class="red">+{{ workDetailData.point_config.review_point }}</div>
-            <div v-else class="green">{{ workDetailData.point_config.review_point }}</div>
-            <div style="margin-left: 5px;">{{ $getTypsName(workDetailData.pt_id) }}</div>
-          </div>
-        </div>
-        <ul>
-          <li class="flex-box">
-            <div class="label">任务内容</div>
-            <div class="content_text">{{ workDetailData.task_name }}</div>
-          </li>
-          <li class="flex-box">
-            <div class="label">发布时间</div>
-            <div class="content_text">{{ workDetailData.create_time }}</div>
-          </li>
-          <li class="flex-box">
-            <div class="label">任务备注</div>
-            <textarea class="flex-1" disabled="disabled" v-model="workDetailData.task_remark" style="border: none;height:100px"></textarea>
-          </li>
-          <li class="flex-box">
-            <div class="label">任务积分</div>
-            <div class="content_text">{{ workDetailData.point_config.base_point }}{{ workDetailData.pt_name }}</div>
-          </li>
-          <li class="flex-box" v-if="workDetailData.point_config.review_point">
-            <div class="label">最终分</div>
-            <div class="content_text">{{ workDetailData.point_config.review_point }}</div>
-          </li>
-          <li class="flex-box">
-            <div class="label">截止时间</div>
-            <div class="content_text">{{ workDetailData.expire_time }} <span style="padding-left: 10px;" class="red" v-show="workDetailData.expire_day > 0">逾期{{ workDetailData.expire_day }}天</span></div>
-          </li>
-					<li class="flex-box" v-if="workDetailData.point_config.timeout_deduction_point > 0">
-						<div class="label">逾期扣分</div>
-						<div class="content_text">{{ workDetailData.point_config.timeout_deduction_point }} B分/天</div>
-					</li>
-					<li class="flex-box" v-if="workDetailData.point_config.ahead_award_point > 0">
-						<div class="label">提前奖分</div>
-						<div class="content_text">{{ workDetailData.point_config.ahead_award_point }} B分/天</div>
-					</li>
-          <li class="flex-box">
-            <div class="label">审批人</div>
-            <div class="content_text">{{ workDetailData.reviewer_name }}</div>
-          </li>
-          <li class="flex-box">
-            <div class="label">发布人</div>
-            <div class="content_text">{{ workDetailData.publisher_name }}</div>
-          </li>
-          <li class="flex-box">
-            <div class="label">积分种类</div>
-            <div class="content_text">{{ workDetailData.pt_name }}</div>
-          </li>
-        </ul>
+<!--        <div class="flex-box flex-v-ce">-->
+<!--          <userImage class="user_img person_imghead" width="46px" height="46px" :user_name="workDetailData.employee_name" :img_url="workDetailData.img_url"></userImage>-->
+<!--          <div class="d_userMessage">-->
+<!--            <div>{{ workDetailData.employee_name }}</div>-->
+<!--            <div v-if="detailType != 2 && workDetailData.dept_list[0]">{{ workDetailData.dept_list[0].dept_name }}</div>-->
+<!--          </div>-->
+<!--          <div style="margin-left: 5px;" class="flex-box flex-v-ce">-->
+<!--            <div v-if="workDetailData.point_config.review_point > 0" class="red">+{{ workDetailData.point_config.review_point }}</div>-->
+<!--            <div v-else class="green">{{ workDetailData.point_config.review_point }}</div>-->
+<!--            <div style="margin-left: 5px;">{{ $getTypsName(workDetailData.pt_id) }}</div>-->
+<!--          </div>-->
+<!--        </div>-->
+<!--        <ul>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">任务内容</div>-->
+<!--            <div class="content_text">{{ workDetailData.task_name }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">发布时间</div>-->
+<!--            <div class="content_text">{{ workDetailData.create_time }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">任务备注</div>-->
+<!--            <textarea class="flex-1" disabled="disabled" v-model="workDetailData.task_remark" style="border: none;height:100px"></textarea>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">任务积分</div>-->
+<!--            <div class="content_text">{{ workDetailData.point_config.base_point }}{{ workDetailData.pt_name }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box" v-if="workDetailData.point_config.review_point">-->
+<!--            <div class="label">最终分</div>-->
+<!--            <div class="content_text">{{ workDetailData.point_config.review_point }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">截止时间</div>-->
+<!--            <div class="content_text">{{ workDetailData.expire_time }} <span style="padding-left: 10px;" class="red" v-show="workDetailData.expire_day > 0">逾期{{ workDetailData.expire_day }}天</span></div>-->
+<!--          </li>-->
+<!--					<li class="flex-box" v-if="workDetailData.point_config.timeout_deduction_point > 0">-->
+<!--						<div class="label">逾期扣分</div>-->
+<!--						<div class="content_text">{{ workDetailData.point_config.timeout_deduction_point }} B分/天</div>-->
+<!--					</li>-->
+<!--					<li class="flex-box" v-if="workDetailData.point_config.ahead_award_point > 0">-->
+<!--						<div class="label">提前奖分</div>-->
+<!--						<div class="content_text">{{ workDetailData.point_config.ahead_award_point }} B分/天</div>-->
+<!--					</li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">审批人</div>-->
+<!--            <div class="content_text">{{ workDetailData.reviewer_name }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">发布人</div>-->
+<!--            <div class="content_text">{{ workDetailData.publisher_name }}</div>-->
+<!--          </li>-->
+<!--          <li class="flex-box">-->
+<!--            <div class="label">积分种类</div>-->
+<!--            <div class="content_text">{{ workDetailData.pt_name }}</div>-->
+<!--          </li>-->
+<!--        </ul>-->
+
+<!--    基础信息    -->
+        <el-card shadow="always" >
+          <template slot="header">
+            <div class="flex-box flex-v-ce">
+              <userImage class="user_img person_imghead" width="46px" height="46px" :user_name="workDetailData.employee_name" :img_url="workDetailData.img_url"></userImage>
+              <div class="d_userMessage">
+                <div>{{ workDetailData.employee_name }}</div>
+                <div v-if="detailType != 2 && workDetailData.dept_list[0]">{{ workDetailData.dept_list[0].dept_name }}</div>
+              </div>
+              <div style="margin-left: 5px;" class="flex-box flex-v-ce" v-if="workDetailData.point_config.review_point">
+                <div v-if="workDetailData.point_config.review_point > 0" class="red">+{{ workDetailData.point_config.review_point }}</div>
+                <div v-else class="green">{{ workDetailData.point_config.review_point }}</div>
+                <div style="margin-left: 5px;">{{ $getTypsName(workDetailData.pt_id) }}</div>
+              </div>
+            </div>
+          </template>
+          <el-descriptions
+            title="任务信息"
+            direction="vertical"
+            :column="2"
+            size="small"
+            :label-style="{width:'80px',textAlign:'center'}"
+            :content-style="{width:'80px',textAlign: 'center'}"
+            border
+          >
+            <el-descriptions-item label="审批人">{{workDetailData.reviewer_name}}</el-descriptions-item>
+            <el-descriptions-item label="发布人">{{workDetailData.publisher_name}}</el-descriptions-item>
+            <el-descriptions-item label="任务积分">{{ workDetailData.point_config.base_point }}{{ workDetailData.pt_name }}</el-descriptions-item>
+            <el-descriptions-item label="内容">{{workDetailData.task_name}}</el-descriptions-item>
+            <el-descriptions-item label="任务备注">{{workDetailData.task_remark}}</el-descriptions-item>
+            <el-descriptions-item label="发布时间">{{workDetailData.create_time}}</el-descriptions-item>
+            <el-descriptions-item v-if="workDetailData.point_config.review_point" label="最终分">{{workDetailData.point_config.review_point}}</el-descriptions-item>
+            <el-descriptions-item label="截止时间">{{ workDetailData.expire_time }} <span style="padding-left: 10px;" class="red" v-show="workDetailData.expire_day > 0">逾期{{ workDetailData.expire_day }}天</span></el-descriptions-item>
+            <el-descriptions-item v-if="workDetailData.point_config.timeout_deduction_point > 0" label="逾期扣分">{{ workDetailData.point_config.timeout_deduction_point }} B分/天</el-descriptions-item>
+            <el-descriptions-item v-if="workDetailData.point_config.ahead_award_point > 0" label="提前奖分">{{ workDetailData.point_config.ahead_award_point }} B分/天</el-descriptions-item>
+
+          </el-descriptions>
+
+          <el-descriptions
+            v-if="workDetailData.item_info"
+            style="margin-top: 20px"
+            title="规则依据"
+            direction="vertical"
+            :column="2"
+            size="small"
+            :label-style="{width:'80px',textAlign:'center'}"
+            :content-style="{width:'80px',textAlign: 'center'}"
+            border
+          >
+            <el-descriptions-item label="规则">{{workDetailData.item_info.remark}}</el-descriptions-item>
+            <el-descriptions-item label="积分">{{pointRemark}}</el-descriptions-item>
+            <el-descriptions-item label="规则状态" v-if="workDetailData.item_info.has_delete">
+              <el-tag type="warning">规则已删除</el-tag>
+            </el-descriptions-item>
+            <el-descriptions-item v-if="workDetailData.rule_info" label="分类">{{workDetailData.rule_info.name}}</el-descriptions-item>
+            <el-descriptions-item v-if="workDetailData.rule_info && workDetailData.rule_info.has_delete" label="分类状态">
+              <el-tag type="warning">分类已删除</el-tag>
+            </el-descriptions-item>
+          </el-descriptions>
+
+          <el-descriptions
+            v-else-if="workDetailData.rule_info"
+            style="margin-top: 20px"
+            title="规则分类"
+            direction="vertical"
+            :column="2"
+            size="small"
+            :label-style="{width:'80px',textAlign:'center'}"
+            :content-style="{width:'80px',textAlign: 'center'}"
+            border
+          >
+            <el-descriptions-item label="分类">{{workDetailData.rule_info.name}}</el-descriptions-item>
+            <el-descriptions-item label="分类状态" v-if="workDetailData.rule_info.has_delete">
+              <el-tag type="warning">分类已删除</el-tag>
+            </el-descriptions-item>
+          </el-descriptions>
+
+        </el-card>
+
         <div v-show="showWork">
           <div class="d_progress">
             <div class="flex-box">
@@ -186,8 +266,11 @@
 </template>
 
 <script>
+import Template from "../../../examine/components/Template.vue";
+
 export default {
   name: 'taskDetailsPopup',
+  components: {Template},
   props: {
     title: {
       type: String,
@@ -252,6 +335,10 @@ export default {
   computed:{
     canUpdate(){
       return this.workDetailData.employee_id === this.userId && [1,6].includes(this.workDetailData.status)
+    },
+    pointRemark(){
+      if (!(this.workDetailData && this.workDetailData.item_info)) return ''
+      return this.workDetailData.item_info.range_type === 1 ? `${this.workDetailData.item_info.min_point} ${this.$getTypsName(this.workDetailData.item_info.pt_id)}` : `${this.workDetailData.item_info.min_point} -- ${this.workDetailData.item_info.max_point} ${this.$getTypsName(this.workDetailData.item_info.pt_id)}`
     }
   },
   watch: {
@@ -347,7 +434,6 @@ export default {
         work_id: this.workDetailData.id,
         process: []
       };
-      // console.log(items)
       items.unshift(process);
       data.process = items;
       this.$refs[formName].validate(valid => {

+ 181 - 17
src/point/views/common/temporaryTask.vue

@@ -12,8 +12,38 @@
             <el-input type="textarea" rows="3" maxlength="20" show-word-limit v-model="formData.task_name" placeholder="请输入任务内容(限20字)" @input="onTaskNameInput"></el-input>
           </el-form-item>
 
+          <el-form-item label="积分类型" prop="pt_id" :rules="[{ required: true, message: '请选择积分类型'}]">
+            <el-radio-group v-model="formData.pt_id">
+              <el-radio v-for="(item, index) in pts" :key="index" v-show="item.code !== 'JX'" :label="item.id">{{ item.name }}</el-radio>
+            </el-radio-group>
+            <span class="blue cursor" style="padding-left: 20px;font-size: 14px;" @click="$openUrl(17)">什么是A分、B分?</span>
+          </el-form-item>
+
+          <el-form-item label="指定规则">
+            <el-radio-group v-model="formData.rule_type">
+              <el-radio-button :label="0">不指定</el-radio-button>
+              <el-radio-button :label="1">规则分类</el-radio-button>
+              <el-radio-button :label="2">指定规则</el-radio-button>
+            </el-radio-group>
+          </el-form-item>
+
+          <el-form-item label="规则分类" prop="rule_id" v-if="formData.rule_type === 1" :rules="[{required:true,message:'请选择规则分类'}]">
+            <el-cascader
+              class="w250"
+              v-model="formData.rule_id"
+              :options="rule_list"
+              :props="{children:'child',label:'name',value:'id', checkStrictly: true,emitPath:false}"
+            />
+          </el-form-item>
+          <el-form-item label="积分规则" prop="rule_item.remark" v-if="formData.rule_type === 2" :rules="[{required:true,message:'请选择积分规则'}]">
+            <el-input placeholder="请选择规则" v-model="formData.rule_item.remark" :disabled="true">
+              <el-button slot="append" icon="el-icon-search" @click.stop="showRuleItems = true"/>
+            </el-input>
+            <i style="color: red">{{itemRemark}}</i>
+          </el-form-item>
+
           <el-form-item label="任务积分" prop="base_point" :rules="[{ required: true, message: '请填写任务积分'}]">
-            <el-input-number v-model="formData.base_point" :min="1"></el-input-number>
+            <el-input-number ref="base_point" v-model="formData.base_point" :disabled="formData.rule_item.range_type === 1" @change="onBasePointChange"></el-input-number>
           </el-form-item>
 
           <el-form-item label="执行人" prop="targets" :rules="[{ required: true, message: '请选择执行人'}]">
@@ -33,12 +63,6 @@
             </el-row>
           </el-form-item>
 
-          <el-form-item label="规则积分" prop="pt_id" :rules="[{ required: true, message: '请选择规则积分'}]">
-            <el-radio-group v-model="formData.pt_id">
-              <el-radio v-for="(item, index) in $getTyps()" :key="index" v-show="item.code !== 'JX'" :label="item.id">{{ item.name }}</el-radio>
-            </el-radio-group>
-                        <span class="blue cursor" style="padding-left: 20px;font-size: 14px;" @click="$openUrl(17)">什么是A分、B分?</span>
-          </el-form-item>
           <el-form-item label="重复周期" prop="task_cycle">
             <el-select v-model="formData.task_cycle" placeholder="请选择重复周期">
               <el-option v-for="(item, index) in task_cycle_arr" :key="index" :label="item.name" :value="item.value"></el-option>
@@ -100,30 +124,35 @@
 
           <div style="margin-left: 80px; margin-bottom: 8px;">以天为单位,每 提前/逾期 一天 加分/扣分</div>
           <el-form-item label="提前奖分" prop="ahead_award_point">
-          	<el-input v-model="formData.ahead_award_point" oninput="value=value.replace(/[^\d]/g,'')" placeholder="请输入每日奖分" style="width: 150px;"></el-input>
+          	<el-input
+              v-model="formData.ahead_award_point"
+              @input="v => formData.ahead_award_point = v.replace(/[^\d]/g,'')"
+              placeholder="请输入每日奖分"
+              style="width: 150px;"
+            />
           	B分/每天, 奖分上限 &nbsp;
           	<el-input
           		v-model="formData.ahead_award_point_limit"
-          		oninput="value=value.replace(/[^\d]/g,'')"
+              @input="v => formData.ahead_award_point_limit = v.replace(/[^\d]/g,'')"
           		placeholder="请输入奖分上限"
           		style="width: 150px;"
-          	></el-input>
+          	/>
           	B分
           </el-form-item>
           <el-form-item label="逾期扣分" prop="timeout_deduction_point">
           	<el-input
           		v-model="formData.timeout_deduction_point"
-          		oninput="value=value.replace(/[^\d]/g,'')"
+              @input="v => formData.timeout_deduction_point = v.replace(/[^\d]/g,'')"
           		placeholder="请输入每日扣分"
           		style="width: 150px;"
-          	></el-input>
+          	/>
           	B分/每天, 扣分上限 &nbsp;
           	<el-input
           		v-model="formData.timeout_deduction_point_limit"
-          		oninput="value=value.replace(/[^\d]/g,'')"
+              @input="v => formData.timeout_deduction_point_limit = v.replace(/[^\d]/g,'')"
           		placeholder="请输入扣分上限"
           		style="width: 150px;"
-          	></el-input>
+          	/>
           	B分
           </el-form-item>
 
@@ -164,6 +193,14 @@
       :visible.sync="show_reviewer_selector"
       @confirm="reviewer_confirm"
     />
+    <SelectRule
+      :visible.sync="showRuleItems"
+      :pt-id = "formData.pt_id"
+      :select-items="selectItem"
+      :is-scope="true"
+      :multiple="false"
+      @confirm="onItemConfirm"
+    />
   </div>
 </template>
 
@@ -171,6 +208,7 @@
 import moment from 'moment';
 import EmployeeSelector from '@/components/EmployeeSelector';
 import {specialFilter} from "../../../utils";
+import SelectRule from "../../../components/SelectRule.vue";
 export default {
   name: 'temporaryTask',
   props: {
@@ -191,7 +229,23 @@ export default {
   },
   data() {
     return {
+      rule_list:[],
+      showRuleItems:false,
       formData: {
+        rule_type:0,
+        rule_id:0,
+        rule_item:{
+          id:0,
+          remark:"",
+          cycle_type: 0,
+          is_attendance: 0,
+          max_point: 0,
+          min_point: 0,
+          prize_type: 0,
+          pt_id: 0,
+          range_type: 0,
+          rule_id: 0,
+        },
         task_name: '',
         base_point: '',
         task_remark: '',
@@ -297,10 +351,11 @@ export default {
         { name: '29号', value: 29 },
         { name: '30号', value: 30 },
         { name: '31号', value: 31 }
-      ]
+      ],
+      pts:this.$getTyps()
     };
   },
-  components: { EmployeeSelector },
+  components: {SelectRule, EmployeeSelector },
   watch: {
     'formData.task_cycle'(val) {
       if (val) {
@@ -309,10 +364,57 @@ export default {
         this.formData.expire_time = moment().format('YYYY-MM-DD 18:00');
         this.formData.schedule_expire_date = '';
       }
+    },
+    'formData.rule_type'(val) {
+      this.initRuleData()
+    },
+    'formData.pt_id'(val){
+      if (this.formData.rule_type === 2) this.initRuleData()
+    }
+  },
+  computed:{
+    selectItem(){
+      return this.formData.rule_item && this.formData.rule_item.id ? [this.formData.rule_item] : []
+    },
+    itemRemark(){
+      let pt = this.pts.find(pt => pt.id === this.formData.rule_item.pt_id)
+      pt = pt ? pt.name : ''
+      switch (this.formData.rule_item.range_type){
+        case 1:
+          return `${this.formData.rule_item.min_point} ${pt}`
+        case 2:
+          return `${this.formData.rule_item.min_point} -- ${this.formData.rule_item.max_point} ${pt}`
+        default:
+          return ''
+      }
     }
   },
   methods: {
+    initRuleData(){
+      this.formData.rule_id = 0
+      this.formData.rule_item = {
+        id:0,
+        remark:"",
+        cycle_type: 0,
+        is_attendance: 0,
+        max_point: 0,
+        min_point: 0,
+        prize_type: 0,
+        pt_id: 0,
+        range_type: 0,
+        rule_id: 0,
+      }
+      this.formData.base_point = 1
+    },
     sub(formName) {
+      if (this.formData.rule_type === 1 && this.formData.rule_id <= 0){
+        this.$message.error('请选择规则分类')
+        return
+      }
+      if (this.formData.rule_type === 2 && this.formData.rule_item.id <= 0){
+        this.$message.error('请选择积分规则')
+        return
+      }
       this.$refs[formName].validate(valid => {
         if (valid) {
           this.saveFun(formName);
@@ -324,6 +426,8 @@ export default {
       this.$refs[formName].resetFields();
       this.executorName = '';
       this.reviewerName = '';
+      this.formData.rule_type = 0
+      this.initRuleData()
     },
     ahead_timeout(item, arr, codes, code) {
     	if (item) {
@@ -346,6 +450,7 @@ export default {
       // /api/integral/schedule/publish/work
       let self = this;
       let data = JSON.parse(JSON.stringify(self.formData));
+      data.item_id = data.rule_item.id
       if (data.task_cycle == 0) {
         delete data.task_cycle;
         delete data.task_expire_day;
@@ -375,7 +480,7 @@ export default {
       }
       if (this.ahead_timeout(data.ahead_award_point, data.ahead_award_point_limit, '提前奖分', '奖分')) return;
       if (this.ahead_timeout(data.timeout_deduction_point, data.timeout_deduction_point_limit, '逾期扣分', '扣分')) return;
-      if (!this.$supremeAuthority('creator') || this.$userInfo().point_config.point_limit.length != 0) {
+      if (!this.$supremeAuthority('creator') && this.$userInfo().point_config.point_limit.length != 0) {
       	let entry_limit = Number(this.$userInfo().point_config.point_limit[1].point);
       	if (entry_limit > 0) {
       		if (data.ahead_award_point > entry_limit || data.timeout_deduction_point > entry_limit) {
@@ -471,6 +576,8 @@ export default {
     closeDialog() {
       this.formData.timeout_deduction_point_limit= null;
       this.formData.ahead_award_point_limit= null;
+      this.formData.rule_type = 0
+      this.initRuleData()
       this.resetForm('formData');
       // this.$emit('update:dialogVisible', false)
     },
@@ -490,7 +597,64 @@ export default {
     },
     onTaskRemarkInput(val){
       this.formData.task_remark = specialFilter(val)
+    },
+    getRuleList(){
+      let data = {
+        cycle_type:'1',
+        pt_id: this.formData.pt_id
+      }
+      this.$axiosUser('get','/api/pro/integral/rule/trees/scope',data)
+        .then(res => {
+          this.rule_list = this.getTreeData(res.data.data.rule_tree)
+        })
+    },
+    // 递归判断列表,把最后的child设为undefined
+    getTreeData(data) {
+      for (var i = 0; i < data.length; i++) {
+        if (data[i].child.length < 1) {
+          // child若为空数组,则将child设为undefined
+          data[i].child = undefined;
+        } else {
+          // child若不为空数组,则继续 递归调用 本方法
+          this.getTreeData(data[i].child);
+        }
+      }
+      return data;
+    },
+    onItemConfirm(selectArrItem){
+      this.formData.rule_item = selectArrItem.length > 0 ? selectArrItem[0] : {
+        id:0,
+        remark:"",
+        cycle_type: 0,
+        is_attendance: 0,
+        max_point: 0,
+        min_point: 0,
+        prize_type: 0,
+        pt_id: 0,
+        range_type: 0,
+        rule_id: 0,
+      }
+      this.formData.rule_id = this.formData.rule_item.rule_id
+      this.formData.base_point = this.formData.rule_item.min_point !== 0 ? this.formData.rule_item.min_point : 1
+    },
+    onBasePointChange(currentValue,oldValue){
+      //限制范围分的上下限拦截
+      if (this.formData.rule_type !== 2 && this.formData.rule_item.range_type !== 2) return
+
+      if (currentValue < this.formData.rule_item.min_point) {
+        this.$nextTick(() => {
+          this.formData.base_point = this.formData.rule_item.min_point
+        })
+      }
+      if (currentValue > this.formData.rule_item.max_point) {
+        this.$nextTick( () => {
+          this.formData.base_point = this.formData.rule_item.max_point
+        })
+      }
     }
+  },
+  mounted() {
+    this.getRuleList()
   }
 };
 </script>

+ 1 - 1
src/point/views/common/temporaryTaskAmend.vue

@@ -357,7 +357,7 @@ export default {
       }
       if(this.ahead_timeout(data.ahead_award_point,data.ahead_award_point_limit,'提前奖分','奖分')) return
       if(this.ahead_timeout(data.timeout_deduction_point,data.timeout_deduction_point_limit,'逾期扣分','扣分')) return
-      if(!this.$supremeAuthority('creator')||this.$userInfo().point_config.point_limit.length!=0){
+      if(!this.$supremeAuthority('creator') && this.$userInfo().point_config.point_limit.length!=0){
       	let entry_limit =  Number(this.$userInfo().point_config.point_limit[1].point)
       	if(entry_limit > 0){
       		if(data.ahead_award_point > entry_limit || data.timeout_deduction_point > entry_limit ){

+ 2 - 2
src/point/views/workbench/grade/award_punish.vue

@@ -2,8 +2,8 @@
   <div>
     <el-alert class="diy-tip" title="管理者均能操作奖扣积分,普通员工只能申请积分" type="success" description show-icon>
       <p>
-        奖扣成功后,员工将收到积分提醒;权限不足时,奖扣分需要递交上级审批。</br>
-        奖扣时,可选择已制定好的积分规则(公司已有的制度)或者自定义内容(公司制度以外的事项)</br>
+        奖扣成功后,员工将收到积分提醒;权限不足时,奖扣分需要递交上级审批。<br/>
+        奖扣时,可选择已制定好的积分规则(公司已有的制度)或者自定义内容(公司制度以外的事项)<br/>
         也可以选择奖A分或B分,如需详细了解A、B分,查看右侧帮助【A分、B分常见问题】
       </p>
     </el-alert>

+ 24 - 9
src/point/views/workbench/task/my_issue.vue

@@ -57,12 +57,13 @@
           </el-table-column>
           <el-table-column label="任务内容" prop="task_name" >
             <template slot-scope="scope">
-              <el-popover trigger="hover" placement="top">
-                <span>{{ scope.row.task_name }}</span>
+              <el-popover trigger="hover" placement="top" v-if="scope.row.task_remark">
+                <span>{{ scope.row.task_remark }}</span>
                 <div slot="reference" class="name-wrapper">
                   <span style="white-space: normal; overflow: hidden;">{{ scope.row.task_name }}</span>
                 </div>
               </el-popover>
+              <span v-else style="white-space: normal; overflow: hidden;">{{ scope.row.task_name }}</span>
             </template>
           </el-table-column>
           <el-table-column label="积分" prop="point_config.base_point" width="120px">
@@ -153,17 +154,22 @@
 
       <div v-if="status == 'repetitive'">
         <el-table :data="list" style="width: 100%" v-loading="loading" :row-class-name="scheduleClassName" @row-click="repetitiveTasksClick">
-          <el-table-column label="执行人" prop="target_info" width='250px'>
+          <el-table-column label="执行人" prop="target_info" width='150px'>
             <template slot-scope="scope">
               <span v-for="(item,index) in scope.row.target_info" :key="index">
-                <span v-if="scope.row.target_info.length == 1 && index == 0">{{item.name}}</span>
-                <span v-if="scope.row.target_info.length > 1 && index == 0">{{item.name}}等{{scope.row.target_info.length}}人</span>
+                <span v-if="scope.row.target_info.length === 1 && index === 0">{{item.name}}</span>
+                <span v-if="scope.row.target_info.length > 1 && index === 0">{{item.name}}等{{scope.row.target_info.length}}人</span>
               </span>
             </template>
           </el-table-column>
           <el-table-column label="任务内容" prop="remark">
             <template slot-scope="scope">
-              {{scope.row.name || scope.row.remark}}
+              <el-popover trigger="hover" placement="top">
+                <span>{{scope.row.remark}}</span>
+                <div slot="reference" class="name-wrapper">
+                  <span style="white-space: normal; overflow: hidden;">{{ scope.row.name }}</span>
+                </div>
+              </el-popover>
             </template>
           </el-table-column>
           <el-table-column label="任务积分" prop="point_config.base_point" width="120px">
@@ -214,7 +220,8 @@
     <!-- 临时任务 -->
     <temporaryTask :dialogVisible.sync="dialogVisible" :showTitle="'指派任务'"></temporaryTask>
     <!-- 临时任务-修改 -->
-    <temporaryTaskAmend :dialogVisible.sync="dialogVisibleAmend" :showTitle="'任务编辑'" :modifyData="modifyData"></temporaryTaskAmend>
+<!--    <temporaryTaskAmend :dialogVisible.sync="dialogVisibleAmend" :showTitle="'任务编辑'" :modifyData="modifyData"></temporaryTaskAmend>-->
+    <TaskUpdate :taskVisible.sync="dialogVisibleAmend" :work-id="workId" @hasSubmit="get_list" />
 
     <!-- 悬赏任务 -->
     <rewardTask :dialogVisible.sync="rewardTaskShow" :showTitle="'悬赏任务'"></rewardTask>
@@ -228,7 +235,7 @@
     <repeatTaskDetailsPopup :visible.sync="showRepetitiveTasksPopup" v-if="showRepetitiveTasksPopup" :id="detailId" :title="'重复任务详情'"></repeatTaskDetailsPopup>
 
     <!-- 悬赏任务详情弹窗 -->
-    <rewardTaskDetailsPopup :visible.sync="showRewardTaskDetailsPopup" v-if="showRewardTaskDetailsPopup" :id="detailId" :title="'工作详情'"></rewardTaskDetailsPopup>
+    <rewardTaskDetailsPopup :visible.sync="showRewardTaskDetailsPopup" v-if="showRewardTaskDetailsPopup" :id="detailId" :title="'悬赏信息'"></rewardTaskDetailsPopup>
   </div>
 </template>
 
@@ -240,10 +247,12 @@
   import taskDetailsPopup from '@/point/views/common/taskDetailsPopup'
   import repeatTaskDetailsPopup from '@/point/views/common/repeatTaskDetailsPopup'
   import rewardTaskDetailsPopup from '@/point/views/common/rewardTaskDetailsPopup'
+  import TaskUpdate from "../../common/TaskUpdate.vue";
   export default {
     name: 'my_issue',
     data() {
       return {
+        workId: 0,
         weekList: ['一', '二', '三', '四', '五', '六', '日'],
         rewardTaskAmendData:{},//悬赏修改
         modifyData:{},//任务修改
@@ -290,7 +299,9 @@
         detailId: 0
       }
     },
-    components: {temporaryTask,rewardTask,rewardTaskAmend ,temporaryTaskAmend,taskDetailsPopup,repeatTaskDetailsPopup, rewardTaskDetailsPopup},
+    components: {
+      TaskUpdate,
+      temporaryTask,rewardTask,rewardTaskAmend ,temporaryTaskAmend,taskDetailsPopup,repeatTaskDetailsPopup, rewardTaskDetailsPopup},
     watch:{
       status(val){
         this.formData.page = 1
@@ -333,6 +344,9 @@
       this.point_types = this.getPointTypes()
     },
     methods: {
+      onTaskUpdateClose(){
+        this.dialogVisibleAmend = false
+      },
       ptID(id){
         switch(id){
           case 'BF':
@@ -364,6 +378,7 @@
       //任务修改
       issueAmend1(item){
         this.modifyData = item
+        this.workId = item.id
         this.dialogVisibleAmend = true
       },
        //删除---我指派的、我悬赏的、重复任务    (重复任务需等后端接口)