|
@@ -3,7 +3,7 @@
|
|
<a-form layout="vertical" :model="formData" ref="formRef" :rules="rules">
|
|
<a-form layout="vertical" :model="formData" ref="formRef" :rules="rules">
|
|
<a-form-item name="problemDesc">
|
|
<a-form-item name="problemDesc">
|
|
<div class="myTitle required" slot="label"><span class="number">01</span>{{ t('feedback.title1') }}</div>
|
|
<div class="myTitle required" slot="label"><span class="number">01</span>{{ t('feedback.title1') }}</div>
|
|
- <a-textarea :autoSize="{ minRows: 3, maxRows: 6 }" v-model:value="formData.problemDesc" :placeholder="t('feedback.settext')" />
|
|
|
|
|
|
+ <a-textarea :autoSize="{ minRows: 4, maxRows: 8 }" v-model:value="formData.problemDesc" :placeholder="t('feedback.settext')" />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item name="problemFile" style="margin-top: 32px">
|
|
<a-form-item name="problemFile" style="margin-top: 32px">
|
|
<a-upload
|
|
<a-upload
|
|
@@ -12,17 +12,18 @@
|
|
action="/service/sale/upload/file"
|
|
action="/service/sale/upload/file"
|
|
list-type="picture-card"
|
|
list-type="picture-card"
|
|
:before-upload="beforeUpload"
|
|
:before-upload="beforeUpload"
|
|
|
|
+ @preview="handlePreview"
|
|
>
|
|
>
|
|
<div>
|
|
<div>
|
|
<PlusOutlined />
|
|
<PlusOutlined />
|
|
- <div style="margin-top: 8px">{{ t('feedback.upload') }}</div>
|
|
|
|
|
|
+ <!-- <div style="margin-top: 8px">{{ t('feedback.upload') }}</div> -->
|
|
</div>
|
|
</div>
|
|
</a-upload>
|
|
</a-upload>
|
|
<div class="tips">{{ t('feedback.fileTips') }}</div>
|
|
<div class="tips">{{ t('feedback.fileTips') }}</div>
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item name="solution">
|
|
<a-form-item name="solution">
|
|
<div class="myTitle required" slot="label"><span class="number">02</span>{{ t('feedback.title2') }}</div>
|
|
<div class="myTitle required" slot="label"><span class="number">02</span>{{ t('feedback.title2') }}</div>
|
|
- <a-textarea :autoSize="{ minRows: 3, maxRows: 6 }" v-model:value="formData.solution" :placeholder="t('feedback.settext')" />
|
|
|
|
|
|
+ <a-textarea :autoSize="{ minRows: 4, maxRows: 8 }" v-model:value="formData.solution" :placeholder="t('feedback.settext')" />
|
|
</a-form-item>
|
|
</a-form-item>
|
|
<a-form-item name="problemFile" style="margin-top: 32px">
|
|
<a-form-item name="problemFile" style="margin-top: 32px">
|
|
<a-upload v-model:file-list="formData.solutionImgs" action="/service/sale/upload/file" list-type="picture-card">
|
|
<a-upload v-model:file-list="formData.solutionImgs" action="/service/sale/upload/file" list-type="picture-card">
|
|
@@ -114,6 +115,7 @@
|
|
import { PlusOutlined } from '@ant-design/icons-vue';
|
|
import { PlusOutlined } from '@ant-design/icons-vue';
|
|
import cityList from './area.json';
|
|
import cityList from './area.json';
|
|
import countryList from './country.json';
|
|
import countryList from './country.json';
|
|
|
|
+ // import { createImgPreview } from '/@/components/Preview/index';
|
|
const props = defineProps(['formData', 'columns']);
|
|
const props = defineProps(['formData', 'columns']);
|
|
import { message, Upload } from 'ant-design-vue';
|
|
import { message, Upload } from 'ant-design-vue';
|
|
import { useI18n } from 'vue-i18n';
|
|
import { useI18n } from 'vue-i18n';
|
|
@@ -139,6 +141,7 @@
|
|
console.log('formData', formData);
|
|
console.log('formData', formData);
|
|
// eslint-disable-next-line vue/no-setup-props-destructure
|
|
// eslint-disable-next-line vue/no-setup-props-destructure
|
|
const propsOptions = props.columns;
|
|
const propsOptions = props.columns;
|
|
|
|
+ const previewImage = ref('');
|
|
const formRef = ref(null);
|
|
const formRef = ref(null);
|
|
const rules = {
|
|
const rules = {
|
|
problemDesc: [{ required: true, message: t('feedback.settext') + t('feedback.title1'), trigger: 'change' }],
|
|
problemDesc: [{ required: true, message: t('feedback.settext') + t('feedback.title1'), trigger: 'change' }],
|
|
@@ -187,6 +190,29 @@
|
|
}
|
|
}
|
|
return file.type === 'video/mp4' ? isLt50M && isJpgOrPng : isJpgOrPng && isLt2M;
|
|
return file.type === 'video/mp4' ? isLt50M && isJpgOrPng : isJpgOrPng && isLt2M;
|
|
};
|
|
};
|
|
|
|
+ // const previewFile = (file) => {
|
|
|
|
+ // console.log('file',file)
|
|
|
|
+ // return file
|
|
|
|
+ // }
|
|
|
|
+ function getBase64(file) {
|
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
|
+ const reader = new FileReader();
|
|
|
|
+ reader.readAsDataURL(file);
|
|
|
|
+ reader.onload = () => resolve(reader.result);
|
|
|
|
+ reader.onerror = error => reject(error);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ const handlePreview = async (file) => {
|
|
|
|
+ console.log('file', file);
|
|
|
|
+ file.preview = file.response.data;
|
|
|
|
+ window.open(file.response.data);
|
|
|
|
+ return
|
|
|
|
+ // createImgPreview({ imageList: [file.response.data] });
|
|
|
|
+ }
|
|
|
|
+ const preview = (file) => {
|
|
|
|
+ console.log('file', file);
|
|
|
|
+ return file;
|
|
|
|
+ }
|
|
const onSubmit = () => {
|
|
const onSubmit = () => {
|
|
console.log('values', formRef.value.validate());
|
|
console.log('values', formRef.value.validate());
|
|
formRef.value
|
|
formRef.value
|
|
@@ -205,7 +231,7 @@
|
|
.myTitle {
|
|
.myTitle {
|
|
position: relative;
|
|
position: relative;
|
|
margin-bottom: 14px;
|
|
margin-bottom: 14px;
|
|
- margin-top: 32px;
|
|
|
|
|
|
+ margin-top: 48px;
|
|
.number {
|
|
.number {
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
font-family: Microsoft YaHei, Microsoft YaHei;
|
|
font-family: Microsoft YaHei, Microsoft YaHei;
|