From 980757bcfdd3ff2512e2dd7c17e3821d29df7b2a Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 30 一月 2026 17:54:32 +0800
Subject: [PATCH] 提交忽略文件
---
admin/.env | 2
server/services/src/main/java/com/doumee/service/business/impl/CasesServiceImpl.java | 3
server/admin/src/main/java/com/doumee/init/InitService.java | 20 ++
admin/package.json | 2
admin/src/views/business/importRecord.vue | 29 ++
admin/src/components/business/OperaMemberListWindow.vue | 288 ++++++++++++++++++++++++++++
admin/src/views/business/member.vue | 9
admin/src/components/common/GlobalWindow.vue | 1
server/services/src/main/java/com/doumee/dao/business/model/Cases.java | 3
server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java | 3
admin/.env.test | 10
admin/src/components/business/OperaCasesListWindow.vue | 182 ++++++++++++++++++
server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 3
server/services/src/main/java/com/doumee/service/business/ImportRecordService.java | 1
admin/.env.development | 2
server/admin/src/main/resources/application.yml | 2
server/services/src/main/java/com/doumee/dao/business/model/Member.java | 3
server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java | 30 ++
18 files changed, 569 insertions(+), 24 deletions(-)
diff --git a/admin/.env b/admin/.env
index a7c48e5..1cda429 100644
--- a/admin/.env
+++ b/admin/.env
@@ -10,4 +10,4 @@
VUE_APP_CONTEXT_PATH = './'
# 鎺ュ彛鍓嶇紑
-VUE_APP_API_PREFIX = '/jinkuai_admin'
+VUE_APP_API_PREFIX = '/dianjiang_admin_api'
diff --git a/admin/.env.development b/admin/.env.development
index fafd2c3..0c1e283 100644
--- a/admin/.env.development
+++ b/admin/.env.development
@@ -1,3 +1,3 @@
# 寮�鍙戠幆澧冮厤缃�
NODE_ENV = 'development'
-VUE_APP_API_URL = 'http://localhost:10010'
+VUE_APP_API_URL = 'http://localhost:11010'
diff --git a/admin/.env.test b/admin/.env.test
index 4ffc032..d3fad2e 100644
--- a/admin/.env.test
+++ b/admin/.env.test
@@ -1,7 +1,3 @@
-# 鐢熶骇鐜閰嶇疆
-NODE_ENV = 'production'
-
-# 鍏抽棴DEBUG
-VUE_APP_DEBUG = 'off'
-
-VUE_APP_API_URL = 'https://test.doumee.cn/lianhelihua_interface'
+# 寮�鍙戠幆澧冮厤缃�
+NODE_ENV = 'development'
+VUE_APP_API_URL = 'http://192.168.0.7:10010/dianjiang_admin_interface'
diff --git a/admin/package.json b/admin/package.json
index d8f88e9..4965988 100644
--- a/admin/package.json
+++ b/admin/package.json
@@ -1,5 +1,5 @@
{
- "name": "jinkuai",
+ "name": "zbom_dianjiang",
"version": "1.0.0",
"private": true,
"scripts": {
diff --git a/admin/src/components/business/OperaCasesListWindow.vue b/admin/src/components/business/OperaCasesListWindow.vue
new file mode 100644
index 0000000..edf5638
--- /dev/null
+++ b/admin/src/components/business/OperaCasesListWindow.vue
@@ -0,0 +1,182 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ :visible.sync="visible"
+ width="100%"
+ >
+ <TableLayout :permissions="['business:cases:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form ref="searchForm" slot="search-form" :model="searchForm" id="curSearchForm" label-width="100px" inline>
+ <el-form-item label="鏍囬" prop="name">
+ <el-input v-model="searchForm.name" style="width: 150px" placeholder="璇疯緭鍏ユ爣棰�" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="鐘舵��" prop="status">
+ <el-select
+ v-model="searchForm.status"
+ placeholder="鐘舵��"
+ clearable
+ style="width: 150px"
+ @change="search"
+ >
+ <el-option :key="0" :value="0" label="鍚敤"></el-option>
+ <el-option :key="1" :value="1" label="绂佺敤"></el-option>
+ </el-select>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+<!-- <ul class="toolbar" v-permissions="['business:cases:create', 'business:cases:delete']">
+ <li><el-button type="primary" @click="$refs.operaCasesWindow.open('鏂板缓妗堜緥',null)" icon="el-icon-plus" v-permissions="['business:cases:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" icon="el-icon-refresh" v-permissions="['business:cases:create']" @click="$refs.OperaCasesImportWindow.open('妗堜緥瀵煎叆')">鎵归噺瀵煎叆</el-button></li>
+ <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:cases:delete']">鍒犻櫎</el-button></li>
+ </ul>-->
+ <el-table
+ :height="tableHeight"
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ :cell-class-name="setRowClassName"
+ border
+ stripe
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column prop="name" label="妗堜緥鏍囬" min-width="200px"></el-table-column>
+ <el-table-column prop="icon" label="鎺掕姒滃浘闆�" min-width="220px">
+ <template slot-scope="{row}">
+ <div style="display: flex; flex-wrap: wrap;width: 200px;" v-if="row.fileList && row.fileList.length">
+ <div v-for="item in row.fileList" :key="row.id+'_img'+item.id" style=" box-sizing: border-box; margin-right: 10px; " >
+ <el-image style="width: 50px; height: 50px;" :src="item.url"
+ :preview-src-list="[item.url]">
+ </el-image>
+ </div>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="memberName" label="鑰佸笀" min-width="220px">
+ <template slot-scope="{row}">
+ <span class="orange" style="margin-right: 10px"> {{row.memberCode}}</span> <span>{{row.memberName||''}}</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="startDate" label="寮�濮嬫棩鏈�" min-width="140px"></el-table-column>
+ <el-table-column prop="endDate" label="缁撴潫鏃ユ湡" min-width="140px"></el-table-column>
+ <el-table-column prop="detail" label="妗堜緥鎻忚堪" min-width="230px" ></el-table-column>
+ <el-table-column label="鐘舵��" >
+ <template slot-scope="{row}">
+ <span class="orange" v-if="row.status==0" >鍚敤</span>
+ <span class="red" v-if="row.status==1">绂佺敤</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鏄惁鍒犻櫎" >
+ <template slot-scope="{row}">
+ <span class="red" v-if="row.deleted==1" >宸插垹闄�</span>
+ <span class="green" v-else>鏈垹闄�</span>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ </TableLayout>
+ <template v-slot:footer>
+ <el-button @click="visible=false">杩斿洖</el-button>
+ </template>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { findAll as memberList } from '@/api/business/member'
+import {findAll as cateList} from "@/api/business/category";
+export default {
+ name: 'OperaCasesListWindow',
+ extends: BaseTable,
+ components: { GlobalWindow, TableLayout, Pagination },
+ data () {
+ return {
+ title: '',
+ visible: false,
+ tableHeight: null,
+ searchForm: {
+ containDeleted: 1,
+ name: '',
+ importId: '',
+ status: null
+ },
+ memberList: []
+ }
+ },
+ created () {
+ this.config({
+ api: '/business/cases',
+ 'field.id': 'id'
+ })
+ window.addEventListener('resize', () => {
+ this.getTableHeight()
+ })
+ cateList({
+ }).then(res => {
+ this.cateList = res
+ })
+ },
+ methods: {
+ setRowClassName({row, rowIndex}) {
+ if (row.deleted == 1) {
+ return 'warning-row'
+ }
+ return '' // 濡傛灉涓嶉渶瑕佷换浣曠壒娈婃牱寮忥紝杩斿洖绌哄瓧绗︿覆鎴� null
+ },
+ getTableHeight(){
+ this.$nextTick(() => {
+ this.tableHeight = window.innerHeight - 180- document.getElementById('curSearchForm').clientHeight
+ })
+ },
+ open (title, memberId, importId) {
+ this.title = title
+ this.visible = true
+ this.getTableHeight()
+ this.tableData = {
+ // 宸查�変腑鐨勬暟鎹�
+ selectedRows: [],
+ // 鎺掑簭鐨勫瓧娈�
+ sorts: [],
+ // 褰撳墠椤垫暟鎹�
+ list: [],
+ // 鍒嗛〉
+ pagination: {
+ pageIndex: 1,
+ pageSize: 10,
+ total: 0
+ }
+ }
+ this.searchForm.importId = importId
+ this.search()
+ }
+ }
+}
+</script>
+<style scoped lang="scss">
+/deep/ .window__body {
+ overflow-y: hidden !important;
+}
+.table-content .table-wrap .el-table{
+ overflow-y: hidden !important;
+}
+</style>
+<style >
+.success-row {
+ background: #f0f9eb; /* 娴呯豢鑹茶儗鏅� */
+}
+.warning-row {
+ background: rgba(161, 14, 14, 0.35); /* 娴呯孩鑹茶儗鏅� */
+}
+</style>
diff --git a/admin/src/components/business/OperaMemberListWindow.vue b/admin/src/components/business/OperaMemberListWindow.vue
new file mode 100644
index 0000000..96941a2
--- /dev/null
+++ b/admin/src/components/business/OperaMemberListWindow.vue
@@ -0,0 +1,288 @@
+<template>
+ <GlobalWindow
+ :title="title"
+ :visible.sync="visible"
+ width="100%"
+ >
+ <TableLayout :permissions="['business:cases:query']">
+ <!-- 鎼滅储琛ㄥ崟 -->
+ <el-form class="table-search-formCur" ref="searchForm" id="curSearchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
+ <el-form-item label="鍚嶇О" prop="name">
+ <el-input v-model="searchForm.name" style="width: 150px" placeholder="璇疯緭鍏ュ悕绉�" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="宸ュ彿" prop="code">
+ <el-input v-model="searchForm.code" style="width: 150px" placeholder="璇疯緭鍏ュ伐鍙�" @keypress.enter.native="search"></el-input>
+ </el-form-item>
+ <el-form-item label="鎴樺尯" prop="zhanquIds">
+ <el-select
+ v-model="searchForm.zhanquIds"
+ style="width: 150px"
+ placeholder="鎴樺尯"
+ clearable
+ @change="search"
+ >
+ <el-option
+ v-for="item in cateList.filter(item=>{return item.type==0})"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鍟嗕笟鍖栫被鍨�" prop="bustypeIds">
+ <el-select
+ v-model="searchForm.bustypeIds"
+ style="width: 150px"
+ placeholder="鍟嗕笟鍖栫被鍨�"
+ clearable
+ @change="search"
+ >
+ <el-option
+ v-for="item in cateList.filter(item=>{return item.type==1})"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鎿呴暱棰嗗煙" prop="fieldIdList">
+ <el-select
+ v-model="searchForm.fieldIdList"
+ style="width: 150px"
+ placeholder="鎿呴暱棰嗗煙"
+ clearable
+ multiple
+ @change="search"
+ >
+ <el-option
+ v-for="item in cateList.filter(item=>{return item.type==2})"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鑰佸笀绛夌骇" prop="levelId">
+ <el-select
+ v-model="searchForm.levelId"
+ style="width: 150px"
+ placeholder="鑰佸笀绛夌骇"
+ clearable
+ @change="search"
+ >
+ <el-option
+ v-for="item in cateList.filter(item=>{return item.type==3})"
+ :key="item.id"
+ :value="item.id"
+ :label="item.name"
+ ></el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鐘舵��" prop="status">
+ <el-select
+ v-model="searchForm.status"
+ placeholder="鐘舵��"
+ clearable
+ style="width: 150px"
+ @change="search"
+ >
+ <el-option :key="0" :value="0" label="鍚敤"></el-option>
+ <el-option :key="1" :value="1" label="绂佺敤"></el-option>
+ </el-select>
+ </el-form-item>
+ <section>
+ <el-button type="primary" @click="search">鎼滅储</el-button>
+ <el-button @click="reset">閲嶇疆</el-button>
+ </section>
+ </el-form>
+ <!-- 琛ㄦ牸鍜屽垎椤� -->
+ <template v-slot:table-wrap>
+<!-- <ul class="toolbar" v-permissions="['business:cases:create', 'business:cases:delete']">
+ <li><el-button type="primary" @click="$refs.operaCasesWindow.open('鏂板缓妗堜緥',null)" icon="el-icon-plus" v-permissions="['business:cases:create']">鏂板缓</el-button></li>
+ <li><el-button type="primary" icon="el-icon-refresh" v-permissions="['business:cases:create']" @click="$refs.OperaCasesImportWindow.open('妗堜緥瀵煎叆')">鎵归噺瀵煎叆</el-button></li>
+ <li><el-button type="danger" @click="deleteByIdInBatch" icon="el-icon-delete" v-permissions="['business:cases:delete']">鍒犻櫎</el-button></li>
+ </ul>-->
+ <el-table
+ :height="tableHeight"
+ v-loading="isWorking.search"
+ :data="tableData.list"
+ border
+ :cell-class-name="setRowClassName"
+ stripe
+ @selection-change="handleSelectionChange"
+ >
+ <el-table-column prop="imgurl" label="鍥剧墖" min-width="100px">
+ <template slot-scope="{row}">
+ <el-image v-if="row.fullImgurl" style="width: 50px; height: 50px; margin-right: 10px" :src="row.fullImgurl"
+ :preview-src-list="[row.fullImgurl]">
+ </el-image>
+ </template>
+ </el-table-column>
+ <el-table-column prop="code" label="宸ュ彿" min-width="100px"></el-table-column>
+ <el-table-column prop="name" label="濮撳悕" min-width="100px"></el-table-column>
+ <el-table-column prop="sex" label="鎬у埆" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.sex ==0">鐢�</span>
+ <span v-if="row.sex ==1">濂�</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="positon" label="宀椾綅" min-width="120px"></el-table-column>
+ <el-table-column prop="levelName" label="绛夌骇" min-width="100px"></el-table-column>
+ <el-table-column prop="jobYear" label="浠庝笟骞翠唤" min-width="100px"></el-table-column>
+ <el-table-column prop="serveNum" label="鏈嶅姟鍟嗗満" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.serveNum">{{row.serveNum}}涓�</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="caseNum" label="鏍囨潌妗堜緥" min-width="100px">
+ <template slot-scope="{row}">
+ <span >{{row.caseNum || 0}}涓�</span>
+ </template>
+ </el-table-column>
+ <el-table-column prop="busTypeNames" label="鍟嗕笟鍖栫被鍨�" min-width="200px">
+ <template slot-scope="{row}">
+ <div v-if="row.typeList && row.typeList.length">
+ <div style="display:inline-block;" v-for="(item,index) in row.typeList">{{item.name||''}} <span v-if="index < row.typeList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="areaNames" label="鏈嶅姟鎴樺尯" min-width="200px">
+ <template slot-scope="{row}">
+ <div v-if="row.zqList && row.zqList.length">
+ <div style="display:inline-block;" v-for="(item,index) in row.zqList">{{item.name||''}} <span v-if="index < row.zqList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="fieldNames" label="鎿呴暱棰嗗煙" min-width="200px">
+ <template slot-scope="{row}">
+ <div v-if="row.fieldList && row.fieldList.length">
+ <div style="display:inline-block;" v-for="(item,index) in row.fieldList">{{item.name||''}} <span v-if="index < row.fieldList.length-1" style="display:inline-block;padding: 0px 3px;">/</span></div>
+ </div>
+ </template>
+ </el-table-column>
+ <el-table-column prop="fee" label="璐圭敤鏍囧噯(鍏�/鍛�)" min-width="130px"></el-table-column>
+ <el-table-column label="鐘舵��" >
+ <template slot-scope="{row}">
+ <span class="orange" v-if="row.status==0" >鍚敤</span>
+ <span class="red" v-if="row.status==1">绂佺敤</span>
+ </template>
+ </el-table-column>
+ <el-table-column label="鏄惁鍒犻櫎" >
+ <template slot-scope="{row}">
+ <span class="red" v-if="row.deleted==1" >宸插垹闄�</span>
+ <span class="green" v-else>鏈垹闄�</span>
+ </template>
+ </el-table-column>
+ </el-table>
+ <pagination
+ @size-change="handleSizeChange"
+ @current-change="handlePageChange"
+ :pagination="tableData.pagination"
+ >
+ </pagination>
+ </template>
+ </TableLayout>
+ <template v-slot:footer>
+ <el-button @click="visible=false">杩斿洖</el-button>
+ </template>
+ </GlobalWindow>
+</template>
+
+<script>
+import BaseTable from '@/components/base/BaseTable'
+import TableLayout from '@/layouts/TableLayout'
+import Pagination from '@/components/common/Pagination'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import { findAll as memberList } from '@/api/business/member'
+export default {
+ name: 'OperaMemberListWindow',
+ extends: BaseTable,
+ components: { GlobalWindow, TableLayout, Pagination },
+ data () {
+ return {
+ title: '',
+ visible: false,
+ tableHeight: null,
+ searchForm: {
+ name: '',
+ containDeleted: 1,
+ queryFlag: 1,
+ code: '',
+ status: null,
+ levelId: null,
+ fieldIdList: [],
+ zhanquIds: null,
+ bustypeIds: null,
+ type: 0
+ },
+ cateList: []
+ }
+ },
+ created () {
+ this.config({
+ api: '/business/member',
+ 'field.id': 'id'
+ })
+ window.addEventListener('resize', () => {
+ this.getTableHeight()
+ })
+ },
+ methods: {
+ getTableHeight () {
+ this.$nextTick(() => {
+ this.tableHeight = window.innerHeight - 180- document.getElementById('curSearchForm').clientHeight
+ })
+
+ },
+ loadMemberList () {
+ memberList({
+ }).then(res => {
+ this.memberList = res
+ })
+ },
+ setRowClassName({row, rowIndex}) {
+ if (row.deleted == 1) {
+ return 'warning-row'
+ }
+ return '' // 濡傛灉涓嶉渶瑕佷换浣曠壒娈婃牱寮忥紝杩斿洖绌哄瓧绗︿覆鎴� null
+ },
+ open (title, importId) {
+ this.title = title
+ this.visible = true
+ this.getTableHeight()
+ this.tableData = {
+ // 宸查�変腑鐨勬暟鎹�
+ selectedRows: [],
+ // 鎺掑簭鐨勫瓧娈�
+ sorts: [],
+ // 褰撳墠椤垫暟鎹�
+ list: [],
+ // 鍒嗛〉
+ pagination: {
+ pageIndex: 1,
+ pageSize: 10,
+ total: 0
+ }
+ }
+ this.searchForm.importId = importId
+ this.search()
+ }
+ }
+}
+</script>
+<style scoped lang="scss">
+/deep/ .window__body {
+ overflow-y: hidden !important;
+}
+.table-content .table-wrap .el-table{
+ overflow-y: hidden !important;
+}
+</style>
+<style >
+.success-row {
+ background: #f0f9eb; /* 娴呯豢鑹茶儗鏅� */
+}
+.warning-row {
+ background: rgba(161, 14, 14, 0.35); /* 娴呯孩鑹茶儗鏅� */
+}
+</style>
diff --git a/admin/src/components/common/GlobalWindow.vue b/admin/src/components/common/GlobalWindow.vue
index a670937..ff394f6 100644
--- a/admin/src/components/common/GlobalWindow.vue
+++ b/admin/src/components/common/GlobalWindow.vue
@@ -85,6 +85,7 @@
$input-height: 32px;
.global-window {
// 澶撮儴鏍囬
+ left: 218px !important;
/deep/ .el-drawer__header {
padding: 0 10px 0 0;
line-height: 40px;
diff --git a/admin/src/views/business/importRecord.vue b/admin/src/views/business/importRecord.vue
index 607b20f..145e518 100644
--- a/admin/src/views/business/importRecord.vue
+++ b/admin/src/views/business/importRecord.vue
@@ -56,8 +56,8 @@
<el-table-column prop="title" label="鍐呭" min-width="200px" show-overflow-tooltip></el-table-column>
<el-table-column label="涓氬姟绫诲瀷">
<template slot-scope="{row}">
- <span v-if="row.type ==0 " >鑰佸笀瀵煎叆</span>
- <span v-if="row.type == 1" >妗堜緥瀵煎叆</span>
+ <span v-if="row.type ==0 " class="green">鑰佸笀瀵煎叆</span>
+ <span v-if="row.type == 1" class="orange" >妗堜緥瀵煎叆</span>
</template>
</el-table-column>
<el-table-column label="鐘舵��">
@@ -68,11 +68,26 @@
</template>
</el-table-column>
<el-table-column prop="totalNum" label="鎬昏褰曟暟" min-width="100px"></el-table-column>
- <el-table-column prop="doneNum" label="鎴愬姛褰曞叆鏁伴噺" min-width="100px"></el-table-column>
+ <el-table-column prop="doneNum" label="鎴愬姛褰曞叆鏁伴噺" min-width="100px">
+ <template slot-scope="{row}">
+ <span v-if="row.status == 1" class="red">{{row.ingNum}}</span>
+ <span v-else>{{ row.doneNum }}</span>
+ </template>
+ </el-table-column>
<el-table-column prop="errorNum" label="褰曞叆澶辫触鏁伴噺" min-width="100px"></el-table-column>
<el-table-column prop="updateUserName" label="鎿嶄綔浜�" min-width="100px"></el-table-column>
<el-table-column prop="createTime" label="瀵煎叆鏃堕棿" min-width="150px"></el-table-column>
<el-table-column prop="updateTime" label="鏈�杩戞搷浣滄椂闂�" min-width="150px"></el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ min-width="120"
+ fixed="right"
+ >
+ <template slot-scope="{row}">
+ <el-button type="text" v-if="row.type ==1" style="color: orange" @click="$refs.OperaCasesListWindow.open('鏌ョ湅瀵煎叆妗堜緥銆�'+row.title+'銆�',null, row.id)" icon="el-icon-open">鏌ョ湅瀵煎叆妗堜緥</el-button>
+ <el-button type="text" v-if="row.type ==0" style="color: green" @click="$refs.OperaMemberListWindow.open('鏌ョ湅瀵煎叆妗堜緥銆�'+row.title+'銆�', row.id)" icon="el-icon-open">鏌ョ湅瀵煎叆鑰佸笀</el-button>
+ </template>
+ </el-table-column>
</el-table>
<pagination
@size-change="handleSizeChange"
@@ -82,7 +97,8 @@
</pagination>
</template>
<!-- 鏂板缓/淇敼 -->
- <OperaCategoryWindow ref="operaCategoryWindow" @success="handlePageChange"/>
+ <OperaMemberListWindow ref="OperaMemberListWindow" @success="handlePageChange"/>
+ <OperaCasesListWindow ref="OperaCasesListWindow" @success="handlePageChange"/>
</TableLayout>
</template>
@@ -90,11 +106,12 @@
import BaseTable from '@/components/base/BaseTable'
import TableLayout from '@/layouts/TableLayout'
import Pagination from '@/components/common/Pagination'
-import OperaCategoryWindow from '@/components/business/OperaCategoryWindow'
+import OperaMemberListWindow from '@/components/business/OperaMemberListWindow'
+import OperaCasesListWindow from '@/components/business/OperaCasesListWindow'
export default {
name: 'Category',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaCategoryWindow },
+ components: { TableLayout, Pagination, OperaCasesListWindow,OperaMemberListWindow},
data () {
return {
// 鎼滅储
diff --git a/admin/src/views/business/member.vue b/admin/src/views/business/member.vue
index b8804e8..df448f1 100644
--- a/admin/src/views/business/member.vue
+++ b/admin/src/views/business/member.vue
@@ -72,6 +72,7 @@
:label="item.name"
></el-option>
</el-select>
+ </el-form-item>
<el-form-item label="鐘舵��" prop="status">
<el-select
v-model="searchForm.status"
@@ -84,7 +85,6 @@
<el-option :key="1" :value="1" label="绂佺敤"></el-option>
</el-select>
</el-form-item>
- </el-form-item>
<section>
<el-button type="primary" @click="search">鎼滅储</el-button>
<el-button @click="reset">閲嶇疆</el-button>
@@ -167,11 +167,12 @@
<el-table-column
v-if="containPermissions(['business:member:update', 'business:member:delete'])"
label="鎿嶄綔"
- min-width="120"
+ min-width="180"
fixed="right"
>
<template slot-scope="{row}">
<el-button type="text" @click="$refs.operaMemberWindow.open('缂栬緫鑰佸笀', row,searchForm.type)" icon="el-icon-edit" v-permissions="['business:member:update']">缂栬緫</el-button>
+ <el-button type="text" @click="$refs.OperaCasesListWindow.open('鏌ョ湅鑰佸笀妗堜緥銆�'+row.name+'銆�', row.id)" icon="el-icon-open">妗堜緥</el-button>
<el-button type="text" style="color: red" @click="deleteById(row)" icon="el-icon-delete" v-permissions="['business:member:delete']">鍒犻櫎</el-button>
</template>
</el-table-column>
@@ -186,6 +187,7 @@
<!-- 鏂板缓/淇敼 -->
<OperaMemberWindow ref="operaMemberWindow" @success="handlePageChange"/>
<OperaMemberImportWindow ref="OperaMemberImportWindow" @success="handlePageChange" />
+ <OperaCasesListWindow ref="OperaCasesListWindow" @success="handlePageChange" />
</TableLayout>
</template>
@@ -195,11 +197,12 @@
import Pagination from '@/components/common/Pagination'
import OperaMemberWindow from '@/components/business/OperaMemberWindow'
import OperaMemberImportWindow from '@/components/business/OperaMemberImportWindow'
+import OperaCasesListWindow from '@/components/business/OperaCasesListWindow'
import { findAll as cateList } from '@/api/business/category'
export default {
name: 'Category',
extends: BaseTable,
- components: { TableLayout, Pagination, OperaMemberWindow ,OperaMemberImportWindow},
+ components: { TableLayout, Pagination, OperaMemberWindow ,OperaMemberImportWindow,OperaCasesListWindow},
data () {
return {
// 鎼滅储
diff --git a/server/admin/src/main/java/com/doumee/init/InitService.java b/server/admin/src/main/java/com/doumee/init/InitService.java
new file mode 100644
index 0000000..d33e9f0
--- /dev/null
+++ b/server/admin/src/main/java/com/doumee/init/InitService.java
@@ -0,0 +1,20 @@
+package com.doumee.init;
+
+import com.doumee.service.business.ImportRecordService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+
+@Service
+@Slf4j
+public class InitService {
+
+ @Autowired
+ private ImportRecordService importRecordService;
+ @PostConstruct
+ public void initImportTaskStatus() {
+ importRecordService.clearImporTask();
+ }
+}
diff --git a/server/admin/src/main/resources/application.yml b/server/admin/src/main/resources/application.yml
index 7648e46..94a46dc 100644
--- a/server/admin/src/main/resources/application.yml
+++ b/server/admin/src/main/resources/application.yml
@@ -1,6 +1,6 @@
# 绔彛鍣ㄩ厤缃�
server:
- port: 10010
+ port: 11010
# 椤圭洰淇℃伅閰嶇疆
project:
name: 蹇楅偊-鐐瑰皢
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Cases.java b/server/services/src/main/java/com/doumee/dao/business/model/Cases.java
index dbc8cf4..66bea71 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Cases.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Cases.java
@@ -99,6 +99,9 @@
@TableField(exist = false)
private List<byte[]> imgdataList;
+ @ApiModelProperty(value = "鏄惁鍖呭惈宸插垹闄� 0涓嶅寘鍚� 1鍖呭惈锛�", example = "1")
+ @TableField(exist = false)
+ private int containDeleted;
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java b/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java
index 4a87d87..3dc860f 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/ImportRecord.java
@@ -98,4 +98,7 @@
@ApiModelProperty(value = "缁撴潫鏃堕棿锛�", example = "1")
@TableField(exist = false)
private Date endtime;
+ @ApiModelProperty(value = "杩涜涓凡澶勭悊鐨勬暟閲忥紱", example = "1")
+ @TableField(exist = false)
+ private Integer ingNum;
}
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/Member.java b/server/services/src/main/java/com/doumee/dao/business/model/Member.java
index a39b833..0598154 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/services/src/main/java/com/doumee/dao/business/model/Member.java
@@ -181,4 +181,7 @@
@ApiModelProperty(value = "鏈�鍚庢搷浣滀汉鍛橈紱", example = "1")
@TableField(exist = false)
private String updateUserName;
+ @ApiModelProperty(value = "鏄惁鍖呭惈宸插垹闄� 0涓嶅寘鍚� 1鍖呭惈锛�", example = "1")
+ @TableField(exist = false)
+ private int containDeleted;
}
diff --git a/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java b/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java
index cadb3da..86fec2c 100644
--- a/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java
+++ b/server/services/src/main/java/com/doumee/service/business/ImportRecordService.java
@@ -99,4 +99,5 @@
ImportRecord importBatch(MultipartFile file, int type );
void dealImporTask(ImportRecord importRecord);
+ void clearImporTask();
}
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/CasesServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/CasesServiceImpl.java
index ab90547..76551cc 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/CasesServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/CasesServiceImpl.java
@@ -177,7 +177,6 @@
public PageData<Cases> findPage(PageWrap<Cases> pageWrap) {
IPage<Cases> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
MPJLambdaWrapper<Cases> queryWrapper = new MPJLambdaWrapper<>();
- pageWrap.getModel().setDeleted(Constants.ZERO);
queryWrapper.selectAll(Cases.class)
.selectAs(Member::getName,Cases::getMemberName)
.selectAs(Member::getCode,Cases::getMemberCode)
@@ -185,8 +184,8 @@
.leftJoin(SystemUser.class,SystemUser::getId,Cases::getUpdateUser)
.leftJoin(Member.class,Member::getId,Cases::getMemberId);
Utils.MP.blankToNull(pageWrap.getModel());
+ queryWrapper.eq(pageWrap.getModel().getContainDeleted()!=1,Cases::getDeleted, Constants.ZERO);
queryWrapper.eq(pageWrap.getModel().getId() != null,Cases::getId, pageWrap.getModel().getId());
- queryWrapper.eq(pageWrap.getModel().getDeleted() != null,Cases::getDeleted, pageWrap.getModel().getDeleted());
queryWrapper.eq(pageWrap.getModel().getCreateUser() != null,Cases::getCreateUser, pageWrap.getModel().getCreateUser());
queryWrapper.eq(pageWrap.getModel().getUpdateUser() != null,Cases::getUpdateUser, pageWrap.getModel().getUpdateUser());
queryWrapper.eq(pageWrap.getModel().getRemark() != null,Cases::getRemark, pageWrap.getModel().getRemark());
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
index fb3a329..e268a1b 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/ImportRecordServiceImpl.java
@@ -38,6 +38,7 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.multipart.MultipartFile;
+import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.io.ByteArrayInputStream;
import java.math.BigDecimal;
@@ -141,7 +142,8 @@
MPJLambdaWrapper<ImportRecord> queryWrapper = new MPJLambdaWrapper<>();
Utils.MP.blankToNull(pageWrap.getModel());
queryWrapper.selectAll(ImportRecord.class )
- .selectAs(SystemUser::getRealname,ImportRecord::getUpdateUserName)
+ .select( "(select count(c.id) from cases c where c.import_id= t.id)",ImportRecord::getIngNum)
+ .selectAs(SystemUser::getRealname,ImportRecord::getUpdateUserName)
.leftJoin(SystemUser.class,SystemUser::getId,ImportRecord::getUpdateUser);
queryWrapper.eq(pageWrap.getModel().getId() != null,ImportRecord::getId, pageWrap.getModel().getId());
queryWrapper.eq(pageWrap.getModel().getDeleted() != null,ImportRecord::getDeleted, pageWrap.getModel().getDeleted());
@@ -499,6 +501,32 @@
}
/**
+ * 寮傛鎵ц鏂囦欢浠诲姟
+ */
+ @Override
+ public void clearImporTask(){
+ try {
+ List<ImportRecord> records = importRecordMapper.selectList(new QueryWrapper<ImportRecord>()
+ .select("id,total_num,(select count(c.id) from cases c where c.import_id= import_record.id) as doneNum")
+ .lambda()
+ .eq(ImportRecord::getDetail,Constants.ZERO)
+ .ne(ImportRecord::getStatus,Constants.TWO)
+ );
+ for(ImportRecord importRecord : records){
+ importRecord.setErrorNum(Constants.formatIntegerNum(importRecord.getTotalNum()- Constants.formatIntegerNum(importRecord.getDoneNum())));
+ importRecord.setStatus(Constants.TWO);
+ importRecord.setUpdateTime(new Date());
+ importRecord.setRemark("浠诲姟鎵ц涓柇锛屽己鍒惰缃换鍔$姸鎬�");
+ importRecordMapper.updateById(importRecord);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ redisTemplate.delete(Constants.RedisKeys.IMPORTING_RECORD);
+ }
+ }
+
+ /**
* 澶勭悊妗堜緥瀵煎叆浠诲姟
* @param importRecord
*/
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index 24521a0..1cae4d0 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/services/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -221,8 +221,9 @@
.apply(Objects.nonNull(model.getBustypeIds())," find_in_set( '["+model.getBustypeIds()+"]', t.BUSTYPE_IDS ) ")
.apply(Objects.nonNull(model.getZhanquIds())," find_in_set( '["+model.getZhanquIds()+"]', t.ZHANQU_IDS ) ")
.like(StringUtils.isNotBlank(model.getName()),Member::getName, model.getName())
+ .eq(Objects.nonNull(model.getImportId()),Member::getImportId, model.getImportId())
.eq(Objects.nonNull(model.getStatus()),Member::getStatus, model.getStatus())
- .eq(Member::getDeleted, Constants.ZERO)
+ .eq(model.getContainDeleted()!=1,Member::getDeleted, Constants.ZERO)
.in(Objects.nonNull(model.getLevelId()),Category::getId, model.getLevelId())
.eq(Objects.nonNull(model.getCode()),Member::getCode, model.getCode())
.orderByDesc(Objects.nonNull(model.getOrderByType())&&Constants.equalsInteger(model.getOrderByType(), Constants.ZERO),Member::getFee)
--
Gitblit v1.9.3