3 Achegas ebd1c4a64d ... 1882ac2ecd

Autor SHA1 Mensaxe Data
  manywhy 1882ac2ecd 实现指定规则时必选规则和分类,驳回重新申请 hai 1 semana
  manywhy eb8cf8e296 实现指定规则时必选规则和分类,驳回重新申请 hai 1 semana
  manywhy e17e1884a5 实现指定规则时必选规则和分类,驳回重新申请 hai 1 semana

+ 6 - 0
src/components/common/EmployeeSelector.vue

@@ -302,6 +302,12 @@ export default {
     this.isShowDept = this.isShowDepts;
   },
   methods: {
+      onSearch(val) {
+        Toast(val);
+      },
+      onCancel() {
+        Toast('取消');
+      },
     setSelected(val) {
       let selected = JSON.parse(JSON.stringify(val));
       this.employee_selected = [];

+ 1 - 1
src/components/common/RuleCategorySelectorCell.vue

@@ -18,7 +18,7 @@
     </template>
 
     <RuleCategorySelector :multi.sync="multi" :max="max" :close_clear_data="false" ref="selector" :can_select_rule="true" :can_select_category="false" :category_multi="false" @confirm="confirm"
-                      :visible.sync="show_dept_selector" :selected.sync="selected_data" :append_body="true"><template slot="append">
+      :visible.sync="show_dept_selector" :selected.sync="selected_data" :append_body="true"><template slot="append">
       <slot name="append"></slot>
     </template></RuleCategorySelector>
   </van-cell>

+ 1 - 1
src/components/common/RuleCategorySelectorCell1.vue

@@ -93,7 +93,7 @@ export default {
     },
     required: {
       type: Boolean,
-      default: false
+      default: true
     },
     max: {
       type: Number,

+ 22 - 14
src/components/common/integralApplyItem.vue

@@ -15,12 +15,12 @@
       <van-cell center title="指定规则">
         <template #right-icon>
           <div>
-            <van-switch v-model="show_rule" inactive-color="#9a9a9a" size="24" />
+            <van-switch v-model="item.show_rule" inactive-color="#9a9a9a" size="24" />
           </div>
         </template>
       </van-cell>
 
-      <div v-show="show_rule">
+      <div v-show="item.show_rule">
         <RuleCategorySelectorCell @confirm="rule_item_confirm" title="选择分类和规则" v-model="rule_item"  :multi="false" :max="1"></RuleCategorySelectorCell>
         <van-cell v-for="(d, i) in rule_item" :key="i" size="large" :label="d.remark">
           <template slot="title">
@@ -76,13 +76,13 @@ export default {
         reviewer_id: '',
         rule_id: 0,
         item_id: 0,
+        show_rule: true,
         remark: '',
         files: [],
         num: numberIndex
       },
       employee_list: [],
       rule_item: [],
-      show_rule: true,
       employee_id_arr: [],
       superior_list: [],
       point_types: JSON.parse(localStorage.getItem('SET_POINT_TYPES')) || JSON.parse(plus.storage.getItem('SET_POINT_TYPES')),
@@ -113,25 +113,30 @@ export default {
       }
     },
     'item': {
-      handler (val, oldVal) {
+      handler(val, oldVal) {
+        if (!val.show_rule) {
+          this.item.rule_id && this.item.item_id ? this.item.remark = '' : ''
+          this.rule_item = []
+          this.item.rule_id = 0
+          this.item.item_id = 0
+        }
         this.$emit('value', this.item)
       },
       deep: true
     },
-    show_rule (val) {
-      if (!val) {
-        this.item.rule_id && this.item.item_id ? this.item.remark = '' : ''
-        this.rule_item = []
-        this.item.rule_id = 0
-        this.item.item_id = 0
-      }
-    }
   },
   // 组件
   components: {Mtextarea, EmployeeSelectorCell, RuleCategorySelectorCell, DateCell},
   // 方法
   methods: {
-    rule_item_confirm (index, data) {
+    rule_item_confirm(index, data) {
+      if(data.length==0){
+        this.item.rule_id = 0
+        this.item.item_id = 0
+        this.item.remark = ''
+        this.rule_item = []
+        return
+      }
       this.rule_item = data
       this.item.rule_id = data[0].rule_id
       this.item.item_id = data[0].id
@@ -160,5 +165,8 @@ export default {
 }
 </script>
 <style scoped>
-  .body_com{height: calc(100% - 1rem); position: relative;}
+  .body_com{
+    height: calc(100% - 1rem);
+    position: relative;
+  }
 </style>

+ 63 - 38
src/components/integral/approval_detail.vue

@@ -1,38 +1,44 @@
 <template>
   <div>
     <van-nav-bar :title="title" left-text="返回" @click-left="$route_back" left-arrow></van-nav-bar>
-    <div class="body_com has_header" :class="{ can_complete: detail_info.can_complete == 1, can_complete_isIos: can_complete_isIos }">
+    <div class="body_com has_header"
+      :class="{ can_complete: detail_info.can_complete == 1, can_complete_isIos: can_complete_isIos }">
       <scroller style="height: 100vh;">
         <!-- 审批内容 -->
         <!-- detail_info.process.length > 0 &&  -->
         <van-cell-group>
-          <van-cell :title="detail_info.employee_info.name" v-if="detail_info.process !== null && detail_info.status == 0">
+          <van-cell :title="detail_info.employee_info.name"
+            v-if="detail_info.process !== null && detail_info.status == 0">
             <template slot="icon">
-              <userImage
-                :user_name="detail_info.employee_info.name"
-                :img_url="detail_info.employee_info.img_url"
-                width="0.9rem"
-                height="0.9rem"
-                style="margin-right: .1rem"
-              ></userImage>
+              <userImage :user_name="detail_info.employee_info.name" :img_url="detail_info.employee_info.img_url"
+                width="0.9rem" height="0.9rem" style="margin-right: .1rem"></userImage>
             </template>
             <template slot="title">
               <Wxopendata type="userName" :openid="detail_info.employee_info.name"></Wxopendata>
             </template>
             <template slot="label">
-              <span v-show="detail_info.review_status == 0" :class="{ color_orange: detail_info.review_status == 0 }">{{ detail_info.review_status_mark }}</span>
-              <span v-show="detail_info.review_status == 1" :class="{ color_red: detail_info.review_status == 1 }">{{ detail_info.review_status_mark }}</span>
-              <span v-show="detail_info.review_status == 2" :class="{ color_green: detail_info.review_status == 2 }">{{ detail_info.review_status_mark }}</span>
+              <span v-show="detail_info.review_status == 0" :class="{ color_orange: detail_info.review_status == 0 }">{{
+                detail_info.review_status_mark }}</span>
+              <span v-show="detail_info.review_status == 1" :class="{ color_red: detail_info.review_status == 1 }">{{
+                detail_info.review_status_mark }}</span>
+              <span v-show="detail_info.review_status == 2" :class="{ color_green: detail_info.review_status == 2 }">{{
+                detail_info.review_status_mark }}</span>
             </template>
           </van-cell>
         </van-cell-group>
         <!-- 当审批状态不为待审批时 -->
-        <div class="flex-box-v flex-center-center event-info__header" v-if="detail_info.status != 0 && detail_info.process !== null" style="padding:0.32rem;background-color:#fff;">
-          <userImage class="about-me__avatar" :user_name="detail_info.employee_info.name" :img_url="detail_info.employee_info.img_url" width="1.12rem" height="1.12rem"></userImage>
-          <span class="event-employee__name"><Wxopendata type="userName" :openid="detail_info.employee_info.name"></Wxopendata></span>
+        <div class="flex-box-v flex-center-center event-info__header"
+          v-if="detail_info.status != 0 && detail_info.process !== null" style="padding:0.32rem;background-color:#fff;">
+          <userImage class="about-me__avatar" :user_name="detail_info.employee_info.name"
+            :img_url="detail_info.employee_info.img_url" width="1.12rem" height="1.12rem"></userImage>
+          <span class="event-employee__name">
+            <Wxopendata type="userName" :openid="detail_info.employee_info.name"></Wxopendata>
+          </span>
           <template v-if="detail_info.status == 1">
-            <span class="event-info__value color_green" v-if="detail_info.review_point >= 0">+{{ detail_info.review_point }} {{ types_list[detail_info.pt_id] }}</span>
-            <span class="event-info__value color_red" v-else>{{ detail_info.review_point }}{{ types_list[detail_info.pt_id] }}</span>
+            <span class="event-info__value color_green" v-if="detail_info.review_point >= 0">+{{
+              detail_info.review_point }} {{ types_list[detail_info.pt_id] }}</span>
+            <span class="event-info__value color_red" v-else>{{ detail_info.review_point }}{{
+              types_list[detail_info.pt_id] }}</span>
           </template>
           <span class="event-info__status">{{ detail_info.review_status_mark }}</span>
         </div>
@@ -42,7 +48,9 @@
             <template v-if="item.value">
               <div class="flex-box" v-if="item.key == '奖扣目标' || item.key == '申请人' || item.key == '收益人'">
                 <span v-if="item.type == 'text'" class="detail_label">{{ item.key }}</span>
-                <span v-if="item.type == 'text'" class="detail_value"><Wxopendata type="userName" :openid="item.value"></Wxopendata></span>
+                <span v-if="item.type == 'text'" class="detail_value">
+                  <Wxopendata type="userName" :openid="item.value"></Wxopendata>
+                </span>
               </div>
               <div class="flex-box" v-else>
                 <span v-if="item.type == 'text'" class="detail_label">{{ item.key }}</span>
@@ -50,20 +58,17 @@
               </div>
               <span v-if="item.type == 'image'" class="detail_label">{{ item.key }}</span>
               <span v-if="item.type == 'image'" class="detail_value">
-                <img
-                  :key="index"
-                  v-for="(items, index) in item.value"
-                  :src="items"
+                <img :key="index" v-for="(items, index) in item.value" :src="items"
                   style="width: 50px;height: 50px; margin-right: 0.2rem; vertical-align: text-top"
-                  @click="opremImage(item.value)"
-                />
+                  @click="opremImage(item.value)" />
               </span>
             </template>
           </div>
         </div>
         <!-- 规则依据模块 -->
         <div class="event-rule__wrap">
-          <div class="event-rule__header" style="margin-bottom:0.24rem;" v-show="detail_info.rule_id || detail_info.item_id">
+          <div class="event-rule__header" style="margin-bottom:0.24rem;"
+            v-show="detail_info.rule_id || detail_info.item_id">
             <span class="event-rule__title">规则依据</span>
             <span class="event-process__sub-title">此事件打分参考以下积分规则</span>
           </div>
@@ -101,16 +106,31 @@
         <van-button type="info" @click="revoke(1)" class="flex-1">撤回</van-button>
       </footer>
       <!-- 申请者 ||  -->
-      <footer class="flex-box flex-v-ce footer" v-if="detail_info.applyor_id==$userInfo().id&&detail_info.can_refuse == '1'&&(detail_info.source_type==2||detail_info.source_type==3)">
+      <footer class="flex-box flex-v-ce footer"
+        v-if="detail_info.applyor_id==$userInfo().id&&detail_info.can_refuse == '1'&&(detail_info.source_type==2||detail_info.source_type==3)">
         <div class="flex-2">撤销后数据将不可恢复</div>
         <van-button type="info" @click="revoke(2)" class="flex-1">撤销</van-button>
       </footer>
 
+      <!-- 申请者 ||  -->
+      <!-- <footer class="flex-box flex-v-ce footer"
+        v-if="detail_info.applyor_id == $userInfo().id && detail_info.review_status_mark === '驳回'">
+        <van-button type="primary" @click="" class="flex-1">重新发起申请</van-button>
+      </footer> -->
+
+      <footer class="flex-box flex-v-ce footer" v-if="detail_info.applyor_id == $userInfo().id && detail_info.review_status == 2">
+        <van-button type="info" @click="reapply" class="flex-1">重新发起申请</van-button>
+      </footer>
+
+
+
       <!-- 驳回弹窗 -->
-      <van-popup v-model="show_refuse" position="right" :style="{ height: '100%', width: '100%', 'background-color': 'rgb(245, 245, 245)' }">
+      <van-popup v-model="show_refuse" position="right"
+        :style="{ height: '100%', width: '100%', 'background-color': 'rgb(245, 245, 245)' }">
         <div :style="'padding-top:' + bar_height + 'px;background-color: #238dfa;'"></div>
         <van-nav-bar title="确认驳回" left-text="返回" @click-left="show_refuse = false" left-arrow></van-nav-bar>
-        <van-cell-group><van-field v-model="refuse_msg" rows="5" autosize type="textarea" maxlength="50" placeholder="请输入审批意见" show-word-limit /></van-cell-group>
+        <van-cell-group><van-field v-model="refuse_msg" rows="5" autosize type="textarea" maxlength="50"
+            placeholder="请输入审批意见" show-word-limit /></van-cell-group>
         <div style="padding:0.32rem;"><van-button block type="info" @click="confirm_refuse">确认驳回</van-button></div>
       </van-popup>
     </div>
@@ -118,27 +138,27 @@
     <van-row justify="center" type="flex" v-if="detail_info.can_complete == 1" class="btn-box">
       <van-col :span="detail_info.source_type != 4 ? 8 : 0">
         <div style="padding:0.16rem;">
-          <van-button block type="info" plain :disabled="detail_info.source_type == '4'" v-if="detail_info.source_type != 4" @click="refuse">驳回</van-button>
+          <van-button block type="info" plain :disabled="detail_info.source_type == '4'"
+            v-if="detail_info.source_type != 4" @click="refuse">驳回</van-button>
         </div>
       </van-col>
       <!--  v-if="detail_info.status" -->
       <van-col :span="detail_info.source_type != 4 ? 16 : 24">
         <div style="padding:0.16rem; padding-left:0;">
-          <van-button block type="info" v-if="detail_info.source_type == '1'" @click="$router.push({ name: 'integral_approval_integral', query: { review_id: detail_info.id } })">
+          <van-button block type="info" v-if="detail_info.source_type == '1'"
+            @click="$router.push({ name: 'integral_approval_integral', query: { review_id: detail_info.id } })">
             通过
           </van-button>
-          <van-button block type="info" v-if="detail_info.source_type == '2'" @click="$router.push({ name: 'integral_approval_integral', query: { review_id: detail_info.id } })">
+          <van-button block type="info" v-if="detail_info.source_type == '2'"
+            @click="$router.push({ name: 'integral_approval_integral', query: { review_id: detail_info.id } })">
             通过
           </van-button>
-          <van-button block type="info" v-if="detail_info.source_type == '3'" @click="$router.push({ name: 'integral_approval_integral', query: { review_id: detail_info.id } })">
+          <van-button block type="info" v-if="detail_info.source_type == '3'"
+            @click="$router.push({ name: 'integral_approval_integral', query: { review_id: detail_info.id } })">
             通过
           </van-button>
-          <van-button
-            block
-            type="info"
-            v-if="detail_info.source_type == '4'"
-            @click="$router.push({ name: 'integral_approval_performance', query: { review_id: detail_info.id } })"
-          >
+          <van-button block type="info" v-if="detail_info.source_type == '4'"
+            @click="$router.push({ name: 'integral_approval_performance', query: { review_id: detail_info.id } })">
             通过
           </van-button>
         </div>
@@ -356,6 +376,11 @@ export default {
         .catch(() => {
           // on cancel
         })
+    },
+
+    reapply () {
+      let self = this
+      self.$router.push({ path: '/integral_reapply', query: { detail_info: JSON.stringify(self.detail_info) } })
     }
   },
   // 生命周期 --- 创建完成

+ 13 - 3
src/components/integral/integral_application.vue

@@ -14,7 +14,7 @@
           <van-cell @click="add_one" title-class="color_bule" title="+ 再加一条"></van-cell>
         </van-cell-group>
         <div style="padding:0.32rem;">
-          <van-button size="large" @click="data_verify" :disabled="subloading" type="info">提交</van-button>
+          <van-button size="large" @click="data_verify" :disabled="subloading || !hasRules" type="info">提交</van-button>
         </div>
       </scroller>
     </div>
@@ -30,16 +30,23 @@ export default {
   components: {integralApplyItem},
   watch: {
     itemData: {
-      handler (val, oldVal) {
+      handler(val, oldVal) {
         this.fromData.items.forEach((element, index) => {
           if (val.num == index) {
             this.fromData.items[index] = val
           }
         })
+        this.hasRules = this.fromData.items.every(item => !item.show_rule  || item.show_rule && item.rule_id && item.rule_id !== 0)
       },
       deep: true
-    }
+    },
+
   },
+
+  created() {
+    console.log(this.fromData)
+  },
+
   data () {
     let date = moment().format('YYYY-MM-DD')
     return {
@@ -49,9 +56,12 @@ export default {
         items: [{}]
       },
       itemData: {},
+      hasRules: false,
       subloading: false
     }
   },
+
+ 
   methods: {
     // 加一条
     add_one () {

+ 262 - 0
src/components/integral/integral_reapplication.vue

@@ -0,0 +1,262 @@
+<template>
+  <div>
+    <van-nav-bar title="重新发起申请" left-text="返回" @click-left="$route_back" left-arrow></van-nav-bar>
+    <div class="body_com has_header">
+      <scroller :isNeed="isNeed">
+        <div v-for="(item,index) in fromData.items" :key="index" class="item_class" @click="itemIndex = index">
+          <div class="clear operation">
+            <span class="fl color_ccc">申请(第{{index+1}}条)</span>
+          </div>
+          <van-cell required title="录入对象" right-icon="arrow">
+            <Wxopendata type="userName" :openid="item.employee_name"></Wxopendata>
+          </van-cell>
+          <van-cell center title="指定规则">
+            <template #right-icon>
+              <div>
+                <van-switch v-model="item.show_rule" inactive-color="#9a9a9a" size="24" @change="onRuleSwitchChange(item)" />
+              </div>
+            </template>
+          </van-cell>
+
+          <div v-show="item.show_rule">
+            <RuleCategorySelectorCell @confirm="rule_item_confirm" title="选择分类和规则" v-model="rule_item" :multi="false"
+              :max="1"></RuleCategorySelectorCell>
+            <van-cell v-for="(d, i) in rule_item" :key="i" size="large" :label="d.remark">
+              <template slot="title">
+                {{ get_point_name(d.pt_id) }}
+                <span v-show="d.range_type == 1">{{ d.min_point }}</span>
+                <span v-show="d.range_type == 2">{{ d.min_point }}—{{ d.max_point }}</span>
+              </template>
+            </van-cell>
+          </div>
+
+          <van-cell required>
+            <Mtextarea v-model="item.remark" name="申请事由" v-validate="'required|max:300'" placeholder="请输入申请事由(最多300字)"
+              :text_max="300" :imgs_max="3" images speech :imgs.sync="item.files"></Mtextarea>
+          </van-cell>
+          <DateCell required title="发生时间" v-model="item.event_time"></DateCell>
+          <van-cell required title="审批人" right-icon="arrow">
+            <Wxopendata type="userName" :openid="item.reviewer_name"></Wxopendata>
+          </van-cell>
+        </div>
+        <div style="padding:0.32rem; box-sizing: border-box;">
+          <van-button size="large" @click="data_verify" :disabled="subloading || !hasRules" type="info">提交</van-button>
+        </div>
+      </scroller>
+    </div>
+  </div>
+</template>
+<script>
+import request from '@/utils/request'
+import integralApplyItem from '@/components/common/integralApplyItem'
+import moment from 'moment'
+import Mtextarea from '@/components/common/Mtextarea'
+import RuleCategorySelectorCell from '@/components/common/RuleCategorySelectorCell1'
+import DateCell from '@/components/common/DateCell'
+export default {
+  name: 'integral_application',
+  components: {integralApplyItem, Mtextarea, RuleCategorySelectorCell, DateCell},
+  
+
+  
+  data () {
+    let date = moment().format('YYYY-MM-DD')
+    return {
+      isNeed:this.$getCache('isAndroid') == 1 ? false: true,
+      close_buttom: false,
+      detail_info: {},
+      fromData: {
+        items: []
+      },
+      itemIndex: 0,
+      rule_item: [],
+      point_types: JSON.parse(localStorage.getItem('SET_POINT_TYPES')) || JSON.parse(plus.storage.getItem('SET_POINT_TYPES')),
+      itemData: {},
+      hasRules: false,
+      subloading: false,
+      employee_map: JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP')) || JSON.parse(plus.storage.getItem('SET_EMPLOYEE_MAP')),
+    }
+  },
+
+  created() {
+    this.initData();
+  },
+
+ 
+  methods: {
+    initData () {
+      this.detail_info = JSON.parse(this.$route.query.detail_info)
+      let obj = {
+        employee_id: this.detail_info.employee_id,
+        employee_name: this.detail_info.employee_info.name,
+        event_time: '',
+        reviewer_id: this.detail_info.reviewer_id,
+        reviewer_name: this.employee_map[this.detail_info.reviewer_id].name,
+        rule_id: this.detail_info.rule_id,
+        item_id: this.detail_info.item_id,
+        show_rule: this.detail_info.rule_id && this.detail_info.rule_id != 0 ? true : false,
+        remark: this.detail_info.item_name,
+        files: []
+      }
+      // 处理事件时间
+      let timeData = this.detail_info.detail.find(item => item.key === '事件时间')
+      if (timeData && timeData.value) {
+        obj.event_time = timeData.value
+      }
+      // 处理附件
+      let fileData = this.detail_info.detail.find(item => item.key === '附件')
+      if (fileData && fileData.value && fileData.value.length) {
+        obj.files = fileData.value
+      }
+      this.fromData.items.splice(0, 1, obj);
+      this.hasRules = this.fromData.items.every(item => !item.show_rule  || item.show_rule && item.rule_id && item.rule_id !== 0)
+      // 处理规则项
+      if (this.detail_info.rule_id && this.detail_info.rule_id != 0) {
+        this.rule_item = [{
+          checked: true,
+          cycle_type: this.detail_info.item_cycle_type,
+          pt_id: this.detail_info.pt_id,
+          rule_id: this.detail_info.rule_id,
+          id: this.detail_info.item_id,
+          remark: this.detail_info.rule_name,
+          prize_type: this.detail_info.item_prize_type,
+          range_type: this.detail_info.item_range_type,
+          min_point: this.detail_info.item_min_point,
+          max_point: this.detail_info.item_max_point,
+          is_attendance: this.detail_info.item_is_attendance
+        }]
+      }
+    },
+
+    rule_item_confirm(index, data) {
+      if (data.length == 0) {
+        this.fromData.items[this.itemIndex].rule_id = 0
+        this.fromData.items[this.itemIndex].item_id = 0
+        this.fromData.items[this.itemIndex].remark = ''
+        this.rule_item = []
+        return
+      }
+      this.rule_item = data
+      this.fromData.items[this.itemIndex].rule_id = data[0].rule_id
+      this.fromData.items[this.itemIndex].item_id = data[0].id
+      this.fromData.items[this.itemIndex].remark = data[0].remark
+    },
+
+    onRuleSwitchChange(item) {
+      if (!item.show_rule) {
+        item.rule_id && item.item_id ? item.remark = '' : ''
+        this.rule_item = []
+        item.rule_id = 0
+        item.item_id = 0
+      }
+      this.hasRules = this.fromData.items.every(i => !i.show_rule  || i.show_rule && i.rule_id && i.rule_id !== 0)
+    },
+
+    get_point_name(id) {
+      let name = ''
+      this.point_types.forEach(element => {
+        if (element.id == id) {
+          name = element.name
+        }
+      })
+      return name
+    },
+
+    data_verify () {
+      let self = this
+      self.$validator.validateAll().then(result => {
+        if (!result) {
+          self.$notify({ type: 'danger', message: self.$validator.errors.items[0].msg })
+        } else {
+          self.send()
+        }
+      })
+    },
+
+
+    send () {
+      let self = this
+      self.subloading = true
+      for (const i in self.fromData.items) {
+        if (!self.fromData.items[i].employee_id) {
+          self.$notify({ type: 'danger', message: '第' + (parseInt(i) + 1) + '条请选择录入对象'})
+          self.subloading = false
+          return false
+        }
+        if (!self.fromData.items[i].event_time) {
+          self.$notify({ type: 'danger', message: '第' + (parseInt(i) + 1) + '条请选择发生时间'})
+          self.subloading = false
+          return false
+        }
+        if (!self.fromData.items[i].reviewer_id) {
+          self.subloading = false
+          self.$notify({ type: 'danger', message: '第' + (parseInt(i) + 1) + '条请选择审批人'})
+          return false
+        }
+        if (!self.fromData.items[i].remark) {
+          self.$notify({ type: 'danger', message: '第' + (parseInt(i) + 1) + '条请输入申请事由'})
+          self.subloading = false
+          return false
+        }
+      }
+      self.$toast.loading({
+        message: '正在处理'
+      })
+      if (this.close_buttom == false) { // 第一次点击提交为false,为false可进入请求。请求成为 为true。0.5秒后变为false
+        request('post', '/api/integral/review/apply', self.fromData, 'v2').then(res => {
+          self.$toast.clear()
+          if (res.data.code == 1) {
+            if (res.data.data.list.some(item => item.status != 0)) {
+              this.$toast.success("申请成功")
+              this.fromData = {
+                items: [{}]
+              }
+              this.itemData = {}
+              setTimeout(() => {
+                this.$router.push({ path: '/integral_application_list' })
+              }, 500)
+              // localStorage.setItem('callback_data', JSON.stringify({detail_url: this.$route.path, result: res.data.data}))
+              // this.$router.push({path: '/callback_new'})
+            } else {
+              let index = res.data.data.list.findIndex(item => item.status == 0)
+              self.$notify({ type: 'danger', message: res.data.data.list[0].msg})
+            }
+          } else {
+            self.$notify({ type: 'danger', message: res.data.msg})
+          }
+        }).catch(e => {
+          self.$toast.clear()
+        }).finally(() => {
+          self.subloading = false
+          self.close_buttom = true
+          setTimeout(() => {
+            self.close_buttom = false
+          }, 1000)
+        })
+      } else {
+        self.subloading = false
+      }
+    }
+  }
+}
+</script>
+<style scoped lang="less">
+  .body_com{
+    height: calc(100% - 0.92rem);
+    position: relative;
+    overflow-y: scroll;
+  }
+  .item_class{
+    .operation{
+      padding: 0.24rem 0.32rem;
+      font-size: 0.3rem;
+      box-sizing: border-box;
+      .del_btn{
+        color: #26A2FF;
+      }
+    }
+  }
+  .color_bule{
+    color: #26A2FF;
+  }
+</style>

+ 12 - 27
src/components/pk/pk_rules.vue

@@ -3,12 +3,7 @@
     <div class="pk_rules_scroller">
       <scroller>
         <div style="padding: 0 0.32rem">
-          <van-panel
-            class="rule_list"
-            v-for="(item,index) in rules_list "
-            :key="index"
-            :title="item.name"
-          >
+          <van-panel class="rule_list" v-for="(item,index) in rules_list " :key="index" :title="item.name">
             <div class="rule_btn" v-if="hasPermission && pkStatus !== 'end'">
               <van-button color="#238dfa" type="primary" @click="edit_rule_btn(item)" size="mini">修改</van-button>
               <van-button type="danger" @click="del_rule(get_id,item)" size="mini">删除</van-button>
@@ -21,29 +16,20 @@
     <div style="padding: 0 0.32rem;" v-if="hasPermission && pkStatus !== 'end'">
       <van-button type="info" block @click="add_rule_btn">新增规则</van-button>
     </div>
-    <div style="padding: 0 0.32rem;" v-else v-for="(item,index) in pk_info.manager_ids" :key="index">
-      <van-button v-if="$store.getters.user_info.id == item && pkStatus !== 'end'" type="info" block @click="add_rule_btn">新增规则</van-button>
-    </div>
+    <template v-else>
+      <div style="padding: 0 0.32rem;" v-for="(item, index) in pk_info.manager_ids" :key="index">
+        <van-button v-if="$store.getters.user_info.id == item && pkStatus !== 'end'" type="info" block
+          @click="add_rule_btn">新增规则</van-button>
+      </div>
+    </template>
+
 
     <!-- 添加规则弹窗 -->
-    <van-dialog
-      class="pk_rule"
-      v-model="show_Rule"
-      :closeOnClickOverlay="false"
-      :beforeClose="colseRules"
-      show-cancel-button
-    >
+    <van-dialog class="pk_rule" v-model="show_Rule" :closeOnClickOverlay="false" :beforeClose="colseRules"
+      show-cancel-button>
       <van-cell-group>
-        <van-field
-          v-model="popup_rules_input"
-          rows="2"
-          autosize
-          label="规则"
-          label-width="40"
-          type="textarea"
-          maxlength="50"
-          placeholder="请填写规则+积分值,以便成员阅读"
-        />
+        <van-field v-model="popup_rules_input" rows="2" autosize label="规则" label-width="40" type="textarea"
+          maxlength="50" placeholder="请填写规则+积分值,以便成员阅读" />
       </van-cell-group>
     </van-dialog>
   </div>
@@ -90,7 +76,6 @@ export default {
     hasPermission() {
       const { createInfo } = this;
       const { is_creator, id } = this.$store.getters.user_info
-      console.log(JSON.stringify(createInfo),is_creator,id,this.pkStatus)
       return is_creator == 1 || id == createInfo.creatorId || createInfo.manages.has(id.toString())
     }
   },

+ 7 - 0
src/router/index.js

@@ -877,6 +877,13 @@ let routes = [
     label: '积分申请',
     need_login: true
   },
+  {
+    path: '/integral_reapply',
+    name: 'integral_reapply',
+    component: () => import('@/components/integral/integral_reapplication'),
+    label: '重新发起申请',
+    need_login: true
+  },
   {
     path: '/point_base',
     name: 'point_base',