my_issue.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616
  1. <template>
  2. <div>
  3. <div class="box">
  4. <el-tabs v-model="status" type="card">
  5. <el-tab-pane v-for="(item,index) in tabsOption" :key="index" :label="item.label" :name="item.name"></el-tab-pane>
  6. </el-tabs>
  7. <el-form ref="formData" :inline="true" :model="formData" label-width="70px">
  8. <el-form-item>
  9. <el-dropdown @command="downClick">
  10. <el-button type="primary">
  11. 发布任务<i class="el-icon-arrow-down el-icon--right"></i>
  12. </el-button>
  13. <el-dropdown-menu slot="dropdown">
  14. <el-dropdown-item command="1">+ 临时任务</el-dropdown-item>
  15. <el-dropdown-item command="2">+ 悬赏任务</el-dropdown-item>
  16. </el-dropdown-menu>
  17. </el-dropdown>
  18. </el-form-item>
  19. <el-form-item v-if="status == 'assign' || status == 'reward'" label="积分类型">
  20. <el-select v-model="formData.pt_id" placeholder="请选择">
  21. <el-option v-for="item in point_types" :key="item.id" :label="item.name" :value="item.id"></el-option>
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item v-if="status == 'assign'" label="任务状态">
  25. <el-select v-model="formData.status" placeholder="请选择">
  26. <el-option v-for="item in task_status" :key="item.id" :label="item.name" :value="item.code"></el-option>
  27. </el-select>
  28. </el-form-item>
  29. <el-form-item v-if="status == 'assign'" label="排序" label-width="50px">
  30. <el-select v-model="formData.sort" placeholder="请选择排序">
  31. <el-option v-for="item in sort" :key="item.id" :label="item.name" :value="item.code"></el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item v-if="status == 'reward'" label="排序" label-width="50px">
  35. <el-select v-model="formData.order_by" placeholder="请选择排序">
  36. <el-option v-for="item in order_by" :key="item.id" :label="item.name" :value="item.code"></el-option>
  37. </el-select>
  38. </el-form-item>
  39. <el-form-item label-width="60px">
  40. <el-input v-model="formData.content" placeholder="请输入任务内容" max="200" @keyup.enter.native="getContent()" class="persons_name">
  41. <el-button slot="append" icon="el-icon-search" @click="getContent()"></el-button>
  42. </el-input>
  43. </el-form-item>
  44. <el-form-item v-if="status == 'assign' || status == 'repetitive'" label="执行人" label-width="60px">
  45. <el-select v-model="formData.executor_id" clearable filterable placeholder="请输入或选择执行人">
  46. <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
  47. </el-select>
  48. </el-form-item>
  49. <el-form-item label="审批人" label-width="60px">
  50. <el-select v-model="formData.reviewer_id" clearable filterable placeholder="请输入或选择审批人">
  51. <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
  52. </el-select>
  53. </el-form-item>
  54. </el-form>
  55. <div v-show="status == 'assign'">
  56. <el-table :data="list" style="width: 100%" v-loading="loading" @row-click="rowClick">
  57. <el-table-column label="执行人" prop="task_name" width='250px'>
  58. <template slot-scope="scope">
  59. <div style="display:flex">
  60. <userImage :img_url="scope.row.employee_img_url" :id="scope.row.employee_id" :user_name="scope.row.employee_name" width="50px" height="50px"></userImage>
  61. <span style="line-height: 50px; padding-left: 10px;">{{scope.row.employee_name}}的{{scope.row.pt_name}}任务</span>
  62. </div>
  63. </template>
  64. </el-table-column>
  65. <el-table-column label="任务内容" prop="task_name">
  66. <template slot-scope="scope">
  67. <span class="font-flex-word" style="max-width: 200px;">{{scope.row.task_name}}</span>
  68. </template>
  69. </el-table-column>
  70. <el-table-column label="积分" prop="base_point" width="100px">
  71. <template slot-scope="scope">
  72. <span v-if="scope.row.point_config && scope.row.point_config.review_point>0" class="red">+{{scope.row.point_config.review_point}} {{scope.row.pt_name}}</span>
  73. <span v-else>
  74. <span v-if="scope.row.point_config && scope.row.point_config.base_point">
  75. <span class="red" v-if="scope.row.point_config.base_point > 0"> +{{scope.row.point_config.base_point}} {{scope.row.pt_name}}</span>
  76. <span class="color_green" v-else>{{scope.row.point_config.base_point}} {{scope.row.pt_name}}</span>
  77. </span>
  78. </span>
  79. </template>
  80. </el-table-column>
  81. <el-table-column label="截止时间" prop="expire_time">
  82. <template slot-scope="scope">
  83. <span>{{scope.row.expire_time}}</span>
  84. </template>
  85. </el-table-column>
  86. <el-table-column label="审批人" width="100px" prop="reviewer_name"></el-table-column>
  87. <el-table-column label="状态" prop="owner_id" width="100px">
  88. <template slot-scope="scope">
  89. <span class="yellow" v-if="scope.row.status==1">进行中</span>
  90. <span class="green" v-else-if="scope.row.status==2">已完成</span>
  91. <span class="red" v-else-if="scope.row.status==3">退回</span>
  92. <span class="green" v-else-if="scope.row.status==4">已审批</span>
  93. <span class="textBox" v-else>已撤回</span>
  94. </template>
  95. </el-table-column>
  96. <el-table-column prop="base_point" label="操作" align="center" width='80px'>
  97. <template slot-scope="scope">
  98. <el-dropdown placement="bottom" :show-timeout="150" :hide-timeout="150" >
  99. <span class="el-dropdown-links">···</span>
  100. <el-dropdown-menu slot="dropdown" >
  101. <el-dropdown-item :disabled="false" v-if="scope.row.status==1"><el-button type="text" class="color-red" v-loading.fullscreen.lock="bodyLoad" @click.stop="issueAmend1(scope.row)">修改</el-button></el-dropdown-item>
  102. <el-dropdown-item :disabled="false"><el-button type="text" class="color-red" v-loading.fullscreen.lock="bodyLoad" @click.stop="deletes(scope.row,0)">删除</el-button></el-dropdown-item>
  103. </el-dropdown-menu>
  104. </el-dropdown>
  105. </template>
  106. </el-table-column>
  107. <template slot="empty">
  108. <noData></noData>
  109. </template>
  110. </el-table>
  111. </div>
  112. <div v-show="status == 'reward'">
  113. <el-table :data="list" style="width: 100%" v-loading="loading" @row-click="rewardTasksClick">
  114. <el-table-column label="发布人" prop="employee_id">
  115. <template slot-scope="scope">
  116. <div style="display:flex">
  117. <userImage width="50px" height="50px" :img_url="scope.row.owner_img_url" :user_name="scope.row.owner_name" ></userImage>
  118. <span style="line-height: 50px; padding-left: 10px;">我发布的{{scope.row.pt_name}}任务</span>
  119. </div>
  120. </template>
  121. </el-table-column>
  122. <el-table-column label="任务内容" prop="task_name">
  123. <template slot-scope="scope">
  124. <span class="font-flex-word" style="max-width: 200px;">{{scope.row.task_name}}</span>
  125. </template>
  126. </el-table-column>
  127. <el-table-column label="积分" prop="base_point" width="100px">
  128. <template slot-scope="scope">
  129. <span v-if="scope.row.base_point>0" class="red">+{{scope.row.base_point}} {{scope.row.pt_name}}</span>
  130. <span v-else class="color_green">{{scope.row.base_point}} {{scope.row.pt_name}}</span>
  131. </template>
  132. </el-table-column>
  133. <el-table-column label="截止时间" prop="expire_time">
  134. <template slot-scope="scope">
  135. <span>{{scope.row.expire_time}}</span>
  136. </template>
  137. </el-table-column>
  138. <el-table-column label="审批人" width="100px" prop="reviewer_name">
  139. <template slot-scope="scope">
  140. <span v-if="scope.row.reviewer_id" >{{list_approver(scope.row.reviewer_id)}}</span>
  141. </template>
  142. </el-table-column>
  143. <el-table-column label="状态" prop="owner_id" width="100px">
  144. <template slot-scope="scope">
  145. <span class="yellow" v-if="scope.row.status==1">待领取</span>
  146. <span class="yellow" v-else-if="scope.row.status==2">进行中</span>
  147. <span class="green" v-else-if="scope.row.status==3">已完成</span>
  148. <span class="fontColorZ" v-else-if="scope.row.status==4">已撤回</span>
  149. <span class="red" v-else>已过期</span>
  150. </template>
  151. </el-table-column>
  152. <el-table-column prop="base_point" label="操作" align="center" width='80px'>
  153. <template slot-scope="scope">
  154. <el-dropdown placement="bottom" :show-timeout="150" :hide-timeout="150" >
  155. <span class="el-dropdown-links">···</span>
  156. <el-dropdown-menu slot="dropdown" >
  157. <el-dropdown-item :disabled="false" v-if="scope.row.status==1"><el-button type="text" class="color-red" v-loading.fullscreen.lock="bodyLoad" @click.stop="offerARewardAmend2(scope.row)">修改</el-button></el-dropdown-item>
  158. <el-dropdown-item :disabled="false"><el-button type="text" class="color-red" v-loading.fullscreen.lock="bodyLoad" @click.stop="deletes(scope.row,1)">删除</el-button></el-dropdown-item>
  159. </el-dropdown-menu>
  160. </el-dropdown>
  161. </template>
  162. </el-table-column>
  163. <template slot="empty">
  164. <noData></noData>
  165. </template>
  166. </el-table>
  167. </div>
  168. <div v-if="status == 'repetitive'">
  169. <el-table :data="list" style="width: 100%" v-loading="loading" @row-click="repetitiveTasksClick">
  170. <el-table-column label="执行人" prop="target_info" width="120px">
  171. <template slot-scope="scope">
  172. <span v-for="(item,index) in scope.row.target_info" :key="index">
  173. <span v-if="scope.row.target_info.length == 1 && index == 0">{{item.name}}</span>
  174. <span v-if="scope.row.target_info.length > 1 && index == 0">{{item.name}}等{{scope.row.target_info.length}}人</span>
  175. </span>
  176. </template>
  177. </el-table-column>
  178. <el-table-column label="任务内容" prop="remark">
  179. <template slot-scope="scope">
  180. <span class="font-flex-word" style="max-width: 200px;">{{scope.row.name || scope.row.remark}}</span>
  181. </template>
  182. </el-table-column>
  183. <el-table-column label="任务积分" prop="point_config.base_point" width="130px">
  184. <template slot-scope="scope">
  185. <span v-if="scope.row.point_config.base_point > 0" class="red">+{{scope.row.point_config.base_point}} {{$getTypsName(scope.row.pt_id)}}</span>
  186. <span v-else class="color_green">{{scope.row.point_config.base_point}} {{$getTypsName(scope.row.pt_id)}}</span>
  187. </template>
  188. </el-table-column>
  189. <el-table-column label="重复周期" prop="task_cycle" width="220px">
  190. <template slot-scope="scope">
  191. <span v-if="scope.row.task_cycle == '1'">每天0点自动发布,{{dayTime(scope.row.task_cycle_value)}}截止</span>
  192. <span v-if="scope.row.task_cycle == '2'">
  193. <span>每周一自动发布,周{{weekList[scope.row.task_cycle_value - 1]}}截止</span>
  194. </span>
  195. <span v-if="scope.row.task_cycle == '3'">每月1号自动发布,{{scope.row.task_cycle_value}}号截止</span>
  196. </template>
  197. </el-table-column>
  198. <el-table-column label="可见范围" prop="department_info">
  199. <template slot-scope="scope">
  200. <span v-for="(item,index) in scope.row.department_info" :key="index">{{item.name}}<span v-if="(scope.row.department_info.length - 1) > index">,</span></span>
  201. </template>
  202. </el-table-column>
  203. <el-table-column label="创建时间" prop="create_time" width="140px"></el-table-column>
  204. <el-table-column prop="base_point" label="操作" align="center" width='80px'>
  205. <template slot-scope="scope">
  206. <el-dropdown placement="bottom" :show-timeout="150" :hide-timeout="150" >
  207. <span class="el-dropdown-links">···</span>
  208. <el-dropdown-menu slot="dropdown" >
  209. <el-dropdown-item :disabled="false"><el-button type="text" class="color-red" v-loading.fullscreen.lock="bodyLoad" @click.stop="deletes(scope.row,2)">删除</el-button></el-dropdown-item>
  210. </el-dropdown-menu>
  211. </el-dropdown>
  212. </template>
  213. </el-table-column>
  214. <template slot="empty">
  215. <noData></noData>
  216. </template>
  217. </el-table>
  218. </div>
  219. <center style="padding: 20px 0;">
  220. <el-pagination
  221. background
  222. @size-change="handleSizeChange"
  223. @current-change="handleCurrentChange"
  224. :page-sizes="[10, 20, 50, 100]"
  225. layout="total, sizes, prev, pager, next"
  226. :page-size="formData.page_size"
  227. :current-page="formData.page"
  228. :total="total">
  229. </el-pagination>
  230. </center>
  231. </div>
  232. <!-- 临时任务 -->
  233. <temporaryTask :dialogVisible.sync="dialogVisible" :trees_ab="trees_v2_ab_module" :showTitle="'临时任务'"></temporaryTask>
  234. <!-- 临时任务-修改 -->
  235. <temporaryTaskAmend :dialogVisible.sync="dialogVisibleAmend" :trees_ab="trees_v2_ab_module" :showTitle="'任务编辑'" :modifyData="modifyData"></temporaryTaskAmend>
  236. <!-- 悬赏任务 -->
  237. <rewardTask :dialogVisible.sync="rewardTaskShow" :trees_ab="trees_v2_ab_module" :showTitle="'悬赏任务'"></rewardTask>
  238. <!-- 悬赏任务-修改 -->
  239. <rewardTaskAmend :dialogVisible.sync="rewardTaskAmendShow" :trees_ab="trees_v2_ab_module" ref="rewardTasks" :showTitle="'任务编辑'" :rewardTaskAmendData="rewardTaskAmendData"></rewardTaskAmend>
  240. <!-- 详情弹窗 -->
  241. <taskDetailsPopup :visible.sync="showDetailPopup" v-if="showDetailPopup" :id="detailId" :title="'任务详情'"></taskDetailsPopup>
  242. <!-- 重复任务详情弹窗 -->
  243. <repeatTaskDetailsPopup :visible.sync="showRepetitiveTasksPopup" v-if="showRepetitiveTasksPopup" :id="detailId" :title="'重复任务详情'"></repeatTaskDetailsPopup>
  244. <!-- 悬赏任务详情弹窗 -->
  245. <rewardTaskDetailsPopup :visible.sync="showRewardTaskDetailsPopup" v-if="showRewardTaskDetailsPopup" :id="detailId" :title="'工作详情'"></rewardTaskDetailsPopup>
  246. </div>
  247. </template>
  248. <script>
  249. import noData from '@/components/noData';
  250. import temporaryTask from '@/views/common/temporaryTask'
  251. import temporaryTaskAmend from '@/views/common/temporaryTaskAmend'
  252. import rewardTask from '@/views/common/rewardTask'
  253. import rewardTaskAmend from '@/views/common/rewardTaskAmend'
  254. import taskDetailsPopup from '@/views/common/taskDetailsPopup'
  255. import repeatTaskDetailsPopup from '@/views/common/repeatTaskDetailsPopup'
  256. import rewardTaskDetailsPopup from '@/views/common/rewardTaskDetailsPopup'
  257. export default {
  258. name: 'my_issue',
  259. data() {
  260. return {
  261. weekList: ['一', '二', '三', '四', '五', '六', '日'],
  262. rewardTaskAmendData:{},//悬赏修改
  263. modifyData:{},//任务修改
  264. operation_if:false,//操作列显示隐藏
  265. bodyLoad: false,
  266. status:'assign',
  267. formData:{
  268. status: "all",
  269. sort: "publish",
  270. order_by: "create_time",
  271. pt_id: 0,
  272. page_size: 10,
  273. page: 1,
  274. source_type: '1',
  275. executor_id: '',//执行人
  276. reviewer_id: '',//审批人
  277. content: '',//内容
  278. },
  279. total: null,
  280. list: [],
  281. loading: false,
  282. point_types: null,
  283. task_status: [
  284. {id: 1, name: '全部', code: 'all'},
  285. {id: 2, name: '进行中', code: 'running'},
  286. {id: 3, name: '已完成', code: 'complete'},
  287. {id: 4, name: '已审批', code: 'reviewed'},
  288. // {id: 5, name: '已撤销', code: 'revocation'},
  289. {id: 6, name: '已退回', code: 'refuse'},
  290. ],
  291. sort: [{id:2,name:'按发布时间',code:'publish'},{id:1,name:'按截止时间',code:'expire'}],
  292. order_by: [{id:2,name:'按发布时间',code:'create_time'},{id:1,name:'按截止时间',code:'expire_time'}],
  293. tabsOption: [
  294. { label: '我指派的', name: 'assign' },
  295. { label: '我悬赏的', name: 'reward' },
  296. { label: '重复任务', name: 'repetitive' },
  297. ],
  298. dialogVisible: false,
  299. dialogVisibleAmend: false,
  300. rewardTaskShow: false,
  301. rewardTaskAmendShow: false,
  302. showDetailPopup: false,
  303. showRepetitiveTasksPopup: false,
  304. showRewardTaskDetailsPopup: false,
  305. detailId: 0,
  306. trees_v2_ab_module: {
  307. A: [],
  308. B: [],
  309. rule_tree: [],
  310. },
  311. employee_map: [],//人员列表
  312. }
  313. },
  314. components: {noData,temporaryTask,rewardTask,rewardTaskAmend ,temporaryTaskAmend,taskDetailsPopup,repeatTaskDetailsPopup, rewardTaskDetailsPopup},
  315. watch:{
  316. status(val){
  317. this.formData.executor_id = ''
  318. this.formData.reviewer_id = ''
  319. this.formData.content = ''
  320. this.formData.page = 1
  321. this.formData.status = "all"
  322. this.formData.sort = "publish"
  323. this.formData.order_by = "create_time"
  324. this.formData.pt_id = 0
  325. this.list = []
  326. this.get_list()
  327. },
  328. 'formData.status'(){
  329. // debugger
  330. this.formData.page = 1
  331. this.list = []
  332. this.get_list()
  333. },
  334. 'formData.sort'(){
  335. this.formData.page = 1
  336. this.list = []
  337. this.get_list()
  338. },
  339. 'formData.order_by'(){
  340. this.formData.page = 1
  341. this.list = []
  342. this.get_list()
  343. },
  344. 'formData.pt_id'(){
  345. this.formData.page = 1
  346. this.list = []
  347. this.get_list()
  348. },
  349. 'formData.executor_id' (){
  350. this.formData.page = 1
  351. this.list = []
  352. this.get_list()
  353. },
  354. 'formData.reviewer_id' (){
  355. this.formData.page = 1
  356. this.list = []
  357. this.get_list()
  358. },
  359. },
  360. created() {
  361. this.getRuleItemData()//获取AB分细则
  362. },
  363. mounted() {
  364. this.getUserDetail()
  365. if(this.$route.query.type == 1){
  366. this.dialogVisible = true
  367. }else if(this.$route.query.type == 2){
  368. this.rewardTaskShow = true
  369. }
  370. this.get_list()
  371. this.point_types = this.getPointTypes()
  372. this.getEmployee();//员工列表
  373. },
  374. methods: {
  375. list_approver(id){
  376. let arr = this.employee_map.filter(x => x.id == id)
  377. return arr[0] ? arr[0].name : ''
  378. },
  379. dayTime(item){
  380. return item > 9 ? item + ': 00' : '0' + item + ': 00'
  381. },
  382. getContent(){
  383. this.formData.page = 1
  384. this.list = []
  385. this.get_list()
  386. },
  387. //获取员工列表
  388. getEmployee() {
  389. this.$axios('get', '/api/employee/index', { dept_id: 0, keywords: '', page: 1, page_size: 3000,is_official:1 })
  390. .then(res => {
  391. let list = res.data.data.list;
  392. this.employee_map = list;
  393. })
  394. },
  395. getUserDetail(){
  396. this.$axios('get', '/api/employee/detail').then(res => {
  397. this.$setUserData(res.data.data.user);
  398. });
  399. },
  400. //悬赏修改
  401. offerARewardAmend2(item){
  402. this.rewardTaskAmendShow = true
  403. this.$refs.rewardTasks.forTheTaskLoading = true
  404. let params = {
  405. task_id:item.id
  406. }
  407. this.$axios('get','/api/integral/task',params).then(res => {
  408. if (res.data.code == 1) {
  409. this.rewardTaskAmendData = res.data.data
  410. } else {
  411. self.$message.error(res.data.msg);
  412. }
  413. }).finally(() => {
  414. this.$refs.rewardTasks.forTheTaskLoading = false
  415. })
  416. },
  417. //任务修改
  418. issueAmend1(item){
  419. this.modifyData = item
  420. this.dialogVisibleAmend = true
  421. },
  422. //删除---我指派的、我悬赏的、重复任务 (重复任务需等后端接口)
  423. deletes(item,s){
  424. let self = this
  425. this.$message.closeAll()
  426. self.$confirm('删除此任务将会删除其相关记录和积分数据,确认删除吗?', '删除任务', {
  427. confirmButtonText: '确定',
  428. cancelButtonText: '取消',
  429. type: 'warning'
  430. }).then(() => {
  431. self.$axios(s==0?'get':s==1?'get':'get',s==0?'/api/integral/work/delete':s==1?'/api/integral/task/delete':'/api/integral/schedule/delete',s==0?{work_id: item.id}:s==1?{task_id: item.id}:{schedule_id: item.id}
  432. ).then(res => {
  433. if (res.data.code == 1) {
  434. if(this.formData.page>1){
  435. if(self.list.length == 1){
  436. this.formData.page = this.formData.page -1
  437. }
  438. }
  439. this.get_list()
  440. self.$message.success(res.data.msg);
  441. } else {
  442. self.$message.error(res.data.msg);
  443. }
  444. })
  445. })
  446. },
  447. // 点击详情
  448. rowClick(row) {
  449. this.showDetailPopup = true
  450. this.detailId = parseInt(row.id)
  451. },
  452. // 重复任务详情
  453. repetitiveTasksClick(row) {
  454. this.showRepetitiveTasksPopup = true
  455. this.detailId = parseInt(row.id)
  456. },
  457. // 悬赏任务详情
  458. rewardTasksClick(row){
  459. this.showRewardTaskDetailsPopup = true
  460. this.detailId = parseInt(row.id)
  461. },
  462. // 发布临时任务 和 悬赏任务
  463. downClick(val){
  464. if(val == 1){
  465. this.dialogVisible = true
  466. }else{
  467. this.rewardTaskShow = true
  468. }
  469. },
  470. // 获取积分类型
  471. getPointTypes(){
  472. let point = window.plus?JSON.parse(plus.storage('types')):JSON.parse(localStorage.getItem('types'))
  473. point.unshift({code: "all",id: 0,name: "全部"})
  474. return point
  475. },
  476. // 页码变更
  477. handleCurrentChange(val) {
  478. this.formData.page = val
  479. this.get_list()
  480. },
  481. handleSizeChange(val){
  482. this.formData.page_size = val
  483. this.get_list()
  484. },
  485. get_list(){
  486. let self = this
  487. self.loading = true
  488. let params = JSON.parse(JSON.stringify(this.formData))
  489. params.pt_id == 0?delete params.pt_id:'';
  490. params.executor_id == ''?delete params.executor_id:'';
  491. params.reviewer_id == ''?delete params.reviewer_id:'';
  492. if(self.status == 'assign'){
  493. delete params.order_by
  494. }else if(self.status == 'reward'){
  495. delete params.executor_id
  496. delete params.status
  497. delete params.sort
  498. }else{
  499. delete params.status
  500. delete params.sort
  501. delete params.order_by
  502. delete params.pt_id
  503. }
  504. self.$axios('get',self.status=='assign'?'/api/integral/work/list/publisher':self.status=='reward'?'/api/integral/task/publish/list':'/api/integral/schedule/list',params).then((res) => {
  505. //数据过多的情况延迟较大
  506. if (res.data.code == 1) {
  507. //传入发布者ID进行判断
  508. self.list = res.data.data.list
  509. self.total = res.data.data.total
  510. }else{
  511. self.$message.error(res.data.data.msg)
  512. this.get_list()
  513. }
  514. }).finally(()=>{
  515. self.loading = false
  516. })
  517. },
  518. // 获取ab规则细则
  519. getRuleItemData() {
  520. let a = this.$axios('get', '/api/integral/rule/trees', { cycle_type: '1', pt_id: '2'}, 'v2');
  521. let b = this.$axios('get', '/api/integral/rule/trees', { cycle_type: '1', pt_id: '3'}, 'v2');
  522. let c = this.$axios('get', '/api/integral/rule/trees', { cycle_type: '1'});
  523. Promise.all([a, b, c]).then(res =>{
  524. this.trees_v2_ab_module.A = res[0].data.data.tree
  525. this.trees_v2_ab_module.B = res[1].data.data.tree
  526. this.trees_v2_ab_module.rule_tree = this.flatten(res[2].data.data.rule_tree)
  527. })
  528. },
  529. flatten (arr){
  530. return arr.reduce((result, item)=> {
  531. return result.concat(item,(Array.isArray(item.child) ? this.flatten(item.child) : []));
  532. }, []);
  533. },
  534. }
  535. }
  536. </script>
  537. <style scoped lang="scss">
  538. .box{
  539. min-height: calc(100vh - 184px);
  540. min-width: 800px;
  541. background-color: #fff;
  542. padding: 20px;
  543. & .color_yelllo{
  544. color: #E6A23C;
  545. }
  546. & .color_green{
  547. color: #67C23A;
  548. }
  549. & .color_3{
  550. color: #F56C6C;
  551. }
  552. & .color_4{
  553. color: #67C23A;
  554. }
  555. & .color_5{
  556. color: #F56C6C;
  557. }
  558. & .color_yelllo2{
  559. color: #ffa939;
  560. }
  561. }
  562. $red: #F56C6C;
  563. .color-red{
  564. color: $red;
  565. &:hover{
  566. color: #f14141;
  567. }
  568. }
  569. .delicon{
  570. font-size: 20px;
  571. float: right;
  572. }
  573. .el-dropdown-links {
  574. font-size: 20px;
  575. cursor: pointer;
  576. color: #606266;
  577. }
  578. ::v-deep .el-table tr:hover{
  579. cursor:pointer
  580. }
  581. </style>