Compare commits
2
Commits
6cc5e892c5
...
983c1a7512
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
983c1a7512 | ||
|
|
e9009dc53a |
@@ -27,3 +27,6 @@ yarn.lock
|
||||
|
||||
# scratch
|
||||
.temp
|
||||
|
||||
# Vite 配置热重载产生的临时文件(构建时自动生成,勿入库)
|
||||
vite.config.ts.timestamp-*
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 186 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 186 KiB |
@@ -97,17 +97,25 @@ h4.subtitle {
|
||||
}
|
||||
}
|
||||
|
||||
/* 表格加载(规范 §4 表格加载行):图形=通道 .ysch-spin(随 --brand),本地零图形资产 */
|
||||
.table-spin-load {
|
||||
position: relative;
|
||||
width: 60px;
|
||||
height: 90px;
|
||||
padding-top: 60px;
|
||||
background-image: url(../image/loading.gif);
|
||||
background-size: 60px 60px;
|
||||
background-position: top center;
|
||||
background-repeat: no-repeat;
|
||||
border: none;
|
||||
color: #577afb;
|
||||
color: var(--brand);
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
}
|
||||
.table-spin-load .ysch-spin {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 0;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
margin-left: -30px;
|
||||
font-size: 60px; /* .ysch-spin 尺寸=1em,60px 图形用字号给 */
|
||||
}
|
||||
|
||||
.ivu-table-cell-tree {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<Table :columns="columns" :data="list" :height="tableH" :loading="loading" no-data-text="暂无数据"
|
||||
class="link-table table-bottom-box" @on-selection-change="selectChange">
|
||||
<template #loading>
|
||||
<div class="table-spin-load">加载中</div>
|
||||
<div class="table-spin-load"><i class="ysch-spin"></i>加载中</div>
|
||||
</template>
|
||||
<template v-for="slotName in tableSlotNames" :key="slotName" v-slot:[slotName]="slotProps">
|
||||
<slot :name="slotName" v-bind="slotProps" />
|
||||
|
||||
@@ -130,6 +130,14 @@ export interface SvcItemSaveRequest {
|
||||
formCode?: string;
|
||||
flowGuid?: string;
|
||||
applyUrl?: string;
|
||||
// ===== 服务承诺(P1-1):与后端 SvcModels.SvcItemSaveRequest 同名,勿改 =====
|
||||
coopDepts?: string;
|
||||
handlerName?: string;
|
||||
handleTimeDesc?: string;
|
||||
runCount?: number;
|
||||
expressFlag?: number;
|
||||
feeDesc?: string;
|
||||
feeBasis?: string;
|
||||
sortNo?: number;
|
||||
attachmentIds?: number[];
|
||||
}
|
||||
|
||||
@@ -133,7 +133,11 @@ onMounted(async () => {
|
||||
</div>
|
||||
<div class="table-region" ref="objectRegionRef">
|
||||
<Table :columns="cols" :data="objectRows" :loading="objectLoading" class="link-table table-bottom-box"
|
||||
:height="objectH || undefined" no-data-text="暂无数据" />
|
||||
:height="objectH || undefined" no-data-text="暂无数据">
|
||||
<template #loading>
|
||||
<div class="table-spin-load"><i class="ysch-spin"></i>加载中</div>
|
||||
</template>
|
||||
</Table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -149,7 +153,11 @@ onMounted(async () => {
|
||||
</div>
|
||||
<div class="table-region" ref="categoryRegionRef">
|
||||
<Table :columns="cols" :data="categoryRows" :loading="categoryLoading" class="link-table table-bottom-box"
|
||||
:height="categoryH || undefined" no-data-text="暂无数据" />
|
||||
:height="categoryH || undefined" no-data-text="暂无数据">
|
||||
<template #loading>
|
||||
<div class="table-spin-load"><i class="ysch-spin"></i>加载中</div>
|
||||
</template>
|
||||
</Table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -21,6 +21,10 @@ const dataParams = ref<{ status?: number; keyword: string }>({ status: undefined
|
||||
|
||||
const handleModeName = (m: number) => (m === 1 ? "线上" : m === 2 ? "线下" : "线上线下");
|
||||
|
||||
// 表头"新增"标记(验收识别用,灰色小字)
|
||||
const titleWithNew = (h: any, text: string) =>
|
||||
h("span", [text, h("span", { style: { marginLeft: "4px", fontSize: "10px", color: "#808695" } }, "新增")]);
|
||||
|
||||
const columns = [
|
||||
{ title: "序号", type: "index", width: 70, align: "center" },
|
||||
{ title: "编码", key: "itemCode", width: 140 },
|
||||
@@ -28,6 +32,10 @@ const columns = [
|
||||
{ title: "类别", key: "categoryName", width: 110 },
|
||||
{ title: "部门", key: "deptName", width: 130 },
|
||||
{ title: "办理方式", width: 90, align: "center", render: (h: any, p: any) => h("span", handleModeName(p.row.handleMode)) },
|
||||
{ title: "承诺时限", width: 110, align: "center", renderHeader: (h: any) => titleWithNew(h, "承诺时限"),
|
||||
render: (h: any, p: any) => h("span", p.row.promiseTimeLimit || "—") },
|
||||
{ title: "跑动", width: 100, align: "center", renderHeader: (h: any) => titleWithNew(h, "跑动"),
|
||||
render: (h: any, p: any) => h("span", p.row.runCount === null || p.row.runCount === undefined ? "—" : (p.row.runCount === 0 ? "零跑动" : `${p.row.runCount} 次`)) },
|
||||
{ title: "在线办理", width: 110, align: "center", render: (h: any, p: any) =>
|
||||
p.row.onlineFlag === 1
|
||||
? h(Tag, { color: "green" }, () => "可在线办理")
|
||||
|
||||
Reference in New Issue
Block a user