rule_item_edit.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <template>
  2. <div class="rule_item_edit_box">
  3. <van-nav-bar title="修改规则" left-text="返回" @click-left="$route_back" left-arrow right-text="保存" @click-right="data_verify"></van-nav-bar>
  4. <div class="body_com has_header">
  5. <scroller>
  6. <van-cell-group>
  7. <van-cell>
  8. <Mtextarea v-model="item.remark" placeholder="输入规则内容" :text_max="300" :imgs_max="3"></Mtextarea>
  9. </van-cell>
  10. </van-cell-group>
  11. <van-cell-group>
  12. <van-cell title="分值" class="cell-right-4rem">
  13. <van-radio-group v-model="item.range_type" class="radio_button" direction="horizontal" slot="right-icon">
  14. <van-radio class="list" :name="1">固定分</van-radio>
  15. <van-radio class="list" :name="2">范围分</van-radio>
  16. </van-radio-group>
  17. </van-cell>
  18. <van-field label="固定分值" v-if="item.range_type == 1" v-model="item.min_point" placeholder="输入分值"/>
  19. <van-field label="最小分值" v-if="item.range_type == 2" v-model="item.min_point" placeholder="输入最小分值"/>
  20. <van-field label="最大分值" v-if="item.range_type == 2" v-model="item.max_point" placeholder="输入最大分值"/>
  21. </van-cell-group>
  22. <van-cell-group class="choose">
  23. <CategorySelectorCell required title="选择分类" v-model="rule_cate" :max="2" :multi="false"></CategorySelectorCell>
  24. </van-cell-group>
  25. <van-cell-group>
  26. <van-cell title="积分类型" class="cell-right-4rem">
  27. <van-radio-group v-model="item.pt_id" direction="horizontal" slot="right-icon" class="radio_button">
  28. <van-radio v-for="(item, index) in types_list" class="list" :name="item.id" :key="index">{{item.name}}</van-radio>
  29. </van-radio-group>
  30. </van-cell>
  31. </van-cell-group>
  32. <van-cell-group>
  33. <!--
  34. <van-cell title="奖扣周期" class="cell-right-4rem">
  35. <template slot="right-icon">
  36. <van-switch v-model="cycle" size="24" />
  37. </template>
  38. </van-cell>
  39. -->
  40. <!--
  41. <van-cell title="考勤挂钩" class="cell-right-4rem" v-show="item.cycle_type == 2">
  42. <van-radio-group class="radio_button" slot="right-icon" v-model="item.is_attendance" direction="horizontal">
  43. <van-radio class="list" :name="0">否</van-radio>
  44. <van-radio class="list" :name="1">是</van-radio>
  45. </van-radio-group>
  46. </van-cell>
  47. -->
  48. </van-cell-group>
  49. <div style="padding:0.32rem;">
  50. <van-button size="large" @click="del" type="danger">删除</van-button>
  51. </div>
  52. </scroller>
  53. </div>
  54. </div>
  55. </template>
  56. <script>
  57. import request from '@/utils/request'
  58. import Mtextarea from '@/components/common/Mtextarea'
  59. import CategorySelectorCell from '@/components/common/CategorySelectorCell'
  60. import Vue from 'vue';
  61. import { Switch } from 'vant';
  62. Vue.use(Switch);
  63. export default {
  64. name: "rule_item_edit",
  65. components: {
  66. Mtextarea, CategorySelectorCell
  67. },
  68. data() {
  69. return {
  70. data: {
  71. items: []
  72. },
  73. cycle: false,
  74. rule_cate: [],
  75. item: {
  76. rule_id: 0,
  77. prize_type: 1,
  78. range_type: 1,
  79. min_point: 0,
  80. max_point: 0,
  81. remark: '',
  82. is_attendance: 0,
  83. cycle_type: 1,
  84. pt_id: 0,
  85. },
  86. send_loading: false,
  87. types_list: [],
  88. id: 0
  89. }
  90. },
  91. watch: {
  92. cycle(val){
  93. if(val){
  94. this.item.cycle_type = 2
  95. }else{
  96. this.item.cycle_type = 1
  97. }
  98. },
  99. rule_cate(val){
  100. if(val.length > 0){
  101. this.item.rule_id = val[0].id
  102. }else{
  103. this.item.rule_id = 0
  104. }
  105. }
  106. },
  107. methods: {
  108. data_verify() {
  109. let self = this
  110. self.$validator.validateAll().then(result => {
  111. if (!result) {
  112. self.$notify({type: 'danger', message: self.$validator.errors.items[0].msg});
  113. } else {
  114. self.send()
  115. }
  116. })
  117. },
  118. del() {
  119. let self = this
  120. this.$dialog.confirm({
  121. title: '删除规则信息',
  122. message: '确定要删除当前规则信息吗?'
  123. }).then(() => {
  124. self.$toast.loading({
  125. mask: true,
  126. message: '处理中...'
  127. })
  128. request('delete','/api/integral/rule/items',{item_id: self.id}).then((res) => {
  129. self.$toast.clear()
  130. if (res.data.code == 1) {
  131. self.$toast.success('删除成功')
  132. self.$keep_alive_update('delete_item_info', self.item)
  133. setTimeout(() => {
  134. self.$route_back()
  135. }, 300)
  136. } else {
  137. self.$toast(res.data.msg)
  138. }
  139. })
  140. }).catch(() => {
  141. // on cancel
  142. })
  143. },
  144. send() {
  145. let self = this
  146. self.data.items = []
  147. if(self.item.range_type == 1){
  148. self.item.max_point = self.item.min_point
  149. }
  150. if(self.item.range_type == 1 && self.item.min_point == 0){
  151. self.$notify({type: 'danger', message: '固定积分必须是个正整数'});
  152. return false
  153. }
  154. self.data.items.push(self.item)
  155. self.send_loading = true
  156. self.$toast.loading({
  157. message: '正在处理'
  158. })
  159. self.item.item_id = self.item.id
  160. request('put','/api/integral/rule/items',self.item).then(res => {
  161. self.send_loading = false
  162. self.$toast.clear()
  163. if (res.data.code == 1) {
  164. self.$toast.success('修改成功')
  165. self.$keep_alive_update('update_item_info', self.item)
  166. setTimeout(() => {
  167. self.$route_back()
  168. }, 300)
  169. } else {
  170. self.$toast(res.data.msg)
  171. }
  172. }).catch(e => {
  173. self.send_loading = false
  174. self.$toast.clear()
  175. })
  176. },
  177. get_point_types() {
  178. let self = this
  179. self.types_list = []
  180. let list = this.$store.getters.point_types
  181. for (let i in list) {
  182. if (list[i].code != 'JX') {
  183. if(list[i].code == 'BF'){
  184. self.item.pt_id = list[i].id
  185. }
  186. self.types_list.push(list[i])
  187. }
  188. }
  189. }
  190. },
  191. created() {
  192. if (this.$route.query.id) {
  193. this.id = this.$route.query.id
  194. this.item = JSON.parse(localStorage.getItem('rule_'+this.id))
  195. if(this.item.cycle_type == 2){
  196. this.cycle = true
  197. }
  198. if(this.item.rule_id){
  199. this.rule_cate = [{id: this.item.rule_id*1, name: this.$route.query.rule_name}]
  200. }
  201. }
  202. this.get_point_types()
  203. }
  204. }
  205. </script>
  206. <style scoped>
  207. .body_com {
  208. height: calc(100% - 0.92rem);
  209. position: relative;
  210. }
  211. </style>