Procházet zdrojové kódy

feat: 自定义采购申请单

liujt před 14 hodinami
rodič
revize
d170a896e2
2 změnil soubory, kde provedl 114 přidání a 0 odebrání
  1. 80 0
      hybrid/html/a.html
  2. 34 0
      hybrid/html/c.html

+ 80 - 0
hybrid/html/a.html

@@ -212,6 +212,39 @@
 						<van-button type="primary" size="small" block @click="openTripEditDialog(scope, 'add', scope.model.blank_business_trip?scope.model.blank_business_trip.length:0)" style="margin-bottom:10px">+ 添加行程</van-button>
 					</div>
 				</template>
+				<template v-slot:blank_purchase_requisition="scope">
+					<div style="width: 100%;">
+						<view v-for="(item, index) in scope.model.blank_purchase_requisition" :key="index" class="seal-card">
+							<div class="seal-card-header">
+								<span class="seal-card-index">{{ index + 1 }}.</span>
+								<span class="seal-card-type">{{ item.materialName || '未填写物料' }} ×{{ item.quantity||0 }}{{ item.unit||'' }}</span>
+								<div class="seal-card-actions">
+									<van-button size="mini" type="primary" plain @click="openPrEditDialog(scope, 'edit', index)">编辑</van-button>
+									<van-button size="mini" type="danger" plain @click="delNewRow('blank_purchase_requisition', index)">删除</van-button>
+								</div>
+							</div>
+							<div class="seal-card-body">
+								<div class="seal-card-row">
+									<span class="seal-card-label">规格</span>
+									<span class="seal-card-value">{{ item.specification || '-' }}</span>
+								</div>
+								<div class="seal-card-row">
+									<span class="seal-card-label">用途</span>
+									<span class="seal-card-value">{{ item.purpose || '-' }}</span>
+								</div>
+								<div class="seal-card-row">
+									<span class="seal-card-label">交付</span>
+									<span class="seal-card-value">{{ item.expectedDeliveryDate || '-' }}</span>
+								</div>
+								<div class="seal-card-row" v-if="item.remark">
+									<span class="seal-card-label">备注</span>
+									<span class="seal-card-value">{{ item.remark }}</span>
+								</div>
+							</div>
+						</view>
+						<van-button type="primary" size="small" block @click="openPrEditDialog(scope, 'add', scope.model.blank_purchase_requisition?scope.model.blank_purchase_requisition.length:0)" style="margin-bottom:10px">+ 添加物料</van-button>
+					</div>
+				</template>
 
 			</fm-generate-vant-form>
 
@@ -364,6 +397,24 @@
 				</div>
 			</van-popup>
 
+			<!-- 采购申请编辑弹窗 -->
+			<van-popup v-model:show="prEditVisible" position="bottom" :style="{ height: '70%' }" round>
+				<div style="padding:16px">
+					<h4 style="text-align:center;margin-bottom:12px">{{ prEditTitle }}</h4>
+					<div class="seal-form-row"><span class="seal-form-label">物料名称</span><input class="seal-form-input" v-model="prEditForm.materialName" placeholder="请输入" /></div>
+					<div class="seal-form-row"><span class="seal-form-label">规格型号</span><input class="seal-form-input" v-model="prEditForm.specification" placeholder="请输入" /></div>
+					<div class="seal-form-row"><span class="seal-form-label">单位</span><input class="seal-form-input" v-model="prEditForm.unit" placeholder="个/台/套" /></div>
+					<div class="seal-form-row"><span class="seal-form-label">数量</span><input class="seal-form-input" type="number" v-model="prEditForm.quantity" placeholder="请输入" /></div>
+					<div class="seal-form-row"><span class="seal-form-label">用途</span><input class="seal-form-input" v-model="prEditForm.purpose" placeholder="请输入" /></div>
+					<div class="seal-form-row"><span class="seal-form-label">交付日期</span><input class="seal-form-input" type="datetime-local" v-model="prEditForm.expectedDeliveryDate" /></div>
+					<div class="seal-form-row"><span class="seal-form-label">备注</span><input class="seal-form-input" v-model="prEditForm.remark" placeholder="请输入" /></div>
+					<div style="display:flex;justify-content:space-between;padding:20px 0">
+						<van-button style="width:48%" @click="prEditVisible = false">取消</van-button>
+						<van-button style="width:48%" type="primary" @click="onPrEditSave">保存</van-button>
+					</div>
+				</div>
+			</van-popup>
+
 			<div>
 
 				<div v-if='isEdit'
@@ -553,6 +604,13 @@
 						tripEditMode: 'add',
 						tripEditScope: null,
 						tripEditIndex: null,
