Browse Source

轮播图属性设置

yjf_v2
liwenxuan 2 years ago
parent
commit
dfd9775a12
  1. 2
      src/api/DesignForm/types.ts
  2. 2
      src/components/DesignForm/assembly/index.ts
  3. 84
      src/components/DesignForm/formControlAttr.vue
  4. 4
      src/store/modules/lowcodevideo.ts

2
src/api/DesignForm/types.ts

@ -179,7 +179,7 @@ export interface VideoMsg {
export interface CarsuselConfig { export interface CarsuselConfig {
uploadFlag:boolean, uploadFlag:boolean,
imgId:string, imgId:string,
sort:number, imgSort:number,
imgUrl:string, imgUrl:string,
link:string link:string
} }

2
src/components/DesignForm/assembly/index.ts

@ -347,7 +347,7 @@ const selectOption: any = [
carsuselConfigArr:[{ carsuselConfigArr:[{
uploadFlag:false, uploadFlag:false,
imgId:'', imgId:'',
sort:1, imgSort:1,
imgUrl: '', imgUrl: '',
link: '' link: ''
}] }]

84
src/components/DesignForm/formControlAttr.vue

@ -1328,6 +1328,7 @@ function videoUploadErr(error: Error, uploadFile: UploadFile, uploadFiles: Uploa
import { Delete,Plus } from '@element-plus/icons-vue' import { Delete,Plus } from '@element-plus/icons-vue'
import { CarsuselConfig } from '@/api/DesignForm/types' import { CarsuselConfig } from '@/api/DesignForm/types'
import errimg from '@/assets/404_images/untilUploadImg.png' import errimg from '@/assets/404_images/untilUploadImg.png'
import { v4 as uuidv4 } from "uuid";
// //
const dialogTableVisible = ref(false) const dialogTableVisible = ref(false)
@ -1335,15 +1336,39 @@ const dialogTableVisible = ref(false)
// //
const showImagePreview = ref(false) const showImagePreview = ref(false)
//imgId
let currentUploadImgid = "";
//,imgiddesignForm.activeKey,,controlData.value.type=='lowcodeCarsusel',imgid=''uuid
watch(()=>store.activeKey, () => {
if(controlData.value.type==='lowcodeCarsusel'){
const carsuselConfigData:CarsuselConfig[] = controlData.value.control.carsuselConfigArr
carsuselConfigData.forEach(element => {
//console.log(element)
if(element.imgId==''){
//console.log("imgid")
let onlyNumber = uuidv4().replaceAll('-','').toString(); //
element.imgId = onlyNumber;
}
});
}
})
// //
function carouselImgUploadSuccess(response: any, uploadFile: UploadFile, uploadFiles: UploadFiles){ function carouselImgUploadSuccess(response: any, uploadFile: UploadFile, uploadFiles: UploadFiles){
alert('轮播图图片上传成功') const carsuselConfigData:CarsuselConfig[] = controlData.value.control.carsuselConfigArr
carsuselConfigData.forEach(element => {
if(element.imgId==currentUploadImgid){
element.imgUrl=response.data.url
element.uploadFlag=true
}
});
} }
//url, //url,
const carouselImgUrlList = computed(() => { const carouselImgUrlList = computed(() => {
const list:string[] = []; const list:string[] = [];
const carsuselConfigData:CarsuselConfig[] = controlData.value.control.carsuselConfigArr const carsuselConfigData:CarsuselConfig[] = store.controlAttr.control.carsuselConfigArr
carsuselConfigData.forEach(element => { carsuselConfigData.forEach(element => {
if(element.uploadFlag===true){ if(element.uploadFlag===true){
list.push(element.imgUrl) list.push(element.imgUrl)
@ -1353,12 +1378,30 @@ const carouselImgUrlList = computed(() => {
}) })
//table //table
function createRow(){ function createRow(clickedRow:any){
//alert('') const newRow:CarsuselConfig = {
uploadFlag:false,
imgId:'',
imgSort:1,
imgUrl: '',
link: ''
}
let onlyNumber = uuidv4().replaceAll('-','').toString(); //
newRow.imgId = onlyNumber;
const nextSort:number = clickedRow.sort+1;
newRow.imgSort = nextSort;
controlData.value.control.carsuselConfigArr.push(newRow)
} }
function deleteRow(){
function deleteRow(clickedRow:any){
//alert('') //alert('')
const carsuselConfigData:CarsuselConfig[] = controlData.value.control.carsuselConfigArr
for (var i = 0; i < carsuselConfigData.length; i++) {
if(carsuselConfigData[i].imgId===clickedRow.imgId){
carsuselConfigData.splice(i, 1);
i--; //
}
}
} }
// //
@ -1371,6 +1414,10 @@ const handlePreview = (index: number, row: any) => {
showImagePreview.value = true showImagePreview.value = true
} }
const changeCurrentUploadImgid = (clickedRow:any) => {
currentUploadImgid = clickedRow.imgId
}
//liwenxuan 20240111 carousel end //liwenxuan 20240111 carousel end
@ -1959,8 +2006,8 @@ const handlePreview = (index: number, row: any) => {
</div> </div>
<!-- 轮播图设置弹窗 20240122 start --> <!-- 轮播图设置弹窗 20240122 start -->
<el-dialog v-model="dialogTableVisible" title="轮播图设置" style="width:60%"> <el-dialog v-model="dialogTableVisible" title="轮播图设置" top="20px" style="width:60%,margin-top:70px,margin-left:270px">
<el-table :data="controlData.control.carsuselConfigArr" border style="width: 100%" row-key="imgId"> <el-table v-if="controlData.type=='lowcodeCarsusel'" :data="controlData.control.carsuselConfigArr" border style="width: 100%" row-key="imgId">
<el-table-column label="设置图片" width="180" > <el-table-column label="设置图片" width="180" >
<template #default="propFlag"> <template #default="propFlag">
<el-upload <el-upload
@ -1969,7 +2016,7 @@ const handlePreview = (index: number, row: any) => {
:on-error="videoUploadErr" :on-error="videoUploadErr"
:limit="1" :limit="1"
accept=".jpg,.jpeg,.png,.tif,.tga,.bmp,.dds,.svg,.eps,.pdf,.hdr,.raw,.exr,.psd,.afphoto,.afdesign"> accept=".jpg,.jpeg,.png,.tif,.tga,.bmp,.dds,.svg,.eps,.pdf,.hdr,.raw,.exr,.psd,.afphoto,.afdesign">
<el-button v-if="!propFlag.row.uploadFlag" type="primary">点此上传</el-button> <el-button v-if="!propFlag.row.uploadFlag" type="primary" @click="changeCurrentUploadImgid(propFlag.row)">点此上传</el-button>
<el-button v-if="propFlag.row.uploadFlag" type="primary">已上传,点击修改</el-button> <el-button v-if="propFlag.row.uploadFlag" type="primary">已上传,点击修改</el-button>
</el-upload> </el-upload>
</template> </template>
@ -1996,23 +2043,12 @@ const handlePreview = (index: number, row: any) => {
<el-table-column fixed="right" label="操作" width="120" > <el-table-column fixed="right" label="操作" width="120" >
<template #default="scope"> <template #default="scope">
<el-tooltip
class="box-item"
content="删除本行"
placement="top-start">
<el-button v-if="controlData.control.carsuselConfigArr.length>1" type="danger" :icon="Delete" circle @click="deleteRow"/>
</el-tooltip>
<!-- {{ tableData[tableDataLength-1] }} -->
<!-- {{ scope.row }} -->
<el-tooltip
class="box-item"
content="新增一行"
placement="top-start">
<el-button v-if="controlData.control.carsuselConfigArr[controlData.control.carsuselConfigArr.length-1].imgId == scope.row.imgId" type="success" :icon="Plus" circle @click="createRow" />
</el-tooltip>
</template> <el-button v-if="controlData.control.carsuselConfigArr.length>1" type="danger" :icon="Delete" circle @click="deleteRow(scope.row)"/>
<el-button v-if="controlData.control.carsuselConfigArr[controlData.control.carsuselConfigArr.length-1].imgId == scope.row.imgId" type="success" :icon="Plus" circle @click="createRow(scope.row)" />
</template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-dialog> </el-dialog>

4
src/store/modules/lowcodevideo.ts

@ -16,8 +16,8 @@ let uselowcodevideoStore = defineStore('lowcodevideo', () => {
const videoMsg = reactive<VideoMsg>({ const videoMsg = reactive<VideoMsg>({
CreatedAt: "", CreatedAt: "",
UpdatedAt: "", UpdatedAt: "",
fileSize: 0n, fileSize: 0,
id: 0n, id: 0,
key: "", key: "",
name: "", name: "",
physicspath: "", physicspath: "",

Loading…
Cancel
Save