This commit is contained in:
zlwu committed 2026-05-20 14:32:07 +08:00
1 parent 15ed25e33b
commit dc31968204
143 files changed
+15823 -9989

No files matched your search

@@ -22,8 +22,8 @@
<div class="filter-actions-row">
<span class="filter-hint">按编码、名称模糊查询。</span>
<div class="filter-actions-end">
<el-button class="btn-ghost" @click="handleReset">重置</el-button>
<el-button class="btn-main" type="primary" @click="handleSearch">搜索</el-button>
<el-button class="btn-ghost" @click="handleReset"><el-icon><RefreshLeft /></el-icon>重置</el-button>
<el-button class="btn-main" type="primary" @click="handleSearch"><el-icon><Search /></el-icon>搜索</el-button>
</div>
</div>
</el-form>
@@ -209,7 +209,7 @@
<script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Plus, Close, Check, View, Collection } from '@element-plus/icons-vue'
import { Plus, Close, Check, View, Collection, RefreshLeft, Search } from '@element-plus/icons-vue'
import { withFullscreenLoading, fullscreenLoadingText } from '@/utils/fullscreen-loading'
import {
fetchCellSampleTypeList,
@@ -22,8 +22,8 @@
<div class="filter-actions-row">
<span class="filter-hint">模糊查询。</span>
<div class="filter-actions-end">
<el-button class="btn-ghost" @click="handleReset">重置</el-button>
<el-button class="btn-main" type="primary" @click="handleSearch">搜索</el-button>
<el-button class="btn-ghost" @click="handleReset"><el-icon><RefreshLeft /></el-icon>重置</el-button>
<el-button class="btn-main" type="primary" @click="handleSearch"><el-icon><Search /></el-icon>搜索</el-button>
</div>
</div>
</el-form>
@@ -363,7 +363,7 @@
<script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Plus, Close, Check, View, Tickets } from '@element-plus/icons-vue'
import { Plus, Close, Check, View, Tickets, RefreshLeft, Search } from '@element-plus/icons-vue'
import SystemViewDialog from '@/components/business/system-view-dialog/index.vue'
import { withFullscreenLoading, fullscreenLoadingText } from '@/utils/fullscreen-loading'
import {
@@ -22,8 +22,8 @@
<div class="filter-actions-row">
<span class="filter-hint">按地区名称模糊查询。</span>
<div class="filter-actions-end">
<el-button class="btn-ghost" @click="handleReset">重置</el-button>
<el-button class="btn-main" type="primary" @click="handleSearch">搜索</el-button>
<el-button class="btn-ghost" @click="handleReset"><el-icon><RefreshLeft /></el-icon>重置</el-button>
<el-button class="btn-main" type="primary" @click="handleSearch"><el-icon><Search /></el-icon>搜索</el-button>
</div>
</div>
</el-form>
@@ -332,7 +332,7 @@
<script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Plus, Close, Check, View, Location } from '@element-plus/icons-vue'
import { Plus, Close, Check, View, Location, RefreshLeft, Search } from '@element-plus/icons-vue'
import { withFullscreenLoading, fullscreenLoadingText } from '@/utils/fullscreen-loading'
import SystemViewDialog from '@/components/business/system-view-dialog/index.vue'
import {
@@ -26,8 +26,8 @@
<div class="filter-actions-row">
<span class="filter-hint">支持模糊查询。</span>
<div class="filter-actions-end">
<el-button class="btn-ghost" @click="handleReset">重置</el-button>
<el-button class="btn-main" type="primary" @click="handleSearch">搜索</el-button>
<el-button class="btn-ghost" @click="handleReset"><el-icon><RefreshLeft /></el-icon>重置</el-button>
<el-button class="btn-main" type="primary" @click="handleSearch"><el-icon><Search /></el-icon>搜索</el-button>
</div>
</div>
</el-form>
@@ -226,7 +226,7 @@
<script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Plus, Close, Check, View, User } from '@element-plus/icons-vue'
import { Plus, Close, Check, View, User, RefreshLeft, Search } from '@element-plus/icons-vue'
import { withFullscreenLoading, fullscreenLoadingText } from '@/utils/fullscreen-loading'
import {
fetchCustomerList,
@@ -1,10 +1,10 @@
<!-- 保险公司 — 项目价格配置 -->
<!-- 保险公司 — 险种价格配置 -->
<!-- eslint-disable vue/no-v-model-argument -->
<template>
<div class="page-container">
<header class="page-head">
<h1>保险公司及项目价格</h1>
<p class="page-desc">维护保险公司基础信息、开票信息及项目价格管理。</p>
<h1>保险公司及险种价格</h1>
<p class="page-desc">维护保险公司基础信息、开票信息及险种价格管理。</p>
</header>
<section class="panel">
@@ -80,7 +80,7 @@
<el-table-column label="操作" width="400" fixed="right" align="center" header-align="center">
<template #default="{ row }">
<el-button class="btn-op-item" @click="handleView(row)"><el-icon><View /></el-icon>查看</el-button>
<el-button class="btn-op-item primary" @click="openItemDialog(row)"><el-icon><Setting /></el-icon>项目价格配置</el-button>
<el-button class="btn-op-item primary" @click="openItemDialog(row)"><el-icon><Setting /></el-icon>险种价格配置</el-button>
<el-button class="btn-op-item" @click="handleEdit(row)"><el-icon><Edit /></el-icon>编辑</el-button>
<el-button class="btn-op-item" @click="handleDelete(row)"><el-icon><Delete /></el-icon>删除</el-button>
</template>
@@ -161,7 +161,7 @@
</template>
</el-dialog>
<!-- 项目价格配置弹窗 -->
<!-- 险种价格配置弹窗 -->
<el-dialog
v-model="itemDialogVisible"
:title="itemDialogTitle"
@@ -173,7 +173,7 @@
@closed="onItemDialogClosed"
>
<div class="item-dialog-head">
<span class="muted">当前公司:{{ currentCompanyName }}</span>
<span class="muted">当前保险公司:{{ currentCompanyName }}</span>
</div>
<div class="list-toolbar item-toolbar">
@@ -182,7 +182,7 @@
已选 <span class="sel-num">{{ itemSelected.length }}</span> 项
</div>
<el-button class="btn-main" type="primary" @click="handleAddItem">
<el-icon><Plus /></el-icon>新增项目
<el-icon><Plus /></el-icon>新增险种
</el-button>
</div>
</div>
@@ -198,8 +198,8 @@
>
<el-table-column type="selection" width="55" align="center" header-align="center" />
<el-table-column type="index" label="序号" width="68" align="center" header-align="center" />
<el-table-column prop="projectName" label="项目名称" min-width="160" align="center" header-align="center" />
<el-table-column prop="projectFee" label="项目费用(元)" width="120" align="center" header-align="center">
<el-table-column prop="projectName" label="险种名称" min-width="160" align="center" header-align="center" />
<el-table-column prop="projectFee" label="险种费用(元)" width="120" align="center" header-align="center">
<template #default="{ row }">{{ row.projectFee != null ? `¥${row.projectFee}` : '—' }}</template>
</el-table-column>
<el-table-column prop="status" label="状态" width="90" align="center" header-align="center">
@@ -228,7 +228,7 @@
</div>
</div>
<!-- 新增/编辑项目嵌套弹窗 -->
<!-- 新增/编辑险种嵌套弹窗 -->
<el-dialog
v-model="itemFormVisible"
:title="itemFormTitle"
@@ -241,10 +241,10 @@
>
<el-form ref="itemFormRef" :model="itemForm" :rules="itemFormRules" label-position="top" class="biz-dialog-form">
<div class="form-grid-2">
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="itemForm.projectName" />
<el-form-item label="险种名称" prop="projectName">
<el-input v-model="itemForm.projectName" placeholder="请输入险种名称" />
</el-form-item>
<el-form-item label="项目费用(元)" prop="projectFee">
<el-form-item label="险种费用(元)" prop="projectFee">
<el-input-number v-model="itemForm.projectFee" :min="0" :precision="2" style="width: 100%" />
</el-form-item>
<el-form-item label="状态" prop="status">
@@ -344,10 +344,10 @@
}
// ---------------------------------------------------------------------------
// 项目价格配置弹窗
// 险种价格配置弹窗
// ---------------------------------------------------------------------------
const itemDialogVisible = ref(false)
const itemDialogTitle = ref('项目价格配置')
const itemDialogTitle = ref('险种价格配置')
const currentCompanyId = ref('')
const currentCompanyName = ref('')
const itemTable = ref<any[]>([])
@@ -356,7 +356,7 @@
const itemPagination = reactive({ page: 1, pageSize: 10, total: 0 })
const itemFormVisible = ref(false)
const itemFormTitle = ref('新增项目')
const itemFormTitle = ref('新增险种')
const itemIsEdit = ref(false)
const itemSubmitLoading = ref(false)
const itemFormRef = ref()
@@ -368,7 +368,7 @@
remark: ''
})
const itemFormRules = {
projectName: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
projectName: [{ required: true, message: '请输入险种名称', trigger: 'blur' }],
status: [{ required: true, message: '请选择状态', trigger: 'change' }]
}
@@ -527,7 +527,7 @@
async function handleDelete(row: any) {
try {
await ElMessageBox.confirm(`确定删除「${row.companyName}」?其下属项目价格将一并删除。`, '提示', {
await ElMessageBox.confirm(`确定删除「${row.companyName}」?其下属险种价格将一并删除。`, '提示', {
type: 'warning'
})
} catch {
@@ -582,14 +582,14 @@
}
// ---------------------------------------------------------------------------
// 项目价格配置弹窗
// 险种价格配置弹窗
// ---------------------------------------------------------------------------
function openItemDialog(row: any) {
currentCompanyId.value = row.id
currentCompanyName.value = row.companyName || ''
itemPagination.page = 1
itemSelected.value = []
itemDialogTitle.value = `项目价格配置 — ${row.companyName}`
itemDialogTitle.value = `险种价格配置 — ${row.companyName}`
itemDialogVisible.value = true
loadItems()
}
@@ -627,14 +627,14 @@
function handleAddItem() {
itemIsEdit.value = false
itemFormTitle.value = '新增项目'
itemFormTitle.value = '新增险种'
resetItemForm()
itemFormVisible.value = true
}
function handleEditItem(row: any) {
itemIsEdit.value = true
itemFormTitle.value = '编辑项目'
itemFormTitle.value = '编辑险种'
editingItemId.value = row.id
itemForm.projectName = row.projectName || ''
itemForm.projectFee = row.projectFee ?? 0
@@ -22,8 +22,8 @@
<div class="filter-actions-row">
<span class="filter-hint">模糊查询。</span>
<div class="filter-actions-end">
<el-button class="btn-ghost" @click="handleReset">重置</el-button>
<el-button class="btn-main" type="primary" @click="handleSearch">搜索</el-button>
<el-button class="btn-ghost" @click="handleReset"><el-icon><RefreshLeft /></el-icon>重置</el-button>
<el-button class="btn-main" type="primary" @click="handleSearch"><el-icon><Search /></el-icon>搜索</el-button>
</div>
</div>
</el-form>
@@ -378,7 +378,7 @@
<script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { Plus, Close, Check, View, Ticket } from '@element-plus/icons-vue'
import { Plus, Close, Check, View, Ticket, RefreshLeft, Search } from '@element-plus/icons-vue'
import SystemViewDialog from '@/components/business/system-view-dialog/index.vue'
import { withFullscreenLoading, fullscreenLoadingText } from '@/utils/fullscreen-loading'
import {