add_log.vue 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. <template>
  2. <div>
  3. <van-nav-bar :title="title" left-text="返回" @click-left="$route_back" left-arrow></van-nav-bar>
  4. <div class="body_com has_header add_log_box">
  5. <scroller>
  6. <van-cell-group>
  7. <van-cell title="选择团队" required is-link @click="select_teams = true" :value="select_teams_item.name?select_teams_item.name:'请选择团队'"></van-cell>
  8. <van-cell title="选择人员" v-if="log_type == 'employee'" required is-link @click="openUser" :value="employee_btn">
  9. <template slot="default">
  10. <span class=""><Wxopendata type="userName" :openid="employee_btn"></Wxopendata></span>
  11. </template>
  12. </van-cell>
  13. <van-cell title="选择规则" required is-link @click="select_rule = true" :value="select_rule_item.name?select_rule_item.name:'请选择规则'"></van-cell>
  14. <van-cell title="事件时间" required is-link @click="showCalendar = true" :value="time"></van-cell>
  15. <van-field required v-model="point" type="digit" label="积分" placeholder="请输入积分" />
  16. <van-field
  17. v-model="remark"
  18. rows="3"
  19. autosize
  20. label="留言"
  21. type="textarea"
  22. maxlength="30"
  23. placeholder="请输入留言"
  24. show-word-limit
  25. v-validate="'min:3'"
  26. />
  27. </van-cell-group>
  28. <van-cell-group>
  29. <van-button type="info" @click="sava" block>提交</van-button>
  30. </van-cell-group>
  31. </scroller>
  32. <!-- 团队选择 -->
  33. <van-popup v-model="select_teams" position="bottom">
  34. <van-picker
  35. show-toolbar
  36. title="选择团队"
  37. :columns="pk_detail"
  38. value-key="name"
  39. @cancel="onCancel"
  40. @confirm="onConfirm"
  41. />
  42. </van-popup>
  43. <!-- 规则选择 -->
  44. <van-popup v-model="select_rule" position="bottom">
  45. <van-picker
  46. show-toolbar
  47. title="选择规则"
  48. :columns="rules_list"
  49. value-key="name"
  50. @cancel="ruleCancel"
  51. @confirm="ruleConfirm"
  52. />
  53. </van-popup>
  54. <van-calendar v-model="showCalendar" color="#238dfa" @confirm="calendarConfirm" />
  55. <van-popup v-model="select_employee" class="employee_popup">
  56. <van-nav-bar title="选择员工" left-text="取消" @click-left="employee_cancel" right-text="完成" @click-right="employee_Confirm" ></van-nav-bar>
  57. <van-checkbox-group v-model="employee_result" ref="checkboxGroup" :max="10" :label-disabled="false">
  58. <van-cell-group>
  59. <div style="padding: 0.24rem 0.32rem;font-size: 0.32rem;" :key="index" class="userActive" v-for="(item, index) in employee_list">
  60. <van-checkbox :name="item"><Wxopendata type="userName" :openid="item.name"></Wxopendata></van-checkbox>
  61. </div>
  62. </van-cell-group>
  63. </van-checkbox-group>
  64. </van-popup>
  65. </div>
  66. </div>
  67. </template>
  68. <script>
  69. import request from '@/utils/request'
  70. import Vue from 'vue'
  71. import moment from 'moment'
  72. import {Picker, Calendar, Popup, Cell, CellGroup, Checkbox, CheckboxGroup} from 'vant'
  73. Vue.use(Picker).use(Calendar).use(Popup).use(Cell).use(CellGroup).use(Checkbox).use(CheckboxGroup)
  74. export default {
  75. // 数据
  76. data () {
  77. return {
  78. title: '录入PK积分',
  79. get_id: this.$route.query.pk_id,
  80. log_type: this.$route.query.log_type,
  81. page: 1,
  82. pk_detail: [],
  83. rules_list: [],
  84. // 选择团队
  85. select_teams: false,
  86. select_teams_item: {},
  87. // 选择规则
  88. select_rule: false,
  89. select_rule_item: {},
  90. // 时间选择器
  91. showCalendar: false,
  92. time: moment().format('YYYY-MM-DD'),
  93. minDate: new Date(2020, 0, 1),
  94. maxDate: new Date(2055, 0, 1),
  95. currentDate: new Date(),
  96. // 选择人员
  97. select_employee: false,
  98. employee_result: [],
  99. employee_list: [],
  100. employee_btn: '',
  101. employee_result_id: [],
  102. // 积分
  103. point: '',
  104. remark: ''
  105. }
  106. },
  107. methods: {
  108. openUser(){
  109. if(!this.select_teams_item.name){
  110. this.$toast('请先选择团队');
  111. return false
  112. }
  113. this.select_employee = true
  114. },
  115. // 保存
  116. sava () {
  117. let self = this
  118. let data = {
  119. pk_id: self.get_id,
  120. log_type: self.$route.query.log_type,
  121. team_id: self.select_teams_item.id,
  122. event_time: self.time,
  123. point: self.point,
  124. rule_id: self.select_rule_item.id,
  125. team_member: self.employee_result_id
  126. }
  127. if (self.remark) {
  128. data.remark = self.remark
  129. }
  130. self.showLoading()
  131. request('post', '/api/integral/pk/log', data).then((res) => {
  132. if (res.data.code == 1) {
  133. self.$toast.clear()
  134. // self.$toast(res.data.msg)
  135. self.$route_back()
  136. } else {
  137. self.$toast.clear()
  138. self.$toast(res.data.msg)
  139. }
  140. }).catch((e) => {
  141. self.$toast.clear()
  142. })
  143. },
  144. // 管理员选择
  145. employee_cancel () {
  146. this.select_employee = false
  147. },
  148. employee_Confirm () {
  149. let arr_name = []
  150. this.employee_result_id = []
  151. this.employee_btn = ''
  152. console.log(this.employee_result)
  153. for (let i = 0; i < this.employee_result.length; i++) {
  154. arr_name.push(this.employee_result[i].name)
  155. this.employee_result_id.push(this.employee_result[i].id)
  156. }
  157. this.employee_btn = arr_name.join(',')
  158. this.select_employee = false
  159. },
  160. // 确认选择时间
  161. calendarConfirm (date) {
  162. this.time = moment(date).format('YYYY-MM-DD')
  163. this.showCalendar = false
  164. },
  165. // 关闭弹窗
  166. onCancel () {
  167. this.select_teams = false
  168. },
  169. ruleCancel () {
  170. this.select_rule = false
  171. },
  172. // 选中规则确认
  173. ruleConfirm (data) {
  174. this.select_rule_item = data
  175. this.select_rule = false
  176. },
  177. // 选中团队确认
  178. onConfirm (data) {
  179. this.select_teams_item = data
  180. this.employee_list = data.members
  181. this.select_teams = false
  182. },
  183. // 加载
  184. showLoading () {
  185. this.$toast.loading({
  186. loadingType: 'spinner',
  187. message: '正在处理'
  188. })
  189. },
  190. // 查询PK 详情
  191. get_pk_detail () {
  192. let self = this
  193. self.showLoading()
  194. request('get', '/api/integral/pk/teams', {pk_id: self.get_id, page: self.page, page_size: '2000'}).then((res) => {
  195. if (res.data.code == '1') {
  196. self.pk_detail = res.data.data.list.list
  197. } else {
  198. self.$toast(res.data.msg)
  199. }
  200. })
  201. },
  202. // 查询规则列表
  203. get_rules_list () {
  204. let self = this
  205. self.showLoading()
  206. request('get', '/api/integral/pk/rules', {pk_id: self.get_id, page: self.page, page_size: 1000}).then((res) => {
  207. if (res.data.code == '1') {
  208. self.rules_list = res.data.data.list.list
  209. } else {
  210. self.$toast(res.data.msg)
  211. }
  212. })
  213. }
  214. },
  215. // 生命周期 --- 创建完成
  216. created () {
  217. this.get_pk_detail()
  218. this.get_rules_list()
  219. }
  220. }
  221. </script>
  222. <style scoped>
  223. .userActive:active{
  224. background-color: #F2F3F5;
  225. }
  226. .body_com {
  227. height: calc(100% - 1rem);
  228. position: relative;
  229. }
  230. .employee_popup{
  231. width: 100vw;
  232. height: 100vh;
  233. }
  234. .employee_img{
  235. width: 0.8rem;
  236. height: 0.8rem;
  237. border-radius: 50%;
  238. margin-left: 0.2rem;
  239. float: left;
  240. }
  241. .employee_name{
  242. display: inline-block;
  243. height: 0.8rem;
  244. line-height: 0.8rem;
  245. margin-left: 0.2rem;
  246. }
  247. </style>