rewardTaskDetailsPopup.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <template>
  2. <div>
  3. <!-- 悬赏任务详情弹窗 -->
  4. <el-drawer :modal-append-to-body="false" :visible.sync="Delay_to_open" :with-header="false" :size="'500px'" :before-close="handleClose" :custom-class="'drawer_details'">
  5. <div class="details_title">{{title}}</div>
  6. <div class="details_content" v-if="workDetailData" v-loading="loading">
  7. <el-row>
  8. <el-col :span="24">
  9. <div class="">
  10. <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>
  11. <div>
  12. <div style="line-height: 25px;">我悬赏的{{get_point_name(workDetailData.pt_id)}}任务 {{workDetailData.point_config.base_point}}{{get_point_name(workDetailData.pt_id)}}</div>
  13. <div style="color: #909399; line-height: 25px;"><b><WWOpenData type="userName" :openid="workDetailData.receiver_name"></WWOpenData></b> {{workDetailData.status_mark}}</div>
  14. </div>
  15. </div>
  16. </el-col>
  17. </el-row>
  18. <ul>
  19. <li class="flex-box">
  20. <div class="label">任务内容</div>
  21. <div class="content_text">{{workDetailData.task_name}}</div>
  22. </li>
  23. <li class="flex-box" v-if="workDetailData.status==2 && workDetailData.receiver_id != 0 ">
  24. <div class="label">领取人</div>
  25. <div class="content_text"><WWOpenData type="userName" :openid="workDetailData.receiver_name"></WWOpenData></div>
  26. </li>
  27. <li class="flex-box" v-if="workDetailData.status==3 && workDetailData.receiver_id != 0">
  28. <div class="label">完成人</div>
  29. <div class="content_text">{{workDetailData.receiver_name}}</div>
  30. </li>
  31. <li class="flex-box" v-if="workDetailData.task_remark">
  32. <div class="label">任务备注</div>
  33. <div class="content_text">{{workDetailData.task_remark}}</div>
  34. </li>
  35. <li class="flex-box" v-if="workDetailData.point_config">
  36. <div class="label">任务积分</div>
  37. <div class="content_text yellow">{{workDetailData.point_config.base_point}}{{get_point_name(workDetailData.pt_id)}}</div>
  38. </li>
  39. <li class="flex-box">
  40. <div class="label">截止时间</div>
  41. <div class="content_text">{{workDetailData.end_time}}</div>
  42. </li>
  43. <li class="flex-box" v-if="workDetailData.point_config">
  44. <div class="label">逾期扣分</div>
  45. <div class="content_text">{{workDetailData.point_config.timeout_deduction_point}}/天</div>
  46. </li>
  47. <li class="flex-box" v-if="workDetailData.department_info" >
  48. <div class="label">可见范围</div>
  49. <div class="content_text">
  50. <span v-for="(item,index) in workDetailData.department_info" :key="index">
  51. <WWOpenData type="departmentName" :openid="item.name"></WWOpenData><span v-if="(workDetailData.department_info.length-index)>1">,</span>
  52. </span>
  53. </div>
  54. </li>
  55. <li class="flex-box">
  56. <div class="label">任务类型</div>
  57. <div class="content_text">{{workDetailData.source_type_mark}}</div>
  58. </li>
  59. </ul>
  60. </div>
  61. </el-drawer>
  62. </div>
  63. </template>
  64. <script>
  65. export default {
  66. name: 'repeatTaskDetailsPopup',
  67. props:{
  68. title: {
  69. type: String,
  70. default: ''
  71. },
  72. visible: {
  73. type: Boolean,
  74. default: false
  75. },
  76. id: {
  77. type: Number,
  78. default: 0
  79. },
  80. },
  81. data() {
  82. return {
  83. Delay_to_open:false,//打开抽屉
  84. loading: false,
  85. workDetailData:{
  86. point_config:{base_point:''}
  87. },
  88. point_types: JSON.parse(localStorage.getItem('SET_POINT_TYPES'))
  89. }
  90. },
  91. components: {},
  92. watch:{},
  93. mounted() {
  94. this.getData()
  95. this.Delay_to_open = this.visible//更换打开抽屉时机,避免打开两次
  96. },
  97. methods: {
  98. // 关闭弹窗
  99. handleClose(){
  100. this.$emit('update:visible', false)
  101. },
  102. // 获取数据
  103. getData(){
  104. let self = this
  105. self.loading = true
  106. let data = {task_id: this.id}
  107. self.$http('get','/api/integral/task',data).then(res => {
  108. if (res.data.code == 1) {
  109. self.workDetailData = res.data.data
  110. }
  111. self.loading = false
  112. }).catch(e => {
  113. self.$message.error(e.data.msg)
  114. self.loading = false
  115. })
  116. },
  117. // 获取积分名称
  118. get_point_name(id){
  119. let name = ''
  120. this.point_types.forEach(element => {
  121. if (element.id == id) {
  122. name = element.name
  123. }
  124. });
  125. return name
  126. },
  127. }
  128. }
  129. </script>
  130. <style lang="scss" scoped="scoped">
  131. .details_content{
  132. & .d_userMessage{
  133. margin-left: 10px;
  134. }
  135. & .d_userMessage div:nth-child(1){
  136. font-size: 16px;
  137. margin-bottom: 8px;
  138. }
  139. & .d_userMessage div:nth-child(2){
  140. font-size: 12px;
  141. color: #909399;
  142. }
  143. & .d_progress{
  144. padding: 12px 0;
  145. border-bottom: 1px solid #f1f1f1;
  146. margin-bottom: 10px;
  147. }
  148. & ul{
  149. padding: 12px 0;
  150. border-bottom: 1px solid #f1f1f1;
  151. & li{
  152. padding: 6px 0;
  153. }
  154. & .label{
  155. width: 80px;
  156. text-align: left;
  157. color: #909399;
  158. }
  159. & .content_text{
  160. flex:1
  161. }
  162. }
  163. }
  164. .fontColorF{
  165. color:#909399;
  166. }
  167. .yellow{
  168. color: #E6A23C;
  169. }
  170. </style>