Merge branch 'dev_vite' of http://18.167.251.121:10003/aidlab/aida_front into dev_vite

This commit is contained in:
zhangyh
2025-09-24 11:51:24 +08:00
3 changed files with 358 additions and 325 deletions

View File

@@ -1,319 +1,331 @@
<template> <template>
<div class="allUserPoerationModal" ref="allUserPoerationModal"></div> <div class="allUserPoerationModal" ref="allUserPoerationModal"></div>
<a-modal <a-modal
class="allUserPoeration_modal generalModel" class="allUserPoeration_modal generalModel"
v-model:visible="operationsModal" v-model:visible="operationsModal"
:footer="null" :footer="null"
:get-container="() => $refs.allUserPoerationModal" :get-container="() => $refs.allUserPoerationModal"
width="50%" width="50%"
:height="'77rem'" :height="'77rem'"
:maskClosable="false" :maskClosable="false"
:centered="true" :centered="true"
:closable="false" :closable="false"
:mask="true" :mask="true"
wrapClassName="#app" wrapClassName="#app"
:keyboard="false" :keyboard="false"
> >
<div class="generalModel_btn"> <div class="generalModel_btn">
<div class="generalModel_closeIcon" @click.stop="cancelDsign()"> <div class="generalModel_closeIcon" @click.stop="cancelDsign()">
<svg <svg
width="100%" height="100%" width="100%" height="100%"
viewBox="0 0 46 46" viewBox="0 0 46 46"
fill="none" fill="none"
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
> >
<circle cx="23" cy="23" r="23" fill="black" fill-opacity="0.3" /> <circle cx="23" cy="23" r="23" fill="black" fill-opacity="0.3" />
<rect <rect
x="32.5063" x="32.5063"
y="12" y="12"
width="3" width="3"
height="29" height="29"
rx="1.5" rx="1.5"
transform="rotate(45 32.5063 12)" transform="rotate(45 32.5063 12)"
fill="white" fill="white"
/> />
<rect <rect
x="34.6274" x="34.6274"
y="32.5059" y="32.5059"
width="3" width="3"
height="29" height="29"
rx="1.5" rx="1.5"
transform="rotate(135 34.6274 32.5059)" transform="rotate(135 34.6274 32.5059)"
fill="white" fill="white"
/> />
</svg> </svg>
</div> </div>
</div> </div>
<div class="modal_title_text"> <div class="modal_title_text">
<div>{{ title }} Coupon</div> <div>{{ title }} Coupon</div>
</div> </div>
<div class="allUserPoeration_center admin_page"> <div class="allUserPoeration_center admin_page">
<div class="admin_state_item"> <div class="admin_state_item">
<span>Cooperator:</span> <span>Cooperator:</span>
<input <input
v-model="cooperator" v-model="cooperator"
placeholder="Please enter cooperator" placeholder="Please enter cooperator"
type="text" type="text"
style="width: 220px" style="width: 220px"
/> />
</div> </div>
<div class="admin_state_item"> <div class="admin_state_item">
<span>percentOff(%): <span>*</span></span> <span>percentOff(%): <span>*</span></span>
<input <input
:class="{ active: title != 'Add' }" :class="{ active: title != 'Add' }"
:disabled="title != 'Add'" :disabled="title != 'Add'"
v-model="percentOff" v-model="percentOff"
placeholder="Please enter percentOff" placeholder="Please enter percentOff"
type="text" type="text"
style="width: 220px" style="width: 220px"
/> />
</div> </div>
<div class="admin_state_item"> <div class="admin_state_item">
<span>Commission Rate: <span>*</span></span> <span>Commission Rate: <span>*</span></span>
<input <input
:class="{ active: title != 'Add' }" :class="{ active: title != 'Add' }"
:disabled="title != 'Add'" :disabled="title != 'Add'"
v-model="commissionRate" v-model="commissionRate"
placeholder="Please enter commission rate" placeholder="Please enter commission rate"
type="text" type="text"
style="width: 220px" style="width: 220px"
/> />
</div> </div>
<div class="admin_state_item"> <div class="admin_state_item">
<!-- <div class="admin_state_item" > --> <!-- <div class="admin_state_item" > -->
<span>Start Time: <span>*</span></span> <span>Start Time: <span>*</span></span>
<a-space direction="vertical" style="width: 220px"> <a-space direction="vertical" style="width: 220px">
<a-date-picker <a-date-picker
v-model:value="startTime" v-model:value="startTime"
:disabled="title != 'Add'" :disabled="title != 'Add'"
style="width: 220px" style="width: 220px"
/> />
</a-space> </a-space>
</div> </div>
<div class="admin_state_item"> <div class="admin_state_item">
<!-- <div class="admin_state_item" > --> <!-- <div class="admin_state_item" > -->
<span>End Time: <span>*</span></span> <span>End Time: <span>*</span></span>
<a-space direction="vertical" style="width: 220px"> <a-space direction="vertical" style="width: 220px">
<a-date-picker <a-date-picker
v-model:value="endTime" v-model:value="endTime"
:disabled="title != 'Add'" :disabled="title != 'Add'"
style="width: 220px" style="width: 220px"
/> />
</a-space> </a-space>
</div> </div>
<div class="admin_state_item"> <div class="admin_state_item">
<span>MaxRedemptions:</span> <span>MaxRedemptions:</span>
<input <input
:class="{ active: title != 'Add' }" :class="{ active: title != 'Add' }"
:disabled="title != 'Add'" :disabled="title != 'Add'"
v-model="maxRedemptions" v-model="maxRedemptions"
placeholder="Please enter maximum" placeholder="Please enter maximum"
type="text" type="text"
style="width: 220px" style="width: 220px"
/> />
</div> </div>
<div class="admin_state_item"> <div class="admin_state_item">
<span>PaidCommission:</span> <span>PaidCommission:</span>
<input <input
v-model="paidCommission" v-model="paidCommission"
placeholder="Please enter paidCommission" placeholder="Please enter paidCommission"
type="text" type="text"
style="width: 220px" style="width: 220px"
/> />
</div> </div>
<div class="admin_state_item"> <div class="admin_state_item">
<span>Remark:</span> <span>Remark:</span>
<input <input
v-model="remark" v-model="remark"
placeholder="Please enter remark" placeholder="Please enter remark"
type="text" type="text"
style="width: 220px" style="width: 220px"
/> />
</div> </div>
</div> </div>
<div class="allUserPoeration_btn admin_page"> <div class="allUserPoeration_btn admin_page">
<div class="admin_search_item" @click="cancelDsign">Close</div> <div class="admin_search_item" @click="cancelDsign">Close</div>
<div class="admin_search_item" @click="setOk">OK</div> <div class="admin_search_item" @click="setOk">OK</div>
</div> </div>
</a-modal> </a-modal>
<div class="mark_loading" v-show="loadingShow"> <div class="mark_loading" v-show="loadingShow">
<a-spin size="large" /> <a-spin size="large" />
</div> </div>
</template> </template>
<script> <script>
import { import {
defineComponent, defineComponent,
ref, ref,
reactive, reactive,
watch, watch,
onMounted, onMounted,
nextTick, nextTick,
toRefs, toRefs,
} from "vue"; } from "vue";
import { Https } from "@/tool/https"; import { Https } from "@/tool/https";
import { Modal, message } from "ant-design-vue"; import { Modal, message } from "ant-design-vue";
import { ExclamationCircleOutlined } from "@ant-design/icons-vue"; import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
import { formatTime, isEmail } from "@/tool/util"; import { formatTime, isEmail } from "@/tool/util";
import dayjs, { Dayjs } from "dayjs"; import dayjs, { Dayjs } from "dayjs";
import md5 from "md5"; import md5 from "md5";
export default defineComponent({ export default defineComponent({
components: {}, components: {},
emits: ["searchHistoryList"], emits: ["searchHistoryList"],
setup(props, { emit }) { setup(props, { emit }) {
let operations = reactive({ let operations = reactive({
operationsModal: false, operationsModal: false,
operationsEdit: false, operationsEdit: false,
loadingShow: false, loadingShow: false,
title: "", title: "",
}); });
let operationsData = reactive({ let operationsData = reactive({
endTime: "", endTime: "",
startTime: "", startTime: "",
percentOff: "", percentOff: "",
commissionRate: "", commissionRate: "",
maxRedemptions: "", maxRedemptions: "",
cooperator: "", cooperator: "",
paidCommission: "", paidCommission: "",
remark: "", remark: "",
id: "", id: "",
}); });
let init = (funStr, data) => { let init = (funStr, data) => {
operations.operationsModal = true; operations.operationsModal = true;
operations.operationsEdit = true; operations.operationsEdit = true;
operations.title = funStr; operations.title = funStr;
if (funStr == "Add") operations.operationsEdit = false; if (funStr == "Add") operations.operationsEdit = false;
if (funStr == "Edit") { if (funStr == "Edit") {
operationsData.id = data.id; operationsData.id = data.id;
operationsData.percentOff = data.percentOff; operationsData.percentOff = data.percentOff;
operationsData.commissionRate = data.commissionRate; operationsData.commissionRate = data.commissionRate;
operationsData.maxRedemptions = data.maxRedemptions; operationsData.maxRedemptions = data.maxRedemptions;
operationsData.cooperator = data.cooperator; operationsData.cooperator = data.cooperator;
operationsData.paidCommission = data.paidCommission; operationsData.paidCommission = data.paidCommission;
operationsData.remark = data.remark; operationsData.remark = data.remark;
operationsData.endTime = dayjs( operationsData.endTime = dayjs(
new Date(data.redeemBy * 1000).toISOString().split("T")[0], new Date(data.redeemBy * 1000).toLocaleDateString('zh-CN', {
"YYYY/MM/DD" year: 'numeric',
); month: '2-digit',
operationsData.startTime = dayjs( day: '2-digit'
new Date(data.startTime * 1000).toISOString().split("T")[0], }).replace(/\//g, '/'),
"YYYY/MM/DD" "YYYY/MM/DD"
); );
console.log(data) // 确保格式一致
// operationsData.startTime = dayjs(
// operationsData.endTime='2024-08-05T00:00:06' // new Date(data.startTime * 1000).toISOString().split("T")[0],
// operationsData.validEndTime='2024-08-05T00:00:06' // "YYYY/MM/DD"
// operationsData.commissionRate = data.commissionRate // );
// operationsData.maxRedemptions = data.maxRedemptions operationsData.startTime = dayjs(
// operationsData.validStartTime = formatTime(data.validStartTime) new Date(data.startTime * 1000).toLocaleDateString('zh-CN', {
// operationsData.validEndTime = formatTime(data.validEndTime) year: 'numeric',
} month: '2-digit',
}; day: '2-digit'
let setAddData = () => { }).replace(/\//g, '/'),
const emdTimeMs = "YYYY/MM/DD"
new Date(operationsData.endTime).getTime() / 1000; // 直接获取毫秒时间戳 );
const startTimeMs = // operationsData.endTime='2024-08-05T00:00:06'
new Date(operationsData.startTime).getTime() / 1000; // 直接获取毫秒时间戳 // operationsData.validEndTime='2024-08-05T00:00:06'
return { // operationsData.commissionRate = data.commissionRate
percentOff: operationsData.percentOff, // operationsData.maxRedemptions = data.maxRedemptions
maxRedemptions: operationsData.maxRedemptions, // operationsData.validStartTime = formatTime(data.validStartTime)
commissionRate: operationsData.commissionRate, // operationsData.validEndTime = formatTime(data.validEndTime)
endTime: emdTimeMs, }
startTime: startTimeMs, };
cooperator: operationsData.cooperator, let setAddData = () => {
remark: operationsData.remark, const emdTimeMs =
}; new Date(operationsData.endTime).getTime() / 1000; // 直接获取毫秒时间戳
}; const startTimeMs =
let setEditData = () => { new Date(operationsData.startTime).getTime() / 1000; // 直接获取毫秒时间戳
const timestampMs = return {
new Date(operationsData.endTime).getTime() / 1000; // 直接获取毫秒时间戳 percentOff: operationsData.percentOff,
return { maxRedemptions: operationsData.maxRedemptions,
id: operationsData.id, commissionRate: operationsData.commissionRate,
paidCommission: operationsData.commissionRate, endTime: emdTimeMs,
cooperator: operationsData.cooperator, startTime: startTimeMs,
remark: operationsData.remark, cooperator: operationsData.cooperator,
}; remark: operationsData.remark,
}; };
let cancelDsign = () => { };
operationsData.endTime = ""; let setEditData = () => {
operationsData.startTime = ""; const timestampMs =
operationsData.percentOff = ""; new Date(operationsData.endTime).getTime() / 1000; // 直接获取毫秒时间戳
operationsData.commissionRate = ""; return {
operationsData.maxRedemptions = ""; id: operationsData.id,
operationsData.cooperator = ""; paidCommission: operationsData.commissionRate,
operationsData.paidCommission = ""; cooperator: operationsData.cooperator,
operationsData.remark = ""; remark: operationsData.remark,
operationsData.id = ""; };
operations.operationsModal = false; };
}; let cancelDsign = () => {
let setOk = () => { operationsData.endTime = "";
let data; operationsData.startTime = "";
if (operations.title == "Add") { operationsData.percentOff = "";
data = setAddData(); operationsData.commissionRate = "";
if (!data.commissionRate || !data.startTime || !data.percentOff || !data.endTime) operationsData.maxRedemptions = "";
return message.warning("Please check the input box marked with *"); operationsData.cooperator = "";
Https.axiosPost(Https.httpUrls.createCoupon, data).then((rv) => { operationsData.paidCommission = "";
if (rv) { operationsData.remark = "";
cancelDsign(); operationsData.id = "";
emit("searchHistoryList"); operations.operationsModal = false;
} };
}); let setOk = () => {
} else { let data;
data = setEditData(); if (operations.title == "Add") {
Https.axiosGet(Https.httpUrls.updatePromCodeInfo, { data = setAddData();
params: data, if (!data.commissionRate || !data.startTime || !data.percentOff || !data.endTime)
}).then((rv) => { return message.warning("Please check the input box marked with *");
if (rv) { Https.axiosPost(Https.httpUrls.createCoupon, data).then((rv) => {
cancelDsign(); if (rv) {
emit("searchHistoryList"); cancelDsign();
} emit("searchHistoryList");
}); }
} });
}; } else {
return { data = setEditData();
...toRefs(operations), Https.axiosGet(Https.httpUrls.updatePromCodeInfo, {
...toRefs(operationsData), params: data,
cancelDsign, }).then((rv) => {
init, if (rv) {
focus, cancelDsign();
blur, emit("searchHistoryList");
setOk, }
}; });
}, }
data() { };
return {}; return {
}, ...toRefs(operations),
mounted() {}, ...toRefs(operationsData),
methods: {}, cancelDsign,
}); init,
</script> focus,
<style lang="less" scoped> blur,
:deep(.allUserPoeration_modal) { setOk,
.ant-modal-body { };
display: flex; },
flex-direction: column; data() {
return {};
},
mounted() {},
methods: {},
});
</script>
<style lang="less" scoped>
:deep(.allUserPoeration_modal) {
.ant-modal-body {
display: flex;
flex-direction: column;
}
} }
} </style>
</style> <style lang="less" scoped>
<style lang="less" scoped> .allUserPoeration_modal {
.allUserPoeration_modal { .closeIcon {
.closeIcon { z-index: 2;
z-index: 2; }
.allUserPoeration_btn {
display: flex;
flex-direction: row;
height: auto;
justify-content: flex-end;
padding: 1rem 0;
.admin_search_item {
margin-bottom: 0;
}
}
.allUserPoeration_center {
flex: 1;
overflow-y: auto;
flex-direction: row;
flex-wrap: wrap;
}
} }
.allUserPoeration_btn { </style>
display: flex;
flex-direction: row;
height: auto;
justify-content: flex-end;
padding: 1rem 0;
.admin_search_item {
margin-bottom: 0;
}
}
.allUserPoeration_center {
flex: 1;
overflow-y: auto;
flex-direction: row;
flex-wrap: wrap;
}
}
</style>

