739 lines
34 KiB
Vue
739 lines
34 KiB
Vue
<template>
|
||
<div class="app-container">
|
||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||
<el-form-item label="所属组织" prop="deptIdList">
|
||
<el-cascader v-model="queryParams.deptIdList"
|
||
:options="deptOptions" :filterable="true" style="width: 240px" :show-all-levels="false"
|
||
:props="{
|
||
multiple: true,
|
||
emitPath: false,// 若设置 false,则只返回该节点的值,只返回最后选择的id
|
||
checkStrictly: false,//来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
|
||
value:'id',label:'label'
|
||
}" clearable collapse-tags >
|
||
</el-cascader>
|
||
</el-form-item>
|
||
<el-form-item label="关键字" prop="searchValue">
|
||
<el-input v-model="queryParams.searchValue" placeholder="请输入用户姓名,编号,手机号" maxlength="20" clearable style="width: 240px"/>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
|
||
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
|
||
</el-form-item>
|
||
</el-form>
|
||
|
||
<el-row :gutter="10" class="mb8">
|
||
<el-col :span="1.5">
|
||
<el-button
|
||
size="mini"
|
||
@click="handleBatchEdit"
|
||
>批量补扣</el-button>
|
||
</el-col>
|
||
|
||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||
</el-row>
|
||
<el-table v-loading="loading" :data="tableListData" height="800">
|
||
<el-table-column label="序号" align="center" width="80" type="index" fixed="left">
|
||
<template scope="scope">
|
||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index+1 }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="用户编号" align="center" prop="custNum" :show-overflow-tooltip="true" width="120" fixed="left"/>
|
||
<el-table-column label="用户姓名" align="center" prop="custName" :show-overflow-tooltip="true" width="120" fixed="left"/>
|
||
<el-table-column label="用户手机号" align="center" prop="mobile" :show-overflow-tooltip="true" width="120"/>
|
||
<el-table-column label="所属组织" align="center" prop="orgFullName" :show-overflow-tooltip="true" width="120"/>
|
||
<el-table-column label="用户类别" align="center" prop="psnTypeName" :show-overflow-tooltip="true" width="120"/>
|
||
<el-table-column label="账户总余额" align="center" prop="accBalTotal" :show-overflow-tooltip="true" width="120">
|
||
<template slot-scope="scope">
|
||
<span>{{ (scope.row.accBalTotal/100).toFixed(2) }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="可用总余额" align="center" prop="accAvailableBal" :show-overflow-tooltip="true" width="120">
|
||
<template slot-scope="scope">
|
||
<span>{{ (scope.row.accAvailableBal/100).toFixed(2) }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="个人钱包余额" align="center" prop="walletBal" :show-overflow-tooltip="true" width="120">
|
||
<template slot-scope="scope">
|
||
<span>{{ (scope.row.walletBal/100).toFixed(2) }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="补贴钱包余额" align="center" prop="subsidyBal" :show-overflow-tooltip="true" width="120">
|
||
<template slot-scope="scope">
|
||
<span>{{ (scope.row.subsidyBal/100).toFixed(2) }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<!-- <el-table-column label="红包余额" align="center" prop="redEnvelope" :show-overflow-tooltip="true" width="120">
|
||
<template slot-scope="scope">
|
||
<span>{{ (scope.row.redEnvelope/100).toFixed(2) }}</span>
|
||
</template>
|
||
</el-table-column> -->
|
||
<el-table-column label="冻结金额" align="center" prop="accFreezeBalTotal" :show-overflow-tooltip="true" width="120">
|
||
<template slot-scope="scope">
|
||
<span>{{ (scope.row.accFreezeBalTotal/100).toFixed(2) }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="账户状态" align="center" prop="accStatusName" :show-overflow-tooltip="true" width="120"/>
|
||
<el-table-column label="账户有效期" align="center" prop="endDate" :show-overflow-tooltip="true" width="150"/>
|
||
|
||
|
||
<el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width" fixed="right">
|
||
<template slot-scope="scope">
|
||
<el-button
|
||
size="mini"
|
||
type="text"
|
||
@click="handleUpdate(scope.row)"
|
||
>补扣</el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
|
||
<pagination
|
||
v-show="total>0"
|
||
:total="total"
|
||
:page.sync="queryParams.pageNum"
|
||
:limit.sync="queryParams.pageSize"
|
||
@pagination="getList"
|
||
/>
|
||
|
||
<!-- 补扣对话框 -->
|
||
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
|
||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-form-item label="所属区域" prop="areaId">
|
||
<el-cascader v-model="form.areaId"
|
||
:options="treeAreaOptions" :filterable="true" style="width: 100%;" :show-all-levels="false"
|
||
:props="{
|
||
emitPath: false,// 若设置 false,则只返回该节点的值,只返回最后选择的id
|
||
checkStrictly: false,//来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
|
||
value:'id',label:'label'
|
||
}" clearable @change="handleAreaChange">
|
||
</el-cascader>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="所属食堂" prop="canteenId">
|
||
<el-select v-model="form.canteenId" placeholder="请选择所属食堂" clearable style="width: 100%;" @change="handleCanteenChange">
|
||
<el-option v-for="item in canteenOptions"
|
||
:key="item.canteenId"
|
||
:label="item.canteenName"
|
||
:value="item.canteenId"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-form-item label="所属档口" prop="stallId">
|
||
<el-select v-model="form.stallId" placeholder="请选择所属档口" clearable style="width: 100%;" @change="getPayDeviceList">
|
||
<el-option v-for="item in stallOptions"
|
||
:key="item.stallId"
|
||
:label="item.stallName"
|
||
:value="item.stallId"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="订单来源" prop="ordWay">
|
||
<el-select v-model="form.ordWay" style="width: 100%;" clearable @change="getPayDeviceList">
|
||
<el-option label="移动端" value="1" />
|
||
<el-option label="设备" value="2" />
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-form-item label="设备名称" prop="deviceId">
|
||
<el-select v-model="form.deviceId" placeholder="请选择设备名称" clearable style="width: 100%;" :disabled="form.ordWay==1">
|
||
<el-option v-for="item in devicesOptions"
|
||
:key="item.deviceId"
|
||
:label="item.deviceName"
|
||
:value="item.deviceId"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="订单日期" prop="ordDateTime">
|
||
<el-date-picker
|
||
v-model="form.ordDateTime" style="width: 100%;"
|
||
type="date" value-format="yyyy-MM-dd" clearable
|
||
placeholder="选择日期">
|
||
</el-date-picker>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-form-item label="餐次" prop="mealtimeType">
|
||
<el-select v-model="form.mealtimeType" style="width: 100%;" clearable>
|
||
<el-option label="早餐" value="1"></el-option>
|
||
<el-option label="午餐" value="2"></el-option>
|
||
<el-option label="下午茶" value="3"></el-option>
|
||
<el-option label="晚餐" value="4"></el-option>
|
||
<el-option label="夜宵" value="5"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="补扣原因" prop="remark">
|
||
<el-input v-model="form.remark" placeholder="请输入补扣原因" maxlength="30" clearable style="width: 100%;"/>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-form-item label="补扣金额" prop="amount">
|
||
<el-input v-model="form.amount" placeholder="请输入补扣金额" maxlength="6" clearable style="width: 100%;" @input="(v)=>(form.amount=v.replace(/[^\d.]/g,''))"/>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="是否设置补扣顺序" prop="ifSetDeduction">
|
||
<el-radio-group v-model="form.ifSetDeduction">
|
||
<el-radio label="1">是</el-radio>
|
||
<el-radio label="2">否</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row v-if="form.ifSetDeduction==1">
|
||
<el-col :span="12">
|
||
<el-form-item label="补扣顺序" prop="walletTypeList">
|
||
<el-select v-model="form.walletTypeList" multiple style="width: 100%;" clearable>
|
||
<el-option label="个人钱包" value="1"></el-option>
|
||
<el-option label="补贴钱包" value="2"></el-option>
|
||
<el-option label="红包" value="4"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
|
||
</el-form>
|
||
<div slot="footer" class="dialog-footer">
|
||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
||
<el-button @click="cancel">取 消</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
<!-- 批量补扣 -->
|
||
<el-dialog title="批量补扣" :visible.sync="openBatch" width="900px" append-to-body>
|
||
<div style="width: 100%;height: 650px;overflow-y: auto;">
|
||
<div style="height: 30px;padding-left: 10px;line-height: 30px;margin: 10px 0;font-size: 14px;color: #000;background: #e7f0fa;border-left: 3px solid #4b80fd;">第一步:选择用户</div>
|
||
<el-form :model="dialogParams" ref="dialogParams" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||
<el-form-item label="" prop="searchValue">
|
||
<el-input v-model="dialogParams.searchValue" placeholder="请输入用户姓名,编号,手机号" maxlength="20" clearable style="width: 240px"/>
|
||
</el-form-item>
|
||
<el-form-item label="" prop="deptIdList">
|
||
<el-cascader v-model="dialogParams.deptIdList"
|
||
:options="deptOptions" :filterable="true" style="width: 240px" :show-all-levels="false"
|
||
placeholder="所属组织"
|
||
:props="{
|
||
multiple: true,
|
||
emitPath: false,// 若设置 false,则只返回该节点的值,只返回最后选择的id
|
||
checkStrictly: false,//来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
|
||
value:'id',label:'label'
|
||
}" clearable collapse-tags >
|
||
</el-cascader>
|
||
</el-form-item>
|
||
<el-form-item label="" prop="psnType">
|
||
<el-select v-model="dialogParams.psnType" placeholder="用户类别" style="width: 240px" clearable>
|
||
<el-option
|
||
v-for="dict in dict.type.user_psn_type"
|
||
:key="dict.value"
|
||
:label="dict.label"
|
||
:value="Number(dict.value)"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleDialogQuery">搜索</el-button>
|
||
</el-form-item>
|
||
</el-form>
|
||
<el-table :data="dialogTableData" height="300" ref="multipleTable" :row-key="(row)=>{return row.accId}" @selection-change="handleSelectionChange">
|
||
<el-table-column type="selection" width="50" align="center" :reserve-selection="true"/>
|
||
<el-table-column label="用户编号" align="center" prop="custNum" :show-overflow-tooltip="true" />
|
||
<el-table-column label="用户姓名" align="center" prop="custName" :show-overflow-tooltip="true" />
|
||
<el-table-column label="用户手机号" align="center" prop="mobile" :show-overflow-tooltip="true" />
|
||
<el-table-column label="所属组织" align="center" prop="orgFullName" :show-overflow-tooltip="true" />
|
||
<el-table-column label="用户类别" align="center" prop="psnTypeName" :show-overflow-tooltip="true"/>
|
||
</el-table>
|
||
<pagination
|
||
v-show="dialogTotal>0"
|
||
:total="dialogTotal"
|
||
:page.sync="dialogParams.pageNum"
|
||
:limit.sync="dialogParams.pageSize"
|
||
@pagination="getDialogList"
|
||
/>
|
||
<div style="height: 30px;padding-left: 10px;line-height: 30px;margin: 20px 0;font-size: 14px;color: #000;background: #e7f0fa;border-left: 3px solid #4b80fd;">
|
||
第二步:填写补扣金额
|
||
</div>
|
||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-form-item label="所属区域" prop="areaId">
|
||
<el-cascader v-model="form.areaId"
|
||
:options="treeAreaOptions" :filterable="true" style="width: 100%;" :show-all-levels="false"
|
||
:props="{
|
||
emitPath: false,// 若设置 false,则只返回该节点的值,只返回最后选择的id
|
||
checkStrictly: false,//来设置父子节点取消选中关联,从而达到选择任意一级选项的目的
|
||
value:'id',label:'label'
|
||
}" clearable @change="handleAreaChange">
|
||
</el-cascader>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="所属食堂" prop="canteenId">
|
||
<el-select v-model="form.canteenId" placeholder="请选择所属食堂" clearable style="width: 100%;" @change="handleCanteenChange">
|
||
<el-option v-for="item in canteenOptions"
|
||
:key="item.canteenId"
|
||
:label="item.canteenName"
|
||
:value="item.canteenId"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-form-item label="所属档口" prop="stallId">
|
||
<el-select v-model="form.stallId" placeholder="请选择所属档口" clearable style="width: 100%;" @change="getPayDeviceList">
|
||
<el-option v-for="item in stallOptions"
|
||
:key="item.stallId"
|
||
:label="item.stallName"
|
||
:value="item.stallId"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="订单来源" prop="ordWay">
|
||
<el-select v-model="form.ordWay" style="width: 100%;" clearable @change="getPayDeviceList">
|
||
<el-option label="移动端" value="1" />
|
||
<el-option label="设备" value="2" />
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-form-item label="设备名称" prop="deviceId">
|
||
<el-select v-model="form.deviceId" placeholder="请选择设备名称" clearable style="width: 100%;" :disabled="form.ordWay==1">
|
||
<el-option v-for="item in devicesOptions"
|
||
:key="item.deviceId"
|
||
:label="item.deviceName"
|
||
:value="item.deviceId"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="订单日期" prop="ordDateTime">
|
||
<el-date-picker
|
||
v-model="form.ordDateTime" style="width: 100%;"
|
||
type="date" value-format="yyyy-MM-dd" clearable
|
||
placeholder="选择日期">
|
||
</el-date-picker>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-form-item label="餐次" prop="mealtimeType">
|
||
<el-select v-model="form.mealtimeType" style="width: 100%;" clearable>
|
||
<el-option label="早餐" value="1"></el-option>
|
||
<el-option label="午餐" value="2"></el-option>
|
||
<el-option label="下午茶" value="3"></el-option>
|
||
<el-option label="晚餐" value="4"></el-option>
|
||
<el-option label="夜宵" value="5"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="补扣原因" prop="remark">
|
||
<el-input v-model="form.remark" placeholder="请输入补扣原因" maxlength="30" clearable style="width: 100%;"/>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="12">
|
||
<el-form-item label="补扣金额" prop="amount">
|
||
<el-input v-model="form.amount" placeholder="请输入补扣金额" maxlength="9" clearable style="width: 100%;" @input="(v)=>(form.amount=v.replace(/[^\d.]/g,''))"/>
|
||
</el-form-item>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<el-form-item label="是否设置补扣顺序" prop="ifSetDeduction">
|
||
<el-radio-group v-model="form.ifSetDeduction">
|
||
<el-radio label="1">是</el-radio>
|
||
<el-radio label="2">否</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row v-if="form.ifSetDeduction==1">
|
||
<el-col :span="12">
|
||
<el-form-item label="补扣顺序" prop="walletTypeList">
|
||
<el-select v-model="form.walletTypeList" multiple style="width: 100%;" clearable>
|
||
<el-option label="个人钱包" value="1"></el-option>
|
||
<el-option label="补贴钱包" value="2"></el-option>
|
||
<el-option label="红包" value="4"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
</el-form>
|
||
</div>
|
||
<div slot="footer" class="dialog-footer">
|
||
<el-button type="primary" @click="confirmBatchEdit">确 定</el-button>
|
||
<el-button @click="openBatch=false">取 消</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
|
||
<el-dialog title="批量校验预览" :visible.sync="openResult" width="800px" append-to-body>
|
||
<div>总人数: {{resultData.totalCount || '--' }} , 补扣人数:{{resultData.sucCount || '--' }}, 补扣总额:{{resultData.sucTotalAmount || '--' }}, 无效人数:{{resultData.errCount || '--'}}</div>
|
||
<el-table :data="resultData.errVOList" height="300">
|
||
<el-table-column label="用户编号" align="center" prop="custNum" :show-overflow-tooltip="true" />
|
||
<el-table-column label="用户姓名" align="center" prop="custName" :show-overflow-tooltip="true" />
|
||
<el-table-column label="用户手机号" align="center" prop="mobile" :show-overflow-tooltip="true" />
|
||
<el-table-column label="所属组织" align="center" prop="orgFullName" :show-overflow-tooltip="true" />
|
||
<el-table-column label="用户类别" align="center" prop="psnTypeName" :show-overflow-tooltip="true"/>
|
||
<el-table-column label="金额" align="center" prop="amount" :show-overflow-tooltip="true">
|
||
<template slot-scope="scope">
|
||
<span>{{ (scope.row.amount/100).toFixed(2) }}</span>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column label="失败原因" align="center" prop="errMsg" :show-overflow-tooltip="true"/>
|
||
</el-table>
|
||
<div slot="footer" class="dialog-footer">
|
||
<el-button type="primary" @click="openResult=false" v-if="resultData.sucVOList&&resultData.sucVOList.length==0">确 定</el-button>
|
||
<el-button type="primary" @click="confirmBatchDeduct" v-else>继 续</el-button>
|
||
<el-button @click="openResult=false">取 消</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { deptTreeSelect } from '@/api/system/user'
|
||
import { accInfoPageApi } from "@/api/accountCenter/manager";
|
||
import { systemAreaTreeApi,getCanteenByAreaApi,getStallByCanteenApi } from "@/api/base/stall";
|
||
import { getPayDeviceListApi,consumeDeductSingleApi,consumeBatchCheckApi,consumeDeductBatchApi } from "@/api/accountCenter/consume";
|
||
|
||
|
||
export default {
|
||
name: "",
|
||
dicts: ['user_psn_type'],
|
||
data() {
|
||
return {
|
||
// 遮罩层
|
||
loading: true,
|
||
// 选中数组
|
||
ids: [],
|
||
// 非单个禁用
|
||
single: true,
|
||
// 非多个禁用
|
||
multiple: true,
|
||
// 显示搜索条件
|
||
showSearch: true,
|
||
// 总条数
|
||
total: 0,
|
||
//表格数据
|
||
tableListData: [],
|
||
// 弹出层标题
|
||
title: "",
|
||
// 是否显示弹出层
|
||
open: false,
|
||
//下拉选数据
|
||
deptOptions:[],
|
||
// 查询参数
|
||
queryParams: {
|
||
pageNum: 1,
|
||
pageSize: 10,
|
||
deptIdList:[],
|
||
searchValue:null,
|
||
},
|
||
cancelCount:0,
|
||
expiredCount:0,
|
||
treeAreaOptions:[],//区域树
|
||
canteenOptions:[],//食堂下拉选
|
||
stallOptions:[],//档口下拉选
|
||
devicesOptions:[],
|
||
// 表单参数
|
||
form: {},
|
||
rowData:{},
|
||
pickerOptions:{
|
||
//禁用当前日期之前的日期
|
||
disabledDate(time) {
|
||
//Date.now()是javascript中的内置函数,它返回自1970年1月1日00:00:00 UTC以来经过的毫秒数。
|
||
return time.getTime() < Date.now() - 8.64e7;
|
||
}
|
||
},
|
||
// 表单校验
|
||
rules: {
|
||
//areaId canteenId ordWay ordDateTime mealtimeType amount ifSetDeduction
|
||
areaId: [
|
||
{ required: true, message: "所属区域不能为空", trigger: "blur" }
|
||
],
|
||
canteenId: [
|
||
{ required: true, message: "所属食堂不能为空", trigger: "blur" }
|
||
],
|
||
ordWay: [
|
||
{ required: true, message: "订单来源不能为空", trigger: "change" }
|
||
],
|
||
ordDateTime: [
|
||
{ required: true, message: "订单日期不能为空", trigger: "blur" }
|
||
],
|
||
mealtimeType: [
|
||
{ required: true, message: "餐次不能为空", trigger: "blur" }
|
||
],
|
||
amount: [
|
||
{ required: true, message: "补扣金额不能为空", trigger: "blur" }
|
||
],
|
||
ifSetDeduction: [
|
||
{ required: true, message: "是否设置补扣顺序不能为空", trigger: "blur" }
|
||
]
|
||
},
|
||
openBatch:false,
|
||
dialogParams: {
|
||
pageNum: 1,
|
||
pageSize: 10,
|
||
accStatusList:[],
|
||
deptIdList:[],
|
||
searchValue:null,
|
||
psnType:null
|
||
},
|
||
dialogTableData:[],
|
||
dialogTotal: 0,
|
||
batchIds:[],
|
||
openResult:false,
|
||
resultData:{}
|
||
};
|
||
},
|
||
created() {
|
||
this.getDeptTree()
|
||
this.getAreaTreeData();
|
||
this.getPayDeviceList();
|
||
this.getList();
|
||
},
|
||
methods: {
|
||
/** 查询部门下拉树结构 */
|
||
getDeptTree() {
|
||
deptTreeSelect().then((response) => {
|
||
this.deptOptions = this.filterTree(response.data)
|
||
})
|
||
},
|
||
filterTree(nodes) {
|
||
return nodes
|
||
.map((node) => {
|
||
if (node.children) {
|
||
node.children = this.filterTree(node.children)
|
||
}
|
||
return node
|
||
})
|
||
.filter((node) => node.status !== '1')
|
||
},
|
||
|
||
/** 搜索按钮操作 */
|
||
handleQuery() {
|
||
this.queryParams.pageNum = 1;
|
||
this.getList();
|
||
},
|
||
/** 重置按钮操作 */
|
||
resetQuery() {
|
||
this.resetForm("queryForm");
|
||
this.handleQuery();
|
||
},
|
||
/** 查询列表 */
|
||
getList() {
|
||
this.loading = true;
|
||
let param = {
|
||
"pageNum": this.queryParams.pageNum,
|
||
"pageSize": this.queryParams.pageSize,
|
||
"deptIdList": this.queryParams.deptIdList,
|
||
"searchValue": this.queryParams.searchValue,
|
||
}
|
||
accInfoPageApi(param).then(response => {
|
||
this.tableListData = response.rows;
|
||
this.total = Number(response.total);
|
||
this.loading = false;
|
||
});
|
||
},
|
||
//区域树
|
||
getAreaTreeData() {
|
||
systemAreaTreeApi({}).then((response) => {
|
||
this.treeAreaOptions = response.data;
|
||
});
|
||
},
|
||
handleAreaChange(e){
|
||
let param= {
|
||
"areaId":e,"canteenType": 1
|
||
}
|
||
getCanteenByAreaApi(param).then((response) => {
|
||
this.canteenOptions=response.rows||[];
|
||
this.form.canteenId=null
|
||
this.stallOptions=[]
|
||
this.form.stallId=null
|
||
this.getPayDeviceList()
|
||
});
|
||
},
|
||
handleCanteenChange(e){
|
||
let param= {
|
||
canteenId:e
|
||
}
|
||
getStallByCanteenApi(param).then((response) => {
|
||
this.stallOptions=response.rows||[];
|
||
this.form.stallId=null
|
||
this.getPayDeviceList()
|
||
});
|
||
},
|
||
getPayDeviceList(){
|
||
let param = {
|
||
canteenId:this.form.canteenId,
|
||
stallId:this.form.stallId
|
||
}
|
||
getPayDeviceListApi(param).then((response) => {
|
||
this.devicesOptions=response||[]
|
||
this.form.deviceId=null
|
||
});
|
||
},
|
||
/** 补扣按钮操作 */
|
||
handleUpdate(row) {
|
||
this.reset();
|
||
this.rowData = row
|
||
this.open = true;
|
||
this.title = "补扣";
|
||
},
|
||
// 取消按钮
|
||
cancel() {
|
||
this.open = false;
|
||
this.reset();
|
||
},
|
||
// 表单重置
|
||
reset() {
|
||
this.form = {};
|
||
this.canteenOptions=[]
|
||
this.stallOptions=[]
|
||
this.$set(this.form,"ordWay","1")
|
||
this.$set(this.form,"ifSetDeduction","2")
|
||
this.resetForm("form");
|
||
},
|
||
/** 提交按钮 */
|
||
submitForm: function() {
|
||
this.$refs["form"].validate(valid => {
|
||
if (valid) {
|
||
let param = {
|
||
...this.rowData,
|
||
...this.form,
|
||
}
|
||
param.amount=Number(this.form.amount*100);
|
||
param.ordDateTime=this.form.ordDateTime+" 00:00:00";
|
||
param.shopstallId=this.form.stallId;
|
||
this.devicesOptions.forEach(item=>{
|
||
if(item.deviceId == this.form.deviceId){
|
||
param.mchName = item.deviceName
|
||
param.mchNum = item.deviceNum
|
||
param.mchSn = item.deviceSn
|
||
param.mchType = item.deviceType
|
||
}
|
||
})
|
||
consumeDeductSingleApi(param).then(response => {
|
||
console.log("1",response)
|
||
if(response.code==200){
|
||
this.$modal.msgSuccess("补扣成功");
|
||
this.open = false;
|
||
this.getList();
|
||
}else{
|
||
this.$modal.msgError(response.msg);
|
||
}
|
||
}).catch(() => {});
|
||
}
|
||
});
|
||
},
|
||
//批量补扣弹窗
|
||
handleBatchEdit() {
|
||
this.resetForm("dialogParams");
|
||
this.getDialogList()
|
||
this.batchIds = []
|
||
this.form = {}
|
||
this.canteenOptions=[]
|
||
this.stallOptions=[]
|
||
this.$set(this.form,"ordWay","1")
|
||
this.$set(this.form,"ifSetDeduction","2")
|
||
this.resetForm("form");
|
||
this.openBatch = true;
|
||
this.$nextTick(()=>{
|
||
this.$refs.multipleTable.clearSelection()
|
||
},300)
|
||
},
|
||
//弹窗搜索
|
||
handleDialogQuery(){
|
||
this.dialogParams.pageNum = 1;
|
||
this.getDialogList();
|
||
},
|
||
//批量弹窗表格查询
|
||
getDialogList(){
|
||
let param = {
|
||
"pageNum": this.dialogParams.pageNum,
|
||
"pageSize": this.dialogParams.pageSize,
|
||
"deptIdList": this.dialogParams.deptIdList,
|
||
"searchValue": this.dialogParams.searchValue,
|
||
"psnType": this.dialogParams.psnType
|
||
}
|
||
accInfoPageApi(param).then(response => {
|
||
this.dialogTableData = response.rows;
|
||
this.dialogTotal = Number(response.total);
|
||
});
|
||
},
|
||
//批量弹窗勾选
|
||
handleSelectionChange(selection){
|
||
this.batchIds = selection.map((item) => item.userId)
|
||
},
|
||
//批量补扣提交
|
||
confirmBatchEdit(){
|
||
console.log(this.batchIds)
|
||
console.log(this.form)
|
||
if(this.batchIds.length>0){
|
||
let param = {
|
||
...this.form,
|
||
custIdList:this.batchIds
|
||
}
|
||
param.amount=Number(this.form.amount*100);
|
||
param.ordDateTime=this.form.ordDateTime+" 00:00:00";
|
||
param.shopstallId=this.form.stallId;
|
||
this.devicesOptions.forEach(item=>{
|
||
if(item.deviceId == this.form.deviceId){
|
||
param.mchName = item.deviceName
|
||
param.mchNum = item.deviceNum
|
||
param.mchSn = item.deviceSn
|
||
param.mchType = item.deviceType
|
||
}
|
||
})
|
||
consumeBatchCheckApi(param).then(response => {
|
||
this.openBatch = false;
|
||
this.resultData = response.data
|
||
this.openResult=true
|
||
});
|
||
}else{
|
||
this.$modal.msgError("请先勾选账户!");
|
||
}
|
||
},
|
||
confirmBatchDeduct(){
|
||
let param = {
|
||
...this.resultData,
|
||
custIdList:this.batchIds
|
||
}
|
||
consumeDeductBatchApi(param).then(response => {
|
||
// this.$modal.msgSuccess("操作正在进行中,稍后可前往批量操作记录查看结果!");
|
||
if(response.code==200){
|
||
this.$modal.msgSuccess("操作成功!");
|
||
this.getList();
|
||
this.openResult=false
|
||
}
|
||
});
|
||
}
|
||
|
||
}
|
||
};
|
||
</script>
|
||
|