pk_rules.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <template>
  2. <div style="height: 100%">
  3. <div class="pk_rules_scroller">
  4. <scroller>
  5. <div style="padding: 0 0.32rem">
  6. <van-panel
  7. class="rule_list"
  8. v-for="(item,index) in rules_list "
  9. :key="index"
  10. :title="item.name"
  11. >
  12. <div class="rule_btn" v-if="hasPermission && pkStatus !== 'end'">
  13. <van-button color="#238dfa" type="primary" @click="edit_rule_btn(item)" size="mini">修改</van-button>
  14. <van-button type="danger" @click="del_rule(get_id,item)" size="mini">删除</van-button>
  15. </div>
  16. </van-panel>
  17. </div>
  18. <noData :list="rules_list"></noData>
  19. </scroller>
  20. </div>
  21. <div style="padding: 0 0.32rem;" v-if="hasPermission && pkStatus !== 'end'">
  22. <van-button type="info" block @click="add_rule_btn">新增规则</van-button>
  23. </div>
  24. <div style="padding: 0 0.32rem;" v-else v-for="(item,index) in pk_info.manager_ids" :key="index">
  25. <van-button v-if="$store.getters.user_info.id == item && pkStatus !== 'end'" type="info" block @click="add_rule_btn">新增规则</van-button>
  26. </div>
  27. <!-- 添加规则弹窗 -->
  28. <van-dialog
  29. class="pk_rule"
  30. v-model="show_Rule"
  31. :closeOnClickOverlay="false"
  32. :beforeClose="colseRules"
  33. show-cancel-button
  34. >
  35. <van-cell-group>
  36. <van-field
  37. v-model="popup_rules_input"
  38. rows="2"
  39. autosize
  40. label="规则"
  41. label-width="40"
  42. type="textarea"
  43. maxlength="50"
  44. placeholder="请填写规则+积分值,以便成员阅读"
  45. />
  46. </van-cell-group>
  47. </van-dialog>
  48. </div>
  49. </template>
  50. <script>
  51. import request from '@/utils/request'
  52. import Vue from 'vue'
  53. import { Panel, Dialog } from 'vant'
  54. Vue.use(Panel).use(Dialog)
  55. export default {
  56. props: {
  57. get_id: {
  58. type: String,
  59. default: '',
  60. },
  61. get_page: {
  62. type: Number,
  63. default: 1
  64. },
  65. pkStatus: {
  66. type: String,
  67. default: '',
  68. },
  69. createInfo: {
  70. type: Object,
  71. default: {}
  72. }
  73. },
  74. // 数据
  75. data() {
  76. return {
  77. show: false,
  78. rules_list: null,
  79. show_Rule: false,
  80. popup_rules_input: '',
  81. popup_rules_id: '',
  82. rules_type: 'add',
  83. pk_info: {},
  84. }
  85. },
  86. name: "pk_rules",
  87. computed: {
  88. hasPermission() {
  89. const { createInfo } = this;
  90. const { is_creator, id } = this.$store.getters.user_info
  91. console.log(JSON.stringify(createInfo),is_creator,id,this.pkStatus)
  92. return is_creator == 1 || id == createInfo.creatorId || createInfo.manages.has(id.toString())
  93. }
  94. },
  95. // 方法
  96. methods: {
  97. // 规则弹出显示
  98. showPopup() {
  99. this.show = true;
  100. },
  101. // 查询规则列表
  102. get_rules_list(id, page) {
  103. let self = this
  104. self.showLoading()
  105. request('get','/api/integral/pk/rules',{ pk_id: id, page: page,page_size:1000 }).then((res) => {
  106. if (res.data.code == '1') {
  107. self.$toast.clear()
  108. self.rules_list = res.data.data.list.list
  109. } else {
  110. self.$toast.clear()
  111. self.$toast(res.data.msg)
  112. }
  113. }).catch((e) => {
  114. self.$toast.clear()
  115. })
  116. },
  117. //删除规则
  118. del_rule(id, d) {
  119. let self = this
  120. Dialog.confirm({
  121. title: '提示',
  122. message: '确定删除此项?'
  123. }).then(() => {
  124. self.showLoading()
  125. request('delete','/api/integral/pk/rules',{ pk_id: id, rule_id: d.id }).then((res) => {
  126. if (res.data.code == 1) {
  127. self.$toast.clear()
  128. self.$toast(res.data.msg)
  129. self.get_rules_list(self.get_id, self.get_page)
  130. } else {
  131. self.$toast.clear()
  132. self.$toast(res.data.msg)
  133. }
  134. }).catch((e) => {
  135. self.$toast.clear()
  136. })
  137. }).catch(() => {
  138. // on cancel
  139. });
  140. },
  141. // 关闭 rule_popup
  142. colseRules(action, done) {
  143. let self = this
  144. if (action == 'confirm') {
  145. if (self.popup_rules_input) {
  146. if (self.rules_type == 'edit') {
  147. self.edit_rule()
  148. } else {
  149. self.add_rule(self.get_id)
  150. }
  151. done()
  152. } else {
  153. self.$notify({ type: 'danger', message: '规则不能为空' });
  154. done(false)
  155. }
  156. } else {
  157. done()
  158. }
  159. },
  160. // 编辑规则按钮
  161. edit_rule_btn(item) {
  162. this.show_Rule = true
  163. this.rules_type = 'edit'
  164. this.popup_rules_input = item.name
  165. this.popup_rules_id = item.id
  166. },
  167. // 新增规则按钮
  168. add_rule_btn() {
  169. this.show_Rule = true
  170. this.rules_type = 'add'
  171. this.popup_rules_input = ''
  172. this.popup_rules_id = ''
  173. },
  174. // 创建规则
  175. add_rule(pk_id) {
  176. let self = this
  177. self.showLoading()
  178. request('post','/api/integral/pk/rules/create',{ pk_id: pk_id, rule_name: self.popup_rules_input }).then((res) => {
  179. if (res.data.code == 1) {
  180. self.$toast.clear()
  181. self.get_rules_list(self.get_id, self.get_page)
  182. } else {
  183. self.$toast.clear()
  184. self.$toast(res.data.msg)
  185. }
  186. }).catch((e) => {
  187. self.$toast.clear()
  188. self.$toast(res.data.msg)
  189. })
  190. },
  191. // 编辑规则
  192. edit_rule() {
  193. let self = this
  194. self.showLoading()
  195. request('post','/api/integral/pk/rules',{ pk_id: self.get_id, rule_id: self.popup_rules_id, rule_name: self.popup_rules_input }).then((res) => {
  196. if (res.data.code == 1) {
  197. self.$toast.clear()
  198. self.get_rules_list(self.get_id, self.get_page)
  199. } else {
  200. self.$toast.clear()
  201. self.$toast(res.data.msg)
  202. }
  203. }).catch((e) => {
  204. self.$toast.clear()
  205. self.$toast(res.data.msg)
  206. })
  207. },
  208. // 加载
  209. showLoading() {
  210. this.$toast.loading({
  211. loadingType: "spinner",
  212. message: '正在处理'
  213. })
  214. },
  215. get_pk_info() {
  216. let self = this
  217. let data = {
  218. pk_id: self.$route.query.id
  219. }
  220. request('get','/api/integral/pk/info',data).then((res) => {
  221. if (res.data.code == 1) {
  222. self.pk_info = res.data.data || {}
  223. } else {
  224. self.$toast(res.data.msg)
  225. }
  226. })
  227. }
  228. },
  229. // 生命周期 --- 创建完成
  230. created() {
  231. // created 创建完毕状态
  232. this.get_rules_list(this.get_id, this.get_page)
  233. this.get_pk_info()
  234. },
  235. };
  236. </script>
  237. <style scoped>
  238. .read_pk_box .rule_alert {
  239. position: relative;
  240. width: calc(100vw - 0.64rem);
  241. margin: 0.2rem auto 0;
  242. }
  243. .read_pk_box /deep/ .van-overlay {
  244. position: absolute;
  245. top: 0;
  246. left: 0;
  247. width: 100vw;
  248. height: 100vh !important;
  249. background: rgba(255, 255, 255, 0.7);
  250. }
  251. .pk_rules_scroller {
  252. position: relative;
  253. height: calc(100% - 1.1rem);
  254. }
  255. </style>