diff --git a/src/api/bst/account.js b/src/api/bst/account.js
new file mode 100644
index 0000000..c96a95a
--- /dev/null
+++ b/src/api/bst/account.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询收款账户列表
+export function listAccount(query) {
+ return request({
+ url: '/bst/account/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询收款账户详细
+export function getAccount(id) {
+ return request({
+ url: '/bst/account/' + id,
+ method: 'get'
+ })
+}
+
+// 新增收款账户
+export function addAccount(data) {
+ return request({
+ url: '/bst/account',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改收款账户
+export function updateAccount(data) {
+ return request({
+ url: '/bst/account',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除收款账户
+export function delAccount(id) {
+ return request({
+ url: '/bst/account/' + id,
+ method: 'delete'
+ })
+}
diff --git a/src/api/bst/withdraw.js b/src/api/bst/withdraw.js
new file mode 100644
index 0000000..702f6c8
--- /dev/null
+++ b/src/api/bst/withdraw.js
@@ -0,0 +1,65 @@
+import request from '@/utils/request'
+
+// 查询提现列表
+export function listWithdraw(query) {
+ return request({
+ url: '/bst/withdraw/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询提现详细
+export function getWithdraw(id) {
+ return request({
+ url: '/bst/withdraw/' + id,
+ method: 'get'
+ })
+}
+
+// 新增提现
+export function addWithdraw(data) {
+ return request({
+ url: '/bst/withdraw',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改提现
+export function updateWithdraw(data) {
+ return request({
+ url: '/bst/withdraw',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除提现
+export function delWithdraw(id) {
+ return request({
+ url: '/bst/withdraw/' + id,
+ method: 'delete'
+ })
+}
+
+// 提现审核
+export function verifyWithdraw(data) {
+ return request({
+ url: '/bst/withdraw/verify',
+ method: 'put',
+ data: data
+ })
+}
+
+// 查询提现服务费
+export function calcWithdrawAmount(amount, userId) {
+ return request({
+ url: '/bst/withdraw/calcAmount',
+ method: 'get',
+ params: {
+ amount,
+ userId
+ }
+ })
+}
diff --git a/src/api/dashboard/dashboard.js b/src/api/dashboard/dashboard.js
index 7c76a38..1a93c4e 100644
--- a/src/api/dashboard/dashboard.js
+++ b/src/api/dashboard/dashboard.js
@@ -12,3 +12,16 @@ export function getStat(query) {
params: query
})
}
+
+/**
+ * 获取每日统计数据
+ * @param {Object} query 查询参数
+ * @returns {Promise} 返回每日统计数据
+ */
+export function getDailyAmount(query) {
+ return request({
+ url: '/dashboard/dailyAmount',
+ method: 'get',
+ params: query
+ })
+}
diff --git a/src/components/BaseRemoteSelect/index.vue b/src/components/BaseRemoteSelect/index.vue
index 88e55af..e356c72 100644
--- a/src/components/BaseRemoteSelect/index.vue
+++ b/src/components/BaseRemoteSelect/index.vue
@@ -1,7 +1,7 @@
-
-
+
+
+
@@ -65,7 +67,7 @@ export default {
// 优先使用API加载数据
if (this.loadApi) {
this.loadData();
- }
+ }
// 其次使用初始化选项
else if (!isEmpty(this.initOptions)) {
this.options = this.initOptions;
@@ -115,11 +117,11 @@ export default {
},
// 获取选项
getOptions() {
- console.log("getOptions", this.beforeGetOptions());
if (!this.beforeGetOptions()) {
return;
}
this.loading = true;
+ console.log("getOptions", this.query);
Object.assign(this.queryParams, this.query);
this.listApi(this.queryParams).then(res => {
this.options = res.rows;
@@ -140,8 +142,8 @@ export default {
justify-content: flex-end;
align-items: center;
line-height: 1em;
- text-align: center;
- color: #8492a6;
- font-size: 13px;
+ text-align: center;
+ color: #8492a6;
+ font-size: 13px;
}
-
\ No newline at end of file
+
diff --git a/src/components/Business/Account/AccountRemoteSelect.vue b/src/components/Business/Account/AccountRemoteSelect.vue
new file mode 100644
index 0000000..a89fb5e
--- /dev/null
+++ b/src/components/Business/Account/AccountRemoteSelect.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/Business/User/UserDialog.vue b/src/components/Business/User/UserDialog.vue
index da3a477..d79af69 100644
--- a/src/components/Business/User/UserDialog.vue
+++ b/src/components/Business/User/UserDialog.vue
@@ -22,7 +22,7 @@
@keyup.enter.native="handleQuery"
/>
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+ {{row.nickName | dv}}
+
+
{{ row.point | fix2 | dv }} %
@@ -123,7 +106,7 @@ export default {
default: null,
},
// 列表API
- listApi: {
+ listApi: {
type: Function,
default: listUser
},
@@ -164,14 +147,12 @@ export default {
// 列信息
columns: [
{key: 'userId', visible: false, label: 'ID', minWidth: null, sortable: true, overflow: false, align: 'center', width: "80"},
- {key: 'nickName', visible: true, label: '昵称', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
- {key: 'phonenumber', visible: true, label: '手机', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
+ {key: 'nickName', visible: true, label: '昵称', minWidth: "200", sortable: true, overflow: false, align: 'left', width: null},
+ {key: 'userName', visible: true, label: '账号', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'roles', visible: true, label: '角色', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
{key: 'point', visible: true, label: '分成比例', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
- {key: 'status', visible: true, label: '状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
- {key: 'email', visible: true, label: '邮箱', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
- {key: 'isReal', visible: true, label: '实名', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
- {key: 'createTime', visible: true, label: '创建时间', minWidth: null, sortable: true, overflow: false, align: 'center', width: "100"},
+ // {key: 'status', visible: true, label: '状态', minWidth: null, sortable: true, overflow: false, align: 'center', width: null},
+ // {key: 'isReal', visible: true, label: '实名', minWidth: null, sortable: true, overflow: false, align: 'center', width: null}
],
}
},
diff --git a/src/components/CheckDialog/index.vue b/src/components/CheckDialog/index.vue
index 51ebfc5..7d4c712 100644
--- a/src/components/CheckDialog/index.vue
+++ b/src/components/CheckDialog/index.vue
@@ -2,7 +2,7 @@
\ No newline at end of file
+
diff --git a/src/main.js b/src/main.js
index 7b61d10..0c407f5 100644
--- a/src/main.js
+++ b/src/main.js
@@ -17,7 +17,7 @@ import store from './store';
import { getConfigKey } from '@/api/system/config';
import { getDicts } from '@/api/system/dict/data';
-import { checkPermi, checkRole } from '@/utils/permission';
+import { checkPermi, checkRole, isSysAdmin } from '@/utils/permission';
import { addDateRange, handleTree, parseTime, resetForm, selectDictLabel, selectDictLabels } from '@/utils/ruoyi';
import './assets/icons'; // icon
import './permission'; // permission control
@@ -58,6 +58,7 @@ Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.checkPermi = checkPermi
Vue.prototype.checkRole = checkRole
+Vue.prototype.isSysAdmin = isSysAdmin
// 全局组件挂载
Vue.component('DictTag', DictTag)
diff --git a/src/utils/enums.js b/src/utils/enums.js
index d93b167..da70c12 100644
--- a/src/utils/enums.js
+++ b/src/utils/enums.js
@@ -208,3 +208,26 @@ export const StatKeys = {
AREA_COUNT: "area_count", // 运营区数量
MODEL_COUNT: "model_count", // 型号数量
}
+
+// 收款账户类型
+export const AccountType = {
+ WX: "WX", // 线下微信
+ ALI: "ALI", // 线下支付宝
+ BANK: "BANK", // 线下银行卡
+ QR: "QR", // 线下收款二维码
+}
+
+// 提现状态
+// 提现状态
+export const WithdrawStatus = {
+ WAIT_VERIFY: "WAIT_VERIFY", // 审核中
+ PAYING: "PAYING", // 打款中
+ SUCCESS: "SUCCESS", // 已打款
+ REJECTED: "REJECTED", // 驳回
+ FAILED: "FAILED", // 打款失败
+
+ // 可审核的状态列表
+ canVerify() {
+ return [this.WAIT_VERIFY];
+ }
+}
diff --git a/src/utils/permission.js b/src/utils/permission.js
index 189a716..6e80255 100644
--- a/src/utils/permission.js
+++ b/src/utils/permission.js
@@ -1,4 +1,4 @@
-import store from '@/store'
+import store from '@/store';
/**
* 字符权限校验
@@ -44,4 +44,11 @@ export function checkRole(value) {
console.error(`need roles! Like checkRole="['admin','editor']"`)
return false
}
-}
\ No newline at end of file
+}
+
+/**
+ * 是否系统管理员
+ */
+export function isSysAdmin() {
+ return checkRole(['sysAdmin'])
+}
diff --git a/src/views/bst/account/components/AccountEditDialog.vue b/src/views/bst/account/components/AccountEditDialog.vue
new file mode 100644
index 0000000..8cdf62d
--- /dev/null
+++ b/src/views/bst/account/components/AccountEditDialog.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/bst/account/index.vue b/src/views/bst/account/index.vue
new file mode 100644
index 0000000..f805eeb
--- /dev/null
+++ b/src/views/bst/account/index.vue
@@ -0,0 +1,317 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 新增
+
+
+ 删除
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+ {{d.row[column.key]}}
+
+
+
+
+
+
+
+
+
+ {{d.row[column.key]}}
+
+
+
+ {{d.row[column.key]}}
+
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/bst/index/components/OrderDailyStat.vue b/src/views/bst/index/components/OrderDailyStat.vue
index 6e83123..b617c4a 100644
--- a/src/views/bst/index/components/OrderDailyStat.vue
+++ b/src/views/bst/index/components/OrderDailyStat.vue
@@ -1,35 +1,250 @@
-
-
+
+
+
\ No newline at end of file
+.el-date-picker {
+ margin-bottom: 20px;
+}
+
diff --git a/src/views/bst/index/components/Stat.vue b/src/views/bst/index/components/Stat.vue
index af69456..d9bdebd 100644
--- a/src/views/bst/index/components/Stat.vue
+++ b/src/views/bst/index/components/Stat.vue
@@ -1,48 +1,121 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
-
+
+
+
+
+
+
+
@@ -76,5 +149,7 @@ export default {
\ No newline at end of file
+.stat-col {
+ margin-bottom: 10px;
+}
+
diff --git a/src/views/bst/index/components/TodoList.vue b/src/views/bst/index/components/TodoList.vue
index 6c573fb..652388f 100644
--- a/src/views/bst/index/components/TodoList.vue
+++ b/src/views/bst/index/components/TodoList.vue
@@ -28,6 +28,13 @@
条
+
diff --git a/src/views/bst/index/index.vue b/src/views/bst/index/index.vue
index 319a2d5..40954a3 100644
--- a/src/views/bst/index/index.vue
+++ b/src/views/bst/index/index.vue
@@ -4,25 +4,21 @@
-
+
-
+
-
+
-
-
- 待实现
-
-
+
待实现
@@ -107,4 +103,4 @@ export default {
}
}
}
-
\ No newline at end of file
+
diff --git a/src/views/bst/withdraw/components/WithdrawAddDialog.vue b/src/views/bst/withdraw/components/WithdrawAddDialog.vue
new file mode 100644
index 0000000..acbe381
--- /dev/null
+++ b/src/views/bst/withdraw/components/WithdrawAddDialog.vue
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+ 元
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/bst/withdraw/components/WithdrawVerifyDialog.vue b/src/views/bst/withdraw/components/WithdrawVerifyDialog.vue
new file mode 100644
index 0000000..3309dd2
--- /dev/null
+++ b/src/views/bst/withdraw/components/WithdrawVerifyDialog.vue
@@ -0,0 +1,171 @@
+
+
+
+
+ {{ detail.no }}
+
+
+
+ {{ detail.createTime | dv}}
+ {{ detail.userName | dv}}
+ {{ detail.amount | fix2 | dv }} 元
+ {{ detail.arrivalAmount | fix2 | dv }} 元
+
+ {{ detail.serviceCharge | fix2 | dv }} 元
+
+ ({{ detail.servicePoint | fix2 | dv }} %)
+
+ {{ detail.accountNo | dv}}
+ {{ detail.accountName | dv}}
+ {{ detail.accountMobile | dv}}
+ {{ detail.accountIdCard | dv}}
+ {{ detail.bankName | dv}}
+ {{ detail.bankCardName | dv}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{detail.verifyTime | dv}}
+
+
+ {{detail.verifyUserName | dv}}
+
+
+ {{ detail.verifyRemark | dv}}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/bst/withdraw/index.vue b/src/views/bst/withdraw/index.vue
new file mode 100644
index 0000000..53df4e3
--- /dev/null
+++ b/src/views/bst/withdraw/index.vue
@@ -0,0 +1,338 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 申请
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+ {{d.row[column.key]}}
+
+
+ {{d.row.no | dv}}
+
+
+
+
+ {{d.row.serviceCharge | fix2 | dv}} 元
+
+ ({{d.row.servicePoint | fix2 | dv}} %)
+
+
+ {{d.row[column.key] | fix2 | dv}} 元
+
+
+ {{d.row[column.key]}}
+
+
+
+
+
+
+ 详情 / 审核
+
+
+
+
+
+
+
+
+
+
+
+
+