From 170800582ce66c770a56e69f6d8b44c38f0728bf Mon Sep 17 00:00:00 2001
From: 叶松 <2217086471@qq.com>
Date: 星期一, 27 十一月 2023 22:29:21 +0800
Subject: [PATCH] 安全积分超市对接

---
 web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue |  251 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 213 insertions(+), 38 deletions(-)

diff --git a/web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue b/web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue
index 0a2e352..b4db379 100644
--- a/web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue
+++ b/web/src/views/SecureManage/NipCheck/components/ScoreDetails.vue
@@ -2,36 +2,36 @@
   <div class="main" style="height:89%">
     <div class="main_header">
         <div class="header_item">
-        <span class="header_label">类型:</span>
-        <el-select v-model="search.type" clearable placeholder="请选择类型">
-          <el-option
-            v-for="item in typeLists"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value">
-          </el-option>
-        </el-select>
-      </div>
-      <div class="header_item">
-        <span class="header_label">时间范围:</span>
-        <el-date-picker
-            v-model="search.time"
-            type="daterange"
-            value-format="yyyy-MM-dd HH:mm:ss"
-            :default-time="['00:00:00','23:59:59']"
-            range-separator="-"
-            start-placeholder="起始时间"
-            end-placeholder="结束时间">
-        </el-date-picker>
-      </div>
+            <span class="header_label">人员类型:</span>
+            <el-select v-model="search.userType" clearable placeholder="请选择人员类型" @change="changeType">
+                <el-option
+                    v-for="item in optionsType"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                </el-option>
+            </el-select>
+        </div>
+        <div class="header_item">
+            <span class="header_label">人员姓名:</span>
+            <el-select v-model="search.userId" filterable clearable placeholder="请选择人员名称">
+                <el-option
+                    v-for="item in optionsUser"
+                    :key="item.userId"
+                    :label="item.realName"
+                    :value="item.userId">
+                </el-option>
+            </el-select>
+        </div>
+        <div class="header_item">
+            <span class="header_label">累计积分范围:</span>
+            <el-input v-model="search.startIntegral" clearable placeholder="请输入"></el-input>
+            <el-input v-model="search.endIntegra" style="margin-left:15px" clearable placeholder="请输入"></el-input>
+        </div>
       <div class="header_item">
         <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchButtonInfo(true)">查询</el-button>
-        <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('export')" @click="exportFiles">导出Excel</el-button>
+        <!-- <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('export')" @click="exportFiles">导出Excel</el-button> -->
       </div>
-    </div>
-    <div class="score_index">
-        <div class="score_titles">积分:</div>
-        <div class="score_datas"><span>65</span>分</div>
     </div>
     <div class="main_content">
       <el-table
@@ -44,10 +44,20 @@
           </template>
         </el-table-column>
         <el-table-column prop="createTime" label="时间" align="center" width="150"></el-table-column>
-        <el-table-column prop="dangerLocation" label="积分分值" align="center" ></el-table-column>
-        <el-table-column prop="dangerLocation" label="余额" align="center" ></el-table-column>
-        <el-table-column prop="dangerLocation" label="类型" align="center" ></el-table-column>
-        <el-table-column prop="title" label="说明" align="center" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="realName" label="人员姓名" align="center" ></el-table-column>
+        <el-table-column prop="accumulateIntegral" label="累计积分" align="center" ></el-table-column>
+        <el-table-column prop="totalIntegral" label="当前积分" align="center" ></el-table-column>
+        <el-table-column prop="totalConsumption" label="总消耗" align="center" ></el-table-column>
+        <el-table-column prop="userType" label="人员类型" align="center" >
+            <template #default="{row}">
+                <div>{{optionsType[row.userType-1]&&optionsType[row.userType - 1].label}}</div>
+            </template>
+        </el-table-column>
+        <el-table-column label="操作" align="center">
+          <template #default="{ row }">
+            <el-button class="table_btn" size="mini" v-if="showButton('update')" @click="updateProp(row)">个人积分明细</el-button>
+          </template>
+        </el-table-column>
       </el-table>
     </div>
     <div class="main_footer">
