fix
This commit is contained in:
@@ -148,6 +148,7 @@ export default defineComponent({
|
||||
.account_comment{
|
||||
width: 100%;
|
||||
.account_generalMessage_item{
|
||||
font-size: var(--aida-fsize1-6);
|
||||
.account_generalMessage_item_right{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -140,6 +140,7 @@ export default defineComponent({
|
||||
}
|
||||
.account_generalMessage_center{
|
||||
.account_generalMessage_item{
|
||||
font-size: var(--aida-fsize1-6);
|
||||
.account_generalMessage_item_right{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -149,6 +149,7 @@ export default defineComponent({
|
||||
width: 100%;
|
||||
.account_generalMessage_center{
|
||||
.account_generalMessage_item{
|
||||
font-size: var(--aida-fsize1-6);
|
||||
.account_generalMessage_item_right{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -45,11 +45,11 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal_title_text">
|
||||
<div>{{ title }} User</div>
|
||||
<div>{{ title.label }} User</div>
|
||||
</div>
|
||||
<div class="allUserPoeration_center admin_page">
|
||||
<div class="admin_state_item">
|
||||
<span>User Name: <span>*</span></span>
|
||||
<span>{{ $t('adminSeAllUser.UserName') }}: <span>*</span></span>
|
||||
<input
|
||||
v-model="userName"
|
||||
placeholder="Please enter user name"
|
||||
@@ -58,7 +58,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>User Email: <span>*</span></span>
|
||||
<span>{{ $t('adminSeAllUser.UserEmail') }}: <span>*</span></span>
|
||||
<input
|
||||
v-model="userEmail"
|
||||
placeholder="Please enter email"
|
||||
@@ -67,7 +67,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>Password: <span>*</span></span>
|
||||
<span>{{ $t('adminSeAllUser.Password') }}: <span>*</span></span>
|
||||
<input
|
||||
@focus="focus"
|
||||
@blur="blur"
|
||||
@@ -78,7 +78,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>Maximum Credits:</span>
|
||||
<span>{{ $t('adminSeAllUser.MaximumCredits') }}:</span>
|
||||
<input
|
||||
v-model="credits"
|
||||
placeholder="Please enter credits"
|
||||
@@ -88,8 +88,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="allUserPoeration_btn admin_page">
|
||||
<div class="admin_search_item" @click="cancelDsign">Close</div>
|
||||
<div class="admin_search_item" @click="setOk">OK</div>
|
||||
<div class="admin_search_item" @click="cancelDsign">{{ $t('adminSeAllUser.Close') }}</div>
|
||||
<div class="admin_search_item" @click="setOk">{{ $t('adminSeAllUser.OK') }}</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
<div class="mark_loading" v-show="loadingShow">
|
||||
@@ -119,7 +119,7 @@ export default defineComponent({
|
||||
operationsModal: false,
|
||||
operationsEdit: false,
|
||||
loadingShow: false,
|
||||
title: "",
|
||||
title: null,
|
||||
});
|
||||
let operationsData = reactive({
|
||||
accountId: -1,
|
||||
@@ -151,8 +151,8 @@ export default defineComponent({
|
||||
operations.operationsModal = true;
|
||||
operations.operationsEdit = true;
|
||||
operations.title = funStr;
|
||||
if (funStr == "Add") operations.operationsEdit = false;
|
||||
if (funStr == "Edit") {
|
||||
if (funStr.value == "Add") operations.operationsEdit = false;
|
||||
if (funStr.value == "Edit") {
|
||||
operationsData.accountId = data.id;
|
||||
operationsData.userName = data.userName;
|
||||
operationsData.userEmail = data.userEmail;
|
||||
@@ -195,7 +195,7 @@ export default defineComponent({
|
||||
userEmail: operationsData.userEmail,
|
||||
userPassword:
|
||||
operationsData.password == operationsData.oldPassword
|
||||
? ""
|
||||
? null
|
||||
: md5(operationsData.password + "abc"),
|
||||
};
|
||||
};
|
||||
@@ -209,19 +209,18 @@ export default defineComponent({
|
||||
};
|
||||
let setOk = () => {
|
||||
let data;
|
||||
if (operations.title == "Add") {
|
||||
if (operations.title?.value == "Add") {
|
||||
data = setAddData();
|
||||
if (!isEmail(data.userEmail)) {
|
||||
message.info("The email format is incorrect");
|
||||
message.info(t('adminSeAllUser.jsContent1'));
|
||||
return;
|
||||
}
|
||||
if (
|
||||
!data.userName ||
|
||||
!data.userEmail ||
|
||||
!data.userPassword ||
|
||||
!data.creditsUsageLimit
|
||||
!data.userPassword
|
||||
)
|
||||
return message.warning("Please check the input box marked with *");
|
||||
return message.warning(t('adminSeAllUser.jsContent2'));
|
||||
Https.axiosPost(Https.httpUrls.addOrUpdateSubAccount, data).then(
|
||||
(rv) => {
|
||||
if (rv) {
|
||||
@@ -236,7 +235,7 @@ export default defineComponent({
|
||||
message.info("The email format is incorrect");
|
||||
return;
|
||||
}
|
||||
if (!data.userName || !data.userEmail || !data.creditsUsageLimit)
|
||||
if (!data.userName || !data.userEmail)
|
||||
return message.warning("Please check the input box marked with *");
|
||||
Https.axiosPost(Https.httpUrls.addOrUpdateSubAccount, data).then(
|
||||
(rv) => {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class="admin_table_search">
|
||||
<div class="admin_state">
|
||||
<div class="admin_state_item">
|
||||
<span>Create Time:</span>
|
||||
<span>{{ $t('adminSeAllUser.CreateTime') }}:</span>
|
||||
<a-range-picker
|
||||
style="width: 230px"
|
||||
class="range_picker"
|
||||
@@ -45,7 +45,7 @@
|
||||
/>
|
||||
</div> -->
|
||||
<div class="admin_state_item">
|
||||
<span>User Name:</span>
|
||||
<span>{{ $t('adminSeAllUser.UserName') }}:</span>
|
||||
<a-select
|
||||
v-model:value="ids"
|
||||
mode="multiple"
|
||||
@@ -74,16 +74,22 @@
|
||||
</div>
|
||||
<div class="admin_search">
|
||||
<div class="admin_search_item" @click="searchHistoryList">
|
||||
Search
|
||||
{{ $t('adminSeAllUser.search') }}
|
||||
</div>
|
||||
<div class="admin_search_item" @click="addhHistoryList">
|
||||
Add
|
||||
{{ $t('adminSeAllUser.add') }}
|
||||
</div>
|
||||
<div class="admin_search_item" style="width: auto;padding: 0 2rem;" @click="downloadTemplate">
|
||||
Download template
|
||||
{{ $t('adminSeAllUser.DownloadTemplate') }}
|
||||
</div>
|
||||
<div class="admin_search_item" style="width: auto;padding: 0 2rem;" @click="uploadTemplate">
|
||||
Upload template
|
||||
{{ $t('adminSeAllUser.UploadTemplate') }}
|
||||
</div>
|
||||
<div class="admin_search_item" style="width: auto;padding: 0 2rem;" @click="ExportAccountData">
|
||||
{{ $t('adminSeAllUser.ExportAccountData') }}
|
||||
</div>
|
||||
<div class="admin_search_item" style="width: auto;padding: 0 2rem;" @click="deleteList">
|
||||
{{ $t('adminSeAllUser.Delete') }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="admin_state_list">
|
||||
@@ -91,19 +97,19 @@
|
||||
class="admin_state_list_item"
|
||||
@click="lastGeTrialList('year')"
|
||||
>
|
||||
Nearly a year
|
||||
{{ $t('adminSeAllUser.NearlyAYear') }}
|
||||
</div>
|
||||
<div
|
||||
class="admin_state_list_item"
|
||||
@click="lastGeTrialList('month')"
|
||||
>
|
||||
Last month
|
||||
{{ $t('adminSeAllUser.LastMonth') }}
|
||||
</div>
|
||||
<div
|
||||
class="admin_state_list_item"
|
||||
@click="lastGeTrialList('week')"
|
||||
>
|
||||
Last week
|
||||
{{ $t('adminSeAllUser.LastWeek') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -113,6 +119,8 @@
|
||||
:loading="tableLoading"
|
||||
:columns="columns"
|
||||
:data-source="dataList"
|
||||
:row-selection="rowSelection"
|
||||
rowKey="id"
|
||||
:scroll="{ y: historyTableHeight }"
|
||||
@change="changePage"
|
||||
:showSorterTooltip='false'
|
||||
@@ -132,13 +140,13 @@
|
||||
@click="setAagree(record)"
|
||||
style="margin-right: 2rem;"
|
||||
>
|
||||
Edit
|
||||
{{ $t('adminSeAllUser.Edit') }}
|
||||
</div>
|
||||
<div
|
||||
class="operate_item"
|
||||
@click="deleteAagree(record)"
|
||||
>
|
||||
Delete
|
||||
{{ $t('adminSeAllUser.Delete') }}
|
||||
</div>
|
||||
<!-- <div
|
||||
class="operate_item"
|
||||
@@ -169,18 +177,31 @@ import { Https } from "@/tool/https";
|
||||
import { Modal,message } from 'ant-design-vue';
|
||||
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
||||
import allUserPoerationsVue from "./addAllUser.vue";
|
||||
import { useI18n } from 'vue-i18n'
|
||||
export default defineComponent({
|
||||
components: {allUserPoerationsVue,},
|
||||
setup() {
|
||||
const store:any = useStore()
|
||||
const selectedRowKeys = ref([]) as any;
|
||||
const onSelectChange = (changableRowKeys: string[]) => {
|
||||
selectedRowKeys.value = changableRowKeys;
|
||||
};
|
||||
let filter: any = reactive({
|
||||
dataList: [],
|
||||
tableLoading: false,
|
||||
allUserList: computed(()=>{
|
||||
return store.state.adminPage.allUserList
|
||||
}),
|
||||
allCountry:[]
|
||||
allCountry:[],
|
||||
rowSelection:computed(() => {
|
||||
return {
|
||||
selectedRowKeys: unref(selectedRowKeys),
|
||||
onChange: onSelectChange,
|
||||
}
|
||||
})
|
||||
});
|
||||
const {t} = useI18n()
|
||||
|
||||
let filterData: any = reactive({
|
||||
rangePickerValue: [],
|
||||
currentPage: 1,
|
||||
@@ -196,37 +217,12 @@ export default defineComponent({
|
||||
orderBy:'',
|
||||
userName: "",
|
||||
});
|
||||
let state: any = ref([
|
||||
{
|
||||
label: "all",
|
||||
value: "",
|
||||
},
|
||||
{
|
||||
label:'visitor',
|
||||
value:'0',
|
||||
},
|
||||
{
|
||||
label:'yearly',
|
||||
value:'1',
|
||||
},
|
||||
{
|
||||
label:'monthly',
|
||||
value:'2',
|
||||
},
|
||||
{
|
||||
label:'trial',
|
||||
value:'3',
|
||||
},
|
||||
{
|
||||
label: "userInEvent",
|
||||
value: "4",
|
||||
},
|
||||
]);
|
||||
|
||||
let renameData: any = ref({}); //修改名字选中的数据
|
||||
const columns: any = computed(() => {
|
||||
return [
|
||||
{
|
||||
title: "User Id",
|
||||
title: t("adminSeAllUser.UserId"),
|
||||
align: "center",
|
||||
dataIndex: "id",
|
||||
key: "id",
|
||||
@@ -235,7 +231,7 @@ export default defineComponent({
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "Email",
|
||||
title: t("adminSeAllUser.Email"),
|
||||
align: "center",
|
||||
dataIndex: "userEmail",
|
||||
key: "userEmail",
|
||||
@@ -243,7 +239,7 @@ export default defineComponent({
|
||||
ellipsis:true
|
||||
},
|
||||
{
|
||||
title: "User Name",
|
||||
title: t("adminSeAllUser.UserName"),
|
||||
align: "center",
|
||||
dataIndex: "userName",
|
||||
key: "userName",
|
||||
@@ -258,7 +254,7 @@ export default defineComponent({
|
||||
// },
|
||||
},
|
||||
{
|
||||
title: "language",
|
||||
title: t("adminSeAllUser.language"),
|
||||
align: "center",
|
||||
dataIndex: "language",
|
||||
key: "language",
|
||||
@@ -266,7 +262,7 @@ export default defineComponent({
|
||||
ellipsis:true,
|
||||
},
|
||||
{
|
||||
title: "Create Date",
|
||||
title: t("adminSeAllUser.CreateDate"),
|
||||
align: "center",
|
||||
dataIndex: "createDate",
|
||||
key: "createDate",
|
||||
@@ -274,19 +270,19 @@ export default defineComponent({
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "Credits",
|
||||
title: t("adminSeAllUser.Credits"),
|
||||
align: "center",
|
||||
// width: 150,
|
||||
// minWidth: 100,
|
||||
// maxWidth: 200,
|
||||
// resizable: true,
|
||||
dataIndex: "creditsUsageLimit",
|
||||
dataIndex: "credits",
|
||||
key: "credits",
|
||||
width:100,
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "Credits Usage",
|
||||
title: t("adminSeAllUser.CreditsUsage"),
|
||||
align: "center",
|
||||
dataIndex: "creditsUsage",
|
||||
key: "creditsUsage",
|
||||
@@ -294,7 +290,7 @@ export default defineComponent({
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "Credits Usage Limit",
|
||||
title: t("adminSeAllUser.CreditsUsageLimit"),
|
||||
align: "center",
|
||||
dataIndex: "creditsUsageLimit",
|
||||
key: "creditsUsageLimit",
|
||||
@@ -302,7 +298,7 @@ export default defineComponent({
|
||||
sorter: true,
|
||||
},
|
||||
{
|
||||
title: "Operations",
|
||||
title: t("adminSeAllUser.Operations"),
|
||||
key: "operation",
|
||||
width:120,
|
||||
align: "center",
|
||||
@@ -418,11 +414,11 @@ export default defineComponent({
|
||||
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
|
||||
};
|
||||
let addhHistoryList = () => {
|
||||
allUserPoerationsVue.value.init('Add','')
|
||||
allUserPoerationsVue.value.init({value:'Add',label:t('adminSeAllUser.add')},'')
|
||||
};
|
||||
let allUserPoerationsVue = ref()
|
||||
let setAagree = (data:any) =>{
|
||||
allUserPoerationsVue.value.init('Edit',data)
|
||||
allUserPoerationsVue.value.init({value:'Edit',label:t('adminSeAllUser.Edit')},data)
|
||||
}
|
||||
const downloadTemplate = ()=>{
|
||||
Https.axiosGet(Https.httpUrls.subAccountImportExcelDownload,{responseType: 'blob',env:{binary:true}}).then((rv:any)=>{
|
||||
@@ -436,6 +432,18 @@ export default defineComponent({
|
||||
URL.revokeObjectURL(link.href);
|
||||
})
|
||||
}
|
||||
const ExportAccountData = ()=>{
|
||||
Https.axiosGet(Https.httpUrls.exportAccountsToExcel,{headers:{responseType: 'blob',},env:{binary:true,binaryType:'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'}}).then((rv:any)=>{
|
||||
const link = document.createElement('a');
|
||||
link.href = rv.url;
|
||||
link.download = 'file.xlsx'; // 设置正确的文件扩展名
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
// 释放 URL 对象
|
||||
URL.revokeObjectURL(link.href);
|
||||
})
|
||||
}
|
||||
const uploadTemplate = ()=>{
|
||||
const fileInput = document.createElement('input');
|
||||
fileInput.type = 'file';
|
||||
@@ -473,6 +481,18 @@ export default defineComponent({
|
||||
});
|
||||
})
|
||||
}
|
||||
const deleteList = async ()=>{
|
||||
console.log(selectedRowKeys.value)
|
||||
if(selectedRowKeys.value.length == 0)return
|
||||
let boolean:any = await confirmDelete()
|
||||
if(!boolean){
|
||||
return
|
||||
}
|
||||
Https.axiosPost(Https.httpUrls.deleteSubAccount,{deleteIdList:selectedRowKeys.value})
|
||||
.then((rv:any)=>{
|
||||
gettrialList();
|
||||
})
|
||||
}
|
||||
const deleteAagree = async (event:any)=>{
|
||||
let boolean:any = await confirmDelete()
|
||||
if(!boolean){
|
||||
@@ -496,7 +516,6 @@ export default defineComponent({
|
||||
return {
|
||||
...toRefs(filter),
|
||||
...toRefs(filterData),
|
||||
state,
|
||||
columns,
|
||||
renameData,
|
||||
changePage,
|
||||
@@ -508,7 +527,9 @@ export default defineComponent({
|
||||
allUserPoerationsVue,
|
||||
setAagree,
|
||||
downloadTemplate,
|
||||
ExportAccountData,
|
||||
uploadTemplate,
|
||||
deleteList,
|
||||
deleteAagree,
|
||||
};
|
||||
},
|
||||
@@ -530,13 +551,17 @@ export default defineComponent({
|
||||
<style lang="less" scoped>
|
||||
.admin_page .admin_table_search .admin_state {
|
||||
display: flex;
|
||||
width: 75%;
|
||||
width: 70%;
|
||||
flex-wrap: wrap;
|
||||
align-content: flex-start;
|
||||
}
|
||||
.admin_page .admin_table_search .admin_search {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
width: 25%;
|
||||
width: 30%;
|
||||
> .admin_search_item{
|
||||
height: 4rem;
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="admin_state">
|
||||
|
||||
<div class="admin_state_item">
|
||||
<span>Start Date:</span>
|
||||
<span>{{ $t('adminSeDesignDetail.StartDate') }}:</span>
|
||||
<a-range-picker
|
||||
style="width:250px"
|
||||
class="range_picker"
|
||||
@@ -23,11 +23,11 @@
|
||||
</a-range-picker>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>Start Time:</span>
|
||||
<span>{{ $t('adminSeDesignDetail.StartTime') }}:</span>
|
||||
<a-time-range-picker style="width:250px" class="range_picker" valueFormat="HH:mm:ss" v-model:value="rangeTimeValue" />
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>Email:</span>
|
||||
<span>{{ $t('adminSeDesignDetail.Email') }}:</span>
|
||||
<input
|
||||
v-model="email"
|
||||
placeholder="Please enter email"
|
||||
@@ -37,7 +37,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>User Name:</span>
|
||||
<span>{{ $t('adminSeDesignDetail.UserName') }}:</span>
|
||||
<a-select
|
||||
v-model:value="ids"
|
||||
mode="multiple"
|
||||
@@ -79,6 +79,7 @@
|
||||
import { defineComponent, ref, createVNode, computed } from "vue";
|
||||
import { useStore } from "vuex";
|
||||
import { Https } from "@/tool/https";
|
||||
import { useI18n } from 'vue-i18n'
|
||||
export default defineComponent({
|
||||
components: {
|
||||
},
|
||||
@@ -87,10 +88,11 @@ export default defineComponent({
|
||||
let rangePickerValue: any = ref([]);
|
||||
let rangeTimeValue: any = ref([]);
|
||||
let renameData: any = ref({}); //修改名字选中的数据
|
||||
const {t} = useI18n()
|
||||
const columns: any = computed(() => {
|
||||
return [
|
||||
{
|
||||
title: 'Email',
|
||||
title: t('adminSeDesignDetail.Email'),
|
||||
align: "center",
|
||||
dataIndex: "userEmail",
|
||||
key: "userEmail",
|
||||
@@ -98,7 +100,7 @@ export default defineComponent({
|
||||
fixed: "left",
|
||||
},
|
||||
{
|
||||
title: 'User Id',
|
||||
title: t('adminSeDesignDetail.UserId'),
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
dataIndex: "accountId",
|
||||
@@ -106,7 +108,7 @@ export default defineComponent({
|
||||
width:100,
|
||||
},
|
||||
{
|
||||
title: 'User Name',
|
||||
title: t('adminSeDesignDetail.UserName'),
|
||||
align: "center",
|
||||
ellipsis: 200,
|
||||
dataIndex: "userName",
|
||||
@@ -121,7 +123,7 @@ export default defineComponent({
|
||||
// },
|
||||
},
|
||||
{
|
||||
title: 'Frequency',
|
||||
title: t('adminSeDesignDetail.Frequency'),
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
dataIndex: "designTimes",
|
||||
@@ -129,7 +131,7 @@ export default defineComponent({
|
||||
width:100,
|
||||
},
|
||||
{
|
||||
title: 'Create Time',
|
||||
title: t('adminSeDesignDetail.CreateTime'),
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
// width: 150,
|
||||
@@ -141,7 +143,7 @@ export default defineComponent({
|
||||
width:200,
|
||||
},
|
||||
{
|
||||
title: 'Credits',
|
||||
title: t('adminSeDesignDetail.Credits'),
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
// width: 150,
|
||||
|
||||
@@ -137,14 +137,14 @@ export default defineComponent({
|
||||
return str;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: 'Frequency',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
dataIndex: "designTimes",
|
||||
key: "designTimes",
|
||||
width:100,
|
||||
},
|
||||
// {
|
||||
// title: 'Frequency',
|
||||
// align: "center",
|
||||
// ellipsis: true,
|
||||
// dataIndex: "designTimes",
|
||||
// key: "designTimes",
|
||||
// width:100,
|
||||
// },
|
||||
{
|
||||
title: 'Country',
|
||||
align: "center",
|
||||
@@ -177,18 +177,14 @@ export default defineComponent({
|
||||
key: "givenName",
|
||||
width:100,
|
||||
},
|
||||
{
|
||||
title: 'Create Time',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
// width: 150,
|
||||
// minWidth: 100,
|
||||
// maxWidth: 200,
|
||||
// resizable: true,
|
||||
dataIndex: "createTime",
|
||||
key: "createTime",
|
||||
width:200,
|
||||
},
|
||||
// {
|
||||
// title: 'Create Time',
|
||||
// align: "center",
|
||||
// ellipsis: true,
|
||||
// dataIndex: "createTime",
|
||||
// key: "createTime",
|
||||
// width:200,
|
||||
// },
|
||||
{
|
||||
title: 'Credits',
|
||||
align: "center",
|
||||
|
||||
@@ -64,8 +64,9 @@
|
||||
refuse
|
||||
</div>
|
||||
</div>
|
||||
<div v-else-if="column?.Operations">
|
||||
{{ record.status }}
|
||||
<div v-else-if="column?.Operations" class="operate_list">
|
||||
<div class="operate_item">{{ record.status }}</div>
|
||||
<div class="operate_item" @click="editAffiliate(record)">Edit</div>
|
||||
</div>
|
||||
<div v-else-if="column?.openType" @click="openDetail(record,column?.openType)">
|
||||
{{ text }} HDK
|
||||
@@ -74,6 +75,7 @@
|
||||
</a-table>
|
||||
</div>
|
||||
<itemAffiliateDetail ref="itemAffiliateDetail"></itemAffiliateDetail>
|
||||
<editAudit ref="editAudit"></editAudit>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
@@ -81,9 +83,10 @@ import { defineComponent, ref, createVNode, computed } from "vue";
|
||||
import { Https } from "@/tool/https";
|
||||
import { Modal, message } from "ant-design-vue";
|
||||
import itemAffiliateDetail from "./itemAffiliateDetail.vue";
|
||||
import editAudit from "./editAudit.vue";
|
||||
export default defineComponent({
|
||||
components: {
|
||||
itemAffiliateDetail,
|
||||
itemAffiliateDetail,editAudit
|
||||
},
|
||||
setup() {
|
||||
let renameData: any = ref({}); //修改名字选中的数据
|
||||
@@ -199,6 +202,7 @@ export default defineComponent({
|
||||
},
|
||||
])
|
||||
const itemAffiliateDetail = ref()
|
||||
const editAudit = ref()
|
||||
let collectionList: any = ref([]);
|
||||
let status: any = ref(0);
|
||||
const openDetail = (value:any,openType:string)=>{
|
||||
@@ -208,6 +212,9 @@ export default defineComponent({
|
||||
}
|
||||
itemAffiliateDetail.value.init(data)
|
||||
}
|
||||
const editAffiliate = (item:any)=>[
|
||||
editAudit.value.init(item)
|
||||
]
|
||||
return {
|
||||
columns,
|
||||
collectionList,
|
||||
@@ -217,6 +224,8 @@ export default defineComponent({
|
||||
itemAffiliateDetail,
|
||||
state,
|
||||
openDetail,
|
||||
editAudit,
|
||||
editAffiliate,
|
||||
};
|
||||
},
|
||||
data() {
|
||||
|
||||
@@ -0,0 +1,182 @@
|
||||
<template>
|
||||
<div class="editAudit" ref="editAudit"></div>
|
||||
<a-modal
|
||||
class="editAudit_modal generalModel"
|
||||
v-model:visible="operationsModal"
|
||||
:footer="null"
|
||||
:get-container="() => $refs.editAudit"
|
||||
width="50%"
|
||||
height="55rem"
|
||||
:maskClosable="false"
|
||||
:centered="true"
|
||||
:closable="false"
|
||||
:mask="true"
|
||||
wrapClassName="#app"
|
||||
:keyboard="false"
|
||||
>
|
||||
<div class="generalModel_btn">
|
||||
<div class="generalModel_closeIcon" @click.stop="cancelDsign">
|
||||
<svg
|
||||
width="100%" height="100%"
|
||||
viewBox="0 0 46 46"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<circle cx="23" cy="23" r="23" fill="black" fill-opacity="0.3" />
|
||||
<rect
|
||||
x="32.5063"
|
||||
y="12"
|
||||
width="3"
|
||||
height="29"
|
||||
rx="1.5"
|
||||
transform="rotate(45 32.5063 12)"
|
||||
fill="white"
|
||||
/>
|
||||
<rect
|
||||
x="34.6274"
|
||||
y="32.5059"
|
||||
width="3"
|
||||
height="29"
|
||||
rx="1.5"
|
||||
transform="rotate(135 34.6274 32.5059)"
|
||||
fill="white"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal_title_text">
|
||||
<div>{{ title }} </div>
|
||||
</div>
|
||||
<div class="allUserPoeration_center admin_page">
|
||||
<div class="admin_state_item">
|
||||
<span>Commission: <span>*</span></span>
|
||||
<input
|
||||
v-model="commission"
|
||||
placeholder="Please enter Commission"
|
||||
type="text"
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="allUserPoeration_btn admin_page">
|
||||
<div class="admin_search_item" @click="cancelDsign">Close</div>
|
||||
<div class="admin_search_item" @click="setOk">OK</div>
|
||||
</div>
|
||||
</a-modal>
|
||||
<div class="mark_loading" v-show="loadingShow">
|
||||
<a-spin size="large" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
defineComponent,
|
||||
ref,
|
||||
reactive,
|
||||
watch,
|
||||
onMounted,
|
||||
nextTick,
|
||||
toRefs,
|
||||
} from "vue";
|
||||
import { Https } from "@/tool/https";
|
||||
import { Modal, message } from "ant-design-vue";
|
||||
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
|
||||
import md5 from "md5";
|
||||
export default defineComponent({
|
||||
components: {},
|
||||
emits: ["searchHistoryList"],
|
||||
props:{
|
||||
},
|
||||
setup(props, { emit }) {
|
||||
let operations = reactive({
|
||||
operationsModal: false,
|
||||
loadingShow: false,
|
||||
title: "",
|
||||
});
|
||||
let operationsData = reactive({
|
||||
id: "",
|
||||
commission: "",
|
||||
});
|
||||
let init = (data) => {
|
||||
let funStr = 'Edit'
|
||||
console.log(data)
|
||||
operations.operationsModal = true;
|
||||
operations.title = funStr;
|
||||
if (funStr == "Edit") {
|
||||
operationsData.id = data.id;
|
||||
operationsData.commission = data.commissionPercent;
|
||||
}
|
||||
};
|
||||
|
||||
let setEditData = () => {
|
||||
return {
|
||||
id: operationsData.id,
|
||||
commission: operationsData.commission,
|
||||
};
|
||||
};
|
||||
let cancelDsign = () => {
|
||||
operationsData.id = "";
|
||||
operationsData.commission = "";
|
||||
operations.operationsModal = false;
|
||||
};
|
||||
let setOk = () => {
|
||||
let data;
|
||||
data = setEditData();
|
||||
if (
|
||||
!data.commission
|
||||
)
|
||||
return message.warning("Please check the input box marked with *");
|
||||
Https.axiosGet(Https.httpUrls.updateCommission, {params:data}).then(
|
||||
(rv) => {
|
||||
if (rv) {
|
||||
cancelDsign();
|
||||
emit("searchHistoryList");
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
return {
|
||||
...toRefs(operations),
|
||||
...toRefs(operationsData),
|
||||
cancelDsign,
|
||||
init,
|
||||
setOk,
|
||||
};
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
mounted() {},
|
||||
methods: {},
|
||||
});
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
:deep(.editAudit_modal) {
|
||||
.ant-modal-body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style lang="less" scoped>
|
||||
.editAudit_modal {
|
||||
.closeIcon {
|
||||
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;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -50,15 +50,18 @@
|
||||
<div class="allUserPoeration_center admin_page">
|
||||
<div class="admin_state_item">
|
||||
<span>Id: <span>*</span></span>
|
||||
<!-- input不可编辑 -->
|
||||
|
||||
<input
|
||||
v-model="id"
|
||||
placeholder="Please enter user name"
|
||||
placeholder="Please enter user Id"
|
||||
disabled
|
||||
type="text"
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>Amount: <span>*</span></span>
|
||||
<span>Amount: </span>
|
||||
<input
|
||||
v-model="amount"
|
||||
placeholder="Please enter email"
|
||||
@@ -67,7 +70,7 @@
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>Status: <span>*</span></span>
|
||||
<span>Status: </span>
|
||||
<a-select
|
||||
v-model:value="selectStatus"
|
||||
size="large"
|
||||
@@ -159,11 +162,9 @@ export default defineComponent({
|
||||
let data;
|
||||
data = setEditData();
|
||||
if (
|
||||
!data.id ||
|
||||
!data.amount
|
||||
!data.id
|
||||
)
|
||||
return message.warning("Please check the input box marked with *");
|
||||
console.log(123)
|
||||
Https.axiosPost(Https.httpUrls.editReferral, data).then(
|
||||
(rv) => {
|
||||
if (rv) {
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
<editReferral ref="editReferral" :stateList="[...state].splice(1,state.length-1)" @searchHistoryList="searchHistoryList"></editReferral>
|
||||
<editReferral ref="editReferral" :stateList="[...state].filter((_, index) => ![0,3].includes(index))" @searchHistoryList="searchHistoryList"></editReferral>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
@@ -175,8 +175,8 @@ export default defineComponent({
|
||||
value:'Pending',
|
||||
},
|
||||
{
|
||||
label:'Access',
|
||||
value:'Access',
|
||||
label:'Accept',
|
||||
value:'Accept',
|
||||
},
|
||||
{
|
||||
label: "Rejected",
|
||||
@@ -200,7 +200,12 @@ export default defineComponent({
|
||||
dataIndex: "commission",
|
||||
key: "commission",
|
||||
width:200,
|
||||
ellipsis:true
|
||||
ellipsis:true,
|
||||
customRender: (record: any) => {
|
||||
|
||||
return `${record.text}%`
|
||||
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "User Name",
|
||||
|
||||
@@ -212,6 +212,10 @@ export default defineComponent({
|
||||
{
|
||||
label: "userInEvent",
|
||||
value: "4",
|
||||
},
|
||||
{
|
||||
label: "Edu Admin",
|
||||
value: "7",
|
||||
},
|
||||
]);
|
||||
let renameData: any = ref({}); //修改名字选中的数据
|
||||
|
||||
@@ -91,7 +91,6 @@
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="admin_state_item">
|
||||
<span>Country:</span>
|
||||
<input
|
||||
@@ -103,7 +102,28 @@
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="admin_state_item">
|
||||
<span>Organization Name:</span>
|
||||
<input
|
||||
:readonly="title != 'Add'"
|
||||
:class="{active:title != 'Add'}"
|
||||
v-model="organizationName"
|
||||
placeholder="Please enter Organization Name"
|
||||
type="text"
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
<div class="admin_state_item">
|
||||
<span>Sub Account Num:</span>
|
||||
<input
|
||||
:readonly="title != 'Add'"
|
||||
:class="{active:title != 'Add'}"
|
||||
v-model="subAccountNum"
|
||||
placeholder="Please enter Sub Account Num"
|
||||
type="number"
|
||||
style="width: 250px"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="allUserPoeration_btn admin_page">
|
||||
<div class="admin_search_item" @click="cancelDsign">
|
||||
@@ -144,6 +164,8 @@ export default defineComponent({
|
||||
systemUser:'',
|
||||
credits:'',
|
||||
country:'',
|
||||
organizationName:'',
|
||||
subAccountNum:0,
|
||||
})
|
||||
let state = ref([
|
||||
{
|
||||
@@ -169,6 +191,8 @@ export default defineComponent({
|
||||
operations.title = funStr
|
||||
if(funStr == 'Add') operations.operationsEdit = false
|
||||
if(funStr == 'Edit'){
|
||||
operationsData.organizationName = data.organizationName
|
||||
operationsData.subAccountNum = data.subAccountNum?data.subAccountNum:0
|
||||
let startTime = data.validStartTime?formatTime(data.validStartTime / 1000,"YYYY-MM-DDThh:mm:ss"):''
|
||||
let endTime = data.validEndTime?formatTime(data.validEndTime / 1000,"YYYY-MM-DDThh:mm:ss"):''
|
||||
operationsData.accountId=data.id
|
||||
@@ -207,7 +231,9 @@ export default defineComponent({
|
||||
"userEmail": operationsData.userEmail,
|
||||
"userName": operationsData.userName,
|
||||
"validEndTime": setTime(operationsData.validEndTime),
|
||||
"validStartTime": setTime(operationsData.validStartTime)
|
||||
"validStartTime": setTime(operationsData.validStartTime),
|
||||
"organizationName": operationsData.organizationName?operationsData.organizationName:null,
|
||||
"subAccountNum": operationsData.subAccountNum,
|
||||
}
|
||||
}
|
||||
let setEditData = ()=>{
|
||||
@@ -293,6 +319,11 @@ export default defineComponent({
|
||||
.closeIcon {
|
||||
z-index: 2;
|
||||
}
|
||||
> .admin_state_item{
|
||||
> span{
|
||||
width: 15rem;
|
||||
}
|
||||
}
|
||||
.allUserPoeration_btn{
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
@@ -20,6 +20,8 @@ import { SelectionManager } from "./managers/selection/SelectionManager";
|
||||
import { RedGreenModeManager } from "./managers/RedGreenModeManager";
|
||||
import texturePresetManager from "./managers/brushes/TexturePresetManager";
|
||||
import { BrushStore } from "./store/BrushStore";
|
||||
import cuowuImg from '@/assets/images/homePage/cuowu.svg'
|
||||
|
||||
|
||||
// import { MinimapManager } from "./managers/minimap/MinimapManager";
|
||||
|
||||
@@ -33,7 +35,7 @@ import LiquifyPanel from "./components/LiquifyPanel.vue"; // 引入液化编辑
|
||||
import SelectionPanel from "./components/SelectionPanel.vue"; // 引入选区面板
|
||||
import { LayerType, OperationType } from "./utils/layerHelper.js";
|
||||
import { ToolManager } from "./managers/toolManager.js";
|
||||
// import { fabric } from "fabric-with-all";
|
||||
import { fabric } from "fabric-with-all";
|
||||
import {
|
||||
uploadImageAndCreateLayer,
|
||||
loadImageUrlToLayer,
|
||||
@@ -402,6 +404,11 @@ onMounted(async () => {
|
||||
|
||||
canvasManagerLoaded.value = true;
|
||||
|
||||
// 添加删除按钮
|
||||
// if(!fabric.Object.prototype.controls.deleteControl)addRemoveBtn(removeLayer)
|
||||
addRemoveBtn(removeLayer)
|
||||
|
||||
|
||||
// 触发组件初始化事件
|
||||
nextTick(() => {
|
||||
// 确保所有依赖都已加载完成
|
||||
@@ -490,6 +497,7 @@ onBeforeUnmount(() => {
|
||||
liquifyManager = null;
|
||||
selectionManager = null;
|
||||
redGreenModeManager = null;
|
||||
// fabric.Object.prototype.controls.deleteControl = undefined;
|
||||
|
||||
// 移除window resize事件监听
|
||||
// window.removeEventListener("resize", handleWindowResize);
|
||||
@@ -604,6 +612,37 @@ function moveLayerDown(layerId) {
|
||||
layerManager.moveLayer(layerId, "down");
|
||||
}
|
||||
|
||||
function addRemoveBtn(fun){//添加删除按钮
|
||||
const deleteIcon = cuowuImg
|
||||
// 创建删除图片元素
|
||||
let deleteImg = document.createElement('img')
|
||||
deleteImg.src = deleteIcon
|
||||
function renderIcon(icon) {
|
||||
return function (ctx, left, top, styleOverride, fabricObject) {
|
||||
var size = this.cornerSize;
|
||||
ctx.save();
|
||||
ctx.translate(left, top);
|
||||
ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));
|
||||
ctx.drawImage(icon, -size/3, -size/3, size/1.5, size/1.5);
|
||||
ctx.restore();
|
||||
}
|
||||
}
|
||||
fabric.Object.prototype.controls.deleteControl = new fabric.Control({
|
||||
x: 0.5,
|
||||
y: -0.5,
|
||||
offsetY: -16,
|
||||
offsetX: 16,
|
||||
cursorStyle: 'pointer',
|
||||
mouseUpHandler:deleteFun,
|
||||
render: renderIcon(deleteImg),
|
||||
cornerSize: 24
|
||||
})
|
||||
}
|
||||
|
||||
function deleteFun(){
|
||||
removeLayer(layerManager.activeLayerId.value)
|
||||
}
|
||||
|
||||
function removeLayer(layerId) {
|
||||
// Check if this is the last layer - prevent deletion
|
||||
if (layers.value.length <= 2) {
|
||||
|
||||
@@ -141,7 +141,7 @@ const allImages = computed(() => {
|
||||
|
||||
// 计算属性:根据选择的分类过滤图片
|
||||
const filteredImages = computed(() => {
|
||||
if (selectedCategory.value === "全部") {
|
||||
if (selectedCategory.value === "All" || selectedCategory.value === "全部") {
|
||||
return allImages.value;
|
||||
}
|
||||
|
||||
|
||||
@@ -280,6 +280,14 @@ export default defineComponent({
|
||||
if(detailDom.detailRight?.privewDetail)await (detailDom.detailRight as any).privewDetail()
|
||||
let gradient = null
|
||||
let newData = list[i]?.newDetail?.[detailData.currentDetailType]
|
||||
// newData[0].location=[
|
||||
// -233.13985,
|
||||
// 406.90964
|
||||
// ]
|
||||
// newData[0].scale=[
|
||||
// 0.5,
|
||||
// 0.35822305
|
||||
// ]
|
||||
let isCurrent = list[i].id == detailData?.selectDetail?.id
|
||||
let color = (detailData.currentDetailType == 'color' && isCurrent && newData?.rgba?.r)?(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){
|
||||
@@ -293,12 +301,20 @@ export default defineComponent({
|
||||
maskMinioUrl:list[i]?.maskMinioUrl,
|
||||
// maskUrl:'',
|
||||
maskUrl:list[i].maskUrl,
|
||||
// offset:[
|
||||
// -233.13985,
|
||||
// 406.90964
|
||||
// ],
|
||||
offset,
|
||||
partialDesign:detailData.isEditPattern.value?list[i].partialDesign:{},
|
||||
path:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.minIOPath:list[i].minIOPath,
|
||||
printObject:(newData && detailData.currentDetailType == 'print' && isCurrent)?{prints:newData}:list[i].printObject?list[i].printObject:{prints:[]},
|
||||
priority,
|
||||
scale,
|
||||
// scale:[
|
||||
// 0.5,
|
||||
// 0.35822305
|
||||
// ],
|
||||
scale:[scale[0]?scale[0]:1,scale[1]?scale[1]:1],
|
||||
type:(newData && detailData.currentDetailType == 'sketch' && isCurrent)?newData.level2Type || newData.categoryValue:list[i].type,
|
||||
sketchString:list[i].sketchString?list[i].sketchString:'',
|
||||
trims:(newData && detailData.currentDetailType == 'element' && isCurrent)?{prints:newData}:list[i].trims?list[i].trims:{prints:[]},
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<editCanvas v-if="canvasLoad" :config="canvasConfig"
|
||||
@canvasInit="canvasInit"
|
||||
@changeCanvas="changeCanvas"
|
||||
:clothingImageUrl="selectDetail.undividedLayer"
|
||||
:clothingImageUrl="selectDetail.undividedLayer || selectDetail.path"
|
||||
showFixedLayer
|
||||
:canvasJSON="canvasJSON"
|
||||
:clothing-image-opts="{
|
||||
@@ -142,7 +142,7 @@ export default defineComponent({
|
||||
}else{
|
||||
if(detailData.currentView === 'redGreenExample'){
|
||||
nextTick(()=>{
|
||||
setCanvas(detailData.selectDetail.undividedLayer).then(()=>{
|
||||
setCanvas(detailData.selectDetail.undividedLayer || detailData.selectDetail.path).then(()=>{
|
||||
detailData.canvasLoad = true
|
||||
})
|
||||
})
|
||||
@@ -158,7 +158,7 @@ export default defineComponent({
|
||||
const privewDetail = async (oldSelectDetail = detailData.selectDetail)=>{
|
||||
if(!detailDom.editCanvas)return
|
||||
return new Promise((res,reject)=>{
|
||||
detailDom.editCanvas.exportImage({isContainBg:false,isContainFixed:true}).then((rv)=>{
|
||||
detailDom.editCanvas.exportImage({isContainBg:false,isContainFixed:false}).then((rv)=>{
|
||||
if(oldSelectDetail?.partialDesign)oldSelectDetail.partialDesign.partialDesignBase64 = rv
|
||||
res('')
|
||||
})
|
||||
@@ -271,9 +271,8 @@ export default defineComponent({
|
||||
})
|
||||
onMounted(()=>{
|
||||
nextTick(async ()=>{
|
||||
console.log(JSON.parse(JSON.stringify(detailData.selectDetail)))
|
||||
detailData.isShowMark = true
|
||||
if(detailData.selectDetail.canvasId){
|
||||
detailData.isShowMark = true
|
||||
await new Promise((resolve, reject) => {
|
||||
let value = {
|
||||
module:'designItemDetail',
|
||||
@@ -289,8 +288,7 @@ export default defineComponent({
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
setCanvas(detailData.selectDetail.undividedLayer).then(()=>{
|
||||
setCanvas(detailData.selectDetail.undividedLayer || detailData.selectDetail.path).then(()=>{
|
||||
detailData.canvasLoad = true
|
||||
})
|
||||
})
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
<img crossOrigin="anonymous" :src="item?.path" :style="{transform:`rotateZ(${item.pattern?.transform?.rotateZ}deg)`}" class="designOpenrtion_imgItme" draggable="false">
|
||||
</div>
|
||||
</div>
|
||||
<!-- <img :src="selectDetail.path" alt="" class="designOpenrtion_sketch" ref="sketchImg"> -->
|
||||
<img :src="selectDetail?.undividedLayer?selectDetail.undividedLayer:selectDetail.path" alt="" class="designOpenrtion_sketch" ref="sketchImg">
|
||||
<div class="designOpenrtion_btn">
|
||||
<ul v-if="overallSingle" v-for="item,index in printStyleList[type][stateOverallSingle]" :key="item" :class="{active:item?.pattern.designOpenrtionBtn?item?.pattern.designOpenrtionBtn:false}" class="designOpenrtion_Mousingle" :style="item?.pattern.style" @mousedown.stop="itemMoveMousedown(index,getMousePosition($event,false))" @touchstart.passive="itemMoveMousedown(index,getMousePosition($event,true))">
|
||||
@@ -357,10 +358,26 @@ export default defineComponent({
|
||||
editPrintElementData.overallSingle = state
|
||||
}
|
||||
}
|
||||
img.src = editPrintElementData.selectDetail.undividedLayer
|
||||
// undividedLayer
|
||||
//计算宽高使用editPrintElementData.selectDetail.path
|
||||
// img.src = editPrintElementData.selectDetail.path
|
||||
img.src = editPrintElementData.selectDetail.undividedLayer?editPrintElementData.selectDetail.undividedLayer:editPrintElementData.selectDetail.path
|
||||
})
|
||||
}
|
||||
watch(()=>editPrintElementData.selectDetail?.id,(newVal)=>{
|
||||
// watch(()=>editPrintElementData.selectDetail?.id,(newVal)=>{
|
||||
// if(!newVal)return
|
||||
// editPrintElementData.printStyleList[props.type] = {
|
||||
// single:[],
|
||||
// overall:[],
|
||||
// }
|
||||
// setPosition()
|
||||
// },{immediate: true,})
|
||||
watch(()=>editPrintElementData.currentPrintElement,(newVal)=>{
|
||||
if(newVal){
|
||||
addPrintELement(newVal)
|
||||
}
|
||||
})
|
||||
watch(()=>((editPrintElementData.selectDetail?.undividedLayer || editPrintElementData.selectDetail?.id)),(newVal)=>{
|
||||
if(!newVal)return
|
||||
editPrintElementData.printStyleList[props.type] = {
|
||||
single:[],
|
||||
@@ -368,11 +385,6 @@ export default defineComponent({
|
||||
}
|
||||
setPosition()
|
||||
},{immediate: true,})
|
||||
watch(()=>editPrintElementData.currentPrintElement,(newVal)=>{
|
||||
if(newVal){
|
||||
addPrintELement(newVal)
|
||||
}
|
||||
})
|
||||
//设置移动
|
||||
const itemMoveMousedown = (index:number,event:any)=>{
|
||||
if (event.target.tagName === 'IMG' || event.target.nodeName === 'IMG')return
|
||||
|
||||
@@ -375,6 +375,9 @@ export default defineComponent({
|
||||
canvas.dispose();
|
||||
showPayOrder.value = false
|
||||
}
|
||||
onBeforeUnmount(()=>{
|
||||
fabric.Object.prototype.controls.deleteControl = null
|
||||
})
|
||||
return {
|
||||
presentState,
|
||||
showPayOrder,
|
||||
|
||||
@@ -156,7 +156,7 @@
|
||||
:placeholder="$t('Renew.promotionCode')"
|
||||
v-model="item.promotionData.code"
|
||||
/>
|
||||
<div style="cursor: pointer" @click="examine(item)">
|
||||
<div style="cursor: pointer; background-color: #000; font-size: 1.2rem; color: #fff; padding: 0 .5rem;" @click="examine(item)">
|
||||
{{ $t("Renew.use") }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -268,7 +268,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, computed, reactive, toRefs, onMounted } from "vue";
|
||||
import { defineComponent, computed, reactive, toRefs, onMounted, onBeforeUnmount } from "vue";
|
||||
import { message } from "ant-design-vue";
|
||||
import payMethod from "@/component/Pay/payMethod.vue";
|
||||
import { useStore } from "vuex";
|
||||
@@ -297,6 +297,22 @@ export default defineComponent({
|
||||
let renewData = reactive({
|
||||
personage: [
|
||||
{
|
||||
price: "100",
|
||||
sellWell: true,
|
||||
activity: false, //活动打折
|
||||
type: {
|
||||
value: "EcoMonth",
|
||||
label: computed(()=>t("Renew.Monthly")),
|
||||
},
|
||||
PaymentType: "CreditCard",
|
||||
promotionData: {
|
||||
code: "",
|
||||
error: "",
|
||||
str: "",
|
||||
price: "",
|
||||
},
|
||||
},
|
||||
{
|
||||
price: "500",
|
||||
sellWell: true,
|
||||
activity: false, //活动打折
|
||||
@@ -388,10 +404,11 @@ export default defineComponent({
|
||||
});
|
||||
const init = () => {
|
||||
renew.renewModel = true;
|
||||
renewData.current = renewData.personage[0];
|
||||
renewData.current = renewData.personage[1];
|
||||
};
|
||||
const cancelDsign = () => {
|
||||
renew.renewModel = false;
|
||||
store.dispatch('getLangType')
|
||||
};
|
||||
const setPaymentType = (str: any) => {
|
||||
renewData.current.PaymentType = str;
|
||||
@@ -570,6 +587,8 @@ export default defineComponent({
|
||||
color: #fff;
|
||||
padding: 4rem 3.2rem;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
> .video{
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
@@ -598,6 +617,10 @@ export default defineComponent({
|
||||
> .content {
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
flex: 1;
|
||||
align-content: center;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
> .benefitsItem {
|
||||
display: flex;
|
||||
width: 50%;
|
||||
@@ -655,7 +678,7 @@ export default defineComponent({
|
||||
margin-bottom: 1rem;
|
||||
border-radius: 1rem;
|
||||
overflow: hidden;
|
||||
border: 2px solid #eaecf0;
|
||||
border: 1.5px solid #eaecf0;
|
||||
|
||||
> .popular {
|
||||
background: #2d9f75;
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
<span v-if="scaleImageList[scaleImageIndex]?.resultType == 'ToProductImage'">{{$t('ProductImg.MagicTools')}}</span>
|
||||
<span v-if="scaleImageList[scaleImageIndex]?.resultType == 'Relight'">{{$t('ProductImg.relightingTool')}}</span>
|
||||
</div>
|
||||
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<!-- <div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.SelectionFunction')}}</span>
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- 暂时去掉 -->
|
||||
<!-- <div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_Direction generalModel_state_item" style="margin-bottom: 1rem;">
|
||||
<a-select size="large" style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select>
|
||||
|
||||
@@ -69,6 +69,7 @@
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
<div class="info">{{ $t('brandDNA.LastCompletionTime') }}: {{finishTime}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
@@ -173,6 +174,7 @@ export default defineComponent({
|
||||
},
|
||||
isNoData:false,//如果数据为空就不加载
|
||||
isNull:true,
|
||||
finishTime:'',
|
||||
})
|
||||
const dataDom = reactive({
|
||||
Cropper:null as any,
|
||||
@@ -308,7 +310,7 @@ export default defineComponent({
|
||||
data.logoUrl = value.minioUrl
|
||||
data.minioUrl = value.brandLogo
|
||||
clearInterval(data.getProgressTime)
|
||||
getProgress()
|
||||
getProgress(true)
|
||||
// getLibraryList()
|
||||
data.isNoData = false
|
||||
data.currentPage = 0
|
||||
@@ -344,25 +346,30 @@ export default defineComponent({
|
||||
}
|
||||
const compute = ()=>{
|
||||
Https.axiosPost(Https.httpUrls.productImageInitialize,{brandId:data.detail.id}).then((res:any)=>{
|
||||
getProgress()
|
||||
getProgress(false)
|
||||
}).catch((err:any)=>{
|
||||
// console.log(err)
|
||||
})
|
||||
}
|
||||
const getProgress = ()=>{
|
||||
const getProgress = (boolean:boolean)=>{
|
||||
console.log(boolean)
|
||||
setTimeout
|
||||
if(props.selectCode != 'MyBrand'){
|
||||
clearTimeout(data.getProgressTime)
|
||||
return
|
||||
}
|
||||
Https.axiosPost(Https.httpUrls.getInitializeProgress,{brandId:data.detail.id}).then((res:any)=>{
|
||||
data.finishTime = res.computeTime
|
||||
data.schedule.num = res.percent
|
||||
data.schedule.state = res.analyzed
|
||||
if(res.percent == 1 && !boolean){
|
||||
message.success(t('brandDNA.Finish'))
|
||||
}
|
||||
if(res.percent == 1 || !res.analyzed){
|
||||
return clearTimeout(data.getProgressTime)
|
||||
}
|
||||
data.getProgressTime = setTimeout(()=>{
|
||||
getProgress()
|
||||
getProgress(boolean)
|
||||
},5000)
|
||||
// analyzed
|
||||
|
||||
@@ -515,6 +522,11 @@ export default defineComponent({
|
||||
position: relative;
|
||||
padding-right: 2rem;
|
||||
}
|
||||
> .info{
|
||||
color: #5f5f5f;
|
||||
font-size: 1.2rem;
|
||||
margin-top: .8rem;
|
||||
}
|
||||
.gallery_btn{
|
||||
&.loading{
|
||||
pointer-events: none;
|
||||
|
||||
@@ -144,7 +144,8 @@
|
||||
class="forget_password_content_block"
|
||||
@click="forgetPasswordLastStepFun()"
|
||||
>
|
||||
<i class="fi fi-br-arrow-left"></i>
|
||||
<!-- <i class="fi fi-br-arrow-left"></i> -->
|
||||
<i class="fi fi-br-angle-left"></i>
|
||||
<span class="forget_password_content_title">Retrieve password</span>
|
||||
</div>
|
||||
<div v-show="frogetPasswordStep === 1">
|
||||
@@ -849,6 +850,24 @@ export default defineComponent({
|
||||
|
||||
.forget_password_content_block {
|
||||
cursor: pointer;
|
||||
font-size: 3.6rem;
|
||||
font-weight: 500;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 1.2rem;
|
||||
> i {
|
||||
margin-right: 2.8rem;
|
||||
font-size: 2rem;
|
||||
display: flex;
|
||||
cursor: pointer;
|
||||
align-items: center;
|
||||
width: 4.6rem;
|
||||
height: 4.6rem;
|
||||
border-radius: 1.2rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
border: 1px solid #D8DADC;
|
||||
}
|
||||
}
|
||||
|
||||
.fi-br-arrow-left {
|
||||
|
||||
@@ -137,7 +137,8 @@
|
||||
>
|
||||
<!-- <span class="icon iconfont fi-br-arrow-left"></span
|
||||
> -->
|
||||
<i class="fi fi-br-arrow-left"></i>
|
||||
<!-- <i class="fi fi-br-arrow-left"></i> -->
|
||||
<i class="fi fi-br-angle-left"></i>
|
||||
<span class="forget_password_content_title">Retrieve password</span>
|
||||
</div>
|
||||
<div v-show="frogetPasswordStep === 1">
|
||||
@@ -835,6 +836,24 @@ export default defineComponent({
|
||||
.forget_password_content_block {
|
||||
cursor: pointer;
|
||||
text-align: left;
|
||||
font-size: 3.6rem;
|
||||
font-weight: 500;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 1.2rem;
|
||||
> i {
|
||||
margin-right: 2.8rem;
|
||||
font-size: 2rem;
|
||||
display: flex;
|
||||
cursor: pointer;
|
||||
align-items: center;
|
||||
width: 4.6rem;
|
||||
height: 4.6rem;
|
||||
border-radius: 1.2rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
border: 1px solid #D8DADC;
|
||||
}
|
||||
}
|
||||
|
||||
.fi-br-arrow-left {
|
||||
|
||||
@@ -144,7 +144,8 @@
|
||||
class="forget_password_content_block"
|
||||
@click="forgetPasswordLastStepFun()"
|
||||
>
|
||||
<i class="fi fi-br-arrow-left"></i>
|
||||
<!-- <i class="fi fi-br-arrow-left"></i> -->
|
||||
<i class="fi fi-br-angle-left"></i>
|
||||
<span class="forget_password_content_title">Retrieve password</span>
|
||||
</div>
|
||||
<div v-show="frogetPasswordStep === 1">
|
||||
@@ -852,6 +853,24 @@ export default defineComponent({
|
||||
|
||||
.forget_password_content_block {
|
||||
cursor: pointer;
|
||||
font-size: 3.6rem;
|
||||
font-weight: 500;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 1.2rem;
|
||||
> i {
|
||||
margin-right: 2.8rem;
|
||||
font-size: 2rem;
|
||||
display: flex;
|
||||
cursor: pointer;
|
||||
align-items: center;
|
||||
width: 4.6rem;
|
||||
height: 4.6rem;
|
||||
border-radius: 1.2rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
border: 1px solid #D8DADC;
|
||||
}
|
||||
}
|
||||
|
||||
.fi-br-arrow-left {
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { defineComponent, ref, reactive, toRefs, onMounted } from "vue";
|
||||
import { defineComponent, ref, reactive, toRefs, onMounted, onBeforeUnmount } from "vue";
|
||||
import { Https } from "@/tool/https";
|
||||
import { isEmail } from "@/tool/util";
|
||||
import { message } from "ant-design-vue";
|
||||
@@ -195,6 +195,7 @@ export default defineComponent({
|
||||
};
|
||||
const cancelDsign = () => {
|
||||
payMethod.payMethodModel = false;
|
||||
store.dispatch('getLangType')
|
||||
};
|
||||
const payAffirm = () => {
|
||||
if (!payMethodData.clause) {
|
||||
@@ -286,6 +287,7 @@ export default defineComponent({
|
||||
setPaidBack();
|
||||
emit("completePayment");
|
||||
};
|
||||
|
||||
return {
|
||||
store,
|
||||
...toRefs(payMethod),
|
||||
|
||||
@@ -31,12 +31,12 @@
|
||||
<span v-if="scaleImageList[scaleImageIndex]?.resultType == 'ToProductImage'">{{$t('ProductImg.MagicTools')}}</span>
|
||||
<span v-if="scaleImageList[scaleImageIndex]?.resultType == 'Relight'">{{$t('ProductImg.relightingTool')}}</span>
|
||||
</div>
|
||||
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<!-- <div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.SelectionFunction')}}</span>
|
||||
</div>
|
||||
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'Relight'" class="productImg_content_item_Direction generalModel_state_item" style="margin-bottom: 1rem;">
|
||||
<a-select size="large" style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select>
|
||||
</div>
|
||||
</div> -->
|
||||
<div v-show="scaleImageList[scaleImageIndex]?.resultType == 'ToProductImage' && speedData.value != 'flux'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.Similarity')}}</span>
|
||||
</div>
|
||||
|
||||
@@ -650,6 +650,7 @@ export default defineComponent({
|
||||
}
|
||||
const setDesignItemStyle = ()=>{
|
||||
posiitonData.value.generateElList = []
|
||||
if(!collItemDom.value)return
|
||||
let elArr = collItemDom.value.querySelectorAll('.content_img_GetWidth')
|
||||
designCollectionList.value.forEach((item:any,index:any)=>{
|
||||
posiitonData.value.generateElList.unshift({
|
||||
|
||||
@@ -329,9 +329,23 @@ export default defineComponent({
|
||||
});
|
||||
})
|
||||
}
|
||||
const historyChooseData = (dataValue:any)=>{
|
||||
const historyChooseData = async (dataValue:any)=>{
|
||||
let ifMoodTemplateUrl = true
|
||||
if(dataValue?.moodBoard?.moodTemplateUrl){
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
let img = new Image()
|
||||
img.src = dataValue.moodBoard?.moodTemplateUrl
|
||||
img.onload = ()=>{
|
||||
resolve()
|
||||
}
|
||||
img.onerror = ()=>{
|
||||
ifMoodTemplateUrl = false
|
||||
resolve()
|
||||
}
|
||||
})
|
||||
}
|
||||
let collectionData = {
|
||||
disposeMoodboard: dataValue.moodBoard?.moodTemplateId?[{
|
||||
disposeMoodboard: (dataValue.moodBoard?.moodTemplateId && ifMoodTemplateUrl)?[{
|
||||
id:dataValue.moodBoard?.moodTemplateId,
|
||||
imgUrl:dataValue.moodBoard?.moodTemplateUrl,
|
||||
resData:{
|
||||
|
||||
@@ -29,7 +29,6 @@ import {message} from 'ant-design-vue'
|
||||
import { Https } from "@/tool/https";
|
||||
import { useStore } from "vuex";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import canvasGeneral from "@/tool/canvasGeneralCopy";
|
||||
import editCanvas from "@/component/Canvas/CanvasEditor/index.vue";
|
||||
import FemaleAdultModel from "@/assets/images/homePage/FemaleAdultModel.png"
|
||||
import FemaleChildModel from "@/assets/images/homePage/FemaleChildModel.png"
|
||||
@@ -156,7 +155,6 @@ export default defineComponent({
|
||||
onBeforeUnmount(()=>{
|
||||
data.canvasLoad = false
|
||||
data.isHiddenModel = true
|
||||
// canvasGeneral.canvasClear()
|
||||
})
|
||||
return {
|
||||
...toRefs(data),
|
||||
|
||||
@@ -75,9 +75,9 @@
|
||||
</a-slider>
|
||||
<input style="margin-left: 2rem;" type="number" readonly v-model="similarity">
|
||||
</div>
|
||||
<div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<!-- <div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_title productImg_content_item_title_similarity">
|
||||
<span>{{$t('ProductImg.SelectionFunction')}}</span>
|
||||
</div>
|
||||
</div> -->
|
||||
<!-- 暂时去掉 -->
|
||||
<!-- <div v-show="productimgMenu.value == 'Relight'" class="productImg_content_item_Direction generalModel_state_item">
|
||||
<a-select size="large" style="width: 100%;" v-model:value="speedData.value" :options="speedList" :field-names="{ label: 'relightLabel', value: 'value' }"></a-select>
|
||||
@@ -157,11 +157,11 @@
|
||||
<img
|
||||
class="guide"
|
||||
v-if="locale == 'ENGLISH' && likeList[productimgMenu.value] == 0 && generateList[productimgMenu.value] == 0"
|
||||
:src="'/src/assets/images/homePage/toolsGuide/' + (productimgMenu.value == 'ToProductImage'?'productEN':'relightEN') + '.png'" alt="">
|
||||
:src="'/image/toolsGuide/' + (productimgMenu.value == 'ToProductImage'?'productEN':'relightEN') + '.png'" alt="">
|
||||
<img
|
||||
class="guide"
|
||||
v-else-if="likeList[productimgMenu.value] == 0 && generateList[productimgMenu.value] == 0"
|
||||
:src="'/src/assets/images/homePage/toolsGuide/' + (productimgMenu.value == 'ToProductImage'?'productCN':'relightCN') + '.png'" alt="">
|
||||
:src="'/image/toolsGuide/' + (productimgMenu.value == 'ToProductImage'?'productCN':'relightCN') + '.png'" alt="">
|
||||
<generalDrag ref="generalDragLeft" :type="productimgMenu.value" :isCopy="!isDesignPage" @setBtn="selectSetBtn" :isDelete="false" :isLike="true" :list="likeList[productimgMenu.value]"></generalDrag>
|
||||
</div>
|
||||
<!-- </div> -->
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<div>{{ item?.custom }}</div>
|
||||
<span style="font-size: 1.4rem;">{{ item?.customInfo }}</span>
|
||||
</div>
|
||||
<ul class="product_detail" :class="{'academic':item.type == 'academic'}">
|
||||
<ul class="product_detail" :class="{'academic':(item.type == 'academic' && !isSelectSuccessively)}">
|
||||
<li v-for="detailItem in item?.detailList">{{ detailItem }}</li>
|
||||
</ul>
|
||||
<div class="gallery_btn gallery_btn_radius" v-if="item?.btn != 'Contact us'" @click="createAccount">{{ item?.btn }}</div>
|
||||
@@ -64,8 +64,8 @@
|
||||
img: '/image/homeIntroduct/personal.png',
|
||||
type:'personal',
|
||||
info: "您的AI时尚设计助手",
|
||||
price: '¥100',
|
||||
detail: "每月·50积分",
|
||||
price: 'HK$100',
|
||||
detail: "每月·500积分",
|
||||
highlight: "免费试用5天",
|
||||
discounts: '9折优惠',
|
||||
detailList: [
|
||||
@@ -82,7 +82,7 @@
|
||||
img: '/image/homeIntroduct/personal.png',
|
||||
type:'personal',
|
||||
info: "您的AI时尚设计助手",
|
||||
price: '¥500',
|
||||
price: 'HK$500',
|
||||
detail: "每月·3500积分",
|
||||
highlight: "免费试用5天",
|
||||
discounts: '9折优惠',
|
||||
@@ -107,10 +107,12 @@
|
||||
discounts: '',
|
||||
detailList: [
|
||||
'灵活的自定义程序以满足学校需求',
|
||||
"项目期间每月信用额度自动续期",
|
||||
'可在用户之间灵活共享和分配账户信用额度',
|
||||
'AI辅助设计教学功能',
|
||||
'支持草图创意和设计灵感教学',
|
||||
'基础3D设计功能',
|
||||
"从设计灵感、草图创作到完整时装系列的尖端教学工具",
|
||||
"基本3D设计功能",
|
||||
"客户与技术支援",
|
||||
],
|
||||
btn: '联系我们',
|
||||
},
|
||||
@@ -121,7 +123,7 @@
|
||||
img: '/image/homeIntroduct/personal.png',
|
||||
type:'personal',
|
||||
info: "您的AI时尚设计助手",
|
||||
price: '¥5,000',
|
||||
price: 'HK$5,000',
|
||||
detail: "每年·50000积分",
|
||||
highlight: "免费试用5天",
|
||||
discounts: '9折优惠',
|
||||
@@ -145,10 +147,13 @@
|
||||
highlight: "",
|
||||
discounts: '',
|
||||
detailList: [
|
||||
'全校共享积分额度',
|
||||
'灵活的自定义程序以满足学校需求',
|
||||
"项目期间每月信用额度自动续期",
|
||||
'可在用户之间灵活共享和分配账户信用额度',
|
||||
'AI辅助设计教学功能',
|
||||
'支持草图创意和设计灵感教学',
|
||||
'基础3D设计功能',
|
||||
"从设计灵感、草图创作到完整时装系列的尖端教学工具",
|
||||
"基本3D设计功能",
|
||||
"客户与技术支援",
|
||||
],
|
||||
btn: '联系我们',
|
||||
},
|
||||
|
||||
@@ -277,7 +277,8 @@
|
||||
>
|
||||
<!-- <span class="icon iconfont fi-br-arrow-left"></span
|
||||
> -->
|
||||
<i class="fi fi-br-arrow-left"></i>
|
||||
<!-- <i class="fi fi-br-arrow-left"></i> -->
|
||||
<i class="fi fi-br-angle-left"></i>
|
||||
<span class="forget_password_content_title">Retrieve password</span>
|
||||
</div>
|
||||
<div v-show="frogetPasswordStep === 1">
|
||||
@@ -1092,6 +1093,24 @@ export default defineComponent({
|
||||
|
||||
.forget_password_content_block {
|
||||
cursor: pointer;
|
||||
font-size: 3.6rem;
|
||||
font-weight: 500;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 1.2rem;
|
||||
> i {
|
||||
margin-right: 2.8rem;
|
||||
font-size: 2rem;
|
||||
display: flex;
|
||||
cursor: pointer;
|
||||
align-items: center;
|
||||
width: 4.6rem;
|
||||
height: 4.6rem;
|
||||
border-radius: 1.2rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
border: 1px solid #D8DADC;
|
||||
}
|
||||
}
|
||||
|
||||
.fi-br-arrow-left {
|
||||
|
||||
@@ -23,7 +23,6 @@ import {message} from 'ant-design-vue'
|
||||
import { Https } from "@/tool/https";
|
||||
import { useStore } from "vuex";
|
||||
import { useI18n } from "vue-i18n";
|
||||
import canvasGeneral from "@/tool/canvasGeneralCopy";
|
||||
import editCanvas from "@/component/Canvas/CanvasEditor/index.vue";
|
||||
|
||||
|
||||
@@ -154,7 +153,6 @@ export default defineComponent({
|
||||
});
|
||||
onBeforeUnmount(()=>{
|
||||
data.canvasLoad = false
|
||||
// canvasGeneral.canvasClear()
|
||||
})
|
||||
return {
|
||||
...toRefs(data),
|
||||
|
||||
Reference in New Issue
Block a user