Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
983c1a7512 | ||
|
|
e9009dc53a |
@@ -27,3 +27,6 @@ yarn.lock
|
|||||||
|
|
||||||
# scratch
|
# scratch
|
||||||
.temp
|
.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 {
|
.table-spin-load {
|
||||||
|
position: relative;
|
||||||
width: 60px;
|
width: 60px;
|
||||||
height: 90px;
|
height: 90px;
|
||||||
padding-top: 60px;
|
padding-top: 60px;
|
||||||
background-image: url(../image/loading.gif);
|
|
||||||
background-size: 60px 60px;
|
|
||||||
background-position: top center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
border: none;
|
border: none;
|
||||||
color: #577afb;
|
color: var(--brand);
|
||||||
margin: 0 auto;
|
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 {
|
.ivu-table-cell-tree {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<Table :columns="columns" :data="list" :height="tableH" :loading="loading" no-data-text="暂无数据"
|
<Table :columns="columns" :data="list" :height="tableH" :loading="loading" no-data-text="暂无数据"
|
||||||
class="link-table table-bottom-box" @on-selection-change="selectChange">
|
class="link-table table-bottom-box" @on-selection-change="selectChange">
|
||||||
<template #loading>
|
<template #loading>
|
||||||
<div class="table-spin-load">加载中</div>
|
<div class="table-spin-load"><i class="ysch-spin"></i>加载中</div>
|
||||||
</template>
|
</template>
|
||||||
<template v-for="slotName in tableSlotNames" :key="slotName" v-slot:[slotName]="slotProps">
|
<template v-for="slotName in tableSlotNames" :key="slotName" v-slot:[slotName]="slotProps">
|
||||||
<slot :name="slotName" v-bind="slotProps" />
|
<slot :name="slotName" v-bind="slotProps" />
|
||||||
|
|||||||
@@ -130,6 +130,14 @@ export interface SvcItemSaveRequest {
|
|||||||
formCode?: string;
|
formCode?: string;
|
||||||
flowGuid?: string;
|
flowGuid?: string;
|
||||||
applyUrl?: string;
|
applyUrl?: string;
|
||||||
|
// ===== 服务承诺(P1-1):与后端 SvcModels.SvcItemSaveRequest 同名,勿改 =====
|
||||||
|
coopDepts?: string;
|
||||||
|
handlerName?: string;
|
||||||
|
handleTimeDesc?: string;
|
||||||
|
runCount?: number;
|
||||||
|
expressFlag?: number;
|
||||||
|
feeDesc?: string;
|
||||||
|
feeBasis?: string;
|
||||||
sortNo?: number;
|
sortNo?: number;
|
||||||
attachmentIds?: number[];
|
attachmentIds?: number[];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -133,7 +133,11 @@ onMounted(async () => {
|
|||||||
</div>
|
</div>
|
||||||
<div class="table-region" ref="objectRegionRef">
|
<div class="table-region" ref="objectRegionRef">
|
||||||
<Table :columns="cols" :data="objectRows" :loading="objectLoading" class="link-table table-bottom-box"
|
<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>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -149,7 +153,11 @@ onMounted(async () => {
|
|||||||
</div>
|
</div>
|
||||||
<div class="table-region" ref="categoryRegionRef">
|
<div class="table-region" ref="categoryRegionRef">
|
||||||
<Table :columns="cols" :data="categoryRows" :loading="categoryLoading" class="link-table table-bottom-box"
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -25,13 +25,20 @@ const saveRules = {
|
|||||||
title: [{ required: true, message: "请填写红色星号内容!", trigger: "blur" }],
|
title: [{ required: true, message: "请填写红色星号内容!", trigger: "blur" }],
|
||||||
};
|
};
|
||||||
|
|
||||||
const form = ref<SvcItemSaveRequest & Record<string, any>>({
|
const form = ref<SvcItemSaveRequest>({
|
||||||
siteCode: "",
|
siteCode: "",
|
||||||
itemCode: "",
|
itemCode: "",
|
||||||
title: "",
|
title: "",
|
||||||
handleMode: 1,
|
handleMode: 1,
|
||||||
onlineFlag: 1,
|
onlineFlag: 1,
|
||||||
sortNo: 0,
|
sortNo: 0,
|
||||||
|
coopDepts: "",
|
||||||
|
handlerName: "",
|
||||||
|
handleTimeDesc: "",
|
||||||
|
runCount: undefined,
|
||||||
|
expressFlag: undefined,
|
||||||
|
feeDesc: "",
|
||||||
|
feeBasis: "",
|
||||||
});
|
});
|
||||||
const objects = ref<{ dictKey: string; dictName: string }[]>([]);
|
const objects = ref<{ dictKey: string; dictName: string }[]>([]);
|
||||||
const categories = ref<{ dictKey: string; dictName: string }[]>([]);
|
const categories = ref<{ dictKey: string; dictName: string }[]>([]);
|
||||||
@@ -225,6 +232,7 @@ onMounted(loadAll);
|
|||||||
<Col span="8">
|
<Col span="8">
|
||||||
<FormItem label="承诺时限">
|
<FormItem label="承诺时限">
|
||||||
<Input v-model="form.promiseTimeLimit" :maxlength="64" />
|
<Input v-model="form.promiseTimeLimit" :maxlength="64" />
|
||||||
|
<div class="tip">建议填纯数字(天),详情页会用它推算预计完成日期</div>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
</Col>
|
</Col>
|
||||||
<Col span="8">
|
<Col span="8">
|
||||||
@@ -239,6 +247,53 @@ onMounted(loadAll);
|
|||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</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>
|
<Divider orientation="left">在线办理绑定</Divider>
|
||||||
<Row :gutter="16">
|
<Row :gutter="16">
|
||||||
<Col span="12">
|
<Col span="12">
|
||||||
@@ -346,6 +401,26 @@ onMounted(loadAll);
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<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 {
|
.flow-select {
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ const dataParams = ref<{ status?: number; keyword: string }>({ status: undefined
|
|||||||
|
|
||||||
const handleModeName = (m: number) => (m === 1 ? "线上" : m === 2 ? "线下" : "线上线下");
|
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 = [
|
const columns = [
|
||||||
{ title: "序号", type: "index", width: 70, align: "center" },
|
{ title: "序号", type: "index", width: 70, align: "center" },
|
||||||
{ title: "编码", key: "itemCode", width: 140 },
|
{ title: "编码", key: "itemCode", width: 140 },
|
||||||
@@ -28,6 +32,10 @@ const columns = [
|
|||||||
{ title: "类别", key: "categoryName", width: 110 },
|
{ title: "类别", key: "categoryName", width: 110 },
|
||||||
{ title: "部门", key: "deptName", width: 130 },
|
{ title: "部门", key: "deptName", width: 130 },
|
||||||
{ title: "办理方式", width: 90, align: "center", render: (h: any, p: any) => h("span", handleModeName(p.row.handleMode)) },
|
{ 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) =>
|
{ title: "在线办理", width: 110, align: "center", render: (h: any, p: any) =>
|
||||||
p.row.onlineFlag === 1
|
p.row.onlineFlag === 1
|
||||||
? h(Tag, { color: "green" }, () => "可在线办理")
|
? h(Tag, { color: "green" }, () => "可在线办理")
|
||||||
|
|||||||
Reference in New Issue
Block a user