feat(front): 事项编辑补服务承诺字段 + 列表加承诺时限/跑动列
build / build (push) Failing after 2m2s

- ServiceItemEdit.vue:新增「服务承诺」区块(协办部门/经办人/办理时段/跑动次数/快递/收费)
- ServiceItemList.vue:列表新增承诺时限、跑动次数两列
- SvcItemSaveRequest 类型补 7 字段,去掉原来的 & Record<string,any> 兜底
- .gitignore 忽略 vite.config.ts.timestamp-* 临时文件
This commit is contained in:
chenxing
2026-10-20 18:02:00 +08:00
parent e9009dc53a
commit 983c1a7512
4 changed files with 95 additions and 1 deletions
+76 -1
View File
@@ -25,13 +25,20 @@ const saveRules = {
title: [{ required: true, message: "请填写红色星号内容!", trigger: "blur" }],
};
const form = ref<SvcItemSaveRequest & Record<string, any>>({
const form = ref<SvcItemSaveRequest>({
siteCode: "",
itemCode: "",
title: "",
handleMode: 1,
onlineFlag: 1,
sortNo: 0,
coopDepts: "",
handlerName: "",
handleTimeDesc: "",
runCount: undefined,
expressFlag: undefined,
feeDesc: "",
feeBasis: "",
});
const objects = ref<{ dictKey: string; dictName: string }[]>([]);
const categories = ref<{ dictKey: string; dictName: string }[]>([]);
@@ -225,6 +232,7 @@ onMounted(loadAll);
<Col span="8">
<FormItem label="承诺时限">
<Input v-model="form.promiseTimeLimit" :maxlength="64" />
<div class="tip">建议填纯数字(天),详情页会用它推算预计完成日期</div>
</FormItem>
</Col>
<Col span="8">
@@ -239,6 +247,53 @@ onMounted(loadAll);
</Col>
</Row>
<div class="section-title">
<span>服务承诺</span><span class="new-tag">新增</span>
</div>
<Row :gutter="16">
<Col span="12">
<FormItem label="协办部门">
<Input v-model="form.coopDepts" :maxlength="500" placeholder="多个部门用顿号分隔" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="经办人员">
<Input v-model="form.handlerName" :maxlength="64" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="办理时间(时段)">
<Input v-model="form.handleTimeDesc" :maxlength="200" placeholder="工作日 08:00–11:45" />
<div class="tip">区别于办理时限,指窗口办公时段</div>
</FormItem>
</Col>
<Col span="12">
<FormItem label="跑现场次数">
<InputNumber v-model="form.runCount" :min="0" style="width: 100%" />
<div class="tip">0 = 零跑动</div>
</FormItem>
</Col>
<Col span="12">
<FormItem label="是否快递送达">
<Select v-model="form.expressFlag" clearable>
<Option :value="0">否</Option>
<Option :value="1">是(到付)</Option>
<Option :value="2">是(学校承担)</Option>
</Select>
</FormItem>
</Col>
<Col span="12">
<FormItem label="收费标准">
<Input v-model="form.feeDesc" :maxlength="200" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="收费依据">
<Input v-model="form.feeBasis" :maxlength="200" />
</FormItem>
</Col>
</Row>
<Divider orientation="left">在线办理绑定</Divider>
<Row :gutter="16">
<Col span="12">
@@ -346,6 +401,26 @@ onMounted(loadAll);
</template>
<style scoped>
.section-title {
display: flex;
align-items: center;
gap: 8px;
margin: 24px 0 16px;
padding-bottom: 8px;
font-size: 14px;
font-weight: 500;
color: #17233d;
border-bottom: 1px solid #e8eaec;
}
.new-tag {
padding: 0 8px;
font-size: 12px;
font-weight: 400;
line-height: 18px;
color: #808695;
border: 1px solid #dcdee2;
border-radius: 9px;
}
.flow-select {
display: flex;
gap: 8px;