Browse Source

参照菜单梳理,添加财务管理-数据查看;交易相关/通道配置-通道管理-通道交易记录;公共/版本控制;客服/在线客服/Q&A

main
GhubCy 2 months ago
parent
commit
2085798307
  1. 44
      src/api/business/appVersion.js
  2. 44
      src/api/business/behaviorModelInfo.js
  3. 44
      src/api/business/customerServiceChat.js
  4. 44
      src/api/business/faq.js
  5. 44
      src/api/business/financialRecord.js
  6. 44
      src/api/business/tradingChannel.js
  7. 44
      src/api/business/tradingChannelRecord.js
  8. 415
      src/views/business/appVersion/index.vue
  9. 331
      src/views/business/behaviorModelInfo/index.vue
  10. 2
      src/views/business/commonFeedback/index.vue
  11. 102
      src/views/business/commonNotify/index.vue
  12. 24
      src/views/business/creditRule/index.vue
  13. 409
      src/views/business/customerServiceChat/index.vue
  14. 395
      src/views/business/faq/index.vue
  15. 54
      src/views/business/feeRecord/index.vue
  16. 424
      src/views/business/financialRecord/index.vue
  17. 183
      src/views/business/merchantVerification/index.vue
  18. 34
      src/views/business/recordPayCallback/index.vue
  19. 16
      src/views/business/recordTransaction/index.vue
  20. 427
      src/views/business/tradingChannel/index.vue
  21. 416
      src/views/business/tradingChannelRecord/index.vue
  22. 155
      src/views/business/userBehaviorLog/index.vue
  23. 70
      src/views/business/userBehaviorRuleAction/index.vue
  24. 91
      src/views/business/userBehaviorRuleRisk/index.vue
  25. 24
      src/views/business/userBehaviorStats/index.vue
  26. 93
      src/views/business/userVerification/index.vue

44
src/api/business/appVersion.js

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询应用程序版本控制列表
export function listAppVersion(query) {
return request({
url: '/business/appVersion/list',
method: 'get',
params: query
})
}
// 查询应用程序版本控制详细
export function getAppVersion(id) {
return request({
url: '/business/appVersion/' + id,
method: 'get'
})
}
// 新增应用程序版本控制
export function addAppVersion(data) {
return request({
url: '/business/appVersion',
method: 'post',
data: data
})
}
// 修改应用程序版本控制
export function updateAppVersion(data) {
return request({
url: '/business/appVersion',
method: 'put',
data: data
})
}
// 删除应用程序版本控制
export function delAppVersion(id) {
return request({
url: '/business/appVersion/' + id,
method: 'delete'
})
}

44
src/api/business/behaviorModelInfo.js

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询模型管理信息列表
export function listBehaviorModelInfo(query) {
return request({
url: '/business/behaviorModelInfo/list',
method: 'get',
params: query
})
}
// 查询模型管理信息详细
export function getBehaviorModelInfo(id) {
return request({
url: '/business/behaviorModelInfo/' + id,
method: 'get'
})
}
// 新增模型管理信息
export function addBehaviorModelInfo(data) {
return request({
url: '/business/behaviorModelInfo',
method: 'post',
data: data
})
}
// 修改模型管理信息
export function updateBehaviorModelInfo(data) {
return request({
url: '/business/behaviorModelInfo',
method: 'put',
data: data
})
}
// 删除模型管理信息
export function delBehaviorModelInfo(id) {
return request({
url: '/business/behaviorModelInfo/' + id,
method: 'delete'
})
}

44
src/api/business/customerServiceChat.js

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询客服与用户的聊天记录列表
export function listCustomerServiceChat(query) {
return request({
url: '/business/customerServiceChat/list',
method: 'get',
params: query
})
}
// 查询客服与用户的聊天记录详细
export function getCustomerServiceChat(id) {
return request({
url: '/business/customerServiceChat/' + id,
method: 'get'
})
}
// 新增客服与用户的聊天记录
export function addCustomerServiceChat(data) {
return request({
url: '/business/customerServiceChat',
method: 'post',
data: data
})
}
// 修改客服与用户的聊天记录
export function updateCustomerServiceChat(data) {
return request({
url: '/business/customerServiceChat',
method: 'put',
data: data
})
}
// 删除客服与用户的聊天记录
export function delCustomerServiceChat(id) {
return request({
url: '/business/customerServiceChat/' + id,
method: 'delete'
})
}

44
src/api/business/faq.js

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询常见问题及答案列表
export function listFaq(query) {
return request({
url: '/business/faq/list',
method: 'get',
params: query
})
}
// 查询常见问题及答案详细
export function getFaq(id) {
return request({
url: '/business/faq/' + id,
method: 'get'
})
}
// 新增常见问题及答案
export function addFaq(data) {
return request({
url: '/business/faq',
method: 'post',
data: data
})
}
// 修改常见问题及答案
export function updateFaq(data) {
return request({
url: '/business/faq',
method: 'put',
data: data
})
}
// 删除常见问题及答案
export function delFaq(id) {
return request({
url: '/business/faq/' + id,
method: 'delete'
})
}

44
src/api/business/financialRecord.js

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询财务记录列表
export function listFinancialRecord(query) {
return request({
url: '/business/financialRecord/list',
method: 'get',
params: query
})
}
// 查询财务记录详细
export function getFinancialRecord(id) {
return request({
url: '/business/financialRecord/' + id,
method: 'get'
})
}
// 新增财务记录
export function addFinancialRecord(data) {
return request({
url: '/business/financialRecord',
method: 'post',
data: data
})
}
// 修改财务记录
export function updateFinancialRecord(data) {
return request({
url: '/business/financialRecord',
method: 'put',
data: data
})
}
// 删除财务记录
export function delFinancialRecord(id) {
return request({
url: '/business/financialRecord/' + id,
method: 'delete'
})
}

44
src/api/business/tradingChannel.js

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询交易通道/渠道列表
export function listTradingChannel(query) {
return request({
url: '/business/tradingChannel/list',
method: 'get',
params: query
})
}
// 查询交易通道/渠道详细
export function getTradingChannel(id) {
return request({
url: '/business/tradingChannel/' + id,
method: 'get'
})
}
// 新增交易通道/渠道
export function addTradingChannel(data) {
return request({
url: '/business/tradingChannel',
method: 'post',
data: data
})
}
// 修改交易通道/渠道
export function updateTradingChannel(data) {
return request({
url: '/business/tradingChannel',
method: 'put',
data: data
})
}
// 删除交易通道/渠道
export function delTradingChannel(id) {
return request({
url: '/business/tradingChannel/' + id,
method: 'delete'
})
}

44
src/api/business/tradingChannelRecord.js

@ -0,0 +1,44 @@
import request from '@/utils/request'
// 查询交易通道记录列表
export function listTradingChannelRecord(query) {
return request({
url: '/business/tradingChannelRecord/list',
method: 'get',
params: query
})
}
// 查询交易通道记录详细
export function getTradingChannelRecord(id) {
return request({
url: '/business/tradingChannelRecord/' + id,
method: 'get'
})
}
// 新增交易通道记录
export function addTradingChannelRecord(data) {
return request({
url: '/business/tradingChannelRecord',
method: 'post',
data: data
})
}
// 修改交易通道记录
export function updateTradingChannelRecord(data) {
return request({
url: '/business/tradingChannelRecord',
method: 'put',
data: data
})
}
// 删除交易通道记录
export function delTradingChannelRecord(id) {
return request({
url: '/business/tradingChannelRecord/' + id,
method: 'delete'
})
}

415
src/views/business/appVersion/index.vue

