3
This commit is contained in:
@@ -32,6 +32,13 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="section">
|
||||
<view class="row">
|
||||
<text class="label">编号</text>
|
||||
<input v-model.trim="form.externalCode" placeholder="内部/外部编号(可选)" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="section">
|
||||
<view class="row">
|
||||
<text class="label">模板</text>
|
||||
@@ -43,6 +50,42 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 动态参数:根据模板渲染必填/可选项 -->
|
||||
<view class="section" v-if="selectedTemplate">
|
||||
<view class="row">
|
||||
<text class="label">参数</text>
|
||||
</view>
|
||||
<view class="param-list">
|
||||
<view class="row" v-for="(p,idx) in (selectedTemplate.params||[])" :key="p.fieldKey">
|
||||
<text class="label">
|
||||
{{ p.fieldLabel }}<text v-if="p.unit">({{ p.unit }})</text><text v-if="p.required" style="color:#ff5b5b">*</text>
|
||||
</text>
|
||||
<block v-if="p.type==='string'">
|
||||
<input v-model.trim="paramValues[p.fieldKey]" :placeholder="'请输入' + p.fieldLabel" />
|
||||
</block>
|
||||
<block v-else-if="p.type==='number'">
|
||||
<input type="number" v-model.number="paramValues[p.fieldKey]" :placeholder="'请输入' + p.fieldLabel" />
|
||||
</block>
|
||||
<block v-else-if="p.type==='boolean'">
|
||||
<switch :checked="!!paramValues[p.fieldKey]" @change="e => (paramValues[p.fieldKey]=e.detail.value)" />
|
||||
</block>
|
||||
<block v-else-if="p.type==='enum'">
|
||||
<picker mode="selector" :range="p.enumOptions||[]" @change="onPickEnum(p, $event)">
|
||||
<view class="picker">{{ displayEnum(p) }}</view>
|
||||
</picker>
|
||||
</block>
|
||||
<block v-else-if="p.type==='date'">
|
||||
<picker mode="date" @change="onPickDate(p, $event)">
|
||||
<view class="picker">{{ paramValues[p.fieldKey] || ('选择' + p.fieldLabel) }}</view>
|
||||
</picker>
|
||||
</block>
|
||||
<block v-else>
|
||||
<input v-model.trim="paramValues[p.fieldKey]" :placeholder="'请输入' + p.fieldLabel" />
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="section">
|
||||
<view class="row">
|
||||
<text class="label">图片</text>
|
||||
@@ -91,6 +134,7 @@ export default {
|
||||
|
||||
categoryId: '',
|
||||
templateId: '',
|
||||
externalCode: '',
|
||||
parameters: {},
|
||||
images: [],
|
||||
remark: '',
|
||||
@@ -172,11 +216,18 @@ export default {
|
||||
this.form.templateId = t ? t.id : ''
|
||||
this.paramValues = {}
|
||||
},
|
||||
onPickDate(p, e) {
|
||||
this.paramValues[p.fieldKey] = e?.detail?.value || ''
|
||||
},
|
||||
onPickEnum(p, e) {
|
||||
const idx = Number(e.detail.value)
|
||||
const arr = p.enumOptions || []
|
||||
this.paramValues[p.fieldKey] = arr[idx]
|
||||
},
|
||||
displayEnum(p) {
|
||||
const v = this.paramValues[p.fieldKey]
|
||||
return (v === undefined || v === null || v === '') ? ('选择' + p.fieldLabel) : String(v)
|
||||
},
|
||||
async scanBarcode() {
|
||||
try {
|
||||
const chooseRes = await uni.chooseImage({ count: 1, sourceType: ['camera','album'], sizeType: ['compressed'] })
|
||||
@@ -253,6 +304,7 @@ export default {
|
||||
model: this.form.model,
|
||||
brand: this.form.brand,
|
||||
barcode: this.form.barcode,
|
||||
externalCode: this.form.externalCode || null,
|
||||
categoryId: this.form.categoryId || null,
|
||||
templateId: this.form.templateId || null,
|
||||
parameters: paramsForSubmit,
|
||||
|
||||
Reference in New Issue
Block a user