|
|
|
|
@ -61,6 +61,31 @@
|
|
|
|
|
<UploadImg v-model="formData.images" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandFormPage.drawings')" prop="drawings">
|
|
|
|
|
<UploadImgs v-model="drawingsValue" :limit="9" width="96px" height="96px" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandFormPage.operationManual')" prop="operationManual">
|
|
|
|
|
<UploadFile
|
|
|
|
|
v-model="operationManualValue"
|
|
|
|
|
:limit="9"
|
|
|
|
|
:file-type="manualFileTypes"
|
|
|
|
|
:is-show-tip="false"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandFormPage.operationVideo')" prop="operationVideo">
|
|
|
|
|
<UploadFile
|
|
|
|
|
v-model="operationVideoValue"
|
|
|
|
|
:limit="9"
|
|
|
|
|
:file-type="videoFileTypes"
|
|
|
|
|
:is-show-tip="false"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item :label="t('MoldManagement.MoldBrandFormPage.remark')" prop="remark">
|
|
|
|
|
<el-input v-model="formData.remark" type="textarea" :placeholder="t('MoldManagement.MoldBrandFormPage.placeholderRemark')" />
|
|
|
|
|
@ -213,6 +238,9 @@ const formData = ref<MoldBrandVO>({
|
|
|
|
|
productName: '',
|
|
|
|
|
productIds: [],
|
|
|
|
|
images: '',
|
|
|
|
|
drawings: '',
|
|
|
|
|
operationManual: '',
|
|
|
|
|
operationVideo: '',
|
|
|
|
|
status: 0,
|
|
|
|
|
useTime: 0,
|
|
|
|
|
maintainType: undefined,
|
|
|
|
|
@ -223,6 +251,47 @@ const formData = ref<MoldBrandVO>({
|
|
|
|
|
isCode: true
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const manualFileTypes = ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt']
|
|
|
|
|
const videoFileTypes = ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv', 'webm']
|
|
|
|
|
|
|
|
|
|
const splitAssetValue = (value: unknown): string[] => {
|
|
|
|
|
if (!value) return []
|
|
|
|
|
if (Array.isArray(value)) return value.flatMap((item) => splitAssetValue(item))
|
|
|
|
|
if (typeof value === 'object' && (value as any)?.fileUrl) {
|
|
|
|
|
return [String((value as any).fileUrl).trim()].filter(Boolean)
|
|
|
|
|
}
|
|
|
|
|
const text = String(value).trim()
|
|
|
|
|
if (!text) return []
|
|
|
|
|
if (text.startsWith('{') || text.startsWith('[')) {
|
|
|
|
|
try {
|
|
|
|
|
const parsed = JSON.parse(text)
|
|
|
|
|
return splitAssetValue(parsed)
|
|
|
|
|
} catch {}
|
|
|
|
|
}
|
|
|
|
|
return text
|
|
|
|
|
.replace(/[`'"]/g, '')
|
|
|
|
|
.split(',')
|
|
|
|
|
.map((item) => item.trim())
|
|
|
|
|
.filter(Boolean)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const normalizeAssetString = (value: unknown) => splitAssetValue(value).join(',')
|
|
|
|
|
|
|
|
|
|
const drawingsValue = computed({
|
|
|
|
|
get: () => splitAssetValue((formData.value as any).drawings),
|
|
|
|
|
set: (value: any) => { ;(formData.value as any).drawings = normalizeAssetString(value) }
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const operationManualValue = computed({
|
|
|
|
|
get: () => splitAssetValue((formData.value as any).operationManual),
|
|
|
|
|
set: (value: any) => { ;(formData.value as any).operationManual = normalizeAssetString(value) }
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const operationVideoValue = computed({
|
|
|
|
|
get: () => splitAssetValue((formData.value as any).operationVideo),
|
|
|
|
|
set: (value: any) => { ;(formData.value as any).operationVideo = normalizeAssetString(value) }
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const validateCode = (_rule: any, value: any, callback: any) => {
|
|
|
|
|
if (Boolean(formData.value.isCode)) {
|
|
|
|
|
callback()
|
|
|
|
|
@ -261,6 +330,9 @@ const resetForm = () => {
|
|
|
|
|
productName: '',
|
|
|
|
|
productIds: [],
|
|
|
|
|
images: '',
|
|
|
|
|
drawings: '',
|
|
|
|
|
operationManual: '',
|
|
|
|
|
operationVideo: '',
|
|
|
|
|
status: 1,
|
|
|
|
|
useTime: 0,
|
|
|
|
|
maintainType: undefined,
|
|
|
|
|
@ -383,6 +455,9 @@ const submitForm = async () => {
|
|
|
|
|
const payload: MoldBrandVO = {
|
|
|
|
|
...formData.value,
|
|
|
|
|
productIds: Array.isArray(formData.value.productIds) ? formData.value.productIds : [],
|
|
|
|
|
drawings: normalizeAssetString((formData.value as any).drawings),
|
|
|
|
|
operationManual: normalizeAssetString((formData.value as any).operationManual),
|
|
|
|
|
operationVideo: normalizeAssetString((formData.value as any).operationVideo),
|
|
|
|
|
isEnable: Boolean(formData.value.isEnable)
|
|
|
|
|
}
|
|
|
|
|
if (formType.value === 'create') {
|
|
|
|
|
|