Browse Source

Merge branch 'lwx_v27'

lwx_v27
liwenxuan 3 months ago
parent
commit
03f2ea0d50
  1. 3
      src/components/DesignForm/assembly/index.ts
  2. 60
      src/components/DesignForm/formControlPropertiNew.vue
  3. 212
      src/components/DesignForm/public/expand/lowcodeImage.vue
  4. 1
      src/components/DesignForm/public/form/formItem.vue
  5. 11
      src/widget/videoupload/videoUploadPlay.vue

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

@ -548,6 +548,9 @@ export default [
control: { control: {
modelValue: '', modelValue: '',
uploadFlag: false, uploadFlag: false,
useDefaultImg: false,
onSiteShot: '',
watermark: '',
imgId: '', imgId: '',
imgUrl: '', imgUrl: '',
link: '', link: '',

60
src/components/DesignForm/formControlPropertiNew.vue

@ -825,6 +825,22 @@ const attrList = computed(() => {
vIf: state.isSearch, vIf: state.isSearch,
vShow: ["lowcodeImage"], vShow: ["lowcodeImage"],
}, },
{
label: "必须现场拍照",
value: config.lowcodeImage,
path: "config.lowcodeImage",
type: "lowcodeImage_currentShot",
vIf: state.isSearch,
vShow: ["lowcodeImage"],
},
{
label: "填加时间水印",
value: config.lowcodeImage,
path: "config.lowcodeImage",
type: "lowcodeImage_watermark",
vIf: state.isSearch,
vShow: ["lowcodeImage"],
},
{ {
label: "显示级别", label: "显示级别",
value: config.organization, value: config.organization,
@ -2233,7 +2249,12 @@ const setNodeEnable = (node: Node, data: Tree) => {
children[index].disabled = !children[index].disabled; children[index].disabled = !children[index].disabled;
dataSource.value = [...dataSource.value]; dataSource.value = [...dataSource.value];
}; };
function delDefaultImg(){
const element = controlData.value.control;
element.imgUrl = "";
element.uploadFlag = false;
element.useDefaultImg = false;
}
// //
function lowcodeImageUploadSuccess( function lowcodeImageUploadSuccess(
response: any, response: any,
@ -2243,6 +2264,7 @@ function lowcodeImageUploadSuccess(
const element = controlData.value.control; const element = controlData.value.control;
element.imgUrl = response.data.url; element.imgUrl = response.data.url;
element.uploadFlag = true; element.uploadFlag = true;
element.useDefaultImg = true;
} }
// //
@ -2853,6 +2875,7 @@ function handleRoleTreeContextmenuRange(
import { ElTree } from "element-plus"; import { ElTree } from "element-plus";
import { forEach } from "jszip"; import { forEach } from "jszip";
import { getInstanceByDom } from "echarts";
const fieldTreeFilterText = ref(""); const fieldTreeFilterText = ref("");
const orgTreeFilterText = ref(""); const orgTreeFilterText = ref("");
@ -4088,7 +4111,17 @@ const aiAgentList = ref([
<el-divider content-position="left">通用属性</el-divider> <el-divider content-position="left">通用属性</el-divider>
<template v-for="(item, index) in attrList" :key="index"> <template v-for="(item, index) in attrList" :key="index">
<el-form-item :label="item.label" class="form_cont"> <template v-if="item.label == '填加时间水印'">
<el-form-item :label="item.label" v-if="controlData.control.onSiteShot=='1'" class="form_cont">
<el-radio-group v-model="controlData.control.watermark">
<el-radio value="1"></el-radio>
<el-radio value=""></el-radio>
</el-radio-group>
</el-form-item>
</template>
<el-form-item v-else :label="item.label" class="form_cont">
<el-select <el-select
v-if="item.type === 'select'" v-if="item.type === 'select'"
:placeholder="item.placeholder" :placeholder="item.placeholder"
@ -4318,7 +4351,10 @@ const aiAgentList = ref([
</el-input> </el-input>
</div> </div>
</el-row> </el-row>
<el-row v-else-if="item.type === 'lowcodeImage_url'"> <el-row v-else-if="item.type === 'lowcodeImage_url'"><!-- -->
<el-button v-if="controlData.control.uploadFlag" type="danger" style="margin-right: 8px;" @click="delDefaultImg"
>删除默认图片</el-button
>
<el-upload <el-upload
:action="uploadUrl" :action="uploadUrl"
:before-remove="beforeRemove" :before-remove="beforeRemove"
@ -4326,15 +4362,29 @@ const aiAgentList = ref([
: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"
:show-file-list = "false"
> >
<el-button v-if="!controlData.control.uploadFlag" type="primary" <el-button v-if="!controlData.control.uploadFlag" type="primary"
>默认图片</el-button >上传默认图片</el-button
> >
<el-button v-if="controlData.control.uploadFlag" type="primary" <el-button v-if="controlData.control.uploadFlag" type="primary"
>已上传默认图片,点击修改</el-button >更改默认图片</el-button
> >
</el-upload> </el-upload>
</el-row> </el-row>
<el-row v-else-if="item.type === 'lowcodeImage_currentShot'">
<el-radio-group v-model="controlData.control.onSiteShot">
<el-radio value="1"></el-radio>
<el-radio value=""></el-radio>
</el-radio-group>
</el-row>
<!-- <el-row v-else-if="item.type === 'lowcodeImage_radius'"> <!-- <el-row v-else-if="item.type === 'lowcodeImage_radius'">
<el-switch v-model="controlData.control.radius" style="margin-right: 15px;"/> <el-switch v-model="controlData.control.radius" style="margin-right: 15px;"/>
<el-popover <el-popover

212
src/components/DesignForm/public/expand/lowcodeImage.vue

@ -10,6 +10,13 @@ import {
} from "@/components/DesignForm/public/form/calculate/cssInfo.ts"; } from "@/components/DesignForm/public/form/calculate/cssInfo.ts";
import errimg from "@/assets/404_images/imgNotFound.png"; import errimg from "@/assets/404_images/imgNotFound.png";
import { uploadUrl, getRequest } from "@/api/DesignForm"; import { uploadUrl, getRequest } from "@/api/DesignForm";
import { ref,useAttrs } from 'vue'
import { Plus } from '@element-plus/icons-vue'
import type { UploadProps, UploadUserFile } from 'element-plus'
const attrs = useAttrs()
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<{
@ -38,6 +45,22 @@ const value = computed({
return newVal; return newVal;
}, },
}); });
/* const value = computed(() => {
if(props.data.control.useDefaultImg){
return props.data.control.imgUrl
}else{
return props.modelValue ? props.modelValue : errimg;
}
}); */
onMounted(()=>{
if(props.data.control.useDefaultImg){
emits("update:modelValue", props.data.control.imgUrl);
}else{
}
})
//css //css
const configStyle = computed(() => { const configStyle = computed(() => {
return props.data.styles || {}; return props.data.styles || {};
@ -47,7 +70,7 @@ const imgLoading = ref(false);
const imgPath = ref(errimg); const imgPath = ref(errimg);
// //
const beforeAvatarUpload = (rawFile) => { const beforeAvatarUpload = (rawFile: { type: string; size: number; }) => {
imgLoading.value = true; imgLoading.value = true;
// console.log("",rawFile.type) // console.log("",rawFile.type)
let imgType = ["image/jpeg", "image/jpg", "image/png", "image/gif", "image/svg"]; let imgType = ["image/jpeg", "image/jpg", "image/png", "image/gif", "image/svg"];
@ -63,7 +86,7 @@ const beforeAvatarUpload = (rawFile) => {
return true; return true;
}; };
// //
const handleAvatarSuccess = (response, uploadFile) => { const handleAvatarSuccess = (response: { data: { url: string; }; }, uploadFile: any) => {
// imageUrl.value = URL.createObjectURL(uploadFile.raw!) // imageUrl.value = URL.createObjectURL(uploadFile.raw!)
// console.log("", value); // console.log("", value);
@ -96,9 +119,90 @@ const getFormItemInputStyle = (ele: any, sty: number) => {
return AnalysisInputCss(ele?.inputStyle, sty); return AnalysisInputCss(ele?.inputStyle, sty);
} }
}; };
const showUpload = computed(() => {
if(!value||value.value == ""||value.value=="/src/assets/404_images/imgNotFound.png"){
return true
}else{
return false
}
});
const handleRemove: UploadProps['onRemove'] = (uploadFile, uploadFiles) => {
console.log(uploadFile, uploadFiles)
let arrStr = ''
uploadFiles.forEach((element) => {
//console.log(element.response.data.url)
arrStr+= element.response.data.url+","
});
arrStr = arrStr.slice(0, -1);
console.log(arrStr)
emits("update:modelValue", arrStr);
}
const handlePictureCardPreview: UploadProps['onPreview'] = (uploadFile) => {
dialogImageUrl.value = uploadFile.url!
dialogVisible.value = true
}
const dialogImageUrl = ref('')
const dialogVisible = ref(false)
const valueArr = computed(()=>{
return value.value.split(',');
})
//
const handleAvatarSuccess1 = (response: any, uploadFile: any) => {
// imageUrl.value = URL.createObjectURL(uploadFile.raw!)
// console.log("", value);
/* console.log(response.data.url)
console.log(uploadFile) */
let arrStr = ''
props.data.control.uploadedImgs.forEach((element: { url: any; }) => {
//console.log(element.response.data.url)
arrStr+= element.response.data.url+","
});
arrStr = arrStr.slice(0, -1);
console.log(arrStr)
emits("update:modelValue", arrStr);
/*imgPath.value = response.data.url;
value.value = response.data.url; */
imgLoading.value = false;
};
const fileUpload = ref(null);
function selectFile(){
//fileUpload.value.$refs.input.click();
//console.log()
//fileUpload.handleStart();
fileUpload.value.$el.querySelector('input[type="file"]').click();
}
</script> </script>
<template> <template>
<el-upload <img
v-if="props.data.control.useDefaultImg"
:src="value"
class="avatar"
:style="getFormItemInputStyle(configStyle, 2)"
/>
<!-- <img referrerpolicy="no-referrer" :src="url" :style="styleObject" :fit="fit" :class="[boderAndShadowClassIsActive ? boderAndShadowClass : '', radiusClassIsActive ? radiusClass : '',mp, floatFlag ? floatStyle : '']" /> -->
<!-- <div></div> -->
<!-- <el-upload
v-bind="$props" v-bind="$props"
class="upload-demo" class="upload-demo"
:action="uploadUrl" :action="uploadUrl"
@ -107,24 +211,102 @@ const getFormItemInputStyle = (ele: any, sty: number) => {
:before-upload="beforeAvatarUpload" :before-upload="beforeAvatarUpload"
v-loading="imgLoading" v-loading="imgLoading"
> >
<!-- <img referrerpolicy="no-referrer" :src="url" :style="styleObject" :fit="fit" :class="[boderAndShadowClassIsActive ? boderAndShadowClass : '', radiusClassIsActive ? radiusClass : '',mp, floatFlag ? floatStyle : '']" /> --> <el-icon v-if="!props.data.control.useDefaultImg" class="avatar-uploader-icon"><Plus /></el-icon>
<img </el-upload> -->
v-if="value"
:src="value" <!--
class="avatar"
:style="getFormItemInputStyle(configStyle, 2)" -->
/>
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon> <!-- <el-upload
v-if="!props.data.control.useDefaultImg"
v-model:file-list="props.data.control.uploadedImgs"
:action="uploadUrl"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:before-upload="beforeAvatarUpload"
v-loading="imgLoading"
:on-success="handleAvatarSuccess1"
>
<el-icon><Plus /></el-icon>
</el-upload> -->
<div v-if="!props.data.control.useDefaultImg&&attrs.type!=4" style="width: 100%; ">
<el-button @click="selectFile" style="color:grey;font-weight: bolder;"><el-icon style="margin-right: 7px;font-weight: bolder;"><Plus /></el-icon></el-button>
</div>
<el-upload
ref="fileUpload"
v-if="!props.data.control.useDefaultImg"
:auto-upload="true"
v-model:file-list="props.data.control.uploadedImgs"
:action="uploadUrl"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
:before-upload="beforeAvatarUpload"
v-loading="imgLoading"
:on-success="handleAvatarSuccess1"
style="margin-top: 10px;"
>
<template #trigger>
<div style="display: none;">
<el-button>默认选择按钮</el-button>
</div>
</template>
</el-upload> </el-upload>
<!-- 详情页略缩图列表 -->
<div v-if ="!props.data.control.useDefaultImg&&attrs.type==4" v-for="url in valueArr" class="demo-image__preview">
<el-image
style="width: 100px; height: 100px;margin: 4px;border: #DCDFE6 1px solid; border-radius: 8px;"
:src="url"
:zoom-rate="1.2"
:max-scale="7"
:min-scale="0.2"
:preview-src-list="valueArr"
show-progress
:initial-index="4"
fit="cover"
/>
</div>
<el-dialog v-model="dialogVisible">
<img w-full :src="dialogImageUrl" alt="Preview Image" />
</el-dialog>
</template> </template>
<style lang="scss" scoped> <style lang="scss" >
.upload-demo { /* .upload-demo {
img { img {
min-width: 150px; min-width: 150px;
max-width: 300px; max-width: 300px;
} }
} } */
.avatar { .avatar {
width: 150px; width: 100%
}
.el-upload-list--picture-card {
--el-upload-list-picture-card-size: 109px;
}
.el-upload--picture-card {
--el-upload-picture-card-size: 0px !important;
align-items: center;
background-color: var(--el-fill-color-lighter);
border: 0px dashed var(--el-border-color-darker) !important;
border-radius: 6px;
box-sizing: border-box;
cursor: none !important;
display: inline-flex;
height: var(--el-upload-picture-card-size);
justify-content: center;
vertical-align: top;
width: var(--el-upload-picture-card-size);
} }
</style> </style>

1
src/components/DesignForm/public/form/formItem.vue

@ -1242,6 +1242,7 @@ const diGuiJilian = (val: any, options: any[]) => {
? data.control.placeholder ? data.control.placeholder
: '请选择' + getLabel(data.item) : '请选择' + getLabel(data.item)
" "
:type="type"
:data="data" :data="data"
:tablekey="props.tablekey" :tablekey="props.tablekey"
:form-table-set-up="props.alldata" :form-table-set-up="props.alldata"

11
src/widget/videoupload/videoUploadPlay.vue

@ -2,6 +2,7 @@
<!-- <p>{{ videoHeight }}</p>--> <!-- <p>{{ videoHeight }}</p>-->
<!-- <p>{{ props.pageType }}</p> --> <!-- <p>{{ props.pageType }}</p> -->
<video <video
v-if="!showUpload||props.pageType == 5"
:src="imgUrl" :src="imgUrl"
:loop="data?.control.videoMsg[0].loop" :loop="data?.control.videoMsg[0].loop"
:autoplay="data?.control.videoMsg[0].videoAutoPlay" :autoplay="data?.control.videoMsg[0].videoAutoPlay"
@ -9,7 +10,7 @@
controls controls
></video> ></video>
<el-upload <el-upload
v-if="props.pageType == 1 || props.pageType == 2" v-if="showUpload&&(props.pageType == 1 || props.pageType == 2)"
class="avatar-uploader" class="avatar-uploader"
:action="uploadUrl" :action="uploadUrl"
:before-remove="beforeRemove" :before-remove="beforeRemove"
@ -47,6 +48,14 @@ const props = defineProps({
const emits = defineEmits(["update:valInfo", "upDateInfo"]); const emits = defineEmits(["update:valInfo", "upDateInfo"]);
const showUpload = computed(() => {
if(imgUrl.value&&imgUrl.value.length>0){
return false
}else{
return true
}
});
const imgUrl = computed({ const imgUrl = computed({
get() { get() {
if (props.valInfo != "") { if (props.valInfo != "") {

Loading…
Cancel
Save