@ -0,0 +1,415 @@
<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="versionCode">
<el-input
v-model="queryParams.versionCode"
placeholder="请输入版本代码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="版本名称" prop="versionName">
<el-input
v-model="queryParams.versionName"
placeholder="请输入版本名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发布日期" prop="releaseDate">
<el-date-picker clearable
v-model="queryParams.releaseDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择发布日期">
</el-date-picker>
</el-form-item>
<el-form-item label="更新地址" prop="downloadUrl">
<el-input
v-model="queryParams.downloadUrl"
placeholder="请输入更新地址"
clearable
@keyup.enter.native="handleQuery"
/>
</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
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:appVersion:add']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:appVersion:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:appVersion:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:appVersion:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="appVersionList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="id" align="center" prop="id" v-if="true"/>
<el-table-column label="版本代码" align="center" prop="versionCode"/>
<el-table-column label="版本名称" align="center" prop="versionName"/>
<el-table-column label="平台类型" align="center" prop="platform"/>
<el-table-column label="发布日期" align="center" prop="releaseDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.releaseDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="更新地址" align="center" prop="downloadUrl"/>
<el-table-column label="更新日志" align="center" prop="updateLog"/>
<el-table-column label="强制更新" align="center" prop="isForceUpdate"/>
<el-table-column label="状态" align="center" prop="status"/>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleDetail(scope.row)"
>详情
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:appVersion:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['business:appVersion:remove']"
>删除
</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="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="版本代码" prop="versionCode">
<el-input v-model="form.versionCode" placeholder="请输入版本代码"/>
</el-form-item>
<el-form-item label="版本名称" prop="versionName">
<el-input v-model="form.versionName" placeholder="请输入版本名称"/>
</el-form-item>
<el-form-item label="平台类型" prop="platform">
<el-select v-model="form.platform" placeholder="请选择平台类型">
<el-option label="Android" value="Android"/>
<el-option label="IOS" value="IOS"/>
</el-select>
</el-form-item>
<el-form-item label="更新地址" prop="downloadUrl">
<el-input v-model="form.downloadUrl" placeholder="请输入更新地址"/>
</el-form-item>
<el-form-item label="更新日志" prop="updateLog">
<el-input v-model="form.updateLog" type="textarea" placeholder="请输入内容"/>
</el-form-item>
<el-form-item label="是否强制更新" prop="isForceUpdate">
<el-input v-model="form.isForceUpdate" placeholder="请输入是否强制更新"/>
</el-form-item>
<el-form-item label="发布日期" prop="releaseDate">
<el-date-picker clearable
v-model="form.releaseDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择发布日期">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 应用程序版本控制详情 -->
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto">
<el-form-item label="版本代码:">
{{ form.versionCode }}
</el-form-item>
<el-form-item label="版本名称:">
{{ form.versionName }}
</el-form-item>
<el-form-item label="发布日期" prop="releaseDate">
<el-date-picker clearable
v-model="form.releaseDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择发布日期">
</el-date-picker>
</el-form-item>
<el-form-item label="更新地址:">
{{ form.downloadUrl }}
</el-form-item>
<el-form-item label="更新日志:">
{{ form.updateLog }}
</el-form-item>
<el-form-item label="是否强制更新:">
{{ form.isForceUpdate }}
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {listAppVersion, getAppVersion, delAppVersion, addAppVersion, updateAppVersion} from "@/api/business/appVersion";
export default {
name: "AppVersion",
data() {
return {
// loading
buttonLoading: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
appVersionList: [],
//
title: "",
//
open: false,
//
detailOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
versionCode: undefined,
versionName: undefined,
platform: undefined,
releaseDate: undefined,
downloadUrl: undefined,
updateLog: undefined,
isForceUpdate: undefined,
status: undefined,
},
//
form: {},
//
rules: {
versionCode: [
{required: true, message: "版本代码不能为空", trigger: "blur"}
],
versionName: [
{required: true, message: "版本名称不能为空", trigger: "blur"}
],
platform: [
{required: true, message: "平台类型,枚举值包括安卓和iOS不能为空", trigger: "blur"}
],
releaseDate: [
{required: true, message: "发布日期不能为空", trigger: "blur"}
],
downloadUrl: [
{required: true, message: "更新地址不能为空", trigger: "blur"}
],
updateLog: [
{required: true, message: "更新日志不能为空", trigger: "blur"}
],
isForceUpdate: [
{required: true, message: "是否强制更新不能为空", trigger: "blur"}
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询应用程序版本控制列表 */
getList() {
this.loading = true;
listAppVersion(this.queryParams).then(response => {
this.appVersionList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.detailOpen = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
versionCode: undefined,
versionName: undefined,
platform: undefined,
releaseDate: undefined,
downloadUrl: undefined,
updateLog: undefined,
isForceUpdate: undefined,
status: undefined,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
updateTime: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加应用程序版本控制";
},
/** 详情按钮操作 */
handleDetail(row) {
this.reset();
this.form = row;
this.detailOpen = true;
this.title = "应用程序版本控制";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const id = row.id || this.ids
getAppVersion(id).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改应用程序版本控制";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateAppVersion(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addAppVersion(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除应用程序版本控制编号为"' + ids + '"的数据项?').then(() => {
this.loading = true;
return delAppVersion(ids);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/appVersion/export', {
...this.queryParams
}, `appVersion_${new Date().getTime()}.xlsx`)
}
}
};
</script>

331
src/views/business/behaviorModelInfo/index.vue

@ -0,0 +1,331 @@
<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="name">
<el-input
v-model="queryParams.name"
placeholder="请输入模型名称"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="模型描述" prop="description">
<el-input
v-model="queryParams.description"
placeholder="请输入模型描述"
clearable
@keyup.enter.native="handleQuery"
/>
</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
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:behaviorModelInfo:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:behaviorModelInfo:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:behaviorModelInfo:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:behaviorModelInfo:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="behaviorModelInfoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="模型名称" align="center" prop="name" />
<el-table-column label="模型描述" align="center" prop="description" />
<el-table-column label="模型类型" align="center" prop="type" />
<el-table-column label="当前状态" align="center" prop="status" />
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleDetail(scope.row)"
>详情</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:behaviorModelInfo:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['business:behaviorModelInfo:remove']"
>删除</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="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="模型名称" prop="name">
<el-input v-model="form.name" placeholder="请输入模型名称" />
</el-form-item>
<el-form-item label="模型描述" prop="description">
<el-input v-model="form.description" type="textarea" placeholder="请输入内容" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 模型管理信息详情 -->
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto">
<el-form-item label="模型名称:">
{{form.name}}
</el-form-item>
<el-form-item label="模型描述:">
{{form.description}}
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listBehaviorModelInfo, getBehaviorModelInfo, delBehaviorModelInfo, addBehaviorModelInfo, updateBehaviorModelInfo } from "@/api/business/behaviorModelInfo";
export default {
name: "BehaviorModelInfo",
data() {
return {
// loading
buttonLoading: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
behaviorModelInfoList: [],
//
title: "",
//
open: false,
//
detailOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
name: undefined,
description: undefined,
type: undefined,
status: undefined,
},
//
form: {},
//
rules: {
id: [
{ required: true, message: "不能为空", trigger: "blur" }
],
name: [
{ required: true, message: "模型名称不能为空", trigger: "blur" }
],
description: [
{ required: true, message: "模型描述不能为空", trigger: "blur" }
],
type: [
{ required: true, message: "模型类型不能为空", trigger: "change" }
],
status: [
{ required: true, message: "当前状态不能为空", trigger: "change" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询模型管理信息列表 */
getList() {
this.loading = true;
listBehaviorModelInfo(this.queryParams).then(response => {
this.behaviorModelInfoList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.detailOpen = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
name: undefined,
description: undefined,
type: undefined,
version: undefined,
status: undefined,
createBy: undefined,
updateBy: undefined,
createTime: undefined,
updateTime: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加模型管理信息";
},
/** 详情按钮操作 */
handleDetail(row){
this.reset();
this.form = row;
this.detailOpen = true;
this.title = "模型管理信息";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const id = row.id || this.ids
getBehaviorModelInfo(id).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改模型管理信息";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateBehaviorModelInfo(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addBehaviorModelInfo(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除模型管理信息编号为"' + ids + '"的数据项?').then(() => {
this.loading = true;
return delBehaviorModelInfo(ids);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/behaviorModelInfo/export', {
...this.queryParams
}, `behaviorModelInfo_${new Date().getTime()}.xlsx`)
}
}
};
</script>

2
src/views/business/commonFeedback/index.vue

@ -47,7 +47,7 @@
<el-table-column label="反馈人" align="center" prop="userId" /> <el-table-column label="反馈人" align="center" prop="userId" />
<el-table-column label="反馈内容" align="center" prop="content" /> <el-table-column label="反馈内容" align="center" prop="content" />
<el-table-column label="星级" align="center" prop="star" /> <el-table-column label="星级" align="center" prop="star" />
<el-table-column label="是否正向(0正向,1负向)" align="center" prop="isGood" /> <el-table-column label="是否正向" align="center" prop="isGood" />
<el-table-column label="状态" align="center" prop="status"> <el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.status == '0'">正常</el-tag> <el-tag v-if="scope.row.status == '0'">正常</el-tag>

102
src/views/business/commonNotify/index.vue

@ -1,18 +1,23 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="消息场景(支付、提现等)" prop="messageScene"> <el-form-item label="消息场景" prop="messageScene">
<el-input v-model="queryParams.messageScene" placeholder="请输入消息场景(支付、提现等)" clearable <!-- 下拉框 -->
@keyup.enter.native="handleQuery" /> <el-select v-model="queryParams.messageScene" placeholder="请选择消息场景" @keyup.enter.native="handleQuery"
clearable>
<el-option v-for="dict in messageSceneOptions" :key="dict.dictValue" :label="dict.dictLabel"
:value="dict.dictValue"/>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="发送者" prop="sender"> <el-form-item label="发送者" prop="sender">
<el-input v-model="queryParams.sender" placeholder="请输入发送者" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.sender" placeholder="请输入发送者" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item label="接收者" prop="receiver"> <el-form-item label="接收者" prop="receiver">
<el-input v-model="queryParams.receiver" placeholder="请输入接收者" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.receiver" placeholder="请输入接收者" clearable
@keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item label="标题" prop="title"> <el-form-item label="标题" prop="title">
<el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter.native="handleQuery"/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -23,32 +28,36 @@
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
v-hasPermi="['business:commonNotify:add']">新增</el-button> v-hasPermi="['business:commonNotify:add']">新增
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
v-hasPermi="['business:commonNotify:edit']">修改</el-button> v-hasPermi="['business:commonNotify:edit']">修改
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
v-hasPermi="['business:commonNotify:remove']">删除</el-button> v-hasPermi="['business:commonNotify:remove']">删除
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
v-hasPermi="['business:commonNotify:export']">导出</el-button> v-hasPermi="['business:commonNotify:export']">导出
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="commonNotifyList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="commonNotifyList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="唯一ID" align="center" prop="id" v-if="true" /> <el-table-column label="唯一ID" align="center" prop="id" v-if="true"/>
<el-table-column label="触发事务ID" align="center" prop="eventId" /> <el-table-column label="触发事务ID" align="center" prop="eventId"/>
<el-table-column label="消息类型(系统、通知、活动等)" align="center" prop="messageType" /> <el-table-column label="消息类型" align="center" prop="messageType"/>
<el-table-column label="消息场景" align="center" prop="messageScene" /> <el-table-column label="消息场景" align="center" prop="messageScene"/>
<el-table-column label="发送者" align="center" prop="sender" /> <el-table-column label="发送者" align="center" prop="sender"/>
<el-table-column label="接收者" align="center" prop="receiver" /> <el-table-column label="接收者" align="center" prop="receiver"/>
<el-table-column label="标题" align="center" prop="title" /> <el-table-column label="标题" align="center" prop="title"/>
<el-table-column label="内容" align="center" prop="content" show-overflow-tooltip/> <el-table-column label="内容" align="center" prop="content" show-overflow-tooltip/>
<el-table-column label="文件地址" align="center" prop="imgUrl" show-overflow-tooltip/> <el-table-column label="文件地址" align="center" prop="imgUrl" show-overflow-tooltip/>
<el-table-column label="状态" align="center" prop="status"> <el-table-column label="状态" align="center" prop="status">
@ -61,39 +70,41 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)">详情</el-button> <el-button size="mini" type="text" icon="el-icon-view" @click="handleDetail(scope.row)">详情</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['business:commonNotify:edit']">修改</el-button> v-hasPermi="['business:commonNotify:edit']">修改
</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['business:commonNotify:remove']">删除</el-button> v-hasPermi="['business:commonNotify:remove']">删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
@pagination="getList" /> @pagination="getList"/>
<!-- 添加或修改消息通知对话框 --> <!-- 添加或修改消息通知对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="触发事务ID" prop="eventId"> <el-form-item label="触发事务ID" prop="eventId">
<el-input v-model="form.eventId" placeholder="请输入触发事务ID" /> <el-input v-model="form.eventId" placeholder="请输入触发事务ID"/>
</el-form-item> </el-form-item>
<el-form-item label="消息场景(支付、提现等)" prop="messageScene"> <el-form-item label="消息场景" prop="messageScene">
<el-input v-model="form.messageScene" placeholder="请输入消息场景(支付、提现等)" /> <el-input v-model="form.messageScene" placeholder="请输入消息场景(支付、提现等)"/>
</el-form-item> </el-form-item>
<el-form-item label="发送者" prop="sender"> <el-form-item label="发送者" prop="sender">
<el-input v-model="form.sender" placeholder="请输入发送者" /> <el-input v-model="form.sender" placeholder="请输入发送者"/>
</el-form-item> </el-form-item>
<el-form-item label="接收者" prop="receiver"> <el-form-item label="接收者" prop="receiver">
<el-input v-model="form.receiver" placeholder="请输入接收者" /> <el-input v-model="form.receiver" placeholder="请输入接收者"/>
</el-form-item> </el-form-item>
<el-form-item label="标题" prop="title"> <el-form-item label="标题" prop="title">
<el-input v-model="form.title" placeholder="请输入标题" /> <el-input v-model="form.title" placeholder="请输入标题"/>
</el-form-item> </el-form-item>
<el-form-item label="内容"> <el-form-item label="内容">
<editor v-model="form.content" :min-height="192" /> <editor v-model="form.content" :min-height="192"/>
</el-form-item> </el-form-item>
<el-form-item label="图片地址"> <el-form-item label="图片地址">
<editor v-model="form.imgUrl" :min-height="192" /> <editor v-model="form.imgUrl" :min-height="192"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -106,22 +117,22 @@
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto"> <el-form ref="form" :model="form" label-width="auto">
<el-form-item label="触发事务ID:"> <el-form-item label="触发事务ID:">
{{form.eventId}} {{ form.eventId }}
</el-form-item> </el-form-item>
<el-form-item label="消息场景(支付、提现等):"> <el-form-item label="消息场景:">
{{form.messageScene}} {{ form.messageScene }}
</el-form-item> </el-form-item>
<el-form-item label="发送者:"> <el-form-item label="发送者:">
{{form.sender}} {{ form.sender }}
</el-form-item> </el-form-item>
<el-form-item label="接收者:"> <el-form-item label="接收者:">
{{form.receiver}} {{ form.receiver }}
</el-form-item> </el-form-item>
<el-form-item label="标题:"> <el-form-item label="标题:">
{{form.title}} {{ form.title }}
</el-form-item> </el-form-item>
<el-form-item label="内容"> <el-form-item label="内容">
<editor v-model="form.content" :min-height="192" /> <editor v-model="form.content" :min-height="192"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -132,15 +143,15 @@
</template> </template>
<script> <script>
import { import {
listCommonNotify, listCommonNotify,
getCommonNotify, getCommonNotify,
delCommonNotify, delCommonNotify,
addCommonNotify, addCommonNotify,
updateCommonNotify updateCommonNotify
} from "@/api/business/commonNotify"; } from "@/api/business/commonNotify";
export default { export default {
name: "CommonNotify", name: "CommonNotify",
data() { data() {
return { return {
@ -179,6 +190,14 @@
content: undefined, content: undefined,
status: undefined, status: undefined,
}, },
messageSceneOptions: [
{dictValue: '转账', dictLabel: '转账'},
{dictValue: '代缴', dictLabel: '代缴'},
{dictValue: '收款', dictLabel: '收款'},
{dictValue: '付款', dictLabel: '付款'},
{dictValue: '提现', dictLabel: '提现'},
{dictValue: '充值', dictLabel: '充值'},
],
// //
form: {}, form: {},
// //
@ -301,7 +320,8 @@
this.loading = false; this.loading = false;
this.getList(); this.getList();
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
}).catch(() => {}).finally(() => { }).catch(() => {
}).finally(() => {
this.loading = false; this.loading = false;
}); });
}, },
@ -312,5 +332,5 @@
}, `commonNotify_${new Date().getTime()}.xlsx`) }, `commonNotify_${new Date().getTime()}.xlsx`)
} }
} }
}; };
</script> </script>

24
src/views/business/creditRule/index.vue

@ -17,7 +17,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="规则生效日期" prop="effectiveDate"> <el-form-item label="生效日期" prop="effectiveDate">
<el-date-picker clearable <el-date-picker clearable
v-model="queryParams.effectiveDate" v-model="queryParams.effectiveDate"
type="date" type="date"
@ -25,7 +25,7 @@
placeholder="请选择规则生效日期"> placeholder="请选择规则生效日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="规则失效日期" prop="expirationDate"> <el-form-item label="失效日期" prop="expirationDate">
<el-date-picker clearable <el-date-picker clearable
v-model="queryParams.expirationDate" v-model="queryParams.expirationDate"
type="date" type="date"
@ -33,7 +33,7 @@
placeholder="请选择规则失效日期"> placeholder="请选择规则失效日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="规则优先级" prop="priority"> <el-form-item label="优先级" prop="priority">
<el-input <el-input
v-model="queryParams.priority" v-model="queryParams.priority"
placeholder="请输入规则优先级" placeholder="请输入规则优先级"
@ -130,23 +130,23 @@
<el-table-column label="id" align="center" prop="id" v-if="true"/> <el-table-column label="id" align="center" prop="id" v-if="true"/>
<el-table-column label="规则名称" align="center" prop="ruleName" /> <el-table-column label="规则名称" align="center" prop="ruleName" />
<el-table-column label="规则描述" align="center" prop="ruleDescription" /> <el-table-column label="规则描述" align="center" prop="ruleDescription" />
<el-table-column label="规则生效日期" align="center" prop="effectiveDate" width="180"> <el-table-column label="优先级" align="center" prop="priority" />
<el-table-column label="适用类型" align="center" prop="applicableUserType" />
<el-table-column label="是否启用" align="center" prop="isEnabled" />
<el-table-column label="规则场景" align="center" prop="scene" />
<el-table-column label="规则类型" align="center" prop="type" />
<el-table-column label="反馈方向" align="center" prop="feedbackDirection" />
<el-table-column label="规则值" align="center" prop="value" />
<el-table-column label="生效日期" align="center" prop="effectiveDate" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.effectiveDate, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.effectiveDate, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="规则失效日期" align="center" prop="expirationDate" width="180"> <el-table-column label="失效日期" align="center" prop="expirationDate" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.expirationDate, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.expirationDate, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="规则优先级" align="center" prop="priority" />
<el-table-column label="适用用户类型" align="center" prop="applicableUserType" />
<el-table-column label="是否启用" align="center" prop="isEnabled" />
<el-table-column label="规则场景" align="center" prop="scene" />
<el-table-column label="规则类型" align="center" prop="type" />
<el-table-column label="反馈方向" align="center" prop="feedbackDirection" />
<el-table-column label="规则值" align="center" prop="value" />
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button

409
src/views/business/customerServiceChat/index.vue