@@ -62,27 +72,120 @@
         :total="total">
       </el-pagination>
     </div>
+    <!-- 个人积分超市明细 -->
+    <el-dialog
+      class="prop_dialog"
+      title="个人积分明细"
+      :close-on-click-modal="false"
+      :visible.sync="asyncVisible"
+      width="65%">
+      <div>
+        <div class="main_header">
+        <div class="header_item">
+            <span class="header_label">类型:</span>
+            <el-select v-model="searchForm.type" clearable placeholder="请选择类型">
+                <el-option
+                    v-for="item in optionsFormType"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value">
+                </el-option>
+            </el-select>
+        </div>
+        <div class="header_item">
+            <span class="header_label">时间范围:</span>
+            <el-date-picker
+                v-model="searchForm.time"
+                type="daterange"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                :default-time="['00:00:00','23:59:59']"
+                range-separator="-"
+                start-placeholder="起始时间"
+                end-placeholder="结束时间">
+            </el-date-picker>
+    </div>
+    <div class="header_item">
+        <el-button icon="el-icon-search" v-if="showButton('search')" @click="searchFormButtonInfo(true,userIds)">查询</el-button>
+        <el-button class="search_btn" icon="el-icon-plus" v-if="showButton('export')" @click="exportFiles">导出Excel</el-button>
+    </div>
+    </div>
+    <div class="score_index">
+        <div class="score_titles">积分:</div>
+        <div class="score_datas"><span>{{ruleNumber}}</span>分</div>
+    </div>
+    <div class="main_content" style="height:350px">
+        <el-table
+            v-loading="loading"
+            :data="dataFormList"
+            height="100%">
+            <el-table-column align="center" label="序号" width="60">
+            <template #default="scope">
+                <span>{{(pageNum - 1) * pageSize + scope.$index + 1}}</span>
+            </template>
+            </el-table-column>
+            <el-table-column prop="createTime" label="时间" align="center" width="150"></el-table-column>
+            <el-table-column prop="integralWater" label="积分分值" align="center" ></el-table-column>
+            <el-table-column prop="balanc" label="余额" align="center" ></el-table-column>
+            <el-table-column prop="type" label="类型" align="center" >
+                <template #default="{row}">
+                <div>{{optionsFormType[row.type-1]&&optionsFormType[row.type - 1].label}}</div>
+            </template>
+            </el-table-column>
+            <el-table-column prop="remark" label="说明" align="center" show-overflow-tooltip></el-table-column>
+        </el-table>
+        </div>
+        <div class="main_footer">
+        <el-pagination
+            background
+            @current-change="changeFormPageNum"
+            @size-change="changeFormPageSize"
+            :current-page="pageFormNum"
+            :page-sizes="[10, 20, 50, 100]"
+            :page-size="pageFormSize"
+            layout="total, sizes, prev, pager, next, jumper"
+            :total="totalForm">
+        </el-pagination>
+        </div>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
 <script>
 import { buttonPinia } from '../../../../pinia/index';
