feat(lotteryDetails): 抽奖明细去签呈

This commit is contained in:
woody 2025-09-18 14:10:49 +08:00
parent 413b570b02
commit bcdfda3d63
4 changed files with 107 additions and 642 deletions

View File

@ -1,6 +1,5 @@
import request from '@/utils/request' import request from '@/utils/request'
// 新人礼包活动列表 // 新人礼包活动列表
export function getNewPeopleList(params) { export function getNewPeopleList(params) {
return request({ return request({
@ -14,7 +13,7 @@ export function getNewPeopleList(params) {
export function getActiveStatus() { export function getActiveStatus() {
return request({ return request({
url: '/system/pub/enums/get-activityStatus', url: '/system/pub/enums/get-activityStatus',
method: 'get', method: 'get'
}) })
} }
@ -54,7 +53,6 @@ export function deleteNewPeoplePetition(data) {
}) })
} }
// 抽奖列表 // 抽奖列表
export function getDrawGiftConfigList(params) { export function getDrawGiftConfigList(params) {
return request({ return request({
@ -64,7 +62,6 @@ export function getDrawGiftConfigList(params) {
}) })
} }
// 抽奖签呈 // 抽奖签呈
export function drawGiftConfigPetition(data) { export function drawGiftConfigPetition(data) {
return request({ return request({
@ -137,7 +134,6 @@ export function purchasedTimesNotexamine(data) {
}) })
} }
// 充值未购买次数 // 充值未购买次数
export function unpurchasedTimesNotexamine(data) { export function unpurchasedTimesNotexamine(data) {
return request({ return request({
@ -147,12 +143,3 @@ export function unpurchasedTimesNotexamine(data) {
}) })
} }

View File

@ -1938,15 +1938,7 @@ export const constantRoutes = [
name: 'LotteryDetailsList', name: 'LotteryDetailsList',
component: () => import('@/views/marketing/lotteryDetails/index'), component: () => import('@/views/marketing/lotteryDetails/index'),
meta: { title: '抽奖明细' } meta: { title: '抽奖明细' }
},
{
path: 'lotteryDetailsListSign',
name: 'LotteryDetailsListSign',
component: () => import('@/views/marketing/lotteryDetails/onlineSign'),
meta: { title: '抽奖明细' },
hidden: true
} }
] ]
}, },
{ {

View File

@ -157,29 +157,6 @@
prop="availableSurplusNum" prop="availableSurplusNum"
:label="'剩余可用总次数'" :label="'剩余可用总次数'"
/> />
<el-table-column
width="120px"
align="center"
prop="recMemberCode"
:label="'推荐编号'"
/>
<el-table-column
align="center"
prop="recMemberName"
:label="'推荐姓名'"
/>
<el-table-column
align="center"
prop="orderCode"
:label="'来源订单编号'"
width="120px"
/>
<el-table-column
align="center"
prop="sourceMemberCode"
:label="'来源会员编号'"
width="120px"
/>
</el-table> </el-table>
</div> </div>
</div> </div>
@ -375,42 +352,18 @@ export default {
onSubmit(formName) { onSubmit(formName) {
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
if (this.ifgm == 1) { const url = this.ifgm === 1 ? gif.purchasedTimesNotexamine : gif.unpurchasedTimesNotexamine
this.$router.push({ url(this.form).then((res) => {
path: 'lotteryDetailsListSign', if (res.code === 200) {
query: { this.$message({
data: JSON.stringify(this.form), message: res.msg,
index: 744 type: 'success'
}
})
} else {
this.$router.push({
path: 'lotteryDetailsListSign',
query: {
data: JSON.stringify(this.form),
index: 745
}
}) })
} }
this.dialogVisible = false
// let url = ""; this.$refs[formName].resetFields()
// if (this.ifgm == 1) { this.getSearch()
// url = gif.purchasedTimesNotexamine; })
// } else {
// url = gif.unpurchasedTimesNotexamine;
// }
// url(this.form).then((res) => {
// if (res.code == 200) {
// this.$message({
// message: res.msg,
// type: "success",
// });
// this.dialogVisible = false;
// this.$refs[formName].resetFields();
// //
// this.getSearch();
// }
// });
} else { } else {
return false return false
} }

View File

@ -1,467 +0,0 @@
<template>
<div class="page">
<topBar
v-if="topList.length > 0"
:topList="topList"
:moren="moren"
></topBar>
<div class="main">
<div class="thetable">
<div class="fontTitle">{{ '在线签呈' }}</div>
<div class="titleflex">
<div>{{ '编号' }} :</div>
<div>
<el-radio-group v-model="allData.signType">
<el-radio
:label="ctem.value"
v-for="ctem in checkList"
:key="ctem.value"
>{{ ctem.label }}</el-radio
>
</el-radio-group>
</div>
</div>
<table id="tfhover" class="tftable" border="1">
<tr>
<td colspan="1" width="190px" align="center">
{{ '发起部门' }} :
</td>
<td colspan="1" v-if="allData.signData" width="435px">
{{ allData.signData.deptName }}
</td>
<td colspan="1" width="140px" align="center">
{{ '发起人' }} :
</td>
<td colspan="1" v-if="allData.signData">
{{ allData.signData.userName }}
</td>
</tr>
<tr>
<td colspan="1" align="center">{{ '主旨' }} :</td>
<td colspan="1" v-if="allData.signData">
{{ allData.signData.approvalBusinessVal }}
</td>
<td colspan="1" align="center">{{ '日期' }} :</td>
<td colspan="1" v-if="allData.signData">
{{ allData.signData.creationTime }}
</td>
</tr>
<!-- </tr> -->
<!-- // -->
<tr>
<td colspan="1" align="center">{{ '审批流程' }}</td>
<td colspan="3">
<div class="disflex">
<span
v-for="(ctem, cndex) in allData.signData.detailList"
style="margin: 0 5px 5px 0"
>
<el-select
v-model="ctem.pkApprover"
filterable
size="mini"
@change="getApprover"
:placeholder="'请选择'"
>
<el-option
v-for="item in approbalList"
:key="item.userId"
:label="item.nickName + '(' + item.deptName + ')'"
:value="item.userId"
>
</el-option>
</el-select>
</span>
<span style="margin: 0 5px 5px 0">
<i
class="el-icon-remove-outline"
@click.stop="delData"
v-show="allData.signData.detailList.length > 0"
style="font-size: 18px; margin-right: 5px"
></i>
<i
class="el-icon-circle-plus-outline"
style="font-size: 18px"
@click.stop="addData"
></i>
</span>
</div>
</td>
</tr>
<tr>
<td colspan="1" align="center">{{ '抄送人' }}</td>
<td colspan="3">
<div class="disflex">
<span
v-for="(ctem, cndex) in allData.signData.sendList"
style="margin: 0 5px 5px 0"
>
<el-select
v-model="ctem.pkSend"
filterable
size="mini"
@change="getApprover"
:placeholder="'请选择'"
>
<el-option
v-for="item in userAllList"
:key="item.userId"
:label="item.nickName + '(' + item.deptName + ')'"
:value="item.userId"
>
</el-option>
</el-select>
</span>
<span style="margin: 0 5px 5px 0">
<i
class="el-icon-remove-outline"
@click.stop="delData1"
v-show="allData.signData.sendList.length > 0"
style="font-size: 18px; margin-right: 5px"
></i>
<i
class="el-icon-circle-plus-outline"
style="font-size: 18px"
@click.stop="addData1"
></i>
</span>
</div>
</td>
</tr>
<tr>
<td style="height: 190px" align="center">{{ '情况说明' }}</td>
<td colspan="3" style="padding: 0">
<div>
<noImgEditor v-model="allData.remark" :min-height="190" />
</div>
</td>
</tr>
<tr>
<td style="height: 193px" align="center">{{ '业务诉求' }}</td>
<td colspan="3" style="padding: 0; vertical-align: top">
<div style="">
<el-table
:data="allData.tableList"
style="width: 100%"
:header-cell-style="{ background: '#EEEEEE' }"
>
<el-table-column
v-for="ctem in allData.tableTit"
:key="ctem.value"
align="center"
:prop="ctem.value"
:label="ctem.label"
>
</el-table-column>
</el-table>
</div>
</td>
</tr>
<tr>
<td style="height: 190px" align="center">{{ '附件' }}</td>
<td colspan="3" style="padding: 0">
<div style="height: 100%; padding: 10px 20px">
<el-upload
class="upload-demo"
:action="uploadImgUrl"
:on-success="handleUploadSuccess"
:on-remove="removeFile"
multiple
:headers="headers"
:file-list="fileList"
>
<el-button size="small" type="primary">{{
'点击上传'
}}</el-button>
</el-upload>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="footer">
<div style="margin: 0 auto">
<el-button class="thebtn" @click="cancelCz">
{{ '取消' }}</el-button
>
<el-button type="primary" class="thebtn" @click="saveDate">
{{ '确认' }}</el-button
>
</div>
</div>
</div>
</template>
<script>
import topBar from "@/components/topBar";
import * as man from "@/api/manage";
import onlineSign from "../../dashboard/onlineSign.json";
import { getToken } from "@/utils/auth";
import { isLocals } from "../../../utils/numberToCurrency";
import * as gif from "@/api/newgift";
export default {
name: "LotteryDetailsListSign",
components: {
topBar,
},
data() {
return {
uploadImgUrl: process.env.VUE_APP_BASE_API + "/system/upload", //
headers: {
Authorization: getToken(),
},
onlineSign,
moren: "lotteryDetailsListSign",
topList: [
{
name: '在线签呈',
path: "lotteryDetailsListSign",
},
],
checked: [],
checkList: [],
ywsq: "",
ywsqList: [],
qcData: {},
memberPetitionVo: {
businessNo: "",
signType: "",
description: "",
petitionListVoList: [],
czlx: "",
},
orderNumber: "",
allData: {
remark: "",
signType: 1,
fileList: [],
signData: {
detailList: [],
sendList: [],
},
approvalBusiness: "",
},
signDataList: [],
fileList: [],
//
approbalList: [],
userAllList: [],
};
},
mounted() {
this.allData = JSON.parse(this.$route.query.data);
this.allData.tableList = [JSON.parse(this.$route.query.data)];
this.allData.signData = {
detailList: [],
sendList: [],
};
this.allData.approvalBusiness = this.$route.query.index;
this.getSignData([this.allData.approvalBusiness]);
},
methods: {
isLocals,
getSignData(arr) {
man.signData(arr).then((res) => {
this.allData.signData = res.data[0];
//
this.$set(this.allData, "signType", 1);
this.$set(this.allData, "remark", "");
this.$set(this.allData, "fileList", []);
// table
this.onlineSign.forEach((ctem) => {
if (this.allData.approvalBusiness == ctem.id) {
this.allData.tableTit = ctem.textList;
}
});
this.$forceUpdate();
this.getApprove();
this.getSignType();
});
},
getApprove() {
//
man.approvalUser().then((res) => {
this.approbalList = res.data;
});
man.userAll().then((res) => {
this.userAllList = res.data;
});
man.approvalOperation().then((res) => {
this.ywsqList = res.data;
});
},
getSignType() {
man.signType().then((res) => {
this.checkList = res.data;
});
},
saveDate() {
//
this.allData.userIdList = this.allData.signData.detailList.map((item) => {
return item.pkApprover;
});
this.allData.userIdList = this.allData.userIdList.filter((item) => item);
//
this.allData.sendIdList = this.allData.signData.sendList.map((item) => {
return item.pkSend;
});
this.allData.sendIdList = this.allData.sendIdList.filter((item) => item);
this.allData.fileList = this.fileList.map((item) => {
return item.url;
});
let url = "";
if (this.allData.approvalBusiness == 744) {
url = gif.purchasedTimesNotexamine;
} else if (this.allData.approvalBusiness == 745) {
url = gif.unpurchasedTimesNotexamine;
}
url(this.allData).then((res) => {
if (res.code == 200) {
this.$message({
message: res.msg,
type: "success",
});
this.cancelCz();
}
});
},
cancelCz() {
this.$router.go(-1);
},
//
getApprover() {
this.$nextTick(() => {
this.$forceUpdate();
});
},
//
addData() {
let arr = JSON.parse(JSON.stringify(this.allData.signData.detailList));
arr.push({
pkApprover: "",
});
this.$set(this.allData.signData, "detailList", arr);
this.$forceUpdate();
},
//
delData() {
this.allData.signData.detailList.pop();
this.$forceUpdate();
},
//
addData1() {
let arr = JSON.parse(JSON.stringify(this.allData.signData.sendList));
arr.push({
pkSend: "",
});
this.$set(this.allData.signData, "sendList", arr);
this.$forceUpdate();
},
//
delData1() {
this.allData.signData.sendList.pop();
this.$forceUpdate();
},
handleUploadSuccess(res) {
if (res.code == 200) {
this.fileList.push(res.data);
} else {
this.$message({
type: "error",
message: '上传失败',
});
}
},
removeFile(file, fileList) {
this.fileList.forEach((item, index) => {
if (file.uid == item.uid) {
this.fileList.splice(index, 1);
}
});
},
},
};
</script>
<style lang="scss" scoped>
::v-deep .el-table thead {
color: #000000;
}
.page {
padding: 20px;
background: #f9f9f9;
font-size: 14px;
.main {
// margin-top: 20px;
background: #ffffff;
border-radius: 8px;
box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5);
display: flex;
margin: 0 auto;
width: 100%;
padding: 20px;
flex-direction: column;
}
.thetable {
margin: 0 auto;
margin-bottom: 20px;
.fontTitle {
font-weight: bold;
font-size: 24px;
text-align: center;
}
.titleflex {
display: flex;
margin-top: 10px;
margin-bottom: 10px;
justify-content: space-between;
}
}
.tftable {
font-size: 14px;
border-collapse: collapse;
border-radius: 10px;
width: 1060px;
border: 1px solid #cccccc;
.spbox {
display: flex;
align-items: center;
justify-content: flex-end;
}
th {
font-size: 14px;
// padding: 20px;
}
tr td {
font-size: 14px;
padding: 10px 20px;
height: 60px;
}
}
.footer {
display: flex;
justify-content: center;
align-items: center;
padding: 15px 0;
.thebtn {
width: 120px;
height: 38px;
}
}
}
::v-deep .el-table__row td:nth-child(4) {
display: flex;
}
//
.disflex {
display: flex;
align-items: center;
flex-wrap: wrap;
}
::v-deep .el-table__row td {
height: 100%;
}
</style>