@ -0,0 +1,409 @@
<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="会话ID" prop="sessionId">
<el-input
v-model="queryParams.sessionId"
placeholder="请输入对话会话ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="用户ID" prop="userId">
<el-input
v-model="queryParams.userId"
placeholder="请输入用户ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="消息内容" prop="message">
<el-input
v-model="queryParams.message"
placeholder="请输入消息内容"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="发送时间" prop="timestamp">
<el-date-picker clearable
v-model="queryParams.timestamp"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择消息发送时间">
</el-date-picker>
</el-form-item>
<el-form-item label="是否已读" prop="isRead">
<el-select v-model="queryParams.isRead" placeholder="请选择是否已读">
<el-option label="是" value="1"></el-option>
<el-option label="否" value="0"></el-option>
</el-select>
</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
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:customerServiceChat:add']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:customerServiceChat:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:customerServiceChat:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:customerServiceChat:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="customerServiceChatList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="会话ID" align="center" prop="sessionId"/>
<el-table-column label="用户ID" align="center" prop="userId"/>
<el-table-column label="消息内容" align="center" prop="message"/>
<el-table-column label="发送者类型" align="center" prop="senderType"/>
<el-table-column label="发送时间" align="center" prop="timestamp" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.timestamp, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="是否已读" align="center" prop="isRead"/>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleDetail(scope.row)"
>详情
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:customerServiceChat:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['business:customerServiceChat:remove']"
>删除
</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="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="对话会话ID" prop="sessionId">
<el-input v-model="form.sessionId" placeholder="请输入对话会话ID"/>
</el-form-item>
<el-form-item label="用户ID" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户ID"/>
</el-form-item>
<el-form-item label="消息内容" prop="message">
<el-input v-model="form.message" type="textarea" placeholder="请输入内容"/>
</el-form-item>
<el-form-item label="消息发送时间" prop="timestamp">
<el-date-picker clearable
v-model="form.timestamp"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择消息发送时间">
</el-date-picker>
</el-form-item>
<el-form-item label="是否已读" prop="isRead">
<el-input v-model="form.isRead" placeholder="请输入是否已读"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 客服与用户的聊天记录详情 -->
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto">
<el-form-item label="对话会话ID:">
{{ form.sessionId }}
</el-form-item>
<el-form-item label="用户ID:">
{{ form.userId }}
</el-form-item>
<el-form-item label="消息内容:">
{{ form.message }}
</el-form-item>
<el-form-item label="消息发送时间" prop="timestamp">
<el-date-picker clearable
v-model="form.timestamp"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择消息发送时间">
</el-date-picker>
</el-form-item>
<el-form-item label="是否已读:">
{{ form.isRead }}
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listCustomerServiceChat,
getCustomerServiceChat,
delCustomerServiceChat,
addCustomerServiceChat,
updateCustomerServiceChat
} from "@/api/business/customerServiceChat";
export default {
name: "CustomerServiceChat",
data() {
return {
// loading
buttonLoading: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
customerServiceChatList: [],
//
title: "",
//
open: false,
//
detailOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
sessionId: undefined,
userId: undefined,
message: undefined,
senderType: undefined,
timestamp: undefined,
isRead: undefined,
},
//
form: {},
//
rules: {
id: [
{required: true, message: "不能为空", trigger: "blur"}
],
sessionId: [
{required: true, message: "对话会话ID不能为空", trigger: "blur"}
],
userId: [
{required: true, message: "用户ID不能为空", trigger: "blur"}
],
message: [
{required: true, message: "消息内容不能为空", trigger: "blur"}
],
senderType: [
{required: true, message: "发送者类型不能为空", trigger: "change"}
],
timestamp: [
{required: true, message: "消息发送时间不能为空", trigger: "blur"}
],
isRead: [
{required: true, message: "是否已读不能为空", trigger: "blur"}
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询客服与用户的聊天记录列表 */
getList() {
this.loading = true;
listCustomerServiceChat(this.queryParams).then(response => {
this.customerServiceChatList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.detailOpen = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
sessionId: undefined,
userId: undefined,
message: undefined,
senderType: undefined,
timestamp: undefined,
isRead: undefined,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
updateTime: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加客服与用户的聊天记录";
},
/** 详情按钮操作 */
handleDetail(row) {
this.reset();
this.form = row;
this.detailOpen = true;
this.title = "客服与用户的聊天记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const id = row.id || this.ids
getCustomerServiceChat(id).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改客服与用户的聊天记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateCustomerServiceChat(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addCustomerServiceChat(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除客服与用户的聊天记录编号为"' + ids + '"的数据项?').then(() => {
this.loading = true;
return delCustomerServiceChat(ids);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/customerServiceChat/export', {
...this.queryParams
}, `customerServiceChat_${new Date().getTime()}.xlsx`)
}
}
};
</script>

395
src/views/business/faq/index.vue

@ -0,0 +1,395 @@
<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="question">
<el-input
v-model="queryParams.question"
placeholder="请输入问题描述"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="答案内容" prop="answer">
<el-input
v-model="queryParams.answer"
placeholder="请输入答案内容"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="问题分类" prop="category">
<!-- 下拉框-->
<el-select v-model="queryParams.category" placeholder="请选择问题分类" clearable>
<el-option
v-for="dict in categoryOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<!-- 下拉框 -->
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable>
<el-option
v-for="dict in statusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</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
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:faq:add']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:faq:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:faq:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:faq:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="faqList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="问题描述" align="center" prop="question"/>
<el-table-column label="答案内容" align="center" prop="answer"/>
<el-table-column label="问题分类" align="center" prop="category"/>
<el-table-column label="状态" align="center" prop="status"/>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleDetail(scope.row)"
>详情
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:faq:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['business:faq:remove']"
>删除
</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="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="问题描述" prop="question">
<el-input v-model="form.question" type="textarea" placeholder="请输入内容"/>
</el-form-item>
<el-form-item label="答案内容" prop="answer">
<el-input v-model="form.answer" type="textarea" placeholder="请输入内容"/>
</el-form-item>
<el-form-item label="问题分类" prop="category">
<!-- 下拉框-->
<el-select v-model="form.category" placeholder="请选择问题分类" clearable>
<el-option
v-for="dict in categoryOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="状态" prop="status">
<!-- 下拉框 -->
<el-select v-model="form.status" placeholder="请选择状态" clearable>
<el-option
v-for="dict in statusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 常见问题及答案详情 -->
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto">
<el-form-item label="问题描述:">
{{ form.question }}
</el-form-item>
<el-form-item label="答案内容:">
{{ form.answer }}
</el-form-item>
<el-form-item label="问题分类:">
{{ form.category }}
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {listFaq, getFaq, delFaq, addFaq, updateFaq} from "@/api/business/faq";
export default {
name: "Faq",
data() {
return {
// loading
buttonLoading: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
faqList: [],
//
title: "",
//
open: false,
//
detailOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
question: undefined,
answer: undefined,
category: undefined,
status: undefined,
},
categoryOptions: [
{dictValue: '1', dictLabel: '技术问题'},
{dictValue: '2', dictLabel: '业务问题'},
{dictValue: '3', dictLabel: '其他问题'},
{dictValue: '4', dictLabel: '产品问题'}
],
statusOptions: [
{dictValue: '0', dictLabel: '无效'},
{dictValue: '1', dictLabel: '有效'}
],
//
form: {
question: undefined,
answer: undefined,
category: undefined,
status: undefined,
},
//
rules: {
question: [
{required: true, message: "问题描述不能为空", trigger: "blur"}
],
answer: [
{required: true, message: "答案内容不能为空", trigger: "blur"}
],
category: [
{required: true, message: "问题分类不能为空", trigger: "blur"}
],
status: [
{required: true, message: "状态不能为空", trigger: "change"}
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询常见问题及答案列表 */
getList() {
this.loading = true;
listFaq(this.queryParams).then(response => {
this.faqList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.detailOpen = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
question: undefined,
answer: undefined,
category: undefined,
status: undefined,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
updateTime: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加常见问题及答案";
},
/** 详情按钮操作 */
handleDetail(row) {
this.reset();
this.form = row;
this.detailOpen = true;
this.title = "常见问题及答案";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const id = row.id || this.ids
getFaq(id).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改常见问题及答案";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateFaq(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addFaq(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除常见问题及答案编号为"' + ids + '"的数据项?').then(() => {
this.loading = true;
return delFaq(ids);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/faq/export', {
...this.queryParams
}, `faq_${new Date().getTime()}.xlsx`)
}
}
};
</script>

54
src/views/business/feeRecord/index.vue

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="关联订单编号" prop="relatedOrderId"> <el-form-item label="订单编号" prop="relatedOrderId">
<el-input <el-input
v-model="queryParams.relatedOrderId" v-model="queryParams.relatedOrderId"
placeholder="请输入关联订单编号" placeholder="请输入关联订单编号"
@ -17,7 +17,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="手续费标准编号" prop="feeStandardId"> <el-form-item label="规则编号" prop="feeStandardId">
<el-input <el-input
v-model="queryParams.feeStandardId" v-model="queryParams.feeStandardId"
placeholder="请输入手续费标准编号" placeholder="请输入手续费标准编号"
@ -25,15 +25,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="优惠规则编号" prop="discountRuleId"> <el-form-item label="收取时间" prop="feeCollectionTime">
<el-input
v-model="queryParams.discountRuleId"
placeholder="请输入优惠规则编号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="手续费收取时间" prop="feeCollectionTime">
<el-date-picker clearable <el-date-picker clearable
v-model="queryParams.feeCollectionTime" v-model="queryParams.feeCollectionTime"
type="date" type="date"
@ -100,15 +92,15 @@
<el-table v-loading="loading" :data="feeRecordList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="feeRecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="记录编号" align="center" prop="id" v-if="true"/> <el-table-column label="记录编号" align="center" prop="id" v-if="true"/>
<el-table-column label="关联订单编号" align="center" prop="relatedOrderId"/> <el-table-column label="订单编号" align="center" prop="relatedOrderId"/>
<el-table-column label="业务类型" align="center" prop="businessType"/> <el-table-column label="业务类型" align="center" prop="businessType"/>
<el-table-column label="用户编号" align="center" prop="userId"/> <el-table-column label="用户编号" align="center" prop="userId"/>
<el-table-column label="手续费标准号" align="center" prop="feeStandardId"/> <el-table-column label="手续费标准号" align="center" prop="feeStandardId"/>
<el-table-column label="优惠规则号" align="center" prop="discountRuleId"/> <el-table-column label="优惠规则号" align="center" prop="discountRuleId"/>
<el-table-column label="计算手续费金额" align="center" prop="calculatedFeeAmount"/> <el-table-column label="手续费金额" align="center" prop="calculatedFeeAmount"/>
<el-table-column label="优惠减免手续费金额" align="center" prop="discountedFeeAmount"/> <el-table-column label="减免手续费金额" align="center" prop="discountedFeeAmount"/>
<el-table-column label="实手续费金额" align="center" prop="actualFeeAmount"/> <el-table-column label="实收手续费金额" align="center" prop="actualFeeAmount"/>
<el-table-column label="手续费收取时间" align="center" prop="feeCollectionTime" width="180"> <el-table-column label="收取时间" align="center" prop="feeCollectionTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.feeCollectionTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.feeCollectionTime, '{y}-{m}-{d}') }}</span>
</template> </template>
@ -154,28 +146,28 @@
<!-- 添加或修改手续费记录对话框 --> <!-- 添加或修改手续费记录对话框 -->
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto"> <el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="关联订单编号" prop="relatedOrderId"> <el-form-item label="订单编号" prop="relatedOrderId">
<el-input v-model="form.relatedOrderId" placeholder="请输入关联订单编号"/> <el-input v-model="form.relatedOrderId" placeholder="请输入关联订单编号"/>
</el-form-item> </el-form-item>
<el-form-item label="用户编号" prop="userId"> <el-form-item label="用户编号" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户编号"/> <el-input v-model="form.userId" placeholder="请输入用户编号"/>
</el-form-item> </el-form-item>
<el-form-item label="手续费标准号" prop="feeStandardId"> <el-form-item label="手续费标准号" prop="feeStandardId">
<el-input v-model="form.feeStandardId" placeholder="请输入手续费标准编号"/> <el-input v-model="form.feeStandardId" placeholder="请输入手续费标准编号"/>
</el-form-item> </el-form-item>
<el-form-item label="优惠规则号" prop="discountRuleId"> <el-form-item label="优惠规则号" prop="discountRuleId">
<el-input v-model="form.discountRuleId" placeholder="请输入优惠规则编号"/> <el-input v-model="form.discountRuleId" placeholder="请输入优惠规则编号"/>
</el-form-item> </el-form-item>
<el-form-item label="计算手续费金额" prop="calculatedFeeAmount"> <el-form-item label="手续费金额" prop="calculatedFeeAmount">
<el-input v-model="form.calculatedFeeAmount" placeholder="请输入计算手续费金额"/> <el-input v-model="form.calculatedFeeAmount" placeholder="请输入计算手续费金额"/>
</el-form-item> </el-form-item>
<el-form-item label="优惠减免手续费金额" prop="discountedFeeAmount"> <el-form-item label="减免手续费金额" prop="discountedFeeAmount">
<el-input v-model="form.discountedFeeAmount" placeholder="请输入优惠减免手续费金额"/> <el-input v-model="form.discountedFeeAmount" placeholder="请输入优惠减免手续费金额"/>
</el-form-item> </el-form-item>
<el-form-item label="实手续费金额" prop="actualFeeAmount"> <el-form-item label="实收手续费金额" prop="actualFeeAmount">
<el-input v-model="form.actualFeeAmount" placeholder="请输入实际收取手续费金额"/> <el-input v-model="form.actualFeeAmount" placeholder="请输入实际收取手续费金额"/>
</el-form-item> </el-form-item>
<el-form-item label="手续费收取时间" prop="feeCollectionTime"> <el-form-item label="收取时间" prop="feeCollectionTime">
<el-date-picker clearable <el-date-picker clearable
v-model="form.feeCollectionTime" v-model="form.feeCollectionTime"
type="datetime" type="datetime"
@ -193,25 +185,25 @@
<!-- 手续费记录详情 --> <!-- 手续费记录详情 -->
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto"> <el-form ref="form" :model="form" label-width="auto">
<el-form-item label="关联订单编号:"> <el-form-item label="订单编号:">
{{ form.relatedOrderId }} {{ form.relatedOrderId }}
</el-form-item> </el-form-item>
<el-form-item label="用户编号:"> <el-form-item label="用户编号:">
{{ form.userId }} {{ form.userId }}
</el-form-item> </el-form-item>
<el-form-item label="手续费标准号:"> <el-form-item label="手续费标准号:">
{{ form.feeStandardId }} {{ form.feeStandardId }}
</el-form-item> </el-form-item>
<el-form-item label="优惠规则号:"> <el-form-item label="优惠规则号:">
{{ form.discountRuleId }} {{ form.discountRuleId }}
</el-form-item> </el-form-item>
<el-form-item label="计算手续费金额:"> <el-form-item label="手续费金额:">
{{ form.calculatedFeeAmount }} {{ form.calculatedFeeAmount }}
</el-form-item> </el-form-item>
<el-form-item label="优惠减免手续费金额:"> <el-form-item label="减免手续费金额:">
{{ form.discountedFeeAmount }} {{ form.discountedFeeAmount }}
</el-form-item> </el-form-item>
<el-form-item label="实手续费金额:"> <el-form-item label="实收手续费金额:">
{{ form.actualFeeAmount }} {{ form.actualFeeAmount }}
</el-form-item> </el-form-item>
<el-form-item label="手续费收取时间" prop="feeCollectionTime"> <el-form-item label="手续费收取时间" prop="feeCollectionTime">

424
src/views/business/financialRecord/index.vue

@ -0,0 +1,424 @@
<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="用户ID" prop="userId">
<el-input
v-model="queryParams.userId"
placeholder="请输入用户ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="相关订单ID" prop="orderId">
<el-input
v-model="queryParams.orderId"
placeholder="请输入相关订单ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="金额" prop="amount">
<el-input
v-model="queryParams.amount"
placeholder="请输入金额"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="货币单位" prop="currency">
<el-input
v-model="queryParams.currency"
placeholder="请输入货币单位"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="描述信息" prop="description">
<el-input
v-model="queryParams.description"
placeholder="请输入描述信息"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="交易日期" prop="transactionDate">
<el-date-picker clearable
v-model="queryParams.transactionDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择交易日期">
</el-date-picker>
</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
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:financialRecord:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:financialRecord:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:financialRecord:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:financialRecord:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="financialRecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="主键" align="center" prop="id" v-if="true"/>
<el-table-column label="用户ID" align="center" prop="userId" />
<el-table-column label="相关订单ID" align="center" prop="orderId" />
<el-table-column label="交易类型" align="center" prop="transactionType" />
<el-table-column label="金额" align="center" prop="amount" />
<el-table-column label="货币单位" align="center" prop="currency" />
<el-table-column label="描述信息" align="center" prop="description" />
<el-table-column label="交易日期" align="center" prop="transactionDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.transactionDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="status" />
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleDetail(scope.row)"
>详情</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:financialRecord:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['business:financialRecord:remove']"
>删除</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="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="用户ID" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户ID" />
</el-form-item>
<el-form-item label="相关订单ID" prop="orderId">
<el-input v-model="form.orderId" placeholder="请输入相关订单ID" />
</el-form-item>
<el-form-item label="金额" prop="amount">
<el-input v-model="form.amount" placeholder="请输入金额" />
</el-form-item>
<el-form-item label="货币单位" prop="currency">
<el-input v-model="form.currency" placeholder="请输入货币单位" />
</el-form-item>
<el-form-item label="描述信息" prop="description">
<el-input v-model="form.description" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-form-item label="交易日期" prop="transactionDate">
<el-date-picker clearable
v-model="form.transactionDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择交易日期">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 财务记录详情 -->
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto">
<el-form-item label="用户ID:">
{{form.userId}}
</el-form-item>
<el-form-item label="相关订单ID:">
{{form.orderId}}
</el-form-item>
<el-form-item label="金额:">
{{form.amount}}
</el-form-item>
<el-form-item label="货币单位:">
{{form.currency}}
</el-form-item>
<el-form-item label="描述信息:">
{{form.description}}
</el-form-item>
<el-form-item label="交易日期" prop="transactionDate">
<el-date-picker clearable
v-model="form.transactionDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择交易日期">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listFinancialRecord, getFinancialRecord, delFinancialRecord, addFinancialRecord, updateFinancialRecord } from "@/api/business/financialRecord";
export default {
name: "FinancialRecord",
data() {
return {
// loading
buttonLoading: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
financialRecordList: [],
//
title: "",
//
open: false,
//
detailOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
userId: undefined,
orderId: undefined,
transactionType: undefined,
amount: undefined,
currency: undefined,
description: undefined,
transactionDate: undefined,
status: undefined,
},
//
form: {},
//
rules: {
id: [
{ required: true, message: "主键不能为空", trigger: "blur" }
],
userId: [
{ required: true, message: "用户ID不能为空", trigger: "blur" }
],
orderId: [
{ required: true, message: "相关订单ID不能为空", trigger: "blur" }
],
transactionType: [
{ required: true, message: "交易类型不能为空", trigger: "change" }
],
amount: [
{ required: true, message: "金额不能为空", trigger: "blur" }
],
currency: [
{ required: true, message: "货币单位不能为空", trigger: "blur" }
],
description: [
{ required: true, message: "描述信息不能为空", trigger: "blur" }
],
transactionDate: [
{ required: true, message: "交易日期不能为空", trigger: "blur" }
],
status: [
{ required: true, message: "状态不能为空", trigger: "change" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询财务记录列表 */
getList() {
this.loading = true;
listFinancialRecord(this.queryParams).then(response => {
this.financialRecordList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.detailOpen = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
userId: undefined,
orderId: undefined,
transactionType: undefined,
amount: undefined,
currency: undefined,
description: undefined,
transactionDate: undefined,
status: undefined,
createBy: undefined,
updateBy: undefined,
createTime: undefined,
updateTime: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加财务记录";
},
/** 详情按钮操作 */
handleDetail(row){
this.reset();
this.form = row;
this.detailOpen = true;
this.title = "财务记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const id = row.id || this.ids
getFinancialRecord(id).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改财务记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateFinancialRecord(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addFinancialRecord(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除财务记录编号为"' + ids + '"的数据项?').then(() => {
this.loading = true;
return delFinancialRecord(ids);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/financialRecord/export', {
...this.queryParams
}, `financialRecord_${new Date().getTime()}.xlsx`)
}
}
};
</script>

183
src/views/business/merchantVerification/index.vue

@ -9,7 +9,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="营业执照" prop="businessLicenseNumber"> <el-form-item label="营业执照" prop="businessLicenseNumber">
<el-input <el-input
v-model="queryParams.businessLicenseNumber" v-model="queryParams.businessLicenseNumber"
placeholder="请输入营业执照号" placeholder="请输入营业执照号"
@ -25,15 +25,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="法人身份证" prop="legalPersonIdCard"> <el-form-item label="联系人" prop="contactPersonName">
<el-input
v-model="queryParams.legalPersonIdCard"
placeholder="请输入法人身份证"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="联系人姓名" prop="contactPersonName">
<el-input <el-input
v-model="queryParams.contactPersonName" v-model="queryParams.contactPersonName"
placeholder="请输入联系人姓名" placeholder="请输入联系人姓名"
@ -41,15 +33,15 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="联系电话" prop="contactPersonPhone"> <el-form-item label="联系电话" prop="contactPersonPhone">
<el-input <el-input
v-model="queryParams.contactPersonPhone" v-model="queryParams.contactPersonPhone"
placeholder="请输入联系人电话" placeholder="请输入联系人电话"
clearable clearable
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="联系人电子邮箱" prop="contactPersonEmail"> <el-form-item label="联系邮箱" prop="contactPersonEmail">
<el-input <el-input
v-model="queryParams.contactPersonEmail" v-model="queryParams.contactPersonEmail"
placeholder="请输入联系人电子邮箱" placeholder="请输入联系人电子邮箱"
@ -57,7 +49,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="商户银行账户" prop="bankAccountNumber"> <el-form-item label="银行账户" prop="bankAccountNumber">
<el-input <el-input
v-model="queryParams.bankAccountNumber" v-model="queryParams.bankAccountNumber"
placeholder="请输入商户银行账户" placeholder="请输入商户银行账户"
@ -81,14 +73,6 @@
placeholder="请选择认证时间"> placeholder="请选择认证时间">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="认证失败原因" prop="failureReason">
<el-input
v-model="queryParams.failureReason"
placeholder="请输入认证失败原因"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <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-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -104,7 +88,8 @@
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['business:merchantVerification:add']" v-hasPermi="['business:merchantVerification:add']"
>新增</el-button> >新增
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -115,7 +100,8 @@
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleUpdate"
v-hasPermi="['business:merchantVerification:edit']" v-hasPermi="['business:merchantVerification:edit']"
>修改</el-button> >修改
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -126,7 +112,8 @@
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['business:merchantVerification:remove']" v-hasPermi="['business:merchantVerification:remove']"
>删除</el-button> >删除
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -136,21 +123,22 @@
size="mini" size="mini"
@click="handleExport" @click="handleExport"
v-hasPermi="['business:merchantVerification:export']" v-hasPermi="['business:merchantVerification:export']"
>导出</el-button> >导出
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="merchantVerificationList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="merchantVerificationList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="id" align="center" prop="id" v-if="true"/> <el-table-column label="id" align="center" prop="id" v-if="true"/>
<el-table-column label="商户名称" align="center" prop="merchantName" /> <el-table-column label="商户名称" align="center" prop="merchantName"/>
<el-table-column label="营业执照" align="center" prop="businessLicenseNumber" /> <el-table-column label="营业执照" align="center" prop="businessLicenseNumber"/>
<el-table-column label="法人姓名" align="center" prop="legalPersonName" /> <el-table-column label="法人姓名" align="center" prop="legalPersonName"/>
<el-table-column label="法人身份证" align="center" prop="legalPersonIdCard" /> <el-table-column label="身份证" align="center" prop="legalPersonIdCard"/>
<el-table-column label="联系姓名" align="center" prop="contactPersonName" /> <el-table-column label="联系姓名" align="center" prop="contactPersonName"/>
<el-table-column label="联系电话、" align="center" prop="contactPersonPhone" /> <el-table-column label="联系电话、" align="center" prop="contactPersonPhone"/>
<el-table-column label="联系人电子邮箱" align="center" prop="contactPersonEmail" /> <el-table-column label="联系邮箱" align="center" prop="contactPersonEmail"/>
<el-table-column label="营业执照照片" align="center" prop="businessLicenseImage" width="100"> <el-table-column label="营业执照照片" align="center" prop="businessLicenseImage" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<image-preview :src="scope.row.businessLicenseImage" :width="50" :height="50"/> <image-preview :src="scope.row.businessLicenseImage" :width="50" :height="50"/>
@ -161,15 +149,15 @@
<image-preview :src="scope.row.legalPersonIdCardImage" :width="50" :height="50"/> <image-preview :src="scope.row.legalPersonIdCardImage" :width="50" :height="50"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="商户银行账户" align="center" prop="bankAccountNumber" /> <el-table-column label="银行账户" align="center" prop="bankAccountNumber"/>
<el-table-column label="开户银行" align="center" prop="bankName" /> <el-table-column label="开户银行" align="center" prop="bankName"/>
<el-table-column label="认证状态" align="center" prop="status" /> <el-table-column label="认证状态" align="center" prop="status"/>
<el-table-column label="认证时间" align="center" prop="authenticationDate" width="180"> <el-table-column label="认证时间" align="center" prop="authenticationDate" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.authenticationDate, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.authenticationDate, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="认证失败原因" align="center" prop="failureReason" /> <el-table-column label="失败原因" align="center" prop="failureReason"/>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -177,21 +165,24 @@
type="text" type="text"
icon="el-icon-view" icon="el-icon-view"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
>详情</el-button> >详情
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['business:merchantVerification:edit']" v-hasPermi="['business:merchantVerification:edit']"
>修改</el-button> >修改
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['business:merchantVerification:remove']" v-hasPermi="['business:merchantVerification:remove']"
>删除</el-button> >删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -208,37 +199,37 @@
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto"> <el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="商户名称" prop="merchantName"> <el-form-item label="商户名称" prop="merchantName">
<el-input v-model="form.merchantName" placeholder="请输入商户名称" /> <el-input v-model="form.merchantName" placeholder="请输入商户名称"/>
</el-form-item> </el-form-item>
<el-form-item label="营业执照" prop="businessLicenseNumber"> <el-form-item label="营业执照" prop="businessLicenseNumber">
<el-input v-model="form.businessLicenseNumber" placeholder="请输入营业执照号" /> <el-input v-model="form.businessLicenseNumber" placeholder="请输入营业执照号"/>
</el-form-item> </el-form-item>
<el-form-item label="法人姓名" prop="legalPersonName"> <el-form-item label="法人姓名" prop="legalPersonName">
<el-input v-model="form.legalPersonName" placeholder="请输入法人姓名" /> <el-input v-model="form.legalPersonName" placeholder="请输入法人姓名"/>
</el-form-item> </el-form-item>
<el-form-item label="法人身份证" prop="legalPersonIdCard"> <el-form-item label="身份证" prop="legalPersonIdCard">
<el-input v-model="form.legalPersonIdCard" placeholder="请输入法人身份证" /> <el-input v-model="form.legalPersonIdCard" placeholder="请输入法人身份证"/>
</el-form-item> </el-form-item>
<el-form-item label="联系人姓名" prop="contactPersonName"> <el-form-item label="联系人姓名" prop="contactPersonName">
<el-input v-model="form.contactPersonName" placeholder="请输入联系人姓名" /> <el-input v-model="form.contactPersonName" placeholder="请输入联系人姓名"/>
</el-form-item> </el-form-item>
<el-form-item label="联系人电话、" prop="contactPersonPhone"> <el-form-item label="联系人电话、" prop="contactPersonPhone">
<el-input v-model="form.contactPersonPhone" placeholder="请输入联系人电话、" /> <el-input v-model="form.contactPersonPhone" placeholder="请输入联系人电话、"/>
</el-form-item> </el-form-item>
<el-form-item label="联系人电子邮箱" prop="contactPersonEmail"> <el-form-item label="联系人邮箱" prop="contactPersonEmail">
<el-input v-model="form.contactPersonEmail" placeholder="请输入联系人电子邮箱" /> <el-input v-model="form.contactPersonEmail" placeholder="请输入联系人电子邮箱"/>
</el-form-item> </el-form-item>
<el-form-item label="营业执照照片" prop="businessLicenseImage"> <el-form-item label="营业执照照片" prop="businessLicenseImage">
<image-upload v-model="form.businessLicenseImage"/> <image-upload v-model="form.businessLicenseImage"/>
</el-form-item> </el-form-item>
<el-form-item label="法人身份证照片" prop="legalPersonIdCardImage"> <el-form-item label="身份证照片" prop="legalPersonIdCardImage">
<image-upload v-model="form.legalPersonIdCardImage"/> <image-upload v-model="form.legalPersonIdCardImage"/>
</el-form-item> </el-form-item>
<el-form-item label="商户银行账户" prop="bankAccountNumber"> <el-form-item label="银行账户" prop="bankAccountNumber">
<el-input v-model="form.bankAccountNumber" placeholder="请输入商户银行账户" /> <el-input v-model="form.bankAccountNumber" placeholder="请输入商户银行账户"/>
</el-form-item> </el-form-item>
<el-form-item label="开户银行" prop="bankName"> <el-form-item label="开户银行" prop="bankName">
<el-input v-model="form.bankName" placeholder="请输入开户银行" /> <el-input v-model="form.bankName" placeholder="请输入开户银行"/>
</el-form-item> </el-form-item>
<el-form-item label="认证时间" prop="authenticationDate"> <el-form-item label="认证时间" prop="authenticationDate">
<el-date-picker clearable <el-date-picker clearable
@ -249,7 +240,7 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="认证失败原因" prop="failureReason"> <el-form-item label="认证失败原因" prop="failureReason">
<el-input v-model="form.failureReason" placeholder="请输入认证失败原因" /> <el-input v-model="form.failureReason" placeholder="请输入认证失败原因"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -262,25 +253,25 @@
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto"> <el-form ref="form" :model="form" label-width="auto">
<el-form-item label="商户名称:"> <el-form-item label="商户名称:">
{{form.merchantName}} {{ form.merchantName }}
</el-form-item> </el-form-item>
<el-form-item label="营业执照号:"> <el-form-item label="营业执照号:">
{{form.businessLicenseNumber}} {{ form.businessLicenseNumber }}
</el-form-item> </el-form-item>
<el-form-item label="法人姓名:"> <el-form-item label="法人姓名:">
{{form.legalPersonName}} {{ form.legalPersonName }}
</el-form-item> </el-form-item>
<el-form-item label="法人身份证:"> <el-form-item label="法人身份证:">
{{form.legalPersonIdCard}} {{ form.legalPersonIdCard }}
</el-form-item> </el-form-item>
<el-form-item label="联系人姓名:"> <el-form-item label="联系人姓名:">
{{form.contactPersonName}} {{ form.contactPersonName }}
</el-form-item> </el-form-item>
<el-form-item label="联系人电话、:"> <el-form-item label="联系人电话、:">
{{form.contactPersonPhone}} {{ form.contactPersonPhone }}
</el-form-item> </el-form-item>
<el-form-item label="联系人电子邮箱:"> <el-form-item label="联系人电子邮箱:">
{{form.contactPersonEmail}} {{ form.contactPersonEmail }}
</el-form-item> </el-form-item>
<el-form-item label="营业执照照片" prop="businessLicenseImage"> <el-form-item label="营业执照照片" prop="businessLicenseImage">
<image-upload v-model="form.businessLicenseImage"/> <image-upload v-model="form.businessLicenseImage"/>
@ -289,10 +280,10 @@
<image-upload v-model="form.legalPersonIdCardImage"/> <image-upload v-model="form.legalPersonIdCardImage"/>
</el-form-item> </el-form-item>
<el-form-item label="商户银行账户:"> <el-form-item label="商户银行账户:">
{{form.bankAccountNumber}} {{ form.bankAccountNumber }}
</el-form-item> </el-form-item>
<el-form-item label="开户银行:"> <el-form-item label="开户银行:">
{{form.bankName}} {{ form.bankName }}
</el-form-item> </el-form-item>
<el-form-item label="认证时间" prop="authenticationDate"> <el-form-item label="认证时间" prop="authenticationDate">
<el-date-picker clearable <el-date-picker clearable
@ -303,7 +294,7 @@
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="认证失败原因:"> <el-form-item label="认证失败原因:">
{{form.failureReason}} {{ form.failureReason }}
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -314,7 +305,13 @@
</template> </template>
<script> <script>
import { listMerchantVerification, getMerchantVerification, delMerchantVerification, addMerchantVerification, updateMerchantVerification } from "@/api/business/merchantVerification"; import {
listMerchantVerification,
getMerchantVerification,
delMerchantVerification,
addMerchantVerification,
updateMerchantVerification
} from "@/api/business/merchantVerification";
export default { export default {
name: "MerchantVerification", name: "MerchantVerification",
@ -364,53 +361,7 @@ export default {
// //
form: {}, form: {},
// //
rules: { rules: {}
id: [
{ required: true, message: "id不能为空", trigger: "blur" }
],
merchantName: [
{ required: true, message: "商户名称不能为空", trigger: "blur" }
],
businessLicenseNumber: [
{ required: true, message: "营业执照号不能为空", trigger: "blur" }
],
legalPersonName: [
{ required: true, message: "法人姓名不能为空", trigger: "blur" }
],
legalPersonIdCard: [
{ required: true, message: "法人身份证不能为空", trigger: "blur" }
],
contactPersonName: [
{ required: true, message: "联系人姓名不能为空", trigger: "blur" }
],
contactPersonPhone: [
{ required: true, message: "联系人电话、不能为空", trigger: "blur" }
],
contactPersonEmail: [
{ required: true, message: "联系人电子邮箱不能为空", trigger: "blur" }
],
businessLicenseImage: [
{ required: true, message: "营业执照照片不能为空", trigger: "blur" }
],
legalPersonIdCardImage: [
{ required: true, message: "法人身份证照片不能为空", trigger: "blur" }
],
bankAccountNumber: [
{ required: true, message: "商户银行账户不能为空", trigger: "blur" }
],
bankName: [
{ required: true, message: "开户银行不能为空", trigger: "blur" }
],
status: [
{ required: true, message: "认证状态不能为空", trigger: "change" }
],
authenticationDate: [
{ required: true, message: "认证时间不能为空", trigger: "blur" }
],
failureReason: [
{ required: true, message: "认证失败原因不能为空", trigger: "blur" }
],
}
}; };
}, },
created() { created() {
@ -471,7 +422,7 @@ export default {
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
@ -481,7 +432,7 @@ export default {
this.title = "添加商户认证信息"; this.title = "添加商户认证信息";
}, },
/** 详情按钮操作 */ /** 详情按钮操作 */
handleDetail(row){ handleDetail(row) {
this.reset(); this.reset();
this.form = row; this.form = row;
this.detailOpen = true; this.detailOpen = true;

34
src/views/business/recordPayCallback/index.vue

@ -9,7 +9,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="关联订单编号" prop="relatedOrderId"> <el-form-item label="订单编号" prop="relatedOrderId">
<el-input <el-input
v-model="queryParams.relatedOrderId" v-model="queryParams.relatedOrderId"
placeholder="请输入关联订单编号" placeholder="请输入关联订单编号"
@ -17,7 +17,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="第三方支付平台名称" prop="thirdPartyPlatform"> <el-form-item label="支付平台" prop="thirdPartyPlatform">
<el-input <el-input
v-model="queryParams.thirdPartyPlatform" v-model="queryParams.thirdPartyPlatform"
placeholder="请输入第三方支付平台名称" placeholder="请输入第三方支付平台名称"
@ -25,7 +25,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="支付渠道交易编号" prop="paymentChannelNo"> <el-form-item label="渠道编号" prop="paymentChannelNo">
<el-input <el-input
v-model="queryParams.paymentChannelNo" v-model="queryParams.paymentChannelNo"
placeholder="请输入支付渠道交易编号" placeholder="请输入支付渠道交易编号"
@ -103,19 +103,19 @@
<el-table-column label="处理状态" align="center" prop="processingStatus"/> <el-table-column label="处理状态" align="center" prop="processingStatus"/>
<el-table-column label="IP地址" align="center" prop="ipAddress"/> <el-table-column label="IP地址" align="center" prop="ipAddress"/>
<el-table-column label="用户编号" align="center" prop="userId"/> <el-table-column label="用户编号" align="center" prop="userId"/>
<el-table-column label="关联订单编号" align="center" prop="relatedOrderId"/> <el-table-column label="订单编号" align="center" prop="relatedOrderId"/>
<el-table-column label="第三方支付平台名称" align="center" prop="thirdPartyPlatform"/> <el-table-column label="平台名称" align="center" prop="thirdPartyPlatform"/>
<el-table-column label="交易金额" align="center" prop="transactionAmount"/> <el-table-column label="交易金额" align="center" prop="transactionAmount"/>
<el-table-column label="交易状态" align="center" prop="transactionStatus"/> <el-table-column label="交易状态" align="center" prop="transactionStatus"/>
<el-table-column label="支付渠道交易编号" align="center" prop="paymentChannelNo"/> <el-table-column label="渠道编号" align="center" prop="paymentChannelNo"/>
<el-table-column label="回执内容" align="center" prop="receiptContent"/>
<el-table-column label="验证状态" align="center" prop="verificationStatus"/>
<el-table-column label="验证失败原因" align="center" prop="verificationFailureReason"/>
<el-table-column label="回执时间" align="center" prop="receiptTime" width="180"> <el-table-column label="回执时间" align="center" prop="receiptTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.receiptTime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.receiptTime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="回执内容" align="center" prop="receiptContent"/>
<el-table-column label="验证状态" align="center" prop="verificationStatus"/>
<el-table-column label="验证失败原因" align="center" prop="verificationFailureReason"/>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -162,16 +162,16 @@
<el-form-item label="用户编号" prop="userId"> <el-form-item label="用户编号" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户编号"/> <el-input v-model="form.userId" placeholder="请输入用户编号"/>
</el-form-item> </el-form-item>
<el-form-item label="关联订单编号" prop="relatedOrderId"> <el-form-item label="订单编号" prop="relatedOrderId">
<el-input v-model="form.relatedOrderId" placeholder="请输入关联订单编号"/> <el-input v-model="form.relatedOrderId" placeholder="请输入关联订单编号"/>
</el-form-item> </el-form-item>
<el-form-item label="第三方支付平台名称" prop="thirdPartyPlatform"> <el-form-item label="支付平台" prop="thirdPartyPlatform">
<el-input v-model="form.thirdPartyPlatform" placeholder="请输入第三方支付平台名称"/> <el-input v-model="form.thirdPartyPlatform" placeholder="请输入第三方支付平台名称"/>
</el-form-item> </el-form-item>
<el-form-item label="交易金额" prop="transactionAmount"> <el-form-item label="交易金额" prop="transactionAmount">
<el-input v-model="form.transactionAmount" placeholder="请输入交易金额"/> <el-input v-model="form.transactionAmount" placeholder="请输入交易金额"/>
</el-form-item> </el-form-item>
<el-form-item label="支付渠道交易编号" prop="paymentChannelNo"> <el-form-item label="渠道编号" prop="paymentChannelNo">
<el-input v-model="form.paymentChannelNo" placeholder="请输入支付渠道交易编号"/> <el-input v-model="form.paymentChannelNo" placeholder="请输入支付渠道交易编号"/>
</el-form-item> </el-form-item>
<el-form-item label="回执时间" prop="receiptTime"> <el-form-item label="回执时间" prop="receiptTime">
@ -185,7 +185,7 @@
<el-form-item label="回执内容"> <el-form-item label="回执内容">
<editor v-model="form.receiptContent" :min-height="192"/> <editor v-model="form.receiptContent" :min-height="192"/>
</el-form-item> </el-form-item>
<el-form-item label="验证失败原因" prop="verificationFailureReason"> <el-form-item label="失败原因" prop="verificationFailureReason">
<el-input v-model="form.verificationFailureReason" type="textarea" placeholder="请输入内容"/> <el-input v-model="form.verificationFailureReason" type="textarea" placeholder="请输入内容"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -204,16 +204,16 @@
<el-form-item label="用户编号:"> <el-form-item label="用户编号:">
{{ form.userId }} {{ form.userId }}
</el-form-item> </el-form-item>
<el-form-item label="关联订单编号:"> <el-form-item label="订单编号:">
{{ form.relatedOrderId }} {{ form.relatedOrderId }}
</el-form-item> </el-form-item>
<el-form-item label="第三方支付平台名称:"> <el-form-item label="支付平台:">
{{ form.thirdPartyPlatform }} {{ form.thirdPartyPlatform }}
</el-form-item> </el-form-item>
<el-form-item label="交易金额:"> <el-form-item label="交易金额:">
{{ form.transactionAmount }} {{ form.transactionAmount }}
</el-form-item> </el-form-item>
<el-form-item label="支付渠道交易编号:"> <el-form-item label="渠道交易:">
{{ form.paymentChannelNo }} {{ form.paymentChannelNo }}
</el-form-item> </el-form-item>
<el-form-item label="回执时间" prop="receiptTime"> <el-form-item label="回执时间" prop="receiptTime">
@ -227,7 +227,7 @@
<el-form-item label="回执内容"> <el-form-item label="回执内容">
<editor v-model="form.receiptContent" :min-height="192"/> <editor v-model="form.receiptContent" :min-height="192"/>
</el-form-item> </el-form-item>
<el-form-item label="验证失败原因:"> <el-form-item label="失败原因:">
{{ form.verificationFailureReason }} {{ form.verificationFailureReason }}
</el-form-item> </el-form-item>
</el-form> </el-form>

16
src/views/business/recordTransaction/index.vue

@ -25,7 +25,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="目标用户ID" prop="receiverId"> <el-form-item label="目标ID" prop="receiverId">
<el-input <el-input
v-model="queryParams.receiverId" v-model="queryParams.receiverId"
placeholder="请输入目标用户ID" placeholder="请输入目标用户ID"
@ -33,7 +33,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="目标用户账户编号" prop="receiverAccount"> <el-form-item label="账户编号" prop="receiverAccount">
<el-input <el-input
v-model="queryParams.receiverAccount" v-model="queryParams.receiverAccount"
placeholder="请输入目标用户账户编号" placeholder="请输入目标用户账户编号"
@ -104,8 +104,8 @@
<el-table-column label="账户编号" align="center" prop="senderAccount"/> <el-table-column label="账户编号" align="center" prop="senderAccount"/>
<el-table-column label="账单编码" align="center" prop="billCode"/> <el-table-column label="账单编码" align="center" prop="billCode"/>
<el-table-column label="交易类型" align="center" prop="type"/> <el-table-column label="交易类型" align="center" prop="type"/>
<el-table-column label="目标用户ID" align="center" prop="receiverId"/> <el-table-column label="目标ID" align="center" prop="receiverId"/>
<el-table-column label="目标用户账户编号" align="center" prop="receiverAccount"/> <el-table-column label="账户编号" align="center" prop="receiverAccount"/>
<el-table-column label="交易前金额" align="center" prop="previousBalance"/> <el-table-column label="交易前金额" align="center" prop="previousBalance"/>
<el-table-column label="动账金额" align="center" prop="changeBalance"/> <el-table-column label="动账金额" align="center" prop="changeBalance"/>
<el-table-column label="当前金额" align="center" prop="currentBalance"/> <el-table-column label="当前金额" align="center" prop="currentBalance"/>
@ -160,10 +160,10 @@
<el-form-item label="账单编码" prop="billCode"> <el-form-item label="账单编码" prop="billCode">
<el-input v-model="form.billCode" placeholder="请输入账单编码"/> <el-input v-model="form.billCode" placeholder="请输入账单编码"/>
</el-form-item> </el-form-item>
<el-form-item label="目标用户ID" prop="receiverId"> <el-form-item label="用户ID" prop="receiverId">
<el-input v-model="form.receiverId" placeholder="请输入目标用户ID"/> <el-input v-model="form.receiverId" placeholder="请输入目标用户ID"/>
</el-form-item> </el-form-item>
<el-form-item label="目标用户账户编号" prop="receiverAccount"> <el-form-item label="账户编号" prop="receiverAccount">
<el-input v-model="form.receiverAccount" placeholder="请输入目标用户账户编号"/> <el-input v-model="form.receiverAccount" placeholder="请输入目标用户账户编号"/>
</el-form-item> </el-form-item>
<el-form-item label="交易前金额" prop="previousBalance"> <el-form-item label="交易前金额" prop="previousBalance">
@ -197,10 +197,10 @@
<el-form-item label="账单编码:"> <el-form-item label="账单编码:">
{{ form.billCode }} {{ form.billCode }}
</el-form-item> </el-form-item>
<el-form-item label="目标用户ID:"> <el-form-item label="用户ID:">
{{ form.receiverId }} {{ form.receiverId }}
</el-form-item> </el-form-item>
<el-form-item label="目标用户账户编号:"> <el-form-item label="账户编号:">
{{ form.receiverAccount }} {{ form.receiverAccount }}
</el-form-item> </el-form-item>
<el-form-item label="交易前金额:"> <el-form-item label="交易前金额:">

427
src/views/business/tradingChannel/index.vue

@ -0,0 +1,427 @@
<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="channelCode">
<el-input
v-model="queryParams.channelCode"
placeholder="请输入通道编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="通道版本" prop="channelVersion">
<el-input
v-model="queryParams.channelVersion"
placeholder="请输入通道版本"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="APPID" prop="channelAppid">
<el-input
v-model="queryParams.channelAppid"
placeholder="请输入APPID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="密钥版本" prop="channelKeyVersion">
<el-input
v-model="queryParams.channelKeyVersion"
placeholder="请输入密钥版本"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="回调地址" prop="channelCallbackUrl">
<el-input
v-model="queryParams.channelCallbackUrl"
placeholder="请输入回调地址"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="其它参数" prop="channelOtherParam">
<el-input
v-model="queryParams.channelOtherParam"
placeholder="请输入其它参数"
clearable
@keyup.enter.native="handleQuery"
/>
</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
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:tradingChannel:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:tradingChannel:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:tradingChannel:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:tradingChannel:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="tradingChannelList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="通道编码" align="center" prop="channelCode" />
<el-table-column label="通道状态" align="center" prop="channelStatus" />
<el-table-column label="通道版本" align="center" prop="channelVersion" />
<el-table-column label="APPID" align="center" prop="channelAppid" />
<el-table-column label="加密公钥" align="center" prop="channelPublicKey" />
<el-table-column label="加密私钥" align="center" prop="channelPrivateKey" />
<el-table-column label="密钥版本" align="center" prop="channelKeyVersion" />
<el-table-column label="回调地址" align="center" prop="channelCallbackUrl" />
<el-table-column label="其它参数" align="center" prop="channelOtherParam" />
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleDetail(scope.row)"
>详情</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:tradingChannel:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['business:tradingChannel:remove']"
>删除</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="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="通道编码" prop="channelCode">
<el-input v-model="form.channelCode" placeholder="请输入通道编码" />
</el-form-item>
<el-form-item label="通道版本" prop="channelVersion">
<el-input v-model="form.channelVersion" placeholder="请输入通道版本" />
</el-form-item>
<el-form-item label="APPID" prop="channelAppid">
<el-input v-model="form.channelAppid" placeholder="请输入APPID" />
</el-form-item>
<el-form-item label="加密公钥" prop="channelPublicKey">
<el-input v-model="form.channelPublicKey" placeholder="请输入加密公钥" />
</el-form-item>
<el-form-item label="加密私钥" prop="channelPrivateKey">
<el-input v-model="form.channelPrivateKey" placeholder="请输入加密私钥" />
</el-form-item>
<el-form-item label="密钥版本" prop="channelKeyVersion">
<el-input v-model="form.channelKeyVersion" placeholder="请输入密钥版本" />
</el-form-item>
<el-form-item label="回调地址" prop="channelCallbackUrl">
<el-input v-model="form.channelCallbackUrl" placeholder="请输入回调地址" />
</el-form-item>
<el-form-item label="其它参数" prop="channelOtherParam">
<el-input v-model="form.channelOtherParam" placeholder="请输入其它参数" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 交易通道/渠道详情 -->
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto">
<el-form-item label="通道编码:">
{{form.channelCode}}
</el-form-item>
<el-form-item label="通道版本:">
{{form.channelVersion}}
</el-form-item>
<el-form-item label="APPID:">
{{form.channelAppid}}
</el-form-item>
<el-form-item label="加密公钥:">
{{form.channelPublicKey}}
</el-form-item>
<el-form-item label="加密私钥:">
{{form.channelPrivateKey}}
</el-form-item>
<el-form-item label="密钥版本:">
{{form.channelKeyVersion}}
</el-form-item>
<el-form-item label="回调地址:">
{{form.channelCallbackUrl}}
</el-form-item>
<el-form-item label="其它参数:">
{{form.channelOtherParam}}
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listTradingChannel, getTradingChannel, delTradingChannel, addTradingChannel, updateTradingChannel } from "@/api/business/tradingChannel";
export default {
name: "TradingChannel",
data() {
return {
// loading
buttonLoading: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
// /
tradingChannelList: [],
//
title: "",
//
open: false,
//
detailOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
channelCode: undefined,
channelStatus: undefined,
channelVersion: undefined,
channelAppid: undefined,
channelPublicKey: undefined,
channelPrivateKey: undefined,
channelKeyVersion: undefined,
channelCallbackUrl: undefined,
channelOtherParam: undefined,
},
//
form: {},
//
rules: {
id: [
{ required: true, message: "ID不能为空", trigger: "blur" }
],
channelCode: [
{ required: true, message: "通道编码不能为空", trigger: "blur" }
],
channelStatus: [
{ required: true, message: "通道状态不能为空", trigger: "change" }
],
channelVersion: [
{ required: true, message: "通道版本不能为空", trigger: "blur" }
],
channelAppid: [
{ required: true, message: "APPID不能为空", trigger: "blur" }
],
channelPublicKey: [
{ required: true, message: "加密公钥不能为空", trigger: "blur" }
],
channelPrivateKey: [
{ required: true, message: "加密私钥不能为空", trigger: "blur" }
],
channelKeyVersion: [
{ required: true, message: "密钥版本不能为空", trigger: "blur" }
],
channelCallbackUrl: [
{ required: true, message: "回调地址不能为空", trigger: "blur" }
],
channelOtherParam: [
{ required: true, message: "其它参数不能为空", trigger: "blur" }
],
}
};
},
created() {
this.getList();
},
methods: {
/** 查询交易通道/渠道列表 */
getList() {
this.loading = true;
listTradingChannel(this.queryParams).then(response => {
this.tradingChannelList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.detailOpen = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
channelCode: undefined,
channelStatus: undefined,
channelVersion: undefined,
channelAppid: undefined,
channelPublicKey: undefined,
channelPrivateKey: undefined,
channelKeyVersion: undefined,
channelCallbackUrl: undefined,
channelOtherParam: undefined,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
updateTime: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加交易通道/渠道";
},
/** 详情按钮操作 */
handleDetail(row){
this.reset();
this.form = row;
this.detailOpen = true;
this.title = "交易通道/渠道";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const id = row.id || this.ids
getTradingChannel(id).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改交易通道/渠道";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateTradingChannel(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addTradingChannel(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除交易通道/渠道编号为"' + ids + '"的数据项?').then(() => {
this.loading = true;
return delTradingChannel(ids);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/tradingChannel/export', {
...this.queryParams
}, `tradingChannel_${new Date().getTime()}.xlsx`)
}
}
};
</script>

416
src/views/business/tradingChannelRecord/index.vue

@ -0,0 +1,416 @@
<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="用户ID" prop="userId">
<el-input
v-model="queryParams.userId"
placeholder="请输入用户ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="通道ID" prop="channelId">
<el-input
v-model="queryParams.channelId"
placeholder="请输入交易通道ID"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="货币单位" prop="currency">
<el-input
v-model="queryParams.currency"
placeholder="请输入货币单位"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="支付方式" prop="paymentMethod">
<el-input
v-model="queryParams.paymentMethod"
placeholder="请输入具体支付方式"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="交易日期" prop="transactionDate">
<el-date-picker clearable
v-model="queryParams.transactionDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择交易日期">
</el-date-picker>
</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
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['business:tradingChannelRecord:add']"
>新增
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['business:tradingChannelRecord:edit']"
>修改
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['business:tradingChannelRecord:remove']"
>删除
</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['business:tradingChannelRecord:export']"
>导出
</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="tradingChannelRecordList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="用户ID" align="center" prop="userId"/>
<el-table-column label="通道ID" align="center" prop="channelId"/>
<el-table-column label="交易金额" align="center" prop="amount"/>
<el-table-column label="货币单位" align="center" prop="currency"/>
<el-table-column label="支付方式" align="center" prop="paymentMethod"/>
<el-table-column label="交易状态" align="center" prop="status"/>
<el-table-column label="响应码" align="center" prop="responseCode"/>
<el-table-column label="响应消息" align="center" prop="responseMessage"/>
<el-table-column label="交易日期" align="center" prop="transactionDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.transactionDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-view"
@click="handleDetail(scope.row)"
>详情
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['business:tradingChannelRecord:edit']"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['business:tradingChannelRecord:remove']"
>删除
</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="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="用户ID" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户ID"/>
</el-form-item>
<el-form-item label="通道ID" prop="channelId">
<el-input v-model="form.channelId" placeholder="请输入交易通道ID"/>
</el-form-item>
<el-form-item label="交易金额" prop="amount">
<el-input v-model="form.amount" placeholder="请输入交易金额"/>
</el-form-item>
<el-form-item label="货币单位" prop="currency">
<el-input v-model="form.currency" placeholder="请输入货币单位"/>
</el-form-item>
<el-form-item label="支付方式" prop="paymentMethod">
<el-input v-model="form.paymentMethod" placeholder="请输入使用的具体支付方式"/>
</el-form-item>
<el-form-item label="响应码" prop="responseCode">
<el-input v-model="form.responseCode" placeholder="请输入响应码"/>
</el-form-item>
<el-form-item label="响应消息" prop="responseMessage">
<el-input v-model="form.responseMessage" type="textarea" placeholder="请输入内容"/>
</el-form-item>
<el-form-item label="交易日期" prop="transactionDate">
<el-date-picker clearable
v-model="form.transactionDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择交易日期">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button :loading="buttonLoading" type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 交易通道记录详情 -->
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto">
<el-form-item label="用户ID:">
{{ form.userId }}
</el-form-item>
<el-form-item label="通道ID:">
{{ form.channelId }}
</el-form-item>
<el-form-item label="交易金额:">
{{ form.amount }}
</el-form-item>
<el-form-item label="货币单位:">
{{ form.currency }}
</el-form-item>
<el-form-item label="支付方式:">
{{ form.paymentMethod }}
</el-form-item>
<el-form-item label="响应码:">
{{ form.responseCode }}
</el-form-item>
<el-form-item label="响应消息:">
{{ form.responseMessage }}
</el-form-item>
<el-form-item label="交易日期" prop="transactionDate">
<el-date-picker clearable
v-model="form.transactionDate"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择交易日期">
</el-date-picker>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {
listTradingChannelRecord,
getTradingChannelRecord,
delTradingChannelRecord,
addTradingChannelRecord,
updateTradingChannelRecord
} from "@/api/business/tradingChannelRecord";
export default {
name: "TradingChannelRecord",
data() {
return {
// loading
buttonLoading: false,
//
loading: true,
//
ids: [],
//
single: true,
//
multiple: true,
//
showSearch: true,
//
total: 0,
//
tradingChannelRecordList: [],
//
title: "",
//
open: false,
//
detailOpen: false,
//
queryParams: {
pageNum: 1,
pageSize: 10,
userId: undefined,
channelId: undefined,
amount: undefined,
currency: undefined,
paymentMethod: undefined,
status: undefined,
responseCode: undefined,
responseMessage: undefined,
transactionDate: undefined,
},
//
form: {},
//
rules: {}
};
},
created() {
this.getList();
},
methods: {
/** 查询交易通道记录列表 */
getList() {
this.loading = true;
listTradingChannelRecord(this.queryParams).then(response => {
this.tradingChannelRecordList = response.rows;
this.total = response.total;
this.loading = false;
});
},
//
cancel() {
this.open = false;
this.detailOpen = false;
this.reset();
},
//
reset() {
this.form = {
id: undefined,
userId: undefined,
channelId: undefined,
amount: undefined,
currency: undefined,
paymentMethod: undefined,
status: undefined,
responseCode: undefined,
responseMessage: undefined,
transactionDate: undefined,
createBy: undefined,
createTime: undefined,
updateBy: undefined,
updateTime: undefined
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length !== 1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加交易通道记录";
},
/** 详情按钮操作 */
handleDetail(row) {
this.reset();
this.form = row;
this.detailOpen = true;
this.title = "交易通道记录";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.loading = true;
this.reset();
const id = row.id || this.ids
getTradingChannelRecord(id).then(response => {
this.loading = false;
this.form = response.data;
this.open = true;
this.title = "修改交易通道记录";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
this.buttonLoading = true;
if (this.form.id != null) {
updateTradingChannelRecord(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
} else {
addTradingChannelRecord(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.getList();
}).finally(() => {
this.buttonLoading = false;
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$modal.confirm('是否确认删除交易通道记录编号为"' + ids + '"的数据项?').then(() => {
this.loading = true;
return delTradingChannelRecord(ids);
}).then(() => {
this.loading = false;
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
}).finally(() => {
this.loading = false;
});
},
/** 导出按钮操作 */
handleExport() {
this.download('business/tradingChannelRecord/export', {
...this.queryParams
}, `tradingChannelRecord_${new Date().getTime()}.xlsx`)
}
}
};
</script>

155
src/views/business/userBehaviorLog/index.vue

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="关联用户ID" prop="userId"> <el-form-item label="用户ID" prop="userId">
<el-input <el-input
v-model="queryParams.userId" v-model="queryParams.userId"
placeholder="请输入关联用户ID" placeholder="请输入关联用户ID"
@ -9,7 +9,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="具体动作标识" prop="action"> <el-form-item label="动作标识" prop="action">
<el-input <el-input
v-model="queryParams.action" v-model="queryParams.action"
placeholder="请输入具体动作标识" placeholder="请输入具体动作标识"
@ -17,7 +17,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="目标对象ID" prop="targetId"> <el-form-item label="目标ID" prop="targetId">
<el-input <el-input
v-model="queryParams.targetId" v-model="queryParams.targetId"
placeholder="请输入目标对象ID" placeholder="请输入目标对象ID"
@ -25,7 +25,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="客户端IP地址" prop="ip"> <el-form-item label="IP地址" prop="ip">
<el-input <el-input
v-model="queryParams.ip" v-model="queryParams.ip"
placeholder="请输入客户端IP地址" placeholder="请输入客户端IP地址"
@ -33,21 +33,15 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="浏览器" prop="ua">
<el-input
v-model="queryParams.ua"
placeholder="请输入浏览器"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="平台类型" prop="platform"> <el-form-item label="平台类型" prop="platform">
<el-input <el-select v-model="queryParams.platform" placeholder="请选择平台类型" clearable>
v-model="queryParams.platform" <el-option
placeholder="请输入平台类型" v-for="dict in platformOptions"
clearable :key="dict.dictValue"
@keyup.enter.native="handleQuery" :label="dict.dictLabel"
:value="dict.dictValue"
/> />
</el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -64,7 +58,8 @@
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['business:userBehaviorLog:add']" v-hasPermi="['business:userBehaviorLog:add']"
>新增</el-button> >新增
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -75,7 +70,8 @@
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleUpdate"
v-hasPermi="['business:userBehaviorLog:edit']" v-hasPermi="['business:userBehaviorLog:edit']"
>修改</el-button> >修改
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -86,7 +82,8 @@
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['business:userBehaviorLog:remove']" v-hasPermi="['business:userBehaviorLog:remove']"
>删除</el-button> >删除
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -96,25 +93,26 @@
size="mini" size="mini"
@click="handleExport" @click="handleExport"
v-hasPermi="['business:userBehaviorLog:export']" v-hasPermi="['business:userBehaviorLog:export']"
>导出</el-button> >导出
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="userBehaviorLogList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userBehaviorLogList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="" align="center" prop="id" v-if="true"/> <el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="关联用户ID" align="center" prop="userId" /> <el-table-column label="用户ID" align="center" prop="userId"/>
<el-table-column label="行为类型" align="center" prop="behaviorType" /> <el-table-column label="行为类型" align="center" prop="behaviorType"/>
<el-table-column label="具体动作标识" align="center" prop="action" /> <el-table-column label="动作标识" align="center" prop="action"/>
<el-table-column label="目标对象ID" align="center" prop="targetId" /> <el-table-column label="目标ID" align="center" prop="targetId"/>
<el-table-column label="目标对象类型" align="center" prop="targetType" /> <el-table-column label="目标对象类型" align="center" prop="targetType"/>
<el-table-column label="客户端IP地址" align="center" prop="ip" /> <el-table-column label="IP地址" align="center" prop="ip"/>
<el-table-column label="浏览器" align="center" prop="ua" /> <el-table-column label="浏览器" align="center" prop="ua"/>
<el-table-column label="设备类型" align="center" prop="deviceType" /> <el-table-column label="设备类型" align="center" prop="deviceType"/>
<el-table-column label="平台类型" align="center" prop="platform" /> <el-table-column label="平台类型" align="center" prop="platform"/>
<el-table-column label="地理位置信息" align="center" prop="location" /> <el-table-column label="地理位置" align="center" prop="location"/>
<el-table-column label="扩展字段,用于存储额外信息" align="center" prop="extraInfo" /> <!-- <el-table-column label="扩展字段,用于存储额外信息" align="center" prop="extraInfo"/>-->
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -122,21 +120,24 @@
type="text" type="text"
icon="el-icon-view" icon="el-icon-view"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
>详情</el-button> >详情
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['business:userBehaviorLog:edit']" v-hasPermi="['business:userBehaviorLog:edit']"
>修改</el-button> >修改
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['business:userBehaviorLog:remove']" v-hasPermi="['business:userBehaviorLog:remove']"
>删除</el-button> >删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -153,22 +154,22 @@
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto"> <el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="关联用户ID" prop="userId"> <el-form-item label="关联用户ID" prop="userId">
<el-input v-model="form.userId" placeholder="请输入关联用户ID" /> <el-input v-model="form.userId" placeholder="请输入关联用户ID"/>
</el-form-item> </el-form-item>
<el-form-item label="具体动作标识" prop="action"> <el-form-item label="具体动作标识" prop="action">
<el-input v-model="form.action" placeholder="请输入具体动作标识" /> <el-input v-model="form.action" placeholder="请输入具体动作标识"/>
</el-form-item> </el-form-item>
<el-form-item label="目标对象ID" prop="targetId"> <el-form-item label="目标对象ID" prop="targetId">
<el-input v-model="form.targetId" placeholder="请输入目标对象ID" /> <el-input v-model="form.targetId" placeholder="请输入目标对象ID"/>
</el-form-item> </el-form-item>
<el-form-item label="客户端IP地址" prop="ip"> <el-form-item label="客户端IP地址" prop="ip">
<el-input v-model="form.ip" placeholder="请输入客户端IP地址" /> <el-input v-model="form.ip" placeholder="请输入客户端IP地址"/>
</el-form-item> </el-form-item>
<el-form-item label="浏览器" prop="ua"> <el-form-item label="浏览器" prop="ua">
<el-input v-model="form.ua" type="textarea" placeholder="请输入内容" /> <el-input v-model="form.ua" type="textarea" placeholder="请输入内容"/>
</el-form-item> </el-form-item>
<el-form-item label="平台类型" prop="platform"> <el-form-item label="平台类型" prop="platform">
<el-input v-model="form.platform" placeholder="请输入平台类型" /> <el-input v-model="form.platform" placeholder="请输入平台类型"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -181,23 +182,22 @@
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto"> <el-form ref="form" :model="form" label-width="auto">
<el-form-item label="关联用户ID:"> <el-form-item label="关联用户ID:">
{{form.userId}} {{ form.userId }}
</el-form-item> </el-form-item>
<el-form-item label="具体动作标识:"> <el-form-item label="具体动作标识:">
{{form.action}} {{ form.action }}
</el-form-item> </el-form-item>
<el-form-item label="目标对象ID:"> <el-form-item label="目标对象ID:">
{{form.targetId}} {{ form.targetId }}
</el-form-item> </el-form-item>
<el-form-item label="客户端IP地址:"> <el-form-item label="客户端IP地址:">
{{form.ip}} {{ form.ip }}
</el-form-item> </el-form-item>
<el-form-item label="浏览器:"> <el-form-item label="浏览器:">
{{form.ua}} {{ form.ua }}
</el-form-item> </el-form-item>
<el-form-item label="平台类型:"> <el-form-item label="平台类型:">
{{form.platform}} {{ form.platform }}
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -208,7 +208,13 @@
</template> </template>
<script> <script>
import { listUserBehaviorLog, getUserBehaviorLog, delUserBehaviorLog, addUserBehaviorLog, updateUserBehaviorLog } from "@/api/business/userBehaviorLog"; import {
listUserBehaviorLog,
getUserBehaviorLog,
delUserBehaviorLog,
addUserBehaviorLog,
updateUserBehaviorLog
} from "@/api/business/userBehaviorLog";
export default { export default {
name: "UserBehaviorLog", name: "UserBehaviorLog",
@ -254,44 +260,15 @@ export default {
}, },
// //
form: {}, form: {},
platformOptions: [
{dictValue: 'PC', dictLabel: 'PC'},
{dictValue: 'Mobile', dictLabel: 'Mobile'},
{dictValue: 'Tablet', dictLabel: 'Tablet'},
{dictValue: 'WebApp', dictLabel: 'WebApp'},
{dictValue: 'Other', dictLabel: 'Other'}
],
// //
rules: { rules: {
id: [
{ required: true, message: "不能为空", trigger: "blur" }
],
userId: [
{ required: true, message: "关联用户ID不能为空", trigger: "blur" }
],
behaviorType: [
{ required: true, message: "行为类型不能为空", trigger: "change" }
],
action: [
{ required: true, message: "具体动作标识不能为空", trigger: "blur" }
],
targetId: [
{ required: true, message: "目标对象ID不能为空", trigger: "blur" }
],
targetType: [
{ required: true, message: "目标对象类型不能为空", trigger: "change" }
],
ip: [
{ required: true, message: "客户端IP地址不能为空", trigger: "blur" }
],
ua: [
{ required: true, message: "浏览器不能为空", trigger: "blur" }
],
deviceType: [
{ required: true, message: "设备类型不能为空", trigger: "change" }
],
platform: [
{ required: true, message: "平台类型不能为空", trigger: "blur" }
],
location: [
{ required: true, message: "地理位置信息不能为空", trigger: "blur" }
],
extraInfo: [
{ required: true, message: "扩展字段,用于存储额外信息不能为空", trigger: "blur" }
],
} }
}; };
}, },
@ -350,7 +327,7 @@ export default {
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
@ -360,7 +337,7 @@ export default {
this.title = "添加用户行为日志"; this.title = "添加用户行为日志";
}, },
/** 详情按钮操作 */ /** 详情按钮操作 */
handleDetail(row){ handleDetail(row) {
this.reset(); this.reset();
this.form = row; this.form = row;
this.detailOpen = true; this.detailOpen = true;

70
src/views/business/userBehaviorRuleAction/index.vue

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="" prop="riskRuleId"> <el-form-item label="风险Id" prop="riskRuleId">
<el-input <el-input
v-model="queryParams.riskRuleId" v-model="queryParams.riskRuleId"
placeholder="请输入" placeholder="请输入"
@ -32,7 +32,8 @@
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['business:userBehaviorRuleAction:add']" v-hasPermi="['business:userBehaviorRuleAction:add']"
>新增</el-button> >新增
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -43,7 +44,8 @@
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleUpdate"
v-hasPermi="['business:userBehaviorRuleAction:edit']" v-hasPermi="['business:userBehaviorRuleAction:edit']"
>修改</el-button> >修改
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -54,7 +56,8 @@
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['business:userBehaviorRuleAction:remove']" v-hasPermi="['business:userBehaviorRuleAction:remove']"
>删除</el-button> >删除
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -64,17 +67,18 @@
size="mini" size="mini"
@click="handleExport" @click="handleExport"
v-hasPermi="['business:userBehaviorRuleAction:export']" v-hasPermi="['business:userBehaviorRuleAction:export']"
>导出</el-button> >导出
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="userBehaviorRuleActionList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userBehaviorRuleActionList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="" align="center" prop="id" v-if="true"/> <el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="" align="center" prop="riskRuleId" /> <el-table-column label="风险识别ID" align="center" prop="riskRuleId"/>
<el-table-column label="行动类型" align="center" prop="actionType" /> <el-table-column label="行动类型" align="center" prop="actionType"/>
<el-table-column label="行动描述" align="center" prop="description" /> <el-table-column label="行动描述" align="center" prop="description"/>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -82,21 +86,24 @@
type="text" type="text"
icon="el-icon-view" icon="el-icon-view"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
>详情</el-button> >详情
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['business:userBehaviorRuleAction:edit']" v-hasPermi="['business:userBehaviorRuleAction:edit']"
>修改</el-button> >修改
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['business:userBehaviorRuleAction:remove']" v-hasPermi="['business:userBehaviorRuleAction:remove']"
>删除</el-button> >删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -113,10 +120,10 @@
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto"> <el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="" prop="riskRuleId"> <el-form-item label="" prop="riskRuleId">
<el-input v-model="form.riskRuleId" placeholder="请输入" /> <el-input v-model="form.riskRuleId" placeholder="请输入"/>
</el-form-item> </el-form-item>
<el-form-item label="行动描述" prop="description"> <el-form-item label="行动描述" prop="description">
<el-input v-model="form.description" type="textarea" placeholder="请输入内容" /> <el-input v-model="form.description" type="textarea" placeholder="请输入内容"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -128,12 +135,14 @@
<!-- 处置规则详情 --> <!-- 处置规则详情 -->
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto"> <el-form ref="form" :model="form" label-width="auto">
<el-form-item label=":"> <el-form-item label="风险识别ID:">
{{form.riskRuleId}} {{ form.id }}
</el-form-item>
<el-form-item label="风险识别ID:">
{{ form.riskRuleId }}
</el-form-item> </el-form-item>
<el-form-item label="行动描述:"> <el-form-item label="行动描述:">
{{form.description}} {{ form.description }}
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -144,7 +153,13 @@
</template> </template>
<script> <script>
import { listUserBehaviorRuleAction, getUserBehaviorRuleAction, delUserBehaviorRuleAction, addUserBehaviorRuleAction, updateUserBehaviorRuleAction } from "@/api/business/userBehaviorRuleAction"; import {
listUserBehaviorRuleAction,
getUserBehaviorRuleAction,
delUserBehaviorRuleAction,
addUserBehaviorRuleAction,
updateUserBehaviorRuleAction
} from "@/api/business/userBehaviorRuleAction";
export default { export default {
name: "UserBehaviorRuleAction", name: "UserBehaviorRuleAction",
@ -184,17 +199,8 @@ export default {
form: {}, form: {},
// //
rules: { rules: {
id: [
{ required: true, message: "不能为空", trigger: "blur" }
],
riskRuleId: [
{ required: true, message: "不能为空", trigger: "blur" }
],
actionType: [ actionType: [
{ required: true, message: "行动类型不能为空", trigger: "change" } {required: true, message: "行动类型不能为空", trigger: "change"}
],
description: [
{ required: true, message: "行动描述不能为空", trigger: "blur" }
], ],
} }
}; };
@ -246,7 +252,7 @@ export default {
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
@ -256,7 +262,7 @@ export default {
this.title = "添加处置规则"; this.title = "添加处置规则";
}, },
/** 详情按钮操作 */ /** 详情按钮操作 */
handleDetail(row){ handleDetail(row) {
this.reset(); this.reset();
this.form = row; this.form = row;
this.detailOpen = true; this.detailOpen = true;

91
src/views/business/userBehaviorRuleRisk/index.vue

@ -9,7 +9,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="规则优先级" prop="priority"> <el-form-item label="优先级" prop="priority">
<el-input <el-input
v-model="queryParams.priority" v-model="queryParams.priority"
placeholder="请输入规则优先级" placeholder="请输入规则优先级"
@ -26,12 +26,10 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="是否启用" prop="isEnabled"> <el-form-item label="是否启用" prop="isEnabled">
<el-input <el-select v-model="queryParams.isEnabled" placeholder="请选择是否启用">
v-model="queryParams.isEnabled" <el-option label="是" value="1" />
placeholder="请输入是否启用" <el-option label="否" value="0" />
clearable </el-select>
@keyup.enter.native="handleQuery"
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -48,7 +46,8 @@
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['business:userBehaviorRuleRisk:add']" v-hasPermi="['business:userBehaviorRuleRisk:add']"
>新增</el-button> >新增
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -59,7 +58,8 @@
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleUpdate"
v-hasPermi="['business:userBehaviorRuleRisk:edit']" v-hasPermi="['business:userBehaviorRuleRisk:edit']"
>修改</el-button> >修改
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -70,7 +70,8 @@
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['business:userBehaviorRuleRisk:remove']" v-hasPermi="['business:userBehaviorRuleRisk:remove']"
>删除</el-button> >删除
</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
@ -80,20 +81,21 @@
size="mini" size="mini"
@click="handleExport" @click="handleExport"
v-hasPermi="['business:userBehaviorRuleRisk:export']" v-hasPermi="['business:userBehaviorRuleRisk:export']"
>导出</el-button> >导出
</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="userBehaviorRuleRiskList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userBehaviorRuleRiskList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center"/>
<el-table-column label="" align="center" prop="id" v-if="true"/> <el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="规则名称" align="center" prop="ruleName" /> <el-table-column label="规则名称" align="center" prop="ruleName"/>
<el-table-column label="触发条件" align="center" prop="triggerCondition" /> <el-table-column label="触发条件" align="center" prop="triggerCondition"/>
<el-table-column label="规则优先级" align="center" prop="priority" /> <el-table-column label="规则优先级" align="center" prop="priority"/>
<el-table-column label="规则描述" align="center" prop="description" /> <el-table-column label="规则描述" align="center" prop="description"/>
<el-table-column label="是否启用" align="center" prop="isEnabled" /> <el-table-column label="是否启用" align="center" prop="isEnabled"/>
<el-table-column label="规则状态" align="center" prop="status" /> <el-table-column label="规则状态" align="center" prop="status"/>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -101,21 +103,24 @@
type="text" type="text"
icon="el-icon-view" icon="el-icon-view"
@click="handleDetail(scope.row)" @click="handleDetail(scope.row)"
>详情</el-button> >详情
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-edit"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
v-hasPermi="['business:userBehaviorRuleRisk:edit']" v-hasPermi="['business:userBehaviorRuleRisk:edit']"
>修改</el-button> >修改
</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['business:userBehaviorRuleRisk:remove']" v-hasPermi="['business:userBehaviorRuleRisk:remove']"
>删除</el-button> >删除
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -132,16 +137,16 @@
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto"> <el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="规则名称" prop="ruleName"> <el-form-item label="规则名称" prop="ruleName">
<el-input v-model="form.ruleName" placeholder="请输入规则名称" /> <el-input v-model="form.ruleName" placeholder="请输入规则名称"/>
</el-form-item> </el-form-item>
<el-form-item label="规则优先级" prop="priority"> <el-form-item label="规则优先级" prop="priority">
<el-input v-model="form.priority" placeholder="请输入规则优先级" /> <el-input v-model="form.priority" placeholder="请输入规则优先级"/>
</el-form-item> </el-form-item>
<el-form-item label="规则描述" prop="description"> <el-form-item label="规则描述" prop="description">
<el-input v-model="form.description" type="textarea" placeholder="请输入内容" /> <el-input v-model="form.description" type="textarea" placeholder="请输入内容"/>
</el-form-item> </el-form-item>
<el-form-item label="是否启用" prop="isEnabled"> <el-form-item label="是否启用" prop="isEnabled">
<el-input v-model="form.isEnabled" placeholder="请输入是否启用" /> <el-input v-model="form.isEnabled" placeholder="请输入是否启用"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -154,17 +159,17 @@
<el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="detailOpen" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="auto"> <el-form ref="form" :model="form" label-width="auto">
<el-form-item label="规则名称:"> <el-form-item label="规则名称:">
{{form.ruleName}} {{ form.ruleName }}
</el-form-item> </el-form-item>
<el-form-item label="规则优先级:"> <el-form-item label="规则优先级:">
{{form.priority}} {{ form.priority }}
</el-form-item> </el-form-item>
<el-form-item label="规则描述:"> <el-form-item label="规则描述:">
{{form.description}} {{ form.description }}
</el-form-item> </el-form-item>
<el-form-item label="是否启用:"> <el-form-item label="是否启用:">
{{form.isEnabled}} {{ form.isEnabled }}
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -175,7 +180,13 @@
</template> </template>
<script> <script>
import { listUserBehaviorRuleRisk, getUserBehaviorRuleRisk, delUserBehaviorRuleRisk, addUserBehaviorRuleRisk, updateUserBehaviorRuleRisk } from "@/api/business/userBehaviorRuleRisk"; import {
listUserBehaviorRuleRisk,
getUserBehaviorRuleRisk,
delUserBehaviorRuleRisk,
addUserBehaviorRuleRisk,
updateUserBehaviorRuleRisk
} from "@/api/business/userBehaviorRuleRisk";
export default { export default {
name: "UserBehaviorRuleRisk", name: "UserBehaviorRuleRisk",
@ -219,25 +230,25 @@ export default {
// //
rules: { rules: {
id: [ id: [
{ required: true, message: "不能为空", trigger: "blur" } {required: true, message: "不能为空", trigger: "blur"}
], ],
ruleName: [ ruleName: [
{ required: true, message: "规则名称不能为空", trigger: "blur" } {required: true, message: "规则名称不能为空", trigger: "blur"}
], ],
triggerCondition: [ triggerCondition: [
{ required: true, message: "触发条件不能为空", trigger: "blur" } {required: true, message: "触发条件不能为空", trigger: "blur"}
], ],
priority: [ priority: [
{ required: true, message: "规则优先级不能为空", trigger: "blur" } {required: true, message: "规则优先级不能为空", trigger: "blur"}
], ],
description: [ description: [
{ required: true, message: "规则描述不能为空", trigger: "blur" } {required: true, message: "规则描述不能为空", trigger: "blur"}
], ],
isEnabled: [ isEnabled: [
{ required: true, message: "是否启用不能为空", trigger: "blur" } {required: true, message: "是否启用不能为空", trigger: "blur"}
], ],
status: [ status: [
{ required: true, message: "规则状态不能为空", trigger: "change" } {required: true, message: "规则状态不能为空", trigger: "change"}
], ],
} }
}; };
@ -292,7 +303,7 @@ export default {
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.id) this.ids = selection.map(item => item.id)
this.single = selection.length!==1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
@ -302,7 +313,7 @@ export default {
this.title = "添加风险识别规则"; this.title = "添加风险识别规则";
}, },
/** 详情按钮操作 */ /** 详情按钮操作 */
handleDetail(row){ handleDetail(row) {
this.reset(); this.reset();
this.form = row; this.form = row;
this.detailOpen = true; this.detailOpen = true;

24
src/views/business/userBehaviorStats/index.vue

@ -9,7 +9,7 @@
placeholder="请选择统计日期"> placeholder="请选择统计日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="具体动作标识" prop="action"> <el-form-item label="动作标识" prop="action">
<el-input <el-input
v-model="queryParams.action" v-model="queryParams.action"
placeholder="请输入具体动作标识符" placeholder="请输入具体动作标识符"
@ -25,7 +25,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="行为总数" prop="total"> <el-form-item label="行为总数" prop="total">
<el-input <el-input
v-model="queryParams.total" v-model="queryParams.total"
placeholder="请输入行为总次数" placeholder="请输入行为总次数"
@ -33,7 +33,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="独立用户" prop="uniqueUsers"> <el-form-item label="独立用户" prop="uniqueUsers">
<el-input <el-input
v-model="queryParams.uniqueUsers" v-model="queryParams.uniqueUsers"
placeholder="请输入独立用户数" placeholder="请输入独立用户数"
@ -41,7 +41,7 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="平均停留时间" prop="avgDuration"> <el-form-item label="停留时间" prop="avgDuration">
<el-input <el-input
v-model="queryParams.avgDuration" v-model="queryParams.avgDuration"
placeholder="请输入平均停留时间" placeholder="请输入平均停留时间"
@ -103,20 +103,20 @@
<el-table v-loading="loading" :data="userBehaviorStatsList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userBehaviorStatsList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="" align="center" prop="id" v-if="true"/> <el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="统计日期" align="center" prop="statDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.statDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="行为类型" align="center" prop="behaviorType" /> <el-table-column label="行为类型" align="center" prop="behaviorType" />
<el-table-column label="具体动作标识符" align="center" prop="action" /> <el-table-column label="动作标识符" align="center" prop="action" />
<el-table-column label="维度类型" align="center" prop="dimensionType" /> <el-table-column label="维度类型" align="center" prop="dimensionType" />
<el-table-column label="维度值" align="center" prop="dimensionValue" /> <el-table-column label="维度值" align="center" prop="dimensionValue" />
<el-table-column label="行为总数" align="center" prop="total" /> <el-table-column label="行为总数" align="center" prop="total" />
<el-table-column label="独立用户数" align="center" prop="uniqueUsers" /> <el-table-column label="独立用户数" align="center" prop="uniqueUsers" />
<el-table-column label="平均停留时间" align="center" prop="avgDuration" /> <el-table-column label="平均停留时间" align="center" prop="avgDuration" />
<el-table-column label="扩展统计数据" align="center" prop="extraData" /> <el-table-column label="扩展统计数据" align="center" prop="extraData" />
<el-table-column label="统计日期" align="center" prop="statDate" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.statDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="200" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button

93
src/views/business/userVerification/index.vue

@ -1,7 +1,7 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="用户关联ID" prop="userId"> <el-form-item label="用户ID" prop="userId">
<el-input <el-input
v-model="queryParams.userId" v-model="queryParams.userId"
placeholder="请输入用户关联ID" placeholder="请输入用户关联ID"
@ -41,38 +41,6 @@
placeholder="请选择出生日期"> placeholder="请选择出生日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="身份证正面照存储路径" prop="idCardFrontImagePath">
<el-input
v-model="queryParams.idCardFrontImagePath"
placeholder="请输入身份证正面照存储路径"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="身份证反面照存储路径" prop="idCardBackImagePath">
<el-input
v-model="queryParams.idCardBackImagePath"
placeholder="请输入身份证反面照存储路径"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="手持身份证照片存储路径" prop="userWithIdCardImagePath">
<el-input
v-model="queryParams.userWithIdCardImagePath"
placeholder="请输入手持身份证照片存储路径"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="生物识别信息" prop="biometrics">
<el-input
v-model="queryParams.biometrics"
placeholder="请输入生物识别信息"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="认证时间" prop="authenticationDate"> <el-form-item label="认证时间" prop="authenticationDate">
<el-date-picker clearable <el-date-picker clearable
v-model="queryParams.authenticationDate" v-model="queryParams.authenticationDate"
@ -81,14 +49,6 @@
placeholder="请选择认证时间"> placeholder="请选择认证时间">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="认证失败原因" prop="failureReason">
<el-input
v-model="queryParams.failureReason"
placeholder="请输入认证失败原因"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <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-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -143,8 +103,8 @@
<el-table v-loading="loading" :data="userVerificationList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userVerificationList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="" align="center" prop="id" v-if="true"/> <el-table-column label="ID" align="center" prop="id" v-if="true"/>
<el-table-column label="用户关联ID" align="center" prop="userId" /> <el-table-column label="用户ID" align="center" prop="userId" />
<el-table-column label="姓名" align="center" prop="fullName" /> <el-table-column label="姓名" align="center" prop="fullName" />
<el-table-column label="身份证号" align="center" prop="idCardNumber" /> <el-table-column label="身份证号" align="center" prop="idCardNumber" />
<el-table-column label="性别" align="center" prop="gender" /> <el-table-column label="性别" align="center" prop="gender" />
@ -154,9 +114,9 @@
<span>{{ parseTime(scope.row.birthDate, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.birthDate, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="身份证正面照存储路径" align="center" prop="idCardFrontImagePath" /> <el-table-column label="身份证正面照" align="center" prop="idCardFrontImagePath" />
<el-table-column label="身份证反面照存储路径" align="center" prop="idCardBackImagePath" /> <el-table-column label="身份证反面照" align="center" prop="idCardBackImagePath" />
<el-table-column label="手持身份证照片存储路径" align="center" prop="userWithIdCardImagePath" /> <el-table-column label="手持身份证照" align="center" prop="userWithIdCardImagePath" />
<el-table-column label="生物识别信息" align="center" prop="biometrics" /> <el-table-column label="生物识别信息" align="center" prop="biometrics" />
<el-table-column label="认证状态" align="center" prop="status" /> <el-table-column label="认证状态" align="center" prop="status" />
<el-table-column label="认证时间" align="center" prop="authenticationDate" width="180"> <el-table-column label="认证时间" align="center" prop="authenticationDate" width="180">
@ -202,7 +162,7 @@
<!-- 添加或修改实名认证对话框 --> <!-- 添加或修改实名认证对话框 -->
<el-dialog :title="title" :visible.sync="open" width="700px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="auto"> <el-form ref="form" :model="form" :rules="rules" label-width="auto">
<el-form-item label="用户关联ID" prop="userId"> <el-form-item label="用户ID" prop="userId">
<el-input v-model="form.userId" placeholder="请输入用户关联ID" /> <el-input v-model="form.userId" placeholder="请输入用户关联ID" />
</el-form-item> </el-form-item>
<el-form-item label="姓名" prop="fullName"> <el-form-item label="姓名" prop="fullName">
@ -222,14 +182,14 @@
placeholder="请选择出生日期"> placeholder="请选择出生日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="身份证正面照存储路径" prop="idCardFrontImagePath"> <el-form-item label="身份证正面照" prop="idCardFrontImagePath">
<el-input v-model="form.idCardFrontImagePath" placeholder="请输入身份证正面照存储路径" /> <el-input v-model="form.idCardFrontImagePath" placeholder="请输入身份证正面照" />
</el-form-item> </el-form-item>
<el-form-item label="身份证反面照存储路径" prop="idCardBackImagePath"> <el-form-item label="身份证反面照" prop="idCardBackImagePath">
<el-input v-model="form.idCardBackImagePath" placeholder="请输入身份证反面照存储路径" /> <el-input v-model="form.idCardBackImagePath" placeholder="请输入身份证反面照" />
</el-form-item> </el-form-item>
<el-form-item label="手持身份证照片存储路径" prop="userWithIdCardImagePath"> <el-form-item label="手持身份证照" prop="userWithIdCardImagePath">
<el-input v-model="form.userWithIdCardImagePath" placeholder="请输入手持身份证照片存储路径" /> <el-input v-model="form.userWithIdCardImagePath" placeholder="请输入手持身份证照" />
</el-form-item> </el-form-item>
<el-form-item label="生物识别信息" prop="biometrics"> <el-form-item label="生物识别信息" prop="biometrics">
<el-input v-model="form.biometrics" placeholder="请输入生物识别信息" /> <el-input v-model="form.biometrics" placeholder="请输入生物识别信息" />
@ -275,13 +235,13 @@
placeholder="请选择出生日期"> placeholder="请选择出生日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="身份证正面照存储路径:"> <el-form-item label="身份证正面照:">
{{form.idCardFrontImagePath}} {{form.idCardFrontImagePath}}
</el-form-item> </el-form-item>
<el-form-item label="身份证反面照存储路径:"> <el-form-item label="身份证反面照:">
{{form.idCardBackImagePath}} {{form.idCardBackImagePath}}
</el-form-item> </el-form-item>
<el-form-item label="手持身份证照片存储路径:"> <el-form-item label="手持身份证照:">
{{form.userWithIdCardImagePath}} {{form.userWithIdCardImagePath}}
</el-form-item> </el-form-item>
<el-form-item label="生物识别信息:"> <el-form-item label="生物识别信息:">
@ -357,35 +317,20 @@ export default {
form: {}, form: {},
// //
rules: { rules: {
id: [
{ required: true, message: "不能为空", trigger: "blur" }
],
userId: [
{ required: true, message: "用户关联ID不能为空", trigger: "blur" }
],
fullName: [
{ required: true, message: "姓名不能为空", trigger: "blur" }
],
idCardNumber: [ idCardNumber: [
{ required: true, message: "身份证号不能为空", trigger: "blur" } { required: true, message: "身份证号不能为空", trigger: "blur" }
], ],
gender: [
{ required: true, message: "性别不能为空", trigger: "blur" }
],
nationality: [ nationality: [
{ required: true, message: "国籍简码不能为空", trigger: "blur" } { required: true, message: "国籍简码不能为空", trigger: "blur" }
], ],
birthDate: [
{ required: true, message: "出生日期不能为空", trigger: "blur" }
],
idCardFrontImagePath: [ idCardFrontImagePath: [
{ required: true, message: "身份证正面照存储路径不能为空", trigger: "blur" } { required: true, message: "身份证正面照不能为空", trigger: "blur" }
], ],
idCardBackImagePath: [ idCardBackImagePath: [
{ required: true, message: "身份证反面照存储路径不能为空", trigger: "blur" } { required: true, message: "身份证反面照不能为空", trigger: "blur" }
], ],
userWithIdCardImagePath: [ userWithIdCardImagePath: [
{ required: true, message: "手持身份证照片存储路径不能为空", trigger: "blur" } { required: true, message: "手持身份证照不能为空", trigger: "blur" }
], ],
biometrics: [ biometrics: [
{ required: true, message: "生物识别信息不能为空", trigger: "blur" } { required: true, message: "生物识别信息不能为空", trigger: "blur" }

Loading…
Cancel
Save