|
@@ -19,9 +19,10 @@
|
|
|
list-type="picture-card"
|
|
|
:before-upload="beforeUpload"
|
|
|
@preview="handlePreview"
|
|
|
+ @change="fileChange"
|
|
|
>
|
|
|
<div>
|
|
|
- <PlusOutlined style="color:#D9D9D9" color="#D9D9D9" />
|
|
|
+ <PlusOutlined style="color: #d9d9d9" color="#D9D9D9" />
|
|
|
<!-- <div style="margin-top: 8px">{{ t('feedback.upload') }}</div> -->
|
|
|
</div>
|
|
|
</a-upload>
|
|
@@ -40,7 +41,7 @@
|
|
|
<a-form-item name="problemFile" style="margin-top: 2px">
|
|
|
<a-upload v-model:file-list="formData.solutionImgs" action="/service/sale/upload/file" list-type="picture-card">
|
|
|
<div>
|
|
|
- <PlusOutlined style="color:#D9D9D9" color="#D9D9D9" />
|
|
|
+ <PlusOutlined style="color: #d9d9d9" color="#D9D9D9" />
|
|
|
<!-- <div style="margin-top: 8px">{{ t('feedback.upload') }}</div> -->
|
|
|
</div>
|
|
|
</a-upload>
|
|
@@ -140,11 +141,14 @@
|
|
|
import { useI18n } from 'vue-i18n';
|
|
|
const { t, locale } = useI18n();
|
|
|
const emit = defineEmits(['submit']);
|
|
|
- watch(() => props.addres, (newValue, oldValue) => {
|
|
|
+ watch(
|
|
|
+ () => props.addres,
|
|
|
+ (newValue, oldValue) => {
|
|
|
console.log('addreswatch', newValue);
|
|
|
formData.value.country = newValue.country;
|
|
|
formData.value.countries = newValue.mccountries;
|
|
|
- });
|
|
|
+ },
|
|
|
+ );
|
|
|
const formData = ref({
|
|
|
problemDesc: '',
|
|
|
problemDescImgs: [],
|
|
@@ -167,14 +171,32 @@
|
|
|
const previewImage = ref('');
|
|
|
const formRef = ref(null);
|
|
|
const rules = {
|
|
|
- problemDesc: [{ required: true, message: t('feedback.settext') + t('feedback.title1'), trigger: 'change' }],
|
|
|
- solution: [{ required: true, message: t('feedback.settext') + t('feedback.title2'), trigger: 'change' }],
|
|
|
+ problemDesc: [
|
|
|
+ { name: 'problemDesc', validator: validatorFile, message: t('feedback.settext') + t('feedback.title1'), trigger: 'change' },
|
|
|
+ ],
|
|
|
+ solution: [{ name: 'solution', validator: validatorFile, message: t('feedback.settext') + t('feedback.title2'), trigger: 'change' }],
|
|
|
softwareOptionId: [{ required: true, message: t('feedback.setselcet') + t('feedback.title5'), trigger: 'change' }],
|
|
|
industryOptionId: [{ required: true, message: t('feedback.setselcet') + t('feedback.title3'), trigger: 'change' }],
|
|
|
hardwareOptionId: [{ required: true, message: t('feedback.setselcet') + t('feedback.title4'), trigger: 'change' }],
|
|
|
};
|
|
|
+ function validatorFile(_rule, value) {
|
|
|
+ let rule = _rule;
|
|
|
+ let isOk = Boolean(formData.value[rule.name] || (formData.value[`${rule.name}Imgs`] && formData.value[`${rule.name}Imgs`].length > 0));
|
|
|
+ if (isOk) {
|
|
|
+ return Promise.resolve();
|
|
|
+ } else {
|
|
|
+ return Promise.reject(rule.message);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ function fileChange() {
|
|
|
+ formRef.value.validateFields(['problemDesc', 'solution']);
|
|
|
+ }
|
|
|
const countryOption = countryList.map((ele) => {
|
|
|
- return { value: ele.chinese, label: locale.value == 'en-us' ? ele.english : ele.chinese, english: locale.value == 'en-us' ? ele.chinese : ele.english };
|
|
|
+ return {
|
|
|
+ value: ele.chinese,
|
|
|
+ label: locale.value == 'en-us' ? ele.english : ele.chinese,
|
|
|
+ english: locale.value == 'en-us' ? ele.chinese : ele.english,
|
|
|
+ };
|
|
|
});
|
|
|
function filterOption(inputValue, option) {
|
|
|
return (
|