123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743 |
- <template>
- <div>
- <div class="box">
- <el-tabs v-model="status">
- <el-tab-pane :disabled="loading" v-for="(item, index) in tabsOption" :key="index" :label="item.label" :name="item.name"></el-tab-pane>
- </el-tabs>
- <div>
- <el-dropdown @command="downClick">
- <el-button type="primary">
- 发布任务
- <i class="el-icon-arrow-down el-icon--right"></i>
- </el-button>
- <el-dropdown-menu slot="dropdown">
- <el-dropdown-item command="1">+ 临时任务</el-dropdown-item>
- <el-dropdown-item command="2">+ 悬赏任务</el-dropdown-item>
- </el-dropdown-menu>
- </el-dropdown>
- </div>
- <FormBox style="margin: 10px 0;">
- <div class="form-item" v-if="status == 'assign'">
- <div class="form-label">状态</div>
- <div class="form-search">
- <el-select size="medium" v-model="formData.status" placeholder="请选择">
- <el-option v-for="item in task_status" :key="item.id" :label="item.name" :value="item.code"></el-option>
- </el-select>
- </div>
- </div>
- <div class="form-item" v-if="status == 'assign' || status == 'repetitive'">
- <div class="form-label">执行人</div>
- <div class="form-search">
- <el-select size="medium" v-model="formData.executor_id" clearable filterable placeholder="请输入或选择执行人">
- <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </div>
- </div>
- <div class="form-item">
- <div class="form-label">审批人</div>
- <div class="form-search">
- <el-select size="medium" v-model="formData.reviewer_id" clearable filterable placeholder="请输入或选择审批人">
- <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </div>
- </div>
- <div class="form-item" v-if="status == 'assign' || status == 'reward'">
- <div class="form-label">积分类型</div>
- <div class="form-search">
- <el-select size="medium" v-model="formData.pt_id" placeholder="请选择">
- <el-option v-for="item in point_types" :key="item.id" :label="item.name" :value="item.id"></el-option>
- </el-select>
- </div>
- </div>
- <div class="form-item" v-if="status == 'assign'">
- <div class="form-label">排序</div>
- <div class="form-search">
- <el-select size="medium" v-model="formData.sort" placeholder="请选择排序">
- <el-option v-for="item in sort" :key="item.id" :label="item.name" :value="item.code"></el-option>
- </el-select>
- </div>
- </div>
- <div class="form-item" v-if="status == 'reward'">
- <div class="form-label">排序</div>
- <div class="form-search">
- <el-select size="medium" v-model="formData.order_by" placeholder="请选择排序">
- <el-option v-for="item in order_by" :key="item.id" :label="item.name" :value="item.code"></el-option>
- </el-select>
- </div>
- </div>
- <div class="form-item">
- <div class="form-label">内容搜索</div>
- <div class="form-search">
- <el-input size="medium" clearable v-model="formData.content" placeholder="请输入" max="200"></el-input>
- </div>
- </div>
-
-
- </FormBox>
- <div v-show="status == 'assign'">
- <el-table :data="list" style="width: 100%" v-loading="loading" @row-click="rowClick">
- <el-table-column label="执行人" prop="task_name" width="250px">
- <template slot-scope="scope">
- <div style="display:flex">
- <userImage
- :img_url="scope.row.employee_img_url"
- :id="scope.row.employee_id"
- :user_name="scope.row.employee_name"
- width="50px"
- height="50px"
- ></userImage>
- <span style="line-height: 50px; padding-left: 10px;">{{ scope.row.employee_name }}的{{ scope.row.pt_name }}任务</span>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="任务内容" prop="task_name">
- <template slot-scope="scope">
- <span class="font-flex-word" style="max-width: 200px;">{{ scope.row.task_name }}</span>
- </template>
- </el-table-column>
- <el-table-column label="积分" prop="base_point" width="100px">
- <template slot-scope="scope">
- <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>
- <span v-else>
- <span v-if="scope.row.point_config && scope.row.point_config.base_point">
- <span class="red" v-if="scope.row.point_config.base_point > 0">+{{ scope.row.point_config.base_point }} {{ scope.row.pt_name }}</span>
- <span class="color_green" v-else>{{ scope.row.point_config.base_point }} {{ scope.row.pt_name }}</span>
- </span>
- </span>
- </template>
- </el-table-column>
- <el-table-column label="截止时间" prop="expire_time">
- <template slot-scope="scope">
- <span>{{ scope.row.expire_time }}</span>
- </template>
- </el-table-column>
- <el-table-column label="审批人" width="100px" prop="reviewer_name"></el-table-column>
- <el-table-column label="状态" prop="owner_id" width="100px">
- <template slot-scope="scope">
- <span class="orange" v-if="scope.row.status == 1">进行中</span>
- <span class="green" v-else-if="scope.row.status == 2">已完成</span>
- <span class="red" v-else-if="scope.row.status == 3">退回</span>
- <span class="green" v-else-if="scope.row.status == 4">已审批</span>
- <span class="textBox" v-else>已撤回</span>
- </template>
- </el-table-column>
- <el-table-column label="操作" align="center" width="80px">
- <template slot-scope="scope">
- <el-dropdown placement="bottom" :show-timeout="150" :hide-timeout="150">
- <span class="el-dropdown-links">···</span>
- <el-dropdown-menu slot="dropdown">
- <el-dropdown-item :disabled="false" v-if="scope.row.status == 1">
- <el-button type="text" class="color-blue" v-loading.fullscreen.lock="bodyLoad" @click.stop="issueAmend1(scope.row)">修改</el-button>
- </el-dropdown-item>
- <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>
- </el-dropdown-menu>
- </el-dropdown>
- </template>
- </el-table-column>
- <template slot="empty">
- <noData></noData>
- </template>
- </el-table>
- </div>
- <div v-show="status == 'reward'">
- <el-table :data="list" style="width: 100%" v-loading="loading" @row-click="rewardTasksClick">
- <el-table-column label="发布人" prop="employee_id">
- <template slot-scope="scope">
- <div style="display:flex">
- <userImage width="50px" height="50px" :img_url="scope.row.owner_img_url" :user_name="scope.row.owner_name"></userImage>
- <span style="line-height: 50px; padding-left: 10px;">我发布的{{ scope.row.pt_name }}任务</span>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="任务内容" prop="task_name">
- <template slot-scope="scope">
- <span class="font-flex-word" style="max-width: 200px;">{{ scope.row.task_name }}</span>
- </template>
- </el-table-column>
- <el-table-column label="积分" prop="base_point" width="100px">
- <template slot-scope="scope">
- <span v-if="scope.row.base_point > 0" class="red">+{{ scope.row.base_point }} {{ scope.row.pt_name }}</span>
- <span v-else class="color_green">{{ scope.row.base_point }} {{ scope.row.pt_name }}</span>
- </template>
- </el-table-column>
- <el-table-column label="截止时间" prop="expire_time">
- <template slot-scope="scope">
- <span>{{ scope.row.expire_time }}</span>
- </template>
- </el-table-column>
- <el-table-column label="审批人" width="100px" prop="reviewer_name">
- <template slot-scope="scope">
- <span v-if="scope.row.reviewer_id">{{ list_approver(scope.row.reviewer_id) }}</span>
- </template>
- </el-table-column>
- <el-table-column label="状态" prop="owner_id" width="100px">
- <template slot-scope="scope">
- <span class="orange" v-if="scope.row.status == 1">待领取</span>
- <span class="orange" v-else-if="scope.row.status == 2">进行中</span>
- <span class="green" v-else-if="scope.row.status == 3">已完成</span>
- <span class="fontColorZ" v-else-if="scope.row.status == 4">已撤回</span>
- <span class="red" v-else>已过期</span>
- </template>
- </el-table-column>
- <el-table-column prop="base_point" label="操作" align="center" width="80px">
- <template slot-scope="scope">
- <el-dropdown placement="bottom" :show-timeout="150" :hide-timeout="150">
- <span class="el-dropdown-links">···</span>
- <el-dropdown-menu slot="dropdown">
- <el-dropdown-item :disabled="false" v-if="scope.row.status == 1">
- <el-button type="text" class="color-blue" v-loading.fullscreen.lock="bodyLoad" @click.stop="offerARewardAmend2(scope.row)">修改</el-button>
- </el-dropdown-item>
- <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>
- </el-dropdown-menu>
- </el-dropdown>
- </template>
- </el-table-column>
- <template slot="empty">
- <noData></noData>
- </template>
- </el-table>
- </div>
- <div v-if="status == 'repetitive'">
- <el-table :data="list" style="width: 100%" v-loading="loading" @row-click="repetitiveTasksClick">
- <el-table-column label="执行人" prop="target_info" width="120px">
- <template slot-scope="scope">
- <span v-for="(item, index) in scope.row.target_info" :key="index">
- <span v-if="scope.row.target_info.length == 1 && index == 0">{{ item.name }}</span>
- <span v-if="scope.row.target_info.length > 1 && index == 0">{{ item.name }}等{{ scope.row.target_info.length }}人</span>
- </span>
- </template>
- </el-table-column>
- <el-table-column label="任务内容" prop="remark">
- <template slot-scope="scope">
- <span class="font-flex-word" style="max-width: 200px;">{{ scope.row.name || scope.row.remark }}</span>
- </template>
- </el-table-column>
- <el-table-column label="任务积分" prop="point_config.base_point" width="130px">
- <template slot-scope="scope">
- <span v-if="scope.row.point_config.base_point > 0" class="red">+{{ scope.row.point_config.base_point }} {{ $getTypsName(scope.row.pt_id) }}</span>
- <span v-else class="color_green">{{ scope.row.point_config.base_point }} {{ $getTypsName(scope.row.pt_id) }}</span>
- </template>
- </el-table-column>
- <el-table-column label="重复周期" prop="task_cycle" width="220px">
- <template slot-scope="scope">
- <span v-if="scope.row.task_cycle == '1'">每天0点自动发布,{{ dayTime(scope.row.task_cycle_value) }}截止</span>
- <span v-if="scope.row.task_cycle == '2'">
- <span>每周一自动发布,周{{ weekList[scope.row.task_cycle_value - 1] }}截止</span>
- </span>
- <span v-if="scope.row.task_cycle == '3'">每月1号自动发布,{{ scope.row.task_cycle_value }}号截止</span>
- </template>
- </el-table-column>
- <el-table-column label="可见范围" prop="department_info">
- <template slot-scope="scope">
- <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>
- </template>
- </el-table-column>
- <el-table-column label="创建时间" prop="create_time" width="140px"></el-table-column>
- <el-table-column label="状态" prop="create_time" width="140px">
- <template slot-scope="scope">
- <span class="blue" v-if="scope.row.enable">已启用</span>
- <span class="red" v-else>已暂停</span>
- </template>
- </el-table-column>
- <el-table-column prop="base_point" label="操作" width="80px">
- <template slot-scope="scope">
- <div class="flex-box-ce">
- <el-dropdown placement="bottom" :show-timeout="150" :hide-timeout="150">
- <span class="el-dropdown-links">···</span>
- <el-dropdown-menu slot="dropdown">
- <el-dropdown-item ><el-button type="text" class="color-blue" v-loading.fullscreen.lock="bodyLoad" @click.stop="copyTask(scope.row)">复制</el-button></el-dropdown-item>
- <el-dropdown-item >
- <el-button type="text" class="color-blue" v-loading.fullscreen.lock="bodyLoad" @click.stop="enable(scope.row)">{{scope.row.enable==1? '暂停任务':'启用任务'}}</el-button>
- </el-dropdown-item>
- <el-dropdown-item ><el-button type="text" class="color-red" v-loading.fullscreen.lock="bodyLoad" @click.stop="deletes(scope.row, 2)">删除</el-button></el-dropdown-item>
- </el-dropdown-menu>
- </el-dropdown>
- </div>
- </template>
- </el-table-column>
- <template slot="empty">
- <noData></noData>
- </template>
- </el-table>
- </div>
- <center style="padding: 20px 0;">
- <el-pagination
- background
- @size-change="handleSizeChange"
- @current-change="handleCurrentChange"
- :page-sizes="[10, 20, 50, 100]"
- layout="total, sizes, prev, pager, next"
- :page-size="formData.page_size"
- :current-page="formData.page"
- :total="total"
- ></el-pagination>
- </center>
- </div>
- <!-- 临时任务 -->
- <temporaryTask :dialogVisible.sync="dialogVisible" :trees_ab="trees_v2_ab_module" :isFy="isFy" :modifyData="fyData" :showTitle="'临时任务'"></temporaryTask>
- <!-- 临时任务-修改 -->
- <temporaryTaskAmend :dialogVisible.sync="dialogVisibleAmend" :trees_ab="trees_v2_ab_module" :showTitle="'任务编辑'" :modifyData="modifyData"></temporaryTaskAmend>
- <!-- 悬赏任务 -->
- <rewardTask :dialogVisible.sync="rewardTaskShow" :isFy="isFy" :modifyData="fyData" :trees_ab="trees_v2_ab_module" :showTitle="'悬赏任务'"></rewardTask>
- <!-- 悬赏任务-修改 -->
- <rewardTaskAmend
- :dialogVisible.sync="rewardTaskAmendShow"
- :trees_ab="trees_v2_ab_module"
- ref="rewardTasks"
- :showTitle="'任务编辑'"
- :rewardTaskAmendData="rewardTaskAmendData"
- ></rewardTaskAmend>
- <!-- 详情弹窗 -->
- <taskDetailsPopup :visible.sync="showDetailPopup" v-if="showDetailPopup" :id="detailId" :title="'任务详情'"></taskDetailsPopup>
- <!-- 重复任务详情弹窗 -->
- <repeatTaskDetailsPopup :visible.sync="showRepetitiveTasksPopup" v-if="showRepetitiveTasksPopup" :id="detailId" :title="'重复任务详情'"></repeatTaskDetailsPopup>
- <!-- 悬赏任务详情弹窗 -->
- <rewardTaskDetailsPopup :visible.sync="showRewardTaskDetailsPopup" v-if="showRewardTaskDetailsPopup" :id="detailId" :title="'工作详情'"></rewardTaskDetailsPopup>
- </div>
- </template>
- <script>
- import {_debounce} from '@/api/auth';
- import temporaryTask from '@/views/common/temporaryTask';
- import temporaryTaskAmend from '@/views/common/temporaryTaskAmend';
- import rewardTask from '@/views/common/rewardTask';
- import rewardTaskAmend from '@/views/common/rewardTaskAmend';
- import taskDetailsPopup from '@/views/common/taskDetailsPopup';
- import repeatTaskDetailsPopup from '@/views/common/repeatTaskDetailsPopup';
- import rewardTaskDetailsPopup from '@/views/common/rewardTaskDetailsPopup';
- export default {
- name: 'my_issue',
- data() {
- return {
- weekList: ['一', '二', '三', '四', '五', '六', '日'],
- rewardTaskAmendData: {}, //悬赏修改
- modifyData: {}, //任务修改
- operation_if: false, //操作列显示隐藏
- bodyLoad: false,
- status: 'assign',
- formData: {
- status: 'all',
- sort: 'publish',
- order_by: 'create_time',
- pt_id: 0,
- page_size: 10,
- page: 1,
- source_type: '1',
- executor_id: '', //执行人
- reviewer_id: '', //审批人
- content: '' //内容
- },
- total: null,
- list: [],
- loading: false,
- point_types: null,
- task_status: [
- { id: 1, name: '全部', code: 'all' },
- { id: 2, name: '进行中', code: 'running' },
- { id: 3, name: '已完成', code: 'complete' },
- { id: 4, name: '已审批', code: 'reviewed' },
- // {id: 5, name: '已撤销', code: 'revocation'},
- // { id: 6, name: '已退回', code: 'refuse' }
- ],
- sort: [{ id: 2, name: '按发布时间', code: 'publish' }, { id: 1, name: '按截止时间', code: 'expire' }],
- order_by: [{ id: 2, name: '按发布时间', code: 'create_time' }, { id: 1, name: '按截止时间', code: 'expire_time' }],
- tabsOption: [{ label: '我指派的', name: 'assign' }, { label: '我悬赏的', name: 'reward' }, { label: '重复任务', name: 'repetitive' }],
- dialogVisible: false,
- dialogVisibleAmend: false,
- rewardTaskShow: false,
- rewardTaskAmendShow: false,
- showDetailPopup: false,
- showRepetitiveTasksPopup: false,
- showRewardTaskDetailsPopup: false,
- detailId: 0,
- trees_v2_ab_module: {
- A: [],
- B: [],
- rule_tree: []
- },
- employee_map: [], //人员列表
-
- //重复任务复用
- isFy:false,
- fyData:{},
- };
- },
- components: {temporaryTask, rewardTask, rewardTaskAmend, temporaryTaskAmend, taskDetailsPopup, repeatTaskDetailsPopup, rewardTaskDetailsPopup },
- watch: {
- dialogVisible(val){
- if(!val){
- this.isFy=false;
- }
- },
- rewardTaskShow(val){
- if(!val){
- this.isFy=false;
- }
- },
- status(val) {
- this.formData.executor_id = '';
- this.formData.reviewer_id = '';
- this.formData.content = '';
- this.formData.page = 1;
- this.formData.status = 'all';
- this.formData.sort = 'publish';
- this.formData.order_by = 'create_time';
- this.formData.pt_id = 0;
- this.list = [];
- this.get_list();
- },
- 'formData.status'() {
- // debugger
- this.formData.page = 1;
- this.list = [];
- this.get_list();
- },
- 'formData.sort'() {
- this.formData.page = 1;
- this.list = [];
- this.get_list();
- },
- 'formData.order_by'() {
- this.formData.page = 1;
- this.list = [];
- this.get_list();
- },
- 'formData.pt_id'() {
- this.formData.page = 1;
- this.list = [];
- this.get_list();
- },
- 'formData.executor_id'() {
- this.formData.page = 1;
- this.list = [];
- this.get_list();
- },
- 'formData.reviewer_id'() {
- this.formData.page = 1;
- this.list = [];
- this.get_list();
- },
- 'formData.content': {
- deep: true,
- handler: _debounce(function(val) {
- this.formData.page = 1;
- this.list = [];
- this.get_list();
- }, 1000)
- },
- },
- created() {
- this.getRuleItemData(); //获取AB分细则
- },
- mounted() {
- this.getUserDetail();
- if (this.$route.query.type == 1) {
- this.dialogVisible = true;
- } else if (this.$route.query.type == 2) {
- this.rewardTaskShow = true;
- }
- this.get_list();
- this.point_types = this.getPointTypes();
- this.getEmployee(); //员工列表
- },
- methods: {
- enable(item){
- this.$axios('post', '/api/integral/schedule/enable', { schedule_id:item.id }).then(res => {
- this.$message.success(item.enable==1? '已暂停':'已启用');
- this.get_list();
- });
- },
- list_approver(id) {
- let arr = this.employee_map.filter(x => x.id == id);
- return arr[0] ? arr[0].name : '';
- },
- dayTime(item) {
- return item > 9 ? item + ': 00' : '0' + item + ': 00';
- },
- //获取员工列表
- getEmployee() {
- this.$axios('get', '/api/employee/index', { dept_id: 0, keywords: '', page: 1, page_size: 3000, is_official: 1 }).then(res => {
- let list = res.data.data.list;
- this.employee_map = list;
- });
- },
- getUserDetail() {
- this.$axios('get', '/api/employee/detail').then(res => {
- this.$setUserData(res.data.data.user);
- });
- },
- //悬赏修改
- offerARewardAmend2(item) {
- this.rewardTaskAmendShow = true;
- this.$refs.rewardTasks.forTheTaskLoading = true;
- let params = {
- task_id: item.id
- };
- this.$axios('get', '/api/integral/task', params)
- .then(res => {
- if (res.data.code == 1) {
- this.rewardTaskAmendData = res.data.data;
- } else {
- self.$message.error(res.data.msg);
- }
- })
- .finally(() => {
- this.$refs.rewardTasks.forTheTaskLoading = false;
- });
- },
- //重复任务复用
- copyTask(item){
- this.$axios('get', '/api/integral/schedule', { schedule_id: item.id }).then(res => {
- let data=res.data.data
- data.task_file_list=data.file_list;
- data.id="";
- this.isFy=true;
- this.fyData=data;
- this.downClick(item.type)
- });
- },
- //任务修改
- issueAmend1(item) {
- this.modifyData = item;
- this.dialogVisibleAmend = true;
- },
- //删除---我指派的、我悬赏的、重复任务 (重复任务需等后端接口)
- deletes(item, s) {
- let self = this;
- this.$message.closeAll();
- self.$confirm('删除此任务将会删除其相关记录和积分数据,确认删除吗?', '删除任务', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- 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 }
- ).then(res => {
- if (res.data.code == 1) {
- if (this.formData.page > 1) {
- if (self.list.length == 1) {
- this.formData.page = this.formData.page - 1;
- }
- }
- this.get_list();
- self.$message.success(res.data.msg);
- } else {
- self.$message.error(res.data.msg);
- }
- });
- });
- },
- // 点击详情
- rowClick(row) {
- this.showDetailPopup = true;
- this.detailId = parseInt(row.id);
- },
- // 重复任务详情
- repetitiveTasksClick(row) {
- this.showRepetitiveTasksPopup = true;
- this.detailId = parseInt(row.id);
- },
- // 悬赏任务详情
- rewardTasksClick(row) {
- this.showRewardTaskDetailsPopup = true;
- this.detailId = parseInt(row.id);
- },
- // 发布临时任务 和 悬赏任务
- downClick(val) {
- if (val == 1) {
- this.dialogVisible = true;
- } else {
- this.rewardTaskShow = true;
- }
- },
- // 获取积分类型
- getPointTypes() {
- let point =this.$getCache('types');
- point.unshift({ code: 'all', id: 0, name: '全部' });
- return point;
- },
- // 页码变更
- handleCurrentChange(val) {
- this.formData.page = val;
- this.get_list();
- },
- handleSizeChange(val) {
- this.formData.page_size = val;
- this.get_list();
- },
- get_list() {
- let self = this;
- this.list=[];
- self.loading = true;
- let params = JSON.parse(JSON.stringify(this.formData));
- params.pt_id == 0 ? delete params.pt_id : '';
- params.executor_id == '' ? delete params.executor_id : '';
- params.reviewer_id == '' ? delete params.reviewer_id : '';
- if (self.status == 'assign') {
- delete params.order_by;
- } else if (self.status == 'reward') {
- delete params.executor_id;
- delete params.status;
- delete params.sort;
- } else {
- delete params.status;
- delete params.sort;
- delete params.order_by;
- delete params.pt_id;
- }
- 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 => {
- //数据过多的情况延迟较大
- if (res.data.code == 1) {
- //传入发布者ID进行判断
- self.list = res.data.data.list;
- if(this.formData.page==1){
- self.total = res.data.data.total;
- }
- } else {
- self.$message.error(res.data.data.msg);
- this.get_list();
- }
- })
- .finally(() => {
- self.loading = false;
- });
- },
- // 获取ab规则细则
- getRuleItemData() {
- let a = this.$axios('get', '/api/integral/rule/trees', { cycle_type: '1', pt_id: '2' }, 'v2');
- let b = this.$axios('get', '/api/integral/rule/trees', { cycle_type: '1', pt_id: '3' }, 'v2');
- let c = this.$axios('get', '/api/integral/rule/trees', { cycle_type: '1' });
- Promise.all([a, b, c]).then(res => {
- this.trees_v2_ab_module={
- A:res[0].data.data.tree,
- B:res[1].data.data.tree,
- rule_tree:this.flatten(res[2].data.data.rule_tree),
- rule_tree_all:this.getTreeData(res[2].data.data.rule_tree),
- item_list:res[2].data.data.item_list,
- }
- });
- },
- getItemDetail(arr) {
- let result = [];
- for (const item of arr) {
- var res = JSON.parse(JSON.stringify(item)); // 先克隆一份数据作为第一层级的填充
- delete res['child'];
- result.push(res);
- if (item.child instanceof Array && item.child.length > 0) {
- // 如果当前child为数组并且长度大于0,才可进入getItemDetail()方法
- result = result.concat(this.getItemDetail(item.child));
- }
- }
- return result;
- },
- getTreeData(data) {
- for (var i = 0; i < data.length; i++) {
- if (data[i].child.length < 1) {
- // child若为空数组,则将child设为undefined
- data[i].child = undefined;
- } else {
- // child若不为空数组,则继续 递归调用 本方法
- this.getTreeData(data[i].child);
- }
- }
- return data;
- },
- flatten(arr) {
- return arr.reduce((result, item) => {
- return result.concat(item, Array.isArray(item.child) ? this.flatten(item.child) : []);
- }, []);
- }
- }
- };
- </script>
- <style scoped lang="scss">
- .box {
- min-height: calc(100vh - 184px);
- min-width: 800px;
- background-color: #fff;
- padding: 20px;
- & .color_yelllo {
- color: #e6a23c;
- }
- & .color_green {
- color: #67c23a;
- }
- & .color_3 {
- color: #f56c6c;
- }
- & .color_4 {
- color: #67c23a;
- }
- & .color_5 {
- color: #f56c6c;
- }
- & .color_yelllo2 {
- color: #ffa939;
- }
- }
- $red: #f56c6c;
- .color-red {
- color: $red;
- &:hover {
- color: #f14141;
- }
- }
- .color-blue {
- color: #26A2FF;
- &:hover {
- color: #26A2FF;
- }
- }
- .delicon {
- font-size: 20px;
- float: right;
- }
- .el-dropdown-links {
- font-size: 20px;
- cursor: pointer;
- color: #606266;
- }
- ::v-deep .el-table tr:hover {
- cursor: pointer;
- }
- </style>
|