This commit is contained in:
2025-09-29 21:38:32 +08:00
parent ed26244cdb
commit 19117de6c8
182 changed files with 11590 additions and 2156 deletions

View File

@@ -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,