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