update
This commit is contained in:
@@ -784,6 +784,20 @@ const admin = {
|
||||
data: {ids},
|
||||
});
|
||||
},
|
||||
tgAccountDetail: async (id) => {
|
||||
return request({
|
||||
url: '/admin/account/detail',
|
||||
method: Method.POST,
|
||||
data: {id},
|
||||
});
|
||||
},
|
||||
tgAccountEdit: async (data) => {
|
||||
return request({
|
||||
url: '/admin/account/edit',
|
||||
method: Method.POST,
|
||||
data: data,
|
||||
});
|
||||
},
|
||||
}
|
||||
|
||||
export default admin;
|
||||
|
||||
@@ -393,6 +393,13 @@ const merchant = {
|
||||
data: data
|
||||
});
|
||||
},
|
||||
jsTask: async (data) => {
|
||||
return request({
|
||||
url: '/index/task/jsTask',
|
||||
method: Method.POST,
|
||||
data: data
|
||||
});
|
||||
},
|
||||
addExchangeLog: async (data) => {
|
||||
return request({
|
||||
url: '/index/task/addExchangeLog',
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
<script setup>
|
||||
import XSelect from "../../../../../components/XSelect/index.vue";
|
||||
import {reactive, ref, watch} from "vue";
|
||||
import Api from "../../../../../api/index.js";
|
||||
import {Message} from "@arco-design/web-vue";
|
||||
|
||||
const emits = defineEmits(['success']);
|
||||
const visible = ref(false);
|
||||
const detail = reactive({});
|
||||
const {id} = defineProps({
|
||||
id: {
|
||||
type: Number,
|
||||
default: null,
|
||||
}
|
||||
});
|
||||
|
||||
watch(
|
||||
() => visible.value,
|
||||
(val) => {
|
||||
if (val) Api.admin.tgAccountDetail(id).then(({data}) => {
|
||||
data.abnormaltime = data.abnormaltime * 1000;
|
||||
Object.assign(detail, data);
|
||||
});
|
||||
}
|
||||
)
|
||||
|
||||
const getState = async () => {
|
||||
return {
|
||||
data: [
|
||||
{
|
||||
id: -2,
|
||||
name: '禁用'
|
||||
},
|
||||
{
|
||||
id: 1,
|
||||
name: '正常'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: '异常'
|
||||
},
|
||||
{
|
||||
id: -1,
|
||||
name: '未通过'
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
const success = async () => {
|
||||
const {msg} = await Api.admin.tgAccountEdit(detail);
|
||||
Message.success(msg);
|
||||
emits('success');
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<a-link :hoverable="false" @click="visible=true">编辑</a-link>
|
||||
|
||||
<a-modal
|
||||
@ok="success"
|
||||
ok-text="确定修改"
|
||||
title="编辑"
|
||||
title-align="start"
|
||||
v-model:visible="visible">
|
||||
<a-form layout="vertical">
|
||||
<a-form-item label="ID">
|
||||
<a-input :model-value="detail.uid" disabled placeholder="ID"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="账号">
|
||||
<a-input v-model:model-value="detail.account" placeholder="昵称"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="昵称">
|
||||
<a-input v-model:model-value="detail.nickname" placeholder="昵称"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="主页截图">
|
||||
<div class="flex flex-wrap gap-[12px]">
|
||||
<a-image
|
||||
width="62px"
|
||||
height="62px"
|
||||
:src="detail.homepage">
|
||||
</a-image>
|
||||
</div>
|
||||
</a-form-item>
|
||||
<a-form-item label="主页二维码">
|
||||
<div class="flex flex-wrap gap-[12px]">
|
||||
<a-image
|
||||
width="62px"
|
||||
height="62px"
|
||||
:src="detail.qrcode">
|
||||
</a-image>
|
||||
</div>
|
||||
</a-form-item>
|
||||
<a-form-item label="状态">
|
||||
<x-select v-model:model-value="detail.status" :api="getState" init></x-select>
|
||||
</a-form-item>
|
||||
<a-form-item label="拒绝原因" v-if="detail.status < 0">
|
||||
<a-input v-model:model-value="detail.remark" placeholder="拒绝原因"></a-input>
|
||||
</a-form-item>
|
||||
<a-form-item label="异常截止时间" v-if="detail.status === 2">
|
||||
<a-date-picker class="w-full" v-model:model-value="detail.abnormaltime" showTime></a-date-picker>
|
||||
</a-form-item>
|
||||
<a-form-item label="添加日期">
|
||||
<a-input v-model:model-value="detail.createtime" placeholder="添加日期" disabled></a-input>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
||||
</style>
|
||||
@@ -5,6 +5,7 @@ import Api from "../../../../api/index.js";
|
||||
import Filter from "../../../../components/Filter/index.vue";
|
||||
import RefuseModal from "./components/RefuseModal.vue";
|
||||
import {Message} from "@arco-design/web-vue";
|
||||
import EditTGInfoModal from "./components/EditTGInfoModal.vue";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
@@ -135,7 +136,7 @@ const accept = async (id) => {
|
||||
</template>
|
||||
<template v-slot:action="{record}">
|
||||
<div class="flex gap-[20px]">
|
||||
<a-link :hoverable="false">编辑</a-link>
|
||||
<EditTGInfoModal :id="record.id" @success="fetchData"></EditTGInfoModal>
|
||||
<a-link :hoverable="false" status="success" @click="accept(record.id)">通过</a-link>
|
||||
<RefuseModal @success="fetchData" :id="record.id"></RefuseModal>
|
||||
</div>
|
||||
|
||||
@@ -7,6 +7,7 @@ import PreviewTaskModal from "../../../../components/PreviewTaskModal/PreviewTas
|
||||
import openTerminateTask from "../../../../components/TerminateTask/TerminateTask.js";
|
||||
import {Message} from "@arco-design/web-vue";
|
||||
import RejectTaskModal from "./components/RejectTaskModal.vue";
|
||||
import TooltipTag from "../../../../components/TooltipTag/index.vue";
|
||||
|
||||
const columns = [
|
||||
{
|
||||
@@ -145,13 +146,21 @@ const plTaskChildren = async () => {
|
||||
:columns="columns"
|
||||
class="flex-grow">
|
||||
<template v-slot:status_text="{record}">
|
||||
<a-tag v-if="record.status===0" color="cyan">{{ record.status_text }}</a-tag>
|
||||
<a-tag v-if="record.status===1" color="orangered">{{ record.status_text }}</a-tag>
|
||||
<a-tag v-if="record.status===2" color="red">{{ record.status_text }}</a-tag>
|
||||
<a-tag v-if="record.status===3" color="arcoblue">{{ record.status_text }}</a-tag>
|
||||
<a-tag v-if="record.status===4" color="green">{{ record.status_text }}</a-tag>
|
||||
<a-tag v-if="record.status===5" color="green">{{ record.status_text }}</a-tag>
|
||||
<a-tag v-if="record.status===6">{{ record.status_text }}</a-tag>
|
||||
<TooltipTag v-if="record.status === 0" color="red" :content="record.check_remark">待上传素材
|
||||
</TooltipTag>
|
||||
<TooltipTag v-if="record.status === 1" color="orangered" :content="record.check_remark">素材审核中
|
||||
</TooltipTag>
|
||||
<TooltipTag v-if="record.status === 2" color="orangered" :content="record.check_remark">
|
||||
重新上传素材
|
||||
</TooltipTag>
|
||||
<TooltipTag v-if="record.status === 3" color="gray" :content="record.check_remark">待领取
|
||||
</TooltipTag>
|
||||
<TooltipTag v-if="record.status === 4" color="green" :content="record.check_remark">已领取
|
||||
</TooltipTag>
|
||||
<TooltipTag v-if="record.status === 5" color="green" :content="record.check_remark">已结算
|
||||
</TooltipTag>
|
||||
<TooltipTag v-if="record.status === 6" color="arcoblue" :content="record.check_remark">已终止
|
||||
</TooltipTag>
|
||||
</template>
|
||||
<template v-slot:check_status_text="{record}">
|
||||
<a-tag v-if="record.check_status===0" color="cyan">{{ record.check_status_text }}</a-tag>
|
||||
|
||||
@@ -75,11 +75,29 @@ watch(
|
||||
}
|
||||
}
|
||||
)
|
||||
const sum = ref(0);
|
||||
const sumData = async () => {
|
||||
const api = SystemStore.isRoot ? Api.admin.settlement : Api.merchant.jsTask
|
||||
const {data: {real_coin}} = await api({
|
||||
id: task.id,
|
||||
ids: TaskSettltment.filter(v => selectedKeys.value.includes(v.id)).map(v => v.id)
|
||||
});
|
||||
sum.value = real_coin;
|
||||
}
|
||||
|
||||
watch(
|
||||
() => selectedKeys.value,
|
||||
() => {
|
||||
sumData();
|
||||
},
|
||||
{deep: true}
|
||||
)
|
||||
|
||||
const confirmTask = async () => {
|
||||
const api = SystemStore.isRoot ? Api.admin.settlement : Api.merchant.confirmTask
|
||||
const {msg} = await api({
|
||||
id: task.id,
|
||||
type: 1,
|
||||
content: TaskSettltment.filter(v => selectedKeys.value.includes(v.id)).map(v => ({
|
||||
...v,
|
||||
id: v.id,
|
||||
@@ -146,23 +164,16 @@ const confirmTask = async () => {
|
||||
</a-table>
|
||||
<div class="mt-[22px] flex">
|
||||
该子任务需结算:
|
||||
<div class="text-[#165DFF] text-[16px]">¥{{
|
||||
task.coin / 100
|
||||
-
|
||||
TaskSettltment.filter((v, index) => selectedKeys.includes(index)).reduce((accumulator, item) => {
|
||||
return accumulator + item.discount;
|
||||
}, 0)
|
||||
<div class="text-[#165DFF] text-[16px]">¥
|
||||
{{
|
||||
selectedKeys.length > 0 ? sum : task.coin / 100
|
||||
}}
|
||||
</div>
|
||||
<div class="text-[14px] text-[#4E5969]" v-if="selectedKeys.length > 0">
|
||||
({{ task.coin / 100 }}
|
||||
<span v-for="v in selectedKeys">- {{ TaskSettltment.find(k => k.id === v)?.discount }}</span>
|
||||
= {{
|
||||
task.coin / 100
|
||||
-
|
||||
TaskSettltment.filter((v, index) => selectedKeys.includes(index)).reduce((accumulator, item) => {
|
||||
return accumulator + item.discount;
|
||||
}, 0)
|
||||
sum
|
||||
}})
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -73,8 +73,10 @@ const success = async () => {
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="特殊要求" field="special_text">
|
||||
<a-input v-model:model-value="form.special_text"
|
||||
placeholder="请输入特殊要求,如:请勿截图,必须下载原图再上传到抖音"></a-input>
|
||||
<a-textarea
|
||||
placeholder="请输入特殊要求,如:请勿截图,必须下载原图再上传到抖音"
|
||||
v-model:model-value="form.special_text">
|
||||
</a-textarea>
|
||||
</a-form-item>
|
||||
|
||||
<a-form-item label="" field="special_images">
|
||||
|
||||
@@ -187,12 +187,12 @@ const passTask = async (id, task_backfill_id) => {
|
||||
<div class="flex gap-[16px] justify-center items-center">
|
||||
<a-popconfirm content="确定通过吗?" @ok="passTask(record.id, item.back.id)">
|
||||
<a-link :hoverable="false" status="success"
|
||||
:disabled="!(item.back_status===2)">通过
|
||||
:disabled="!(item.back_status === 4 || item.back_status === 2)">通过
|
||||
</a-link>
|
||||
</a-popconfirm>
|
||||
|
||||
<RefuseModal :taskId="record.id" :task="item" @success="fetchData"
|
||||
:disabled="!(item.back_status===2)"></RefuseModal>
|
||||
:disabled="!(item.back_status === 4 || item.back_status === 2)"></RefuseModal>
|
||||
</div>
|
||||
<a-divider v-if="index+1 !== record.task_content.length"></a-divider>
|
||||
</div>
|
||||
@@ -259,7 +259,9 @@ const passTask = async (id, task_backfill_id) => {
|
||||
})">
|
||||
终止子任务
|
||||
</a-doption>
|
||||
<a-doption @click="() => {state.openBlackjackExpertModal=true;taskId=record.id}">
|
||||
<a-doption
|
||||
:disabled="!record.account"
|
||||
@click="() => {state.openBlackjackExpertModal=true;taskId=record.id}">
|
||||
拉黑达人
|
||||
</a-doption>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user