修复detail添加两件相同的sketch会有问题,优化教育版管理员页面

This commit is contained in:
X1627315083
2025-09-10 16:33:40 +08:00
parent 1d524eeef9
commit 7e6a3b1144
14 changed files with 62 additions and 53 deletions

View File

@@ -111,10 +111,12 @@ import { Modal, message } from "ant-design-vue";
import { ExclamationCircleOutlined } from "@ant-design/icons-vue";
import { formatTime, isEmail } from "@/tool/util";
import md5 from "md5";
import { useI18n } from 'vue-i18n'
export default defineComponent({
components: {},
emits: ["searchHistoryList"],
setup(props, { emit }) {
const {t} = useI18n()
let operations = reactive({
operationsModal: false,
operationsEdit: false,
@@ -183,7 +185,7 @@ export default defineComponent({
return {
creditsUsageLimit: operationsData.credits,
userEmail: operationsData.userEmail,
userPassword: md5(operationsData.password + "abc"),
userPassword: operationsData.password?md5(operationsData.password + "abc"):'',
userName: operationsData.userName,
};
};

View File

@@ -30,7 +30,7 @@
<div class="admin_state_item">
<span>User Name: <span>*</span></span>
<input
:readonly="title != 'Add'"
:disabled="title != 'Add'"
:class="{active:title != 'Add'}"
v-model="userName"
placeholder="Please enter user name"
@@ -41,7 +41,7 @@
<div class="admin_state_item">
<span>User Email: <span>*</span></span>
<input
:readonly="title != 'Add'"
:disabled="title != 'Add'"
:class="{active:title != 'Add'}"
v-model="userEmail"
placeholder="Please enter email"
@@ -94,7 +94,7 @@
<div class="admin_state_item">
<span>Country:</span>
<input
:readonly="title != 'Add'"
:disabled="title != 'Add'"
:class="{active:title != 'Add'}"
v-model="country"
placeholder="Please enter country"
@@ -105,7 +105,7 @@
<div class="admin_state_item">
<span>Organization Name:</span>
<input
:readonly="title != 'Add'"
:disabled="title != 'Add'"
:class="{active:title != 'Add'}"
v-model="organizationName"
placeholder="Please enter Organization Name"
@@ -116,7 +116,7 @@
<div class="admin_state_item">
<span>Sub Account Num:</span>
<input
:readonly="title != 'Add'"
:disabled="title != 'Add'"
:class="{active:title != 'Add'}"
v-model="subAccountNum"
placeholder="Please enter Sub Account Num"

View File

@@ -107,7 +107,7 @@ export default defineComponent({
canvasLoad:false,
canvasConfig:{
} as any,
currentView:'canvasEditor',
currentView:'',
getCanvasIfEdit:inject('getCanvasIfEdit')as any,
canvasInstance:null as any,
canvasJSON:'',
@@ -271,6 +271,7 @@ export default defineComponent({
})
onMounted(()=>{
nextTick(async ()=>{
detailData.currentView = 'canvasEditor'
if(detailData.selectDetail.canvasId){
detailData.isShowMark = true
await new Promise((resolve, reject) => {

View File

@@ -138,11 +138,6 @@ export default defineComponent({
default:'' as any,
required:true
},
isSegmentation:{
type:Boolean,
default:false as any,
required:true
},
},
emits:['selectImgItem'],
setup(props,{emit}) {
@@ -154,7 +149,6 @@ export default defineComponent({
designTypeList:computed(()=>props.catecoryList) as any,
designType:'',
searchPictureName:'',
designDetail:computed(()=>store.state.DesignDetail.designDetail),
mannequinData:{
sex:'Female',
style:'',
@@ -188,36 +182,10 @@ export default defineComponent({
detailData.designType = detailData.designTypeList[0]?.value?detailData.designTypeList[0]?.value:''
getLibraryList()
}
const hasDuplicateId = (id:any)=>{
let arr = detailData.designDetail.clothes
for (let i = 0; i < arr.length; i++) {
if (arr[i].id === id) {
return true;
}
}
return false;
}
const selectImgItem = (file:any)=>{
let randomNum = Math.floor(100 + Math.random() * 900);
let type = props.type
// let type = store.state.DesignDetail.currentDetailType
let id = file.id
if(type == 'sketch'){
id = Number(file.id + (randomNum + ''))
if(props.randomId){
if(hasDuplicateId(id)){
selectImgItem(file)
return
}
}
}
let data = JSON.parse(JSON.stringify(file))
data.type = detailData.mannequinData.system == 'system'?'System':'Library'
if(!props.isSegmentation){
data.id = id
}
emit('selectImgItem',data)
// store.commit('DesignDetail/setNewDetail',data)
}
const getLibraryList = ()=>{
if(props.type == 'models'){
@@ -260,7 +228,6 @@ export default defineComponent({
detailData.isShowLoading = true
let level2Type = ''
let workspace = store.state.Workspace.probjects
// let type = store.state.DesignDetail.currentDetailType
let data = {
level1Type:props.level1Type,
// level2Type:'Pattern',

View File

@@ -37,7 +37,7 @@
<uploadSegmentation v-if="isSegmentation" :segmentationType="segmentationType" :deReconstructionList=deReconstructionList @selectImgItem="selectImgItem" :level1Type="level1Type" :catecoryList="catecoryList"></uploadSegmentation>
</div>
<div class="content_item" v-show="selectTitle == 'library'">
<libraryList :isSegmentation="isSegmentation" @selectImgItem="selectImgItem" :randomId="randomId" :level1Type="level1Type" :type="type" ref="libraryList" :catecoryList="catecoryList"></libraryList>
<libraryList @selectImgItem="selectImgItem" :randomId="randomId" :level1Type="level1Type" :type="type" ref="libraryList" :catecoryList="catecoryList"></libraryList>
</div>
</div>
</div>
@@ -121,7 +121,9 @@ export default defineComponent({
detailData.selectTitle = 'library'
getDetailListDom.libraryList.init()
}
const selectImgItem = (data:any)=>{
emit('selectImgItem',data)
}
onMounted(()=>{

View File

@@ -35,6 +35,7 @@ export default defineComponent({
const detailData = reactive({
selectTitle:'current',
selectDetail:computed(()=>store.state.DesignDetail.selectDetail),
designDetail:computed(()=>store.state.DesignDetail.designDetail),
sketchCatecoryList:computed(()=>{
return store.state.Workspace.probjects.positionList
}),
@@ -58,8 +59,24 @@ export default defineComponent({
detailData.selectTitle = 'library'
getDetailListDom.libraryList.init()
}
const hasDuplicateId = (id:any)=>{
let arr = detailData.designDetail.clothes
for (let i = 0; i < arr.length; i++) {
if (arr[i].id === id) {
return true;
}
}
return false;
}
const selectImgItem = (data:any)=>{
console.log(data)
let randomNum = Math.floor(100 + Math.random() * 900);
let id = data.id
id = Number(data.id + (randomNum + ''))
if(hasDuplicateId(id)){
selectImgItem(data)
return
}
data.id = id
if(data?.imgUrl)data.url = data.imgUrl
let value = {
data,

View File

@@ -14,7 +14,7 @@
<i v-show="true" class="icon iconfont icon-chehui" @click="revocation"></i>
<i v-show="true" class="icon iconfont icon-fanchehui" @click="oppositeRevocation"></i>
<!-- 编辑 -->
<i class="fi fi-rr-edit" :title="$t('DesignDetail.editTitle')" :class="{active:isEditPattern.value}" @click="showDesignImgDetail('edit')"></i>
<i class="fi fi-rr-edit" :title="$t('DesignDetail.editTitle')" :class="{active:isEditPattern.value,'pointerEventsNone':!selectDetail?.id}" @click="showDesignImgDetail('edit')"></i>
<!-- <i class="fi fi-rr-copy" :title="$t('DesignDetail.compareTitle')" :class="{active:imgDesignImg}" @click="mousedownDesignImg"></i> -->
<!-- <i v-show="!body && !deleteShow" :title="$t('DesignDetail.DetailTitle')" class="fi fi-rr-trash" @click="deleteNav(0)"></i>
<i v-show="!body && deleteShow" class="fi fi-br-check" @click="deleteNav(1)"></i> -->
@@ -48,6 +48,7 @@ export default defineComponent({
const store = useStore();
const detailData = reactive({
getCanvasIfEdit:inject('getCanvasIfEdit')as any,
selectDetail:computed(()=>store.state.DesignDetail.selectDetail),
})
const setRevocation:any = inject('setRevocation')
const getDetailListData = reactive({
@@ -187,6 +188,11 @@ export default defineComponent({
width: 4rem;
height: 4rem;
justify-content: center;
&.pointerEventsNone{
cursor: not-allowed;
pointer-events: none;
opacity: 0.6;
}
@media (min-width: 1024px) {
font-size: 2.4rem;
}

View File

@@ -485,11 +485,14 @@ export default defineComponent({
userId: this.userId,
organizationName: this.selectEnterprise,
};
this.$emit('update:isMask',true)
Https.axiosPost(Https.httpUrls.accountLogin, data)
.then((rv: any) => {
this.setSuccessLogin(rv);
})
.catch((res) => {});
.catch((res) => {
this.$emit('update:isMask',false)
});
},
isCheckAgreement() {
message.info("Agree to all terms, privacy fees and policies");

View File

@@ -486,11 +486,14 @@ export default defineComponent({
loginType: "EMAIL",
userId: this.userId,
};
this.$emit('update:isMask',true)
Https.axiosPost(Https.httpUrls.accountLogin, data)
.then((rv: any) => {
this.setSuccessLogin(rv);
})
.catch((res) => {});
.catch((res) => {
this.$emit('update:isMask',false)
});
},
isCheckAgreement() {
message.info("Agree to all terms, privacy fees and policies");

View File

@@ -488,11 +488,14 @@ export default defineComponent({
userId: this.userId,
organizationName: this.selectSchool,
};
this.$emit('update:isMask',true)
Https.axiosPost(Https.httpUrls.accountLogin, data)
.then((rv: any) => {
this.setSuccessLogin(rv);
})
.catch((res) => {});
.catch((res) => {
this.$emit('update:isMask',false)
});
},
isCheckAgreement() {
message.info("Agree to all terms, privacy fees and policies");