+						// 采购申请
+						prEditVisible: false,
+						prEditTitle: '添加物料',
+						prEditForm: { materialName: '', specification: '', unit: '', quantity: '', purpose: '', expectedDeliveryDate: '', remark: '' },
+						prEditMode: 'add',
+						prEditScope: null,
+						prEditIndex: null,
 					}
 				},
 				created() {
@@ -866,6 +924,28 @@
 							this.$refs.generateForm.setData({ input_if1cav3p: parts.join('') })
 						}
 					},
+					// ===== 采购申请 =====
+					openPrEditDialog(scope, mode, index) {
+						this.prEditScope = scope; this.prEditIndex = index; this.prEditMode = mode
+						if (mode === 'edit' && scope.model.blank_purchase_requisition[index]) {
+							var r = scope.model.blank_purchase_requisition[index]
+							this.prEditForm = { materialName: r.materialName||'', specification: r.specification||'', unit: r.unit||'', quantity: r.quantity||'', purpose: r.purpose||'', expectedDeliveryDate: r.expectedDeliveryDate||'', remark: r.remark||'' }
+							this.prEditTitle = '编辑物料'
+						} else {
+							this.prEditForm = { materialName: '', specification: '', unit: '', quantity: '', purpose: '', expectedDeliveryDate: '', remark: '' }
+							this.prEditTitle = '添加物料'
+						}
+						this.prEditVisible = true
+					},
+					async onPrEditSave() {
+						var scope = this.prEditScope, idx = this.prEditIndex, key = 'blank_purchase_requisition'
+						var data = await this.$refs.generateForm.getData(false)
+						if (!data[key]) data[key] = []
+						if (this.prEditMode === 'edit') data[key][idx] = JSON.parse(JSON.stringify(this.prEditForm))
+						else data[key].push(JSON.parse(JSON.stringify(this.prEditForm)))
+						this.$refs.generateForm.setData({ [key]: data[key] })
+						this.prEditVisible = false
+					},
 					async handleUploadLocal (model, rowIndex) {
 						console.log('上传本地文件按钮被点击,字段模型:', model, '行索引:', rowIndex)
 						let data = await this.$refs.generateForm.getData(false);

+ 34 - 0
hybrid/html/c.html

@@ -184,6 +184,40 @@
 						<!-- <van-button type="primary" size="small" block @click="openTripEditDialog(scope, 'add', scope.model.blank_business_trip?scope.model.blank_business_trip.length:0)" style="margin-bottom:10px">+ 添加行程</van-button> -->
 					</div>
 				</template>
+
+				<template v-slot:blank_purchase_requisition="scope">
+					<div style="width: 100%;">
+						<view v-for="(item, index) in scope.model.blank_purchase_requisition" :key="index" class="seal-card">
+							<div class="seal-card-header">
+								<span class="seal-card-index">{{ index + 1 }}.</span>
+								<span class="seal-card-type">{{ item.materialName || '未填写物料' }} ×{{ item.quantity||0 }}{{ item.unit||'' }}</span>
+								<!-- <div class="seal-card-actions">
+									<van-button size="mini" type="primary" plain @click="openPrEditDialog(scope, 'edit', index)">编辑</van-button>
+									<van-button size="mini" type="danger" plain @click="delNewRow('blank_purchase_requisition', index)">删除</van-button>
+								</div> -->
+							</div>
+							<div class="seal-card-body">
+								<div class="seal-card-row">
+									<span class="seal-card-label">规格</span>
+									<span class="seal-card-value">{{ item.specification || '-' }}</span>
+								</div>
+								<div class="seal-card-row">
+									<span class="seal-card-label">用途</span>
+									<span class="seal-card-value">{{ item.purpose || '-' }}</span>
+								</div>
+								<div class="seal-card-row">
+									<span class="seal-card-label">交付</span>
+									<span class="seal-card-value">{{ item.expectedDeliveryDate || '-' }}</span>
+								</div>
+								<div class="seal-card-row" v-if="item.remark">
+									<span class="seal-card-label">备注</span>
+									<span class="seal-card-value">{{ item.remark }}</span>
+								</div>
+							</div>
+						</view>
+						<!-- <van-button type="primary" size="small" block @click="openPrEditDialog(scope, 'add', scope.model.blank_purchase_requisition?scope.model.blank_purchase_requisition.length:0)" style="margin-bottom:10px">+ 添加物料</van-button> -->
+					</div>
+				</template>
 				
 			</fm-generate-vant-form>
 			<div v-if="type!='view'" style='position: fixed; bottom: 0;background: #f9fafb;width:100%;height:20%'>