优化
This commit is contained in:
@@ -163,3 +163,10 @@ test('replay rejection cannot discard an earlier unknown creation outcome', asyn
|
||||
assert.deepEqual(calls[1], calls[0])
|
||||
} finally { harness.dispose() }
|
||||
})
|
||||
|
||||
test('purchase category is optional while its length remains bounded', () => {
|
||||
const payload = presentation.buildProcurementCreate({ ...draft(), purchaseCategory: ' ' }, 'Company', 'key')
|
||||
assert.equal(payload.purchaseCategory, '')
|
||||
assert.equal(submission.restoreProcurementSubmission(JSON.stringify(payload)).purchaseCategory, '')
|
||||
assert.throws(() => presentation.buildProcurementCreate({ ...draft(), purchaseCategory: 'x'.repeat(129) }, 'Company', 'key'), /品类/)
|
||||
})
|
||||
|
||||
@@ -101,11 +101,12 @@ export function draftBudgetTotal(draft: ProcurementDraft) {
|
||||
}
|
||||
export function buildProcurementCreate(draft: ProcurementDraft, customerName: string, key: string): ProcurementCreate {
|
||||
for (const [field, label, max] of [
|
||||
['purchaseCategory', '采购品类', 128], ['productName', '商品名称', 255], ['receivingAddress', '完整国内收货地址', 1000],
|
||||
['productName', '商品名称', 255], ['receivingAddress', '完整国内收货地址', 1000],
|
||||
['contactName', '最终收件人', 128], ['contactPhone', '联系电话', 64],
|
||||
] as const) {
|
||||
if (!draft[field].trim() || draft[field].trim().length > max) throw new Error(`请填写有效的${label}`)
|
||||
}
|
||||
if (draft.purchaseCategory.trim().length > 128) throw new Error('采购品类超过长度限制')
|
||||
if (!customerName.trim()) throw new Error('当前企业信息尚未加载,请刷新登录信息后重试')
|
||||
if (!/^\d+$/.test(draft.purchaseQuantity) || !Number.isSafeInteger(Number(draft.purchaseQuantity)) || Number(draft.purchaseQuantity) <= 0) throw new Error('采购数量必须为正整数')
|
||||
const price = cents(draft.budgetUnitPrice)
|
||||
|
||||
@@ -147,7 +147,7 @@ onBeforeUnmount(() => { active = false; ++requestSequence })
|
||||
<el-alert v-if="submitError" class="submit-error" :title="submitError" type="error" :closable="false" />
|
||||
<el-form :model="form" label-position="top" :disabled="submitting || Boolean(pending) || Boolean(recoveryError)" @submit.prevent="submit">
|
||||
<h3>商品与预算</h3><div class="procurement-form-grid">
|
||||
<el-form-item label="采购品类" required><el-input v-model.trim="form.purchaseCategory" maxlength="128" placeholder="请输入采购品类" /></el-form-item>
|
||||
<el-form-item label="采购品类"><el-input v-model.trim="form.purchaseCategory" maxlength="128" placeholder="请输入采购品类(选填)" /></el-form-item>
|
||||
<el-form-item label="商品名称" required><el-input v-model.trim="form.productName" maxlength="255" placeholder="请输入商品名称" /></el-form-item>
|
||||
<el-form-item label="商品规格"><el-input v-model.trim="form.productSpecification" maxlength="500" placeholder="规格、型号" /></el-form-item>
|
||||
<el-form-item label="采购数量(件)" required><el-input v-model.trim="form.purchaseQuantity" inputmode="numeric" maxlength="18" placeholder="正整数" /></el-form-item>
|
||||
@@ -158,12 +158,11 @@ onBeforeUnmount(() => { active = false; ++requestSequence })
|
||||
<h3>最终国内收件资料</h3><div class="procurement-form-grid">
|
||||
<el-form-item label="收件人" required><el-input v-model.trim="form.contactName" maxlength="128" placeholder="实际收件人姓名" /></el-form-item>
|
||||
<el-form-item label="联系电话" required><el-input v-model.trim="form.contactPhone" maxlength="64" type="tel" placeholder="快递可联系的电话" /></el-form-item>
|
||||
<el-form-item label="下单企业"><el-input :model-value="companyName" disabled /></el-form-item>
|
||||
<el-form-item class="full" label="完整国内地址" required><el-input v-model.trim="form.receivingAddress" maxlength="1000" placeholder="省、市、区县、街道及详细门牌" /></el-form-item>
|
||||
<el-form-item class="full" label="采购要求"><el-input v-model="form.remark" type="textarea" :rows="3" maxlength="1000" show-word-limit placeholder="其他采购要求(选填)" /></el-form-item>
|
||||
</div>
|
||||
</el-form>
|
||||
<footer class="procurement-form-actions"><el-button v-if="canList" :disabled="submitting" @click="returnToList">返回列表</el-button><el-button type="primary" :loading="submitting" :disabled="Boolean(recoveryError) || (!pending && !companyName) || !identity" @click="submit">{{ pending ? '确认上次提交结果' : '提交采购订单' }}</el-button></footer>
|
||||
<footer class="procurement-form-actions"><el-button type="primary" :loading="submitting" :disabled="Boolean(recoveryError) || (!pending && !companyName) || !identity" @click="submit">{{ pending ? '确认上次提交结果' : '提交采购订单' }}</el-button></footer>
|
||||
</template>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user