first commit

This commit is contained in:
GYJ
2024-12-02 10:35:48 +08:00
commit 73081077d3
517 changed files with 173283 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,256 @@
<template>
<div>
<div style="margin:2% 0;display: inline-block;">
<span>投诉内容:</span>
<el-input style="width: 150px;" @keydown.enter.native="select" clearable placeholder="请输入投诉内容"
v-model="content"></el-input>
</div>
<div style="display: inline-block;">
<el-button style='margin-left:15px;' size="mini" type="primary" icon="document" @click="select">查询
</el-button>
<el-button style='margin-left:15px;' size="mini" type="primary" icon="document" @click="cleans">重置
</el-button>
</div>
<el-table v-loading="tableDataLoading" :data="tableData.list">
<el-table-column fixed prop="id" label="id" width="80">
</el-table-column>
<el-table-column prop="nickName" label="用户昵称" width="150">
<template slot-scope="scope">
<span style="color: #4f9dec;cursor: pointer;"
@click="updates(scope.row)">{{scope.row.nickName ? scope.row.nickName : '未绑定'}}</span>
</template>
</el-table-column>
<el-table-column prop="title" label="标题">
</el-table-column>
<el-table-column prop="picture" label="截图">
<template slot-scope="scope">
<div v-if="scope.row.picture == null || scope.row.picture == ''">
暂无图片
</div>
<div v-else-if="scope.row.picture.includes(',')" style="display:flex;flex-wrap: wrap;">
<div v-for="item in scope.row.picture.split(',')" style="margin: 2px;">
<el-popover placement="top-start" title="" trigger="hover">
<img style="width: 50px; height: 50px" :src="item" alt="" slot="reference">
<img style="width: 200px; height: 200px" :src="item" alt="">
</el-popover>
</div>
</div>
<div v-else>
<el-popover placement="top-start" title="" trigger="hover">
<img style="width: 50px; height: 50px" :src="scope.row.picture" alt="" slot="reference">
<img style="width: 200px; height: 200px" :src="scope.row.picture" alt="">
</el-popover>
</div>
</template>
</el-table-column>
<el-table-column prop="content" label="投诉内容">
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160">
</el-table-column>
<el-table-column fixed='right' prop="state" label="状态" width="100">
<template slot-scope="scope">
<span style="color: #4f9dec;" v-if="scope.row.state === 1 ">待审核</span>
<span v-if="scope.row.state === 2 ">已审核</span>
</template>
</el-table-column>
<el-table-column fixed='right' label="操作" width="150">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="complainDetails(scope.row)">详情/处理
</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-sizes="[10, 20, 30, 40]" :page-size="limit" :current-page="page"
layout="total,sizes, prev, pager, next,jumper" :total="tableData.totalCount">
</el-pagination>
</div>
<!-- 任务投诉 -->
<el-dialog title="任务投诉详情" :visible.sync="dialogFormVisible" center>
<el-form :model="form">
<el-form-item label="投诉内容:" :label-width="formLabelWidth">
<span>{{form.content}}</span>
</el-form-item>
<el-form-item label="投诉截图:" :label-width="formLabelWidth">
<div style="display: flex;flex-wrap: wrap;">
<div v-for="(item,index) of imgs" style="margin-left: 10px;margin-top: 10px;">
<img :src="item" class="avatar" style="width:148px;height: 148px;" />
</div>
</div>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer" v-if="form.state == 1">
<el-button @click="dialogFormVisible = false"> </el-button>
<el-button type="primary" @click="amendNoticeTo()"> </el-button>
</div>
</el-dialog>
<!-- 处理任务 -->
<el-dialog title="处理任务" :visible.sync="dialogFormVisible1" center>
<div style="margin-bottom: 10px;">
<span style="width: 200px;display: inline-block;text-align: right;">任务状态</span>
<el-radio-group v-model="state">
<el-radio :label="2">下架</el-radio>
<el-radio :label="3">不下架</el-radio>
</el-radio-group>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible1 = false"> </el-button>
<el-button type="primary" @click="complainTo()"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
limit: 10,
page: 1,
userId: '',
content: '',
form: {
id: '',
content: '',
picture: '',
state: ''
},
state: '',
imgs: [],
formLabelWidth: '200px',
activeName: 'first',
tableDataLoading: false,
dialogFormVisible: false,
dialogFormVisible1: false,
tableData: [],
}
},
methods: {
handleSizeChange(val) {
this.limit = val;
this.dataSelect()
},
handleCurrentChange(val) {
this.page = val;
this.dataSelect()
},
// 用户详情跳转
updates(row) {
this.$router.push({
path: '/userDetail',
query: {
userId: row.userId
}
})
},
//删除任务投诉
deleteStair(row) {
let delid = row.id
this.$confirm(`确定删除此条信息?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.$http({
url: this.$http.adornUrl(`helpClassify/deleteClassifyById/?id=${delid}`),
method: 'post',
data: this.$http.adornData({})
}).then(({
data
}) => {
this.$message({
message: '删除成功',
type: 'success',
duration: 1500,
onClose: () => {
this.name = '';
this.classifySelect()
}
})
})
}).catch(() => {})
},
// 查询
select() {
this.dataSelect()
},
// 重置
cleans() {
this.content = ''
this.dataSelect()
},
complainDetails(row) {
this.form.id = row.id
this.form.content = row.content
this.form.picture = row.picture
this.form.state = row.state
let imgs = this.form.picture.split(',')
this.imgs = imgs;
this.dialogFormVisible = true
},
// 处理
amendNoticeTo() {
this.dialogFormVisible1 = true
},
// 处理投诉
complainTo() {
if (this.state == '') {
this.$notify({
title: '提示',
duration: 1800,
message: '请选择任务状态',
type: 'warning'
});
return
}
this.$http({
url: this.$http.adornUrl(`/helpComplaint/solveHelpComplaint/${this.form.id}/${this.state}`),
method: 'post',
data: this.$http.adornData({})
}).then(({
data
}) => {
if (data.code == 0) {
this.$message({
message: '操作成功',
type: 'success',
duration: 1500,
onClose: () => {
this.dialogFormVisible = false
this.dialogFormVisible1 = false
this.dataSelect()
}
})
}
})
},
// 获取任务投诉列表
dataSelect() {
this.tableDataLoading = true
this.$http({
url: this.$http.adornUrl('helpComplaint/selectHelpComplaintList'),
method: 'get',
params: this.$http.adornParams({
'page': this.page,
'limit': this.limit,
'userId': this.userId,
'content': this.content
})
}).then(({
data
}) => {
this.tableDataLoading = false
let returnData = data.data;
this.tableData = returnData
})
}
},
mounted() {
this.dataSelect()
}
};
</script>
<style>
</style>

View File

@@ -0,0 +1,280 @@
<template>
<div class="detailtabel">
<div style="display: inline-block;font-size:18px;margin-bottom: 15px;">
<a href="#" @click="prev" style="text-decoration:none;font-size: 14px;">
<icon-svg name="jiantou" style="width: 1.2em;height: 1.2em;position: relative;top: 0.3em;"></icon-svg>
返回
</a>
<span style="display: inline-block;margin: 0 15px;color: #D9D9D9;">|</span>
<span>派单详情</span>
</div>
<div class="table_main">
<table>
<tbody>
<tr>
<th>用户名称</th>
<td>{{tableData.nickName}}</td>
<th>标题</th>
<td>{{tableData.title}}</td>
<th style="width: 180px;">任务要求</th>
<td class="border-rt">{{tableData.content}}</td>
</tr>
<tr>
<th>验证信息</th>
<td>{{tableData.verifyContent}}</td>
<th>打开内容</th>
<td style="width: 180px;">{{tableData.openContent}}</td>
<th>编号</th>
<td class="border-rt">{{tableData.id}}</td>
</tr>
<tr>
<th>数量</th>
<td>{{tableData.taskNum}}</td>
<th>接单数量</th>
<td>{{tableData.endNum}}</td>
<th>发布时间</th>
<td class="border-rt">{{tableData.createTime}}</td>
</tr>
<tr>
<th>截至时间</th>
<td>{{tableData.endTime}} </td>
<th>审核时间按分</th>
<td>{{tableData.auditTime}}</td>
<th>任务限时按分</th>
<td class="border-rt">{{tableData.restrictTime}}</td>
</tr>
<tr>
<th>状态</th>
<td v-if="tableData.state == 0">待审核</td>
<td v-if="tableData.state == 1">进行中</td>
<td v-if="tableData.state == 2">已结束</td>
<td v-if="tableData.state == 3">已拒绝</td>
<td v-if="tableData.state == 4">已结算</td>
<th>打开方式</th>
<td>
<span v-if="tableData.openType== 1">链接打开</span>
<span v-if="tableData.openType== 2">口令打开</span>
<span v-if="tableData.openType== 3">扫码打开</span>
</td>
<th>打开app分类</th>
<td class="border-rt">{{tableData.openApp}}</td>
</tr>
<tr>
<th class="border-bt">验证信息</th>
<td class="border-bt">{{tableData.verifyContent}}</td>
<th class="border-bt">价格(原价)</th>
<td class="border-bt">{{tableData.taskOriginalPrice}}</td>
</tr>
</tbody>
</table>
</div>
<div style="margin-top:25px;">
<el-table v-loading="tableDataLoading" :data="taskData.list">
<el-table-column fixed prop="id" label="接单id">
</el-table-column>
<el-table-column prop="nickName" label="接单人名称" width="150">
</el-table-column>
<el-table-column prop="content" label="提交内容" width="150">
<template slot-scope="scope">
<span>{{scope.row.content}}</span>
</template>
</el-table-column>
<el-table-column prop="money" label="价格(接单时收取的价格)" width="180">
</el-table-column>
<el-table-column prop="zhiMoney" label="直属收益">
</el-table-column>
<el-table-column prop="feiMoney" label="非直属收益" width="150">
</el-table-column>
<el-table-column prop="pingMoney" label="平台收益">
</el-table-column>
<el-table-column prop="auditContent" label="拒绝原因" width="160">
</el-table-column>
<el-table-column prop="category" label="拒绝类型" width="160">
</el-table-column>
<el-table-column prop="createTime" label="创建时间" width="160">
</el-table-column>
<el-table-column prop="auditTime" label="审核时间" width="160">
</el-table-column>
<el-table-column fixed='right' prop="state" label="状态" width="100">
<template slot-scope="scope">
<span style="color: #4f9dec;" v-if="scope.row.state === 0 ">接单成功</span>
<span style="color: #4f9dec;" v-if="scope.row.state === 1 ">提交待审核</span>
<span style="color: #4f9dec;" v-if="scope.row.state === 2 ">审核成功</span>
<span style="color: #4f9dec;" v-if="scope.row.state === 3 ">已拒绝</span>
<span style="color: #4f9dec;" v-if="scope.row.state === 4 ">已维权</span>
<span style="color: #4f9dec;" v-if="scope.row.state === 5 ">已放弃</span>
</template>
</el-table-column>
<el-table-column fixed='right' label="操作">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="check(scope.$index, scope.row)">查看
</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: center;margin-top: 10px;">
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
:page-sizes="[5, 10, 15, 20]" :page-size="limit" :current-page="page"
layout="total,sizes, prev, pager, next,jumper" :total="taskData.totalCount">
</el-pagination>
</div>
<!-- 任务查看弹框 -->
<el-dialog title="查看" :visible.sync="dialogFormVisible" center>
<div v-for="(item,index) in helpTaskData" :key="index" style="text-align: center;">
<span>步骤 {{index+1}}</span>
<!-- <p>接单id{{item.helpSendOrderId}}</p> -->
<p class="red">验证图</p>
<img :src="item.picture" alt="" width="260" height="460">
</div>
<div v-if="helpTaskData == '' " style="text-align: center;">暂无内容</div>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogFormVisible = false"> </el-button>
<el-button type="primary" @click="dialogFormVisible = false"> </el-button>
</div>
</el-dialog>
</div>
</div>
</template>
<script>
export default {
data() {
return {
state: 0,
limit: 5,
page: 1,
dialogFormVisible: false,
tableDataLoading: true,
tableData: {},
taskData: [],
helpTaskData: []
}
},
methods: {
// 返回上一级
prev() {
this.$router.back()
},
handleSizeChange(val) {
this.limit = val;
this.taskSelect()
},
handleCurrentChange(val) {
this.page = val;
this.taskSelect()
},
// 接单人查看
check(index, rows) {
this.$http({
url: this.$http.adornUrl('helpTask/selectSendOrderDetailsById'),
method: 'get',
params: this.$http.adornParams({
'id': rows.id
})
}).then(({
data
}) => {
if (data.code === 0) {
let returnData = data.data;
this.dialogFormVisible = true
this.helpTaskData = returnData
}
})
},
// 获取数据列表
dataSelect() {
let id = this.$route.query.id
this.$http({
url: this.$http.adornUrl('helpTask/selectTakeOrderDetails'),
method: 'get',
params: this.$http.adornParams({
'id': id
})
}).then(({
data
}) => {
if (data.code === 0) {
let returnData = data.data;
this.tableData = returnData;
}
})
},
// 获取数据列表
taskSelect() {
this.tableDataLoading = true
let page = this.page - 1
let id = this.$route.query.id
this.$http({
url: this.$http.adornUrl('helpTask/selectSendOrderByTaskList'),
method: 'get',
params: this.$http.adornParams({
'page': page,
'limit': this.limit,
'id': id
})
}).then(({
data
}) => {
if (data.code === 0) {
this.tableDataLoading = false
let returnData = data.data;
this.taskData = returnData;
}
})
},
},
mounted() {
this.dataSelect()
this.taskSelect()
},
}
</script>
<style scoped="scoped">
.detailtabel h2 {
margin-top: 0;
}
.detailtabel .table_main table {
width: 100%;
}
.detailtabel .table_main {
border: 1px solid #e8e8e8;
}
.detailtabel table tr {
border-bottom: 1px solid #e8e8e8;
}
.detailtabel table tr th {
background-color: #fafafa;
padding: 16px 24px;
border-right: 1px solid #e8e8e8;
border-bottom: 1px solid #e8e8e8;
}
.detailtabel table tr td {
padding: 16px 24px;
border-right: 1px solid #e8e8e8;
border-bottom: 1px solid #e8e8e8;
}
.detailtabel table th {
color: rgba(0, 0, 0, .85);
font-weight: 400;
font-size: 14px;
line-height: 1.5;
}
.border-rt {
border-right: none !important;
}
.border-bt {
border-bottom: none !important;
}
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1386
src/views/mission/system.vue Normal file

File diff suppressed because it is too large Load Diff