From 71316026dab664cc01bc93d9754f174a00129587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B2=A9=E4=BB=9488?= <> Date: Thu, 4 Jun 2026 14:04:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=93=8D=E4=BD=9C=E8=AE=B0?= =?UTF-8?q?=E5=BD=95=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=E5=92=8C=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/YeWu/ConflictRecordController.php | 100 ++++++++++++ .../YeWu/DeleteOperationLogController.php | 100 ++++++++++++ Laravel/routes/api.php | 7 + el-admin/.env.production | 8 +- el-admin/package-lock.json | 106 +++++++++++- el-admin/package.json | 3 +- el-admin/src/api/api.js | 16 ++ el-admin/src/router/index.js | 12 ++ el-admin/src/views/Report/ConflictRecord.vue | 151 +++++++++++++++++ .../src/views/Report/DeleteOperationLog.vue | 152 ++++++++++++++++++ 10 files changed, 649 insertions(+), 6 deletions(-) create mode 100644 Laravel/app/Http/Controllers/API/Admin/YeWu/ConflictRecordController.php create mode 100644 Laravel/app/Http/Controllers/API/Admin/YeWu/DeleteOperationLogController.php create mode 100644 el-admin/src/views/Report/ConflictRecord.vue create mode 100644 el-admin/src/views/Report/DeleteOperationLog.vue diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/ConflictRecordController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/ConflictRecordController.php new file mode 100644 index 0000000..e676d87 --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/ConflictRecordController.php @@ -0,0 +1,100 @@ +where('name', 'like', '%' . $searchInfo['name'] . '%'); + } + if (!empty($searchInfo['id_card_num'])) { + $encrypt = \App\Lib\HSM::HsmEncrypt($searchInfo['id_card_num']); + if ($encrypt['status']) { + $query->where('id_card_num', $encrypt['data']); + } + } + if (!empty($searchInfo['current_org_name'])) { + $query->where('current_org_name', 'like', '%' . $searchInfo['current_org_name'] . '%'); + } + if (!empty($searchInfo['type'])) { + $query->where('type', $searchInfo['type']); + } + if (!empty($searchInfo['source'])) { + $query->where('source', $searchInfo['source']); + } + if (!empty($searchInfo['dateRange'])) { + $query->whereBetween('created_at', [$searchInfo['dateRange'][0] . ' 00:00:00', $searchInfo['dateRange'][1] . ' 23:59:59']); + } + + $count = $query->count(); + $list = $query->orderBy('id', 'desc') + ->offset(($page - 1) * $pageSize) + ->limit($pageSize) + ->get(); + + foreach ($list as $item) { + if (!empty($item->id_card_num)) { + $decrypt = \App\Lib\HSM::HsmDecrypt($item->id_card_num); + if ($decrypt['status']) { + $item->id_card_num = $decrypt['data']; + } + } + } + + return \Yz::Return(true, '查询成功', ['list' => $list, 'count' => $count]); + } + + public function ExportList(Request $request) + { + $searchInfo = request('searchInfo'); + + $query = DB::table('conflict_record'); + + if (!empty($searchInfo['name'])) { + $query->where('name', 'like', '%' . $searchInfo['name'] . '%'); + } + if (!empty($searchInfo['id_card_num'])) { + $encrypt = \App\Lib\HSM::HsmEncrypt($searchInfo['id_card_num']); + if ($encrypt['status']) { + $query->where('id_card_num', $encrypt['data']); + } + } + if (!empty($searchInfo['current_org_name'])) { + $query->where('current_org_name', 'like', '%' . $searchInfo['current_org_name'] . '%'); + } + if (!empty($searchInfo['type'])) { + $query->where('type', $searchInfo['type']); + } + if (!empty($searchInfo['source'])) { + $query->where('source', $searchInfo['source']); + } + if (!empty($searchInfo['dateRange'])) { + $query->whereBetween('created_at', [$searchInfo['dateRange'][0] . ' 00:00:00', $searchInfo['dateRange'][1] . ' 23:59:59']); + } + + $list = $query->orderBy('id', 'desc')->get(); + + foreach ($list as $item) { + if (!empty($item->id_card_num)) { + $decrypt = \App\Lib\HSM::HsmDecrypt($item->id_card_num); + if ($decrypt['status']) { + $item->id_card_num = $decrypt['data']; + } + } + } + + return \Yz::Return(true, '查询成功', ['list' => $list]); + } +} diff --git a/Laravel/app/Http/Controllers/API/Admin/YeWu/DeleteOperationLogController.php b/Laravel/app/Http/Controllers/API/Admin/YeWu/DeleteOperationLogController.php new file mode 100644 index 0000000..59b6801 --- /dev/null +++ b/Laravel/app/Http/Controllers/API/Admin/YeWu/DeleteOperationLogController.php @@ -0,0 +1,100 @@ +where('name', 'like', '%' . $searchInfo['name'] . '%'); + } + if (!empty($searchInfo['id_card_num'])) { + $encrypt = \App\Lib\HSM::HsmEncrypt($searchInfo['id_card_num']); + if ($encrypt['status']) { + $query->where('id_card_num', $encrypt['data']); + } + } + if (!empty($searchInfo['operator_name'])) { + $query->where('operator_name', 'like', '%' . $searchInfo['operator_name'] . '%'); + } + if (!empty($searchInfo['table_name'])) { + $query->where('table_name', $searchInfo['table_name']); + } + if (!empty($searchInfo['type'])) { + $query->where('type', $searchInfo['type']); + } + if (!empty($searchInfo['dateRange'])) { + $query->whereBetween('created_at', [$searchInfo['dateRange'][0] . ' 00:00:00', $searchInfo['dateRange'][1] . ' 23:59:59']); + } + + $count = $query->count(); + $list = $query->orderBy('id', 'desc') + ->offset(($page - 1) * $pageSize) + ->limit($pageSize) + ->get(); + + foreach ($list as $item) { + if (!empty($item->id_card_num)) { + $decrypt = \App\Lib\HSM::HsmDecrypt($item->id_card_num); + if ($decrypt['status']) { + $item->id_card_num = $decrypt['data']; + } + } + } + + return \Yz::Return(true, '查询成功', ['list' => $list, 'count' => $count]); + } + + public function ExportList(Request $request) + { + $searchInfo = request('searchInfo'); + + $query = DB::table('delete_operation_log'); + + if (!empty($searchInfo['name'])) { + $query->where('name', 'like', '%' . $searchInfo['name'] . '%'); + } + if (!empty($searchInfo['id_card_num'])) { + $encrypt = \App\Lib\HSM::HsmEncrypt($searchInfo['id_card_num']); + if ($encrypt['status']) { + $query->where('id_card_num', $encrypt['data']); + } + } + if (!empty($searchInfo['operator_name'])) { + $query->where('operator_name', 'like', '%' . $searchInfo['operator_name'] . '%'); + } + if (!empty($searchInfo['table_name'])) { + $query->where('table_name', $searchInfo['table_name']); + } + if (!empty($searchInfo['type'])) { + $query->where('type', $searchInfo['type']); + } + if (!empty($searchInfo['dateRange'])) { + $query->whereBetween('created_at', [$searchInfo['dateRange'][0] . ' 00:00:00', $searchInfo['dateRange'][1] . ' 23:59:59']); + } + + $list = $query->orderBy('id', 'desc')->get(); + + foreach ($list as $item) { + if (!empty($item->id_card_num)) { + $decrypt = \App\Lib\HSM::HsmDecrypt($item->id_card_num); + if ($decrypt['status']) { + $item->id_card_num = $decrypt['data']; + } + } + } + + return \Yz::Return(true, '查询成功', ['list' => $list]); + } +} diff --git a/Laravel/routes/api.php b/Laravel/routes/api.php index e234547..3e37549 100644 --- a/Laravel/routes/api.php +++ b/Laravel/routes/api.php @@ -70,6 +70,13 @@ Route::post('admin/PingTaiPushGetDetail','App\Http\Controllers\API\Admin\YeWu\PingTaiPushController@GetDetail'); Route::post('admin/GetPingTaiOrgList','App\Http\Controllers\API\Admin\YeWu\PingTaiPushController@GetPingTaiOrgList'); + //冲突记录 + Route::post('admin/ConflictRecordGetList','App\Http\Controllers\API\Admin\YeWu\ConflictRecordController@GetList'); + Route::post('admin/ConflictRecordExport','App\Http\Controllers\API\Admin\YeWu\ConflictRecordController@ExportList'); + //取消操作日志 + Route::post('admin/DeleteOperationLogGetList','App\Http\Controllers\API\Admin\YeWu\DeleteOperationLogController@GetList'); + Route::post('admin/DeleteOperationLogExport','App\Http\Controllers\API\Admin\YeWu\DeleteOperationLogController@ExportList'); + }); diff --git a/el-admin/.env.production b/el-admin/.env.production index 2205e17..9f2e0e5 100644 --- a/el-admin/.env.production +++ b/el-admin/.env.production @@ -1,6 +1,6 @@ ENV = 'production' -VITE_APP_API = 'http://192.168.50.123:33583/common/la/public/api/' -VITE_APP_FILE = 'http://192.168.50.123:33583/common/la/public' +VITE_APP_API_6666666666 = 'http://192.168.50.123:33583/common/la/public/api/' +VITE_APP_FILE_6666666666 = 'http://192.168.50.123:33583/common/la/public' -VITE_APP_API_66666666 = 'http://172.31.68.39:33583/common/la/public/api/' -VITE_APP_FILE_66666666 = 'http://172.31.68.39:33583/common/la/public' \ No newline at end of file +VITE_APP_API = 'http://172.31.68.39:33583/common/la/public/api/' +VITE_APP_FILE = 'http://172.31.68.39:33583/common/la/public' \ No newline at end of file diff --git a/el-admin/package-lock.json b/el-admin/package-lock.json index a77e69e..03f311c 100644 --- a/el-admin/package-lock.json +++ b/el-admin/package-lock.json @@ -17,7 +17,8 @@ "pinia": "^2.1.6", "qrcode": "^1.5.3", "vue": "^3.3.4", - "vue-router": "^4.2.4" + "vue-router": "^4.2.4", + "xlsx": "^0.18.5" }, "devDependencies": { "@rushstack/eslint-patch": "^1.3.3", @@ -860,6 +861,15 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -1011,6 +1021,19 @@ "node": ">=6" } }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -1037,6 +1060,15 @@ "wrap-ansi": "^6.2.0" } }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1070,6 +1102,18 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1788,6 +1832,15 @@ "node": ">= 6" } }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2921,6 +2974,18 @@ "node": ">=0.10.0" } }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -3206,6 +3271,24 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -3225,6 +3308,27 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", diff --git a/el-admin/package.json b/el-admin/package.json index 2fec1f3..bf1f36b 100644 --- a/el-admin/package.json +++ b/el-admin/package.json @@ -19,7 +19,8 @@ "pinia": "^2.1.6", "qrcode": "^1.5.3", "vue": "^3.3.4", - "vue-router": "^4.2.4" + "vue-router": "^4.2.4", + "xlsx": "^0.18.5" }, "devDependencies": { "@rushstack/eslint-patch": "^1.3.3", diff --git a/el-admin/src/api/api.js b/el-admin/src/api/api.js index 6eb6fb3..03ddca6 100644 --- a/el-admin/src/api/api.js +++ b/el-admin/src/api/api.js @@ -189,4 +189,20 @@ export const PingTaiPushGetDetail = (data={}) => { } export const GetPingTaiOrgList = (data={}) => { return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetPingTaiOrgList',data:data}) +} + +export const ConflictRecordGetList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ConflictRecordGetList',data:data}) +} + +export const ConflictRecordExport = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/ConflictRecordExport',data:data}) +} + +export const DeleteOperationLogGetList = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/DeleteOperationLogGetList',data:data}) +} + +export const DeleteOperationLogExport = (data={}) => { + return axios({url:import.meta.env.VITE_APP_API+'v1/admin/DeleteOperationLogExport',data:data}) } \ No newline at end of file diff --git a/el-admin/src/router/index.js b/el-admin/src/router/index.js index d416fc0..4ba892b 100644 --- a/el-admin/src/router/index.js +++ b/el-admin/src/router/index.js @@ -13,6 +13,8 @@ import AppointmentList from '../views/AppointmentMngr/AppointmentList.vue' import healthCheckList from '../views/MedicalCenter/HealthCheckList.vue' import Dashboard from '../views/MedicalCenter/Dashboard.vue' import AppointmentCount from '../views/Report/AppointmentCount.vue' +import ConflictRecord from '../views/Report/ConflictRecord.vue' +import DeleteOperationLog from '../views/Report/DeleteOperationLog.vue' const router = createRouter({ history: createWebHashHistory(import.meta.env.BASE_URL), @@ -96,6 +98,16 @@ const router = createRouter({ name: 'ReportHealthCard', component: () => import('../views/Report/HealthCard.vue'), meta: { title: '体检统计' } + },{ + path: '/report/conflictRecord', + name: 'ReportConflictRecord', + component: ConflictRecord, + meta: { title: '冲突记录' } + },{ + path: '/report/deleteOperationLog', + name: 'ReportDeleteOperationLog', + component: DeleteOperationLog, + meta: { title: '取消操作日志' } },{ path: '/systemMngr/Configs', name: 'SystemConfigs', diff --git a/el-admin/src/views/Report/ConflictRecord.vue b/el-admin/src/views/Report/ConflictRecord.vue new file mode 100644 index 0000000..29783c1 --- /dev/null +++ b/el-admin/src/views/Report/ConflictRecord.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/el-admin/src/views/Report/DeleteOperationLog.vue b/el-admin/src/views/Report/DeleteOperationLog.vue new file mode 100644 index 0000000..20abde7 --- /dev/null +++ b/el-admin/src/views/Report/DeleteOperationLog.vue @@ -0,0 +1,152 @@ + + + + +