-import { changeSize } from '../../../../plugins/public'; // 导入节流、动态切换组件尺寸方法
+import { changeSize,downFiles } from '../../../../plugins/public'; // 导入节流、动态切换组件尺寸方法
   export default {
     data() {
       return {
         size: changeSize(), // 组件尺寸
         pageNum: 1,
         pageSize: 10,
+        pageFormNum:1,
+        pageFormSize:10,
+        ruleNumber:null,//总积分数
+        userIds:null,//人员id
+        totalForm:0,
         search:{},//查询条件
+        optionsUser:[],//人员
+        searchForm:{},//弹框中的查询条件
         total: 0,
         disabled:false,
         loading: false,
         dataList: [], //积分明细信息列表
+        dataFormList:[],//弹框中的列表
         imageList:[],
-        asyncTitle: true, // 对话框title 新增:true  修改:false
         asyncVisible: false, // 添加 修改对话框
-        typeLists:[
+        optionsType:[
+            {
+                label:'管理人员',
+                value:1
+            },
+            {
+                label:'劳务人员',
+                value:2
+            },
+        ],
+        optionsFormType:[
             {
                 label:'获取',
                 value:1
@@ -91,7 +194,7 @@
                 label:'消耗',
                 value:2
             }
-        ]
+        ],
       }
     },
     watch: {
@@ -110,6 +213,17 @@
       }
     },
     methods: {
+        //通过修改人员类型获取对应的人员名称
+        changeType(val){
+            this.$set(this.search,'userId','')
+            this.$api.Engineer.getPersonsList({userType:val}).then(res=>{
+                if(res.statusMsg === 'ok'){
+                    this.optionsUser = res.data
+                }else{
+                    this.$message.warning(res.statusMsg)
+                }
+            })
+        },
       // 查询按钮列表信息
       searchButtonInfo(bol) {
         if(bol) {
@@ -123,7 +237,7 @@
         params.endTime = this.search.time&&this.search.time[1]
         delete params.time
         this.loading = true;
-        this.$api.Safety.searchHiddenLists(params).then((res) => {
+        this.$api.Safety.searchIntegralLists(params).then((res) => {
           if(res.statusMsg === 'ok') {
             this.total = res.data.total;
             this.dataList = res.data.list;
@@ -131,8 +245,59 @@
           this.loading = false;
         })
       },
+      //查询弹框中的列表
+      searchFormButtonInfo(bol,userId){
+        if(bol) {
+          this.pageFormNum = 1;
+        }
+        let params = Object.assign({},this.searchForm,{
+          pageNum: this.pageFormNum,
+          pageSize: this.pageFormSize,
+          userId:userId
+        })
+        params.startTime = this.searchForm.time&&this.searchForm.time[0]
+        params.endTime = this.searchForm.time&&this.searchForm.time[1]
+        delete params.time
+        this.loading = true;
+        this.$api.Safety.searchPersonLists(params).then((res) => {
+          if(res.statusMsg === 'ok') {
+            this.totalForm = res.data.data.total;
+            this.ruleNumber = res.data.integral
+            this.dataFormList = res.data.data.list;
+          }
+          this.loading = false;
+        })
+      },
       //导出excel
-      exportFiles(){},
+      exportFiles(){
+        let params = {}
+        params.startTime = this.search.time&&this.search.time[0]
+        params.endTime = this.search.time&&this.search.time[1]
+        delete params.time
+        this.functionLoading();
+        this.$api.Safety.exportMarketFiles(params).then(res => {
+            downFiles(res, '积分明细信息', 'xls')
+            this.loadingView.close()
+        })
+        .catch(() => {
+            this.loadingView.close();
+        })
+      },
+      // 转圈圈
+      functionLoading() {
+          this.loadingView = this.$loading({
+              lock: true,
+              text: '请稍后...',
+              spinner: 'el-icon-loading',
+              background: 'rgba(0, 0, 0, 0.7)'
+          });
+      },
+      //个人积分明细弹框
+      updateProp(row){
+        this.userIds = row.userId
+        this.asyncVisible = true;
+        this.searchFormButtonInfo(true,row.userId)
+      },
       // 判断按钮权限信息
       showButton(str) {
         const pinia = buttonPinia();
@@ -147,7 +312,17 @@
       changePageSize(size) {
         this.pageSize = size;
         this.searchButtonInfo();
-      }
+      },
+      //切换弹框页数
+      changeFormPageNum(page){
+        this.pageFormNum = page;
+        this.searchFormButtonInfo();
+      },
+      // 切换弹框每页条数
+      changeFormPageSize(size) {
+        this.pageFormSize = size;
+        this.searchFormButtonInfo();
+      },
     }
   }
 </script>

--
Gitblit v1.9.3