View File

@@ -300,7 +300,11 @@ export default defineComponent({
// ] // ]
let isCurrent = list[i].id == detailData?.selectDetail?.id let isCurrent = list[i].id == detailData?.selectDetail?.id
console.log(isCurrent,newData) console.log(isCurrent,newData)
let color = (detailData.currentDetailType == 'color' && isCurrent)?(newData?.rgba?.r?`${newData.rgba.r} ${newData.rgba.g} ${newData.rgba.b}`:''):(list[i].color?.rgba?.r?`${list[i].color.rgba.r} ${list[i].color.rgba.g} ${list[i].color.rgba.b}`:'') let color = (detailData.currentDetailType == 'color' && isCurrent && !detailData.isEditPattern.value)?
(newData?.rgba?.r?`${newData.rgba.r} ${newData.rgba.g} ${newData.rgba.b}`:''):
(list[i].color?.rgba?.r?
`${list[i].color.rgba.r} ${list[i].color.rgba.g} ${list[i].color.rgba.b}`:
'')
if(detailData.currentDetailType == 'sketch' && newData){ if(detailData.currentDetailType == 'sketch' && newData){
color = detailData.designDetail.clothes[0].color?.rgba?.r?`${detailData.designDetail.clothes[0].color.rgba.r} ${detailData.designDetail.clothes[0].color.rgba.g} ${detailData.designDetail.clothes[0].color.rgba.b}`:'' color = detailData.designDetail.clothes[0].color?.rgba?.r?`${detailData.designDetail.clothes[0].color.rgba.r} ${detailData.designDetail.clothes[0].color.rgba.g} ${detailData.designDetail.clothes[0].color.rgba.b}`:''
detailData.selectDetail.maskUrl = '' detailData.selectDetail.maskUrl = ''
@@ -309,8 +313,8 @@ export default defineComponent({
let data:any = { let data:any = {
changed:false, changed:false,
color, color,
designType:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.designType:list[i].designType, designType:(newData && detailData.currentDetailType == 'sketch' && isCurrent && !detailData.isEditPattern.value)?newData.designType:list[i].designType,
id:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.id:list[i].id, id:(newData && detailData.currentDetailType == 'sketch' && isCurrent && !detailData.isEditPattern.value)?newData.id:list[i].id,
maskMinioUrl:(newData && detailData.currentDetailType == 'sketch')?'':list[i]?.maskMinioUrl, maskMinioUrl:(newData && detailData.currentDetailType == 'sketch')?'':list[i]?.maskMinioUrl,
// maskUrl:'', // maskUrl:'',
maskUrl:(newData && detailData.currentDetailType == 'sketch')?'':list[i]?.maskUrl, maskUrl:(newData && detailData.currentDetailType == 'sketch')?'':list[i]?.maskUrl,
@@ -321,19 +325,19 @@ export default defineComponent({
offset, offset,
partialDesign:list[i].partialDesign || {}, partialDesign:list[i].partialDesign || {},
// partialDesign:detailData.isEditPattern.value?list[i].partialDesign:{}, // partialDesign:detailData.isEditPattern.value?list[i].partialDesign:{},
path:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.minIOPath:list[i].minIOPath, path:(newData && detailData.currentDetailType == 'sketch' && isCurrent && !detailData.isEditPattern.value)?newData.minIOPath:list[i].minIOPath,
printObject:(newData && detailData.currentDetailType == 'print' && isCurrent)?{prints:newData}:list[i].printObject?list[i].printObject:{prints:[]}, printObject:(newData && detailData.currentDetailType == 'print' && isCurrent && !detailData.isEditPattern.value)?{prints:newData}:list[i].printObject?list[i].printObject:{prints:[]},
priority, priority,
// scale:[ // scale:[
// 0.5, // 0.5,
// 0.35822305 // 0.35822305
// ], // ],
scale:[scale[0]?scale[0]:1,scale[1]?scale[1]:1], scale:[scale[0]?scale[0]:1,scale[1]?scale[1]:1],
type:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.level2Type || newData.categoryValue:list[i].type, type:(newData && detailData.currentDetailType == 'sketch' && isCurrent && !detailData.isEditPattern.value)?newData.level2Type || newData.categoryValue:list[i].type,
sketchString:list[i].sketchString?list[i].sketchString:'', sketchString:list[i].sketchString?list[i].sketchString:'',
trims:(newData && detailData.currentDetailType == 'element' && isCurrent)?{prints:newData}:list[i].trims?.prints?list[i].trims:{prints:[]}, trims:(newData && detailData.currentDetailType == 'element' && isCurrent && !detailData.isEditPattern.value)?{prints:newData}:list[i].trims?.prints?list[i].trims:{prints:[]},
} }
if((list[i].color?.gradient || list[i].newDetail?.color?.gradient)){ if((list[i].color?.gradient || list[i].newDetail?.color?.gradient) && !detailData.isEditPattern.value){
gradient = list[i].newDetail?.color?.gradient || list[i].color.gradient gradient = list[i].newDetail?.color?.gradient || list[i].color.gradient
gradient.colorImg = await setGradual(gradient,320,700) gradient.colorImg = await setGradual(gradient,320,700)
data.gradient = gradient data.gradient = gradient
@@ -389,7 +393,7 @@ export default defineComponent({
designSingleItemDTOList:clothes, designSingleItemDTOList:clothes,
isPreview:false, isPreview:false,
// ifSubmit:designItemDetail.isPreview, // ifSubmit:designItemDetail.isPreview,
gender:workspace?.sex == 'Male'?1:0, gender:workspace?.sex,
sketchString:'', sketchString:'',
modelId:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.id:detailData.designDetail.oldModel?detailData.designDetail.oldModel.id:'', modelId:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.id:detailData.designDetail.oldModel?detailData.designDetail.oldModel.id:'',
modelType:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.type:detailData.designDetail.oldModel?detailData.designDetail.oldModel.type:'', modelType:(detailData.currentDetailType == 'models' && detailData.designDetail.newModel)?detailData.designDetail.newModel.type:detailData.designDetail.oldModel?detailData.designDetail.oldModel.type:'',

View File

@@ -306,6 +306,23 @@ export default defineComponent({
data.isGenerate = false data.isGenerate = false
clearInterval(data.remGenerateTime) clearInterval(data.remGenerateTime)
data.remGenerate = false data.remGenerate = false
if(res.errCode === 2){
Modal.confirm({
title: res.errMsg,
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
zIndex:99999,
centered:true,
onOk() {
store.commit("setUpgradePlan", true);
},
onCancel(){
}
});
}
}) })
} }
const setGenerate = (dataList:any)=>{ const setGenerate = (dataList:any)=>{