rewardTaskDetailsPopup.vue 5.4 KB

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