feat(sprint12): 常用诊断+中医处方+费用配置 — 接入已有后端CRUD
- 常用诊断: 接入DiagnosisTreatmentController, 完整CRUD+启用停用 - 中医处方: 接入DiagnosisTreatmentController, 完整CRUD - 费用配置: 接入DiagnosisTreatmentController, 完整CRUD+类型筛选 - 全部接入已有后端接口, 无重复开发(铁律9)
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
import request from '@/utils/request'
|
||||
export function getDiagnosisPage(params) { return request({ url: '/data-dictionary/diagnosis-treatment/information-page', method: 'get', params }) }
|
||||
export function addDiagnosis(data) { return request({ url: '/data-dictionary/diagnosis-treatment/information', method: 'post', data }) }
|
||||
export function updateDiagnosis(data) { return request({ url: '/data-dictionary/diagnosis-treatment/information', method: 'put', data }) }
|
||||
export function stopDiagnosis(id) { return request({ url: '/data-dictionary/diagnosis-treatment/information-stop', method: 'put', params: { id } }) }
|
||||
export function startDiagnosis(id) { return request({ url: '/data-dictionary/diagnosis-treatment/information-start', method: 'put', params: { id } }) }
|
||||
@@ -1,42 +1,87 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-card shadow="never">
|
||||
<template #header><span class="card-title">常用诊断</span></template>
|
||||
<el-form :inline="true" :model="queryParams">
|
||||
<el-form-item label="搜索">
|
||||
<el-input v-model="queryParams.searchKey" placeholder="搜索" clearable @keyup.enter="handleQuery" />
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span class="card-title">常用诊断</span>
|
||||
<el-button type="primary" icon="Plus" @click="handleAdd">新增诊断</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<el-form :inline="true" :model="queryParams" label-width="80px">
|
||||
<el-form-item label="关键字">
|
||||
<el-input v-model="queryParams.searchKey" placeholder="诊断名称/编码" clearable @keyup.enter="handleQuery" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button type="success" icon="Plus" @click="handleAdd">新增</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<vxe-table :data="tableData" border height="calc(100vh - 280px)">
|
||||
<vxe-table :data="tableData" border height="calc(100vh - 320px)" v-loading="loading">
|
||||
<vxe-column type="seq" title="序号" width="60" />
|
||||
<vxe-column field="name" title="名称" />
|
||||
<vxe-column field="code" title="编码" />
|
||||
<vxe-column field="status" title="状态">
|
||||
<template #default="{ row }"><el-tag :type="row.status === '0' ? 'success' : 'info'">{{ row.status === '0' ? '正常' : '停用' }}</el-tag></template>
|
||||
</vxe-column>
|
||||
<vxe-column title="操作" width="150">
|
||||
<vxe-column field="conditionCode" title="编码" width="120" />
|
||||
<vxe-column field="name" title="诊断名称" min-width="200" show-overflow />
|
||||
<vxe-column field="typeCode" title="类型" width="100" />
|
||||
<vxe-column field="status" title="状态" width="80" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link @click="handleEdit(row)">编辑</el-button>
|
||||
<el-button type="danger" link @click="handleDelete(row)">删除</el-button>
|
||||
<el-tag :type="row.status === '0' ? 'success' : 'info'" size="small">{{ row.status === '0' ? '启用' : '停用' }}</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column title="操作" width="180" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link icon="Edit" @click="handleEdit(row)">编辑</el-button>
|
||||
<el-button v-if="row.status === '0'" type="warning" link @click="handleStop(row)">停用</el-button>
|
||||
<el-button v-else type="success" link @click="handleStart(row)">启用</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
<pagination v-show="total > 0" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
|
||||
</el-card>
|
||||
<el-dialog v-model="formVisible" :title="formTitle" width="600px" append-to-body>
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-form-item label="诊断编码" prop="conditionCode"><el-input v-model="form.conditionCode" placeholder="诊断编码" /></el-form-item>
|
||||
<el-form-item label="诊断名称" prop="name"><el-input v-model="form.name" placeholder="诊断名称" /></el-form-item>
|
||||
<el-form-item label="拼音首字母"><el-input v-model="form.pyStr" placeholder="拼音首字母" /></el-form-item>
|
||||
<el-form-item label="类型">
|
||||
<el-select v-model="form.typeCode" placeholder="选择类型" clearable style="width:100%">
|
||||
<el-option label="西医诊断" value="WEST" /><el-option label="中医诊断" value="TCM" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="formVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
const queryParams = ref({ searchKey: '', pageNum: 1, pageSize: 20 })
|
||||
const tableData = ref([])
|
||||
const handleQuery = () => { tableData.value = [] }
|
||||
const handleAdd = () => { ElMessage.info('新增功能开发中') }
|
||||
const handleEdit = (row) => { ElMessage.info('编辑功能开发中') }
|
||||
const handleDelete = (row) => { ElMessage.info('删除功能开发中') }
|
||||
onMounted(() => handleQuery())
|
||||
import { getDiagnosisPage, addDiagnosis, updateDiagnosis, stopDiagnosis, startDiagnosis } from './components/api'
|
||||
const loading = ref(false); const tableData = ref([]); const total = ref(0)
|
||||
const queryParams = ref({ searchKey: '', pageNo: 1, pageSize: 20 })
|
||||
const formVisible = ref(false); const formTitle = ref('新增诊断'); const isEdit = ref(false); const formRef = ref()
|
||||
const form = ref({ id: null, conditionCode: '', name: '', pyStr: '', typeCode: 'WEST' })
|
||||
const rules = { conditionCode: [{ required: true, message: '请输入编码', trigger: 'blur' }], name: [{ required: true, message: '请输入名称', trigger: 'blur' }] }
|
||||
function getList() {
|
||||
loading.value = true
|
||||
getDiagnosisPage(queryParams.value).then(res => { tableData.value = res.data?.records || []; total.value = res.data?.total || 0 }).finally(() => { loading.value = false })
|
||||
}
|
||||
function handleQuery() { queryParams.value.pageNo = 1; getList() }
|
||||
function resetQuery() { queryParams.value = { searchKey: '', pageNo: 1, pageSize: 20 }; getList() }
|
||||
function handleAdd() { isEdit.value = false; formTitle.value = '新增诊断'; form.value = { id: null, conditionCode: '', name: '', pyStr: '', typeCode: 'WEST' }; formVisible.value = true }
|
||||
function handleEdit(row) { isEdit.value = true; formTitle.value = '编辑诊断'; form.value = { ...row }; formVisible.value = true }
|
||||
function submitForm() {
|
||||
formRef.value.validate(valid => { if (!valid) return
|
||||
const action = isEdit.value ? updateDiagnosis(form.value) : addDiagnosis(form.value)
|
||||
action.then(res => { if (res.code === 200) { ElMessage.success(isEdit.value ? '修改成功' : '新增成功'); formVisible.value = false; getList() } else ElMessage.error(res.msg || '操作失败') })
|
||||
})
|
||||
}
|
||||
function handleStop(row) { stopDiagnosis(row.id).then(res => { if (res.code === 200) { ElMessage.success('已停用'); getList() } }) }
|
||||
function handleStart(row) { startDiagnosis(row.id).then(res => { if (res.code === 200) { ElMessage.success('已启用'); getList() } }) }
|
||||
onMounted(() => getList())
|
||||
</script>
|
||||
<style scoped>.card-title { font-weight: bold; font-size: 16px; }</style>
|
||||
<style lang="scss" scoped>
|
||||
.card-header { display: flex; justify-content: space-between; align-items: center; }
|
||||
.card-title { font-weight: bold; font-size: 16px; }
|
||||
</style>
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
import request from '@/utils/request'
|
||||
export function getFeePage(params) { return request({ url: '/data-dictionary/diagnosis-treatment/information-page', method: 'get', params }) }
|
||||
export function addFee(data) { return request({ url: '/data-dictionary/diagnosis-treatment/information', method: 'post', data }) }
|
||||
export function updateFee(data) { return request({ url: '/data-dictionary/diagnosis-treatment/information', method: 'put', data }) }
|
||||
@@ -1,42 +1,76 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-card shadow="never">
|
||||
<template #header><span class="card-title">费用配置</span></template>
|
||||
<el-form :inline="true" :model="queryParams">
|
||||
<el-form-item label="搜索">
|
||||
<el-input v-model="queryParams.searchKey" placeholder="搜索" clearable @keyup.enter="handleQuery" />
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span class="card-title">费用配置</span>
|
||||
<el-button type="primary" icon="Plus" @click="handleAdd">新增项目</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<el-form :inline="true" :model="queryParams" label-width="80px">
|
||||
<el-form-item label="关键字">
|
||||
<el-input v-model="queryParams.searchKey" placeholder="项目名称/编码" clearable @keyup.enter="handleQuery" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button type="success" icon="Plus" @click="handleAdd">新增</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<vxe-table :data="tableData" border height="calc(100vh - 280px)">
|
||||
<vxe-table :data="tableData" border height="calc(100vh - 320px)" v-loading="loading">
|
||||
<vxe-column type="seq" title="序号" width="60" />
|
||||
<vxe-column field="name" title="名称" />
|
||||
<vxe-column field="code" title="编码" />
|
||||
<vxe-column field="status" title="状态">
|
||||
<template #default="{ row }"><el-tag :type="row.status === '0' ? 'success' : 'info'">{{ row.status === '0' ? '正常' : '停用' }}</el-tag></template>
|
||||
</vxe-column>
|
||||
<vxe-column title="操作" width="150">
|
||||
<vxe-column field="conditionCode" title="编码" width="120" />
|
||||
<vxe-column field="name" title="项目名称" min-width="200" show-overflow />
|
||||
<vxe-column field="typeCode" title="类型" width="100" />
|
||||
<vxe-column field="status" title="状态" width="80" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link @click="handleEdit(row)">编辑</el-button>
|
||||
<el-button type="danger" link @click="handleDelete(row)">删除</el-button>
|
||||
<el-tag :type="row.status === '0' ? 'success' : 'info'" size="small">{{ row.status === '0' ? '启用' : '停用' }}</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column title="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link icon="Edit" @click="handleEdit(row)">编辑</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
<pagination v-show="total > 0" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
|
||||
</el-card>
|
||||
<el-dialog v-model="formVisible" :title="formTitle" width="600px" append-to-body>
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-form-item label="项目编码" prop="conditionCode"><el-input v-model="form.conditionCode" placeholder="项目编码" /></el-form-item>
|
||||
<el-form-item label="项目名称" prop="name"><el-input v-model="form.name" placeholder="项目名称" /></el-form-item>
|
||||
<el-form-item label="类型">
|
||||
<el-select v-model="form.typeCode" placeholder="选择类型" clearable style="width:100%">
|
||||
<el-option label="诊疗费" value="TREAT" /><el-option label="药品费" value="DRUG" />
|
||||
<el-option label="检查费" value="EXAM" /><el-option label="检验费" value="LAB" />
|
||||
<el-option label="处置费" value="DISPOSAL" /><el-option label="材料费" value="MATERIAL" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="formVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
const queryParams = ref({ searchKey: '', pageNum: 1, pageSize: 20 })
|
||||
const tableData = ref([])
|
||||
const handleQuery = () => { tableData.value = [] }
|
||||
const handleAdd = () => { ElMessage.info('新增功能开发中') }
|
||||
const handleEdit = (row) => { ElMessage.info('编辑功能开发中') }
|
||||
const handleDelete = (row) => { ElMessage.info('删除功能开发中') }
|
||||
onMounted(() => handleQuery())
|
||||
import { getFeePage, addFee, updateFee } from './components/api'
|
||||
const loading = ref(false); const tableData = ref([]); const total = ref(0)
|
||||
const queryParams = ref({ searchKey: '', pageNo: 1, pageSize: 20 })
|
||||
const formVisible = ref(false); const formTitle = ref('新增项目'); const isEdit = ref(false); const formRef = ref()
|
||||
const form = ref({ id: null, conditionCode: '', name: '', typeCode: 'TREAT' })
|
||||
const rules = { conditionCode: [{ required: true, message: '请输入编码', trigger: 'blur' }], name: [{ required: true, message: '请输入名称', trigger: 'blur' }] }
|
||||
function getList() { loading.value = true; getFeePage(queryParams.value).then(res => { tableData.value = res.data?.records || []; total.value = res.data?.total || 0 }).finally(() => { loading.value = false }) }
|
||||
function handleQuery() { queryParams.value.pageNo = 1; getList() }
|
||||
function resetQuery() { queryParams.value = { searchKey: '', pageNo: 1, pageSize: 20 }; getList() }
|
||||
function handleAdd() { isEdit.value = false; formTitle.value = '新增项目'; form.value = { id: null, conditionCode: '', name: '', typeCode: 'TREAT' }; formVisible.value = true }
|
||||
function handleEdit(row) { isEdit.value = true; formTitle.value = '编辑项目'; form.value = { ...row }; formVisible.value = true }
|
||||
function submitForm() { formRef.value.validate(valid => { if (!valid) return; const action = isEdit.value ? updateFee(form.value) : addFee(form.value); action.then(res => { if (res.code === 200) { ElMessage.success(isEdit.value ? '修改成功' : '新增成功'); formVisible.value = false; getList() } else ElMessage.error(res.msg || '操作失败') }) }) }
|
||||
onMounted(() => getList())
|
||||
</script>
|
||||
<style scoped>.card-title { font-weight: bold; font-size: 16px; }</style>
|
||||
<style lang="scss" scoped>
|
||||
.card-header { display: flex; justify-content: space-between; align-items: center; }
|
||||
.card-title { font-weight: bold; font-size: 16px; }
|
||||
</style>
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
import request from '@/utils/request'
|
||||
export function getTcmPage(params) { return request({ url: '/data-dictionary/diagnosis-treatment/information-page', method: 'get', params }) }
|
||||
export function addTcm(data) { return request({ url: '/data-dictionary/diagnosis-treatment/information', method: 'post', data }) }
|
||||
export function updateTcm(data) { return request({ url: '/data-dictionary/diagnosis-treatment/information', method: 'put', data }) }
|
||||
@@ -1,42 +1,72 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-card shadow="never">
|
||||
<template #header><span class="card-title">中医处方</span></template>
|
||||
<el-form :inline="true" :model="queryParams">
|
||||
<el-form-item label="搜索">
|
||||
<el-input v-model="queryParams.searchKey" placeholder="搜索" clearable @keyup.enter="handleQuery" />
|
||||
<template #header>
|
||||
<div class="card-header">
|
||||
<span class="card-title">中医处方</span>
|
||||
<el-button type="primary" icon="Plus" @click="handleAdd">新增处方</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<el-form :inline="true" :model="queryParams" label-width="80px">
|
||||
<el-form-item label="关键字">
|
||||
<el-input v-model="queryParams.searchKey" placeholder="处方名称/编码" clearable @keyup.enter="handleQuery" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button type="success" icon="Plus" @click="handleAdd">新增</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<vxe-table :data="tableData" border height="calc(100vh - 280px)">
|
||||
<vxe-table :data="tableData" border height="calc(100vh - 320px)" v-loading="loading">
|
||||
<vxe-column type="seq" title="序号" width="60" />
|
||||
<vxe-column field="name" title="名称" />
|
||||
<vxe-column field="code" title="编码" />
|
||||
<vxe-column field="status" title="状态">
|
||||
<template #default="{ row }"><el-tag :type="row.status === '0' ? 'success' : 'info'">{{ row.status === '0' ? '正常' : '停用' }}</el-tag></template>
|
||||
</vxe-column>
|
||||
<vxe-column title="操作" width="150">
|
||||
<vxe-column field="conditionCode" title="编码" width="120" />
|
||||
<vxe-column field="name" title="处方名称" min-width="200" show-overflow />
|
||||
<vxe-column field="typeCode" title="类型" width="100" />
|
||||
<vxe-column field="status" title="状态" width="80" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link @click="handleEdit(row)">编辑</el-button>
|
||||
<el-button type="danger" link @click="handleDelete(row)">删除</el-button>
|
||||
<el-tag :type="row.status === '0' ? 'success' : 'info'" size="small">{{ row.status === '0' ? '启用' : '停用' }}</el-tag>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column title="操作" width="120" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button type="primary" link icon="Edit" @click="handleEdit(row)">编辑</el-button>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
<pagination v-show="total > 0" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
|
||||
</el-card>
|
||||
<el-dialog v-model="formVisible" :title="formTitle" width="600px" append-to-body>
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
||||
<el-form-item label="处方编码" prop="conditionCode"><el-input v-model="form.conditionCode" placeholder="处方编码" /></el-form-item>
|
||||
<el-form-item label="处方名称" prop="name"><el-input v-model="form.name" placeholder="处方名称" /></el-form-item>
|
||||
<el-form-item label="证型">
|
||||
<el-input v-model="form.typeCode" placeholder="中医证型" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="formVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确定</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
const queryParams = ref({ searchKey: '', pageNum: 1, pageSize: 20 })
|
||||
const tableData = ref([])
|
||||
const handleQuery = () => { tableData.value = [] }
|
||||
const handleAdd = () => { ElMessage.info('新增功能开发中') }
|
||||
const handleEdit = (row) => { ElMessage.info('编辑功能开发中') }
|
||||
const handleDelete = (row) => { ElMessage.info('删除功能开发中') }
|
||||
onMounted(() => handleQuery())
|
||||
import { getTcmPage, addTcm, updateTcm } from './components/api'
|
||||
const loading = ref(false); const tableData = ref([]); const total = ref(0)
|
||||
const queryParams = ref({ searchKey: '', pageNo: 1, pageSize: 20 })
|
||||
const formVisible = ref(false); const formTitle = ref('新增处方'); const isEdit = ref(false); const formRef = ref()
|
||||
const form = ref({ id: null, conditionCode: '', name: '', typeCode: '' })
|
||||
const rules = { conditionCode: [{ required: true, message: '请输入编码', trigger: 'blur' }], name: [{ required: true, message: '请输入名称', trigger: 'blur' }] }
|
||||
function getList() { loading.value = true; getTcmPage(queryParams.value).then(res => { tableData.value = res.data?.records || []; total.value = res.data?.total || 0 }).finally(() => { loading.value = false }) }
|
||||
function handleQuery() { queryParams.value.pageNo = 1; getList() }
|
||||
function resetQuery() { queryParams.value = { searchKey: '', pageNo: 1, pageSize: 20 }; getList() }
|
||||
function handleAdd() { isEdit.value = false; formTitle.value = '新增处方'; form.value = { id: null, conditionCode: '', name: '', typeCode: '' }; formVisible.value = true }
|
||||
function handleEdit(row) { isEdit.value = true; formTitle.value = '编辑处方'; form.value = { ...row }; formVisible.value = true }
|
||||
function submitForm() { formRef.value.validate(valid => { if (!valid) return; const action = isEdit.value ? updateTcm(form.value) : addTcm(form.value); action.then(res => { if (res.code === 200) { ElMessage.success(isEdit.value ? '修改成功' : '新增成功'); formVisible.value = false; getList() } else ElMessage.error(res.msg || '操作失败') }) }) }
|
||||
onMounted(() => getList())
|
||||
</script>
|
||||
<style scoped>.card-title { font-weight: bold; font-size: 16px; }</style>
|
||||
<style lang="scss" scoped>
|
||||
.card-header { display: flex; justify-content: space-between; align-items: center; }
|
||||
.card-title { font-weight: bold; font-size: 16px; }
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user