Merge branch 'dev_vite' of ssh://18.167.251.121:10002/aidlab/aida_front into dev_vite

This commit is contained in:
X1627315083
2025-09-24 11:04:41 +08:00
5 changed files with 143 additions and 36 deletions

View File

@@ -39,19 +39,11 @@
</div> </div>
</div> </div>
</div> </div>
<textarea <a-dropdown>
class="textarea" <i class="fi fi-br-upload" :class="{ Guide_1_2_6:type_.type2 == 'Printboard'}"></i>
@input="ifMaximumLength" <template #overlay>
:placeholder="(scene?.value == 'Slogan' && type_.type2 == 'Printboard')?isSloganHint:$t('Generate.inputContent1')" <a-menu>
:maxlength='inputShow?0:9999' <a-menu-item>
@keydown.enter.prevent="getgenerate()"
@click="inputFocus()"
v-model="searchPictureName"
@paste="onPaste"
></textarea>
<i class="fi fi-rr-followcollection"></i>
<i class="fi fi-br-upload" :class="{ Guide_1_2_6:type_.type2 == 'Printboard'}" :title="$t('Generate.uploadTitle')" v-show="!isTextarea && upload.level1Type !== 'Moodboard' && scene?.value != 'Slogan' && scene?.value != 'Logo'">
<a-upload <a-upload
class="search_upImg" class="search_upImg"
:capture="null" :capture="null"
@@ -67,8 +59,33 @@
accept=".jpg,.png,.jpeg,.bmp" accept=".jpg,.png,.jpeg,.bmp"
@change="(file) => fileUploadChange(file)" @change="(file) => fileUploadChange(file)"
> >
<div class="drop-container">
<i class="fi fi-br-upload" :class="{ Guide_1_2_6:type_.type2 == 'Printboard'}" :title="$t('Generate.uploadTitle')" v-show="!isTextarea && upload.level1Type !== 'Moodboard' && scene?.value != 'Slogan' && scene?.value != 'Logo'"></i>
<div>{{ $t('PrintboardUpload.Upload') }}</div>
</div>
</a-upload> </a-upload>
</i> </a-menu-item>
<a-menu-item>
<div class="drop-container" @click.stop="handleOpenLibrarySelect">
<i class="fi fi-rr-followcollection"></i>
<div>{{ $t('PrintboardUpload.Library') }}</div>
</div>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
<textarea
class="textarea"
@input="ifMaximumLength"
:placeholder="(scene?.value == 'Slogan' && type_.type2 == 'Printboard')?isSloganHint:$t('Generate.inputContent1')"
:maxlength='inputShow?0:9999'
@keydown.enter.prevent="getgenerate()"
@click="inputFocus()"
v-model="searchPictureName"
@paste="onPaste"
></textarea>
<i v-show="scene?.value == 'Slogan'" :title="$t('Generate.sloganTitle')" @click.stop="setSlogan" class="fi fi-rr-poll-h"></i> <i v-show="scene?.value == 'Slogan'" :title="$t('Generate.sloganTitle')" @click.stop="setSlogan" class="fi fi-rr-poll-h"></i>
<!-- <i v-show="!isTextarea" class="fi fi-br-expand" @click.stop="setTextareaShow"></i> <!-- <i v-show="!isTextarea" class="fi fi-br-expand" @click.stop="setTextareaShow"></i>
<i v-show="isTextarea" class="fi fi-bs-compress" @click.stop="setTextareaShow"></i> --> <i v-show="isTextarea" class="fi fi-bs-compress" @click.stop="setTextareaShow"></i> -->
@@ -204,6 +221,13 @@
</div> </div>
<scaleImage ref="scaleImage" :imgType="type_.type2" :sex="workspace.sex"></scaleImage> <scaleImage ref="scaleImage" :imgType="type_.type2" :sex="workspace.sex"></scaleImage>
<createSlogan ref="createSlogan" @setSloganData="setSloganData"></createSlogan> <createSlogan ref="createSlogan" @setSloganData="setSloganData"></createSlogan>
<SelectImages
radio
full-data
ref="selectImages"
@select="handleImageSelect"
:api="Https.httpUrls.queryLibraryPage"
isLibrary/>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
@@ -223,6 +247,7 @@ import { openGuide,driverObj__,driverIndex__ } from "@/tool/guide";
import createSlogan from "@/component/HomePage/createSlogan.vue"; import createSlogan from "@/component/HomePage/createSlogan.vue";
import { useI18n } from "vue-i18n"; import { useI18n } from "vue-i18n";
import sketchCategory from "@/component/HomePage/sketchCategory.vue"; import sketchCategory from "@/component/HomePage/sketchCategory.vue";
import SelectImages from '@/component/common/SelectImages.vue'
export default defineComponent({ export default defineComponent({
components: { components: {
@@ -230,6 +255,7 @@ export default defineComponent({
generalMenu, generalMenu,
createSlogan, createSlogan,
sketchCategory, sketchCategory,
SelectImages
}, },
props: ["msg",'sketchCatecoryList','scene','gender'], props: ["msg",'sketchCatecoryList','scene','gender'],
emits:['setLibrary'], emits:['setLibrary'],
@@ -393,6 +419,7 @@ export default defineComponent({
openSpeed, openSpeed,
setSpeed, setSpeed,
upload, upload,
Https
}; };
}, },
data(prop) { data(prop) {
@@ -898,6 +925,7 @@ export default defineComponent({
let paste = this.sketchboardList.filter((v: any) => v.id === file.id); let paste = this.sketchboardList.filter((v: any) => v.id === file.id);
if(paste.length == 0)this.sketchboardList.push(file); if(paste.length == 0)this.sketchboardList.push(file);
this.sketchboardList = this.sketchboardList.filter((v: any) => v.status === "done"); this.sketchboardList = this.sketchboardList.filter((v: any) => v.status === "done");
console.log('插入图片',this.sketchboardList)
nextTick().then(()=>{ nextTick().then(()=>{
if(this.driver__.driver && this.type_.type2 == 'Printboard'){ if(this.driver__.driver && this.type_.type2 == 'Printboard'){
driverObj__.moveNext() driverObj__.moveNext()
@@ -1038,6 +1066,22 @@ export default defineComponent({
}) })
} }
},
handleOpenLibrarySelect(){
let selectImages:any = this.$refs.selectImages
selectImages.init()
},
handleImageSelect(data:any){
const file={
status: 'done',
...data,
errCode:0,
imgUrl:data.url,
xhr:{
response:JSON.stringify({...data,errCode:0,imgUrl:data.url,status:'done'})
}
}
this.sketchboardList = [file]
} }
}, },
}); });
@@ -1180,6 +1224,22 @@ export default defineComponent({
} }
} }
} }
} }
.search_upImg :deep(.ant-upload.ant-upload-select-picture-card){
background-color: transparent;
border: none;
width: inherit;
height: inherit;
margin: 0;
}
.drop-container{
display: flex;
align-items: center;
column-gap: 1rem;
padding: 0.25rem 0.3rem 0.25rem;
}
</style> </style>

View File

@@ -3,9 +3,12 @@
<div class="captcha"> <div class="captcha">
<input v-for="(c, index) in getCtData" :key="index" <input v-for="(c, index) in getCtData" :key="index"
type="text" type="text"
ref="input" v-model="getCtData[index]" ref="input"
inputmode="numeric"
pattern="[0-9]*"
@input="e => {onInput(e.target.value, index)}" @input="e => {onInput(e.target.value, index)}"
@keydown.delete="e=>{onKeydown(e.target.value, index)}" @keydown="e => {onKeydown(e, index)}"
@keypress="e => {onKeypress(e)}"
@focus="onFocus" @focus="onFocus"
:disabled="loading" :disabled="loading"
> >
@@ -54,6 +57,7 @@ export default defineComponent({
}, },
methods: { methods: {
onInput(val, index) { onInput(val, index) {
console.log('input',val,index)
// val = val.replace(/[^0-9]/g, ''); // val = val.replace(/[^0-9]/g, '');
val = String(val).replace(/\D/g, ''); val = String(val).replace(/\D/g, '');
this.getCtData[index] = val this.getCtData[index] = val
@@ -79,7 +83,17 @@ export default defineComponent({
index = (index + this.ctSize) % this.ctSize; index = (index + this.ctSize) % this.ctSize;
this.$refs.input[index].focus(); this.$refs.input[index].focus();
}, },
onKeydown(val, index) { onKeypress(e) {
// 只允许输入数字0-9
const char = String.fromCharCode(e.which);
if (!/[0-9]/.test(char)) {
e.preventDefault();
}
},
onKeydown(e, index) {
// 处理删除键
if (e.key === 'Backspace' || e.key === 'Delete') {
const val = e.target.value;
if (val === '') { if (val === '') {
// 删除上一个input里的值并对其focus。 // 删除上一个input里的值并对其focus。
if (index > 0) { if (index > 0) {
@@ -87,6 +101,11 @@ export default defineComponent({
this.$refs.input[index - 1].focus(); this.$refs.input[index - 1].focus();
} }
} }
}
// 阻止其他非数字字符
else if (e.key && !/[0-9]/.test(e.key) && !['Backspace', 'Delete', 'Tab', 'Enter', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown'].includes(e.key)) {
e.preventDefault();
}
}, },
sendCaptcha() { sendCaptcha() {

View File

@@ -102,6 +102,14 @@ const props = defineProps({
isLibrary: { isLibrary: {
type: Boolean, type: Boolean,
default: false default: false
},
radio: {
type: Boolean,
default: false
},
fullData: {
type: Boolean,
default: false
} }
}) })
@@ -236,13 +244,20 @@ watch(
// 处理图片点击 // 处理图片点击
const handleImageClick = item => { const handleImageClick = item => {
// 已选中,取消选中 const isSelected = selectList.value.includes(item.url)
if (selectList.value.includes(item.url)) {
if (props.radio) {
// 单选模式:选中当前图片或取消选中
selectList.value = isSelected ? [] : [item.url]
} else {
// 多选模式:切换选中状态
if (isSelected) {
selectList.value = selectList.value.filter(url => url !== item.url) selectList.value = selectList.value.filter(url => url !== item.url)
} else { } else {
selectList.value.push(item.url) selectList.value.push(item.url)
} }
} }
}
// 处理分类切换 // 处理分类切换
const handleChangeCategory = category => { const handleChangeCategory = category => {
@@ -262,7 +277,15 @@ const handleImageError = event => {
} }
const confirm = () => { const confirm = () => {
emits('select', selectList.value) // console.log('selectList.value',selectList.value,'list.value',list.value)
let emitData = null
if (props.fullData) {
const selected = list.value.filter(item => selectList.value.includes(item.url))
emitData = props.radio ? selected[0] : selected
} else {
emitData = selectList.value
}
emits('select', emitData)
showPanel.value = false showPanel.value = false
} }

View File

@@ -126,8 +126,8 @@ export default defineComponent({
dataDom.workspace.init(storeData) dataDom.workspace.init(storeData)
} }
const setProject = ()=>{ const setProject = ()=>{
emit('getHistory',{ data: data.projectData })
cleardata() cleardata()
emit('getHistory')
} }
return{ return{
...toRefs(dataDom), ...toRefs(dataDom),

View File

@@ -70,7 +70,7 @@
<!-- <setLabel ref="setLabel"></setLabel> --> <!-- <setLabel ref="setLabel"></setLabel> -->
<!-- <RobotAssist></RobotAssist> --> <!-- <RobotAssist></RobotAssist> -->
<!-- <searchLabel ref="searchLabel" isHistory></searchLabel> --> <!-- <searchLabel ref="searchLabel" isHistory></searchLabel> -->
<projectSetting ref="projectSetting" @getHistory="getHistoryList"></projectSetting> <projectSetting ref="projectSetting" @getHistory="handleConfirmEdit"></projectSetting>
<div class="history_loading" v-show="isShowMark"> <div class="history_loading" v-show="isShowMark">
<a-spin size="large" /> <a-spin size="large" />
</div> </div>
@@ -95,6 +95,7 @@ import TableSearchBar from '@/component/common/TableSearchBar.vue'
// import searchLabel from '@/component/LibraryPage/searchLabel.vue' // import searchLabel from '@/component/LibraryPage/searchLabel.vue'
import projectSetting from '@/component/home/newProject/setting.vue' import projectSetting from '@/component/home/newProject/setting.vue'
import { useStore } from 'vuex' import { useStore } from 'vuex'
import router from '@/router'
export default defineComponent({ export default defineComponent({
components: { components: {
@@ -423,7 +424,11 @@ export default defineComponent({
// searchLabel.init(record, index) // searchLabel.init(record, index)
this.$refs.projectSetting.init(record) this.$refs.projectSetting.init(record)
}, },
handleConfirmEdit({ data }) {
// console.log('data', data)
router.push(`/home?history=${data.id}`)
this.getHistoryList()
},
retrieveHome(record: any) { retrieveHome(record: any) {
// let num = true // let num = true
// if (record.original == 0) { // if (record.original == 0) {