wangfukang 2 weeks ago
parent
commit
fef9ee2c3f
  1. 6
      public/index.html
  2. 6
      src/api/app.js
  3. 2
      src/api/planet.js
  4. 172
      src/views/app/bill/current/current.vue
  5. 511
      src/views/app/bill/historical/historical.vue
  6. 485
      src/views/app/bill/success/success.vue
  7. 10
      src/views/app/business/bus/bus.vue
  8. 5
      src/views/app/business/courier/courier.vue
  9. 52
      src/views/app/business/logistics/logistics.vue
  10. 145
      src/views/app/business/luckey/luckey.vue
  11. 36
      src/views/app/shop/shop.vue
  12. 36
      src/views/app/shopArea/shopArea.vue
  13. 7
      src/views/sys/order-manage/logisticsAddress.vue
  14. 4
      vue.config.js

6
public/index.html

@ -6,9 +6,9 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> -->
<link rel="icon" href="<%= BASE_URL %>logo.png">
<title>大红门物业</title>
<meta name="keywords" content="大红门物业">
<meta name="description" content="大红门物业">
<title>半径里</title>
<meta name="keywords" content="半径里">
<meta name="description" content="半径里">
<script src="<%= BASE_URL %>config.js" type="text/javascript"></script>
<!-- 部署CDN优化 -->

6
src/api/app.js

@ -193,6 +193,12 @@ export const getCouponData = (params) => {
export const getBillList = (params) => {
return postBodyRequest('/mall/admin/settlement/summaryList', params)
}
export const getBillDateSummaryList = (params) => {
return postBodyRequest('/mall/admin/settlement/dateSummaryList', params)
}
export const getBillDetailList = (params) => {
return postBodyRequest('/mall/admin/settlement/detailList', params)
}
export const settlementConfirm = (params) => {
return postBodyRequest('/mall/admin/settlement/confirmByShop', params)
}

2
src/api/planet.js

@ -79,4 +79,4 @@ export const planetAdventureEventPage = (params) => getRequest(`${PREFIX}/advent
export const planetAdventureEventSave = (params) => postBodyRequest(`${PREFIX}/adventure/event/save`, params);
export const planetAdventureEventDelete = (id) => postRequest(`${PREFIX}/adventure/event/delete`, { id });
export const planetAdventureRankPage = (params) => getRequest(`${PREFIX}/adventure/rank/page`, params);
export const planetAdventureSessionPage = (params) => getRequest(`${PREFIX}/adventure/session/page`, params);
export const planetAdventureRewardPage = (params) => postBodyRequest('/mall/coupon/selectRewardByRegionId', params);

172
src/views/app/bill/current/current.vue

@ -11,13 +11,13 @@
<DatePicker @on-change="changeDate" type="date" placeholder="请选择时间" style="width: 200px" />
</FormItem>
<FormItem style="margin-left: -35px" class="br">
<Button @click="getDataList" type="primary" icon="ios-search">搜索</Button>
<Button @click="handleSearch" type="primary" icon="ios-search">搜索</Button>
</FormItem>
</Form>
</Row>
<Row align="middle" justify="space-between" class="operation">
<div>
<Button @click="oneSettlement" icon="md-folder-open">结算</Button>
<Button @click="oneSettlement" icon="md-folder-open" :loading="settlementLoading" :disabled="settlementLoading">结算</Button>
</div>
</Row>
<Alert show-icon v-show="openTip">
@ -27,11 +27,23 @@
</Alert>
<Table :loading="loading" border :columns="columns" :data="data"
@on-selection-change="allSelect" ref="table"></Table>
<!-- <Row type="flex" justify="end" class="page">
<Row type="flex" justify="end" class="page">
<Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize"
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
size="small" show-total show-elevator show-sizer></Page>
</Row> -->
</Row>
<Modal title="商家结算明细" v-model="detailVisible" :mask-closable="false" :width="1500">
<Table :loading="detailLoading" border :columns="detailColumns" :data="detailData"></Table>
<div slot="footer">
<Button type="text" @click="detailVisible = false">关闭</Button>
</div>
</Modal>
<Modal title="订单详情" v-model="orderDetailVisible" :mask-closable="false" :scrollabele="true" :width="1000">
<logistics-address v-if="orderDetailVisible" @closePage="closeOrderDetail" ref="orderDetailDialog"></logistics-address>
<div slot="footer" v-show="orderDetailVisible">
<Button type="text" @click="orderDetailVisible = false">关闭</Button>
</div>
</Modal>
</Card>
</div>
</template>
@ -39,11 +51,15 @@
<script>
import {
getBillList,
getBillDetailList,
settlementConfirm
} from "@/api/app";
import logisticsAddress from "@/views/sys/order-manage/logisticsAddress";
export default {
name: "logiticsCompany",
components: {},
components: {
logisticsAddress,
},
data() {
return {
dictData: [{
@ -66,7 +82,10 @@
selectList: [],
searchForm: {
regionId:JSON.parse(this.getStore("user")).departmentId,
settlementDate:''
settlementDate:'',
status: 0,
pageNumber: 1,
pageSize: 10
},
form: {},
columns: [{
@ -84,32 +103,52 @@
{
title: "账单周期",
key: "billTime",
minWidth: 100,
width: 120,
},
{
title: "店铺名称",
key: "shopName",
minWidth: 100,
minWidth: 160,
},
{
title: "订单数量",
title: "记录数",
key: "recordCount",
minWidth: 150,
width: 90,
},
{
title: "正向记录",
key: "positiveCount",
width: 90,
},
{
title: "商品原价",
title: "扣款记录",
key: "negativeCount",
width: 90,
},
{
title: "结算基数",
key: "totalBaseAmount",
width: 100,
width: 110,
},
{
title: "商家营收",
key: "totalSettlementAmount",
width: 150,
title: "正向结算",
key: "positiveSettlementAmount",
width: 110,
},
{
title: "平台营收",
title: "退款/售后扣款",
key: "negativeSettlementAmount",
width: 130,
},
{
title: "平台抽佣",
key: "totalCommissionAmount",
width: 150,
width: 110,
},
{
title: "应结算金额",
key: "totalSettlementAmount",
width: 120,
},
{
title: "操作",
@ -133,9 +172,34 @@
},
},
],
detailColumns: [
{ title: "订单号", key: "orderNumber", minWidth: 140 },
{ title: "订单ID", key: "orderId", minWidth: 170 },
{ title: "类型", key: "type", width: 100, render: (h, params) => h("span", params.row.type == 2 ? "退款/售后扣款" : "正常结算") },
{ title: "结算基数", key: "baseAmount", width: 110 },
{ title: "抽佣比例%", key: "commissionRate", width: 110 },
{ title: "平台抽佣", key: "commissionAmount", width: 110 },
{ title: "商家结算", key: "settlementAmount", width: 110 },
{ title: "退款/售后ID", key: "refundId", minWidth: 170 },
{ title: "生成时间", key: "createTime", minWidth: 170, render: (h, params) => h("span", this.formatDateTime(params.row.createTime)) },
{ title: "支付时间", key: "payTime", minWidth: 170, render: (h, params) => h("span", this.formatDateTime(params.row.payTime)) },
{
title: "操作",
key: "action",
width: 100,
align: "center",
fixed: "right",
render: (h, params) => h("a", { on: { click: () => this.showOrderDetail(params.row) } }, "查看详情")
}
],
data: [],
detailData: [],
total: 0,
Visiable: false,
detailVisible: false,
orderDetailVisible: false,
detailLoading: false,
settlementLoading: false,
};
},
methods: {
@ -146,10 +210,23 @@
changeDate(v){
this.searchForm.settlementDate = v
},
handleSearch() {
this.searchForm.pageNumber = 1;
this.getDataList();
},
formatDateTime(isoString) {
if (!isoString) return ''
const date = new Date(isoString)
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
const hours = String(date.getHours()).padStart(2, '0')
const minutes = String(date.getMinutes()).padStart(2, '0')
const seconds = String(date.getSeconds()).padStart(2, '0')
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
},
getTime() {
const date = new Date();
// 24 * 60 * 60 * 1000 setDate
date.setDate(date.getDate() - 1);
const year = date.getFullYear();
const month = String(date.getMonth() + 1).padStart(2, '0');
const day = String(date.getDate()).padStart(2, '0');
@ -159,6 +236,11 @@
this.selectList = v
},
oneSettlement(){
if (this.settlementLoading) return
if (this.selectList.length === 0) {
this.$Message.warning("请选择要结算的商家");
return
}
let data = {
shopIds:[],
settlementDate:this.searchForm.settlementDate,
@ -167,11 +249,17 @@
for(let i=0;i<this.selectList.length;i++){
data.shopIds.push(this.selectList[i].shopId)
}
this.settlementLoading = true
settlementConfirm(data).then((res) => {
this.loading = false;
if (res.success) {
this.$Message.success("结算成功");
const settledShopIds = data.shopIds;
this.data = this.data.filter(item => settledShopIds.indexOf(item.shopId) == -1);
this.total = Math.max(this.total - settledShopIds.length, 0);
this.clearSelectAll();
}
}).finally(() => {
this.settlementLoading = false
});
},
clearSelectAll(){
@ -183,9 +271,49 @@
getBillList(this.searchForm).then((res) => {
this.loading = false;
if (res.success) {
this.data = res.result
this.data.billTime = this.searchForm.settlementDate
this.data = (res.result && res.result.records) || res.result || []
this.total = (res.result && res.result.total) || this.data.length
}
});
},
changePage(v) {
this.searchForm.pageNumber = v;
this.getDataList();
},
changePageSize(v) {
this.searchForm.pageNumber = 1;
this.searchForm.pageSize = v;
this.getDataList();
},
stationBinding(row) {
this.detailVisible = true
this.detailLoading = true
getBillDetailList({
regionId: this.searchForm.regionId,
settlementDate: this.searchForm.settlementDate,
shopId: row.shopId,
status: 0
}).then((res) => {
this.detailLoading = false
if (res.success) {
this.detailData = res.result || []
}
}).catch(() => {
this.detailLoading = false
})
},
closeOrderDetail(){
this.orderDetailVisible = false;
},
showOrderDetail(row) {
let data = {
id: row.orderId,
shopId: row.shopId || "",
status: "",
};
this.orderDetailVisible = true;
this.$nextTick(() => {
this.$refs.orderDetailDialog.initRecharge(data);
});
}
},

511
src/views/app/bill/historical/historical.vue

@ -5,86 +5,55 @@
<template>
<div class="search">
<Card>
<Row v-show="openSearch" @keydown.enter.native="handleSearch">
<Form ref="searchForm" :model="searchForm" inline :label-width="100">
<FormItem label="状态" prop="orderId">
<Select ref="dep" @on-change="checkStatus" clearable="true">
<Option v-for="(item, i) in dictData" :key="i" :value="item.value">{{
item.title
}}</Option>
</Select>
<Row>
<Form inline :label-width="90">
<FormItem label="开始日期">
<DatePicker @on-change="v => searchForm.startDate = v" type="date" placeholder="开始日期" style="width: 160px" />
</FormItem>
<FormItem label="店铺名称" prop="shopName">
<Input type="text" v-model="searchForm.shopName" clearable placeholder="请输入公司名称"
style="width: 200px" />
<FormItem label="结束日期">
<DatePicker @on-change="v => searchForm.endDate = v" type="date" placeholder="结束日期" style="width: 160px" />
</FormItem>
<FormItem style="margin-left: -35px" class="br">
<FormItem>
<Button @click="handleSearch" type="primary" icon="ios-search">搜索</Button>
<Button @click="handleReset">重置</Button>
<a class="drop-down" @click="dropDown">
{{ dropDownContent }}
<Icon :type="dropDownIcon"></Icon>
</a>
</FormItem>
</Form>
</Row>
<Table :loading="loading" border :columns="columns" :data="data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize"
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
size="small" show-total show-elevator show-sizer></Page>
</Row>
</Card>
<Modal title="待结算商家汇总" v-model="shopVisible" :mask-closable="false" :width="1100">
<Row align="middle" justify="space-between" class="operation">
<div>
<Button @click="add" type="primary" icon="md-briefcase">一键结算</Button>
<Button @click="delAll" icon="ios-checkbox-outline">确认</Button>
<Button @click="delAll" icon="md-folder-open">结算</Button>
</div>
<div class="icons">
<Tooltip content="刷新" placement="top" transfer>
<Icon type="md-refresh" size="18" class="item" @click="getDataList" />
</Tooltip>
<Tooltip :content="openSearch ? '关闭搜索' : '开启搜索'" placement="top" transfer>
<Icon type="ios-search" size="18" class="item tip" @click="openSearch = !openSearch" />
</Tooltip>
<Tooltip :content="openTip ? '关闭提示' : '开启提示'" placement="top" transfer>
<Icon type="md-bulb" size="18" class="item tip" @click="openTip = !openTip" />
</Tooltip>
<Tooltip content="表格密度" placement="top" transfer>
<Dropdown @on-click="changeTableSize" trigger="click">
<Icon type="md-list" size="18" class="item" />
<DropdownMenu slot="list">
<DropdownItem :selected="tableSize == 'default'" name="default">默认</DropdownItem>
<DropdownItem :selected="tableSize == 'large'" name="large">宽松</DropdownItem>
<DropdownItem :selected="tableSize == 'small'" name="small">紧密</DropdownItem>
</DropdownMenu>
</Dropdown>
</Tooltip>
<Button @click="settleSelected" type="primary" icon="md-folder-open" :loading="settlementLoading" :disabled="settlementLoading">结算选中商家</Button>
</div>
<div>账单日期{{ currentDate }}</div>
</Row>
<Alert show-icon v-show="openTip">
已选择
<span class="select-count">{{ selectList.length }}</span>
<a class="select-clear" @click="clearSelectAll">清空</a>
</Alert>
<Table :loading="loading" border :columns="columns" :data="data" :size="tableSize" sortable="custom"
@on-sort-change="changeSort" @on-selection-change="showSelect" ref="table"></Table>
<Table :loading="shopLoading" border :columns="shopColumns" :data="shopData" @on-selection-change="rows => selectList = rows" ref="shopTable"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize"
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
<Page :current="shopSearchForm.pageNumber" :total="shopTotal" :page-size="shopSearchForm.pageSize"
@on-change="changeShopPage" @on-page-size-change="changeShopPageSize" :page-size-opts="[10, 20, 50]"
size="small" show-total show-elevator show-sizer></Page>
</Row>
</Card>
<Modal :title="线路维护" v-model="Visiable" :mask-closable="false" :scrollabele="true" :width="1000">
<logistics-address v-if="Visiable" ref="dialog"></logistics-address>
<div slot="footer" v-show=Visiable>
<Button type="text" @click="Visiable = false">关闭</Button>
<div slot="footer">
<Button type="text" @click="shopVisible = false">关闭</Button>
</div>
</Modal>
<Modal :title="线路绑定" v-model="bindingVisiable" :mask-closable="false" :scrollabele="true" :width="1000">
<line-binding v-if="bindingVisiable" ref="bindinglog"></line-binding>
<div slot="footer" v-show=bindingVisiable>
<Button type="text" @click="bindingVisiable = false">关闭</Button>
<Modal title="结算记录明细" v-model="detailVisible" :mask-closable="false" :width="1500">
<Table :loading="detailLoading" border :columns="detailColumns" :data="detailData"></Table>
<div slot="footer">
<Button type="text" @click="detailVisible = false">关闭</Button>
</div>
</Modal>
<Modal :title="充值记录明细" v-model="rechargeVisiable" :mask-closable="false" :scrollabele="true" :width="1000">
<recharge-one v-if="rechargeVisiable" ref="rechargelog"></recharge-one>
<div slot="footer" v-show=rechargeVisiable>
<Button type="text" @click="rechargeVisiable = false">关闭</Button>
<Modal title="订单详情" v-model="orderDetailVisible" :mask-closable="false" :scrollabele="true" :width="1000">
<logistics-address v-if="orderDetailVisible" @closePage="closeOrderDetail" ref="orderDetailDialog"></logistics-address>
<div slot="footer" v-show="orderDetailVisible">
<Button type="text" @click="orderDetailVisible = false">关闭</Button>
</div>
</Modal>
</div>
@ -92,269 +61,227 @@
<script>
import {
getAllLogiticsCompanyData,
deleteLogiticsCompany,
onLineCompany,
offLineCompany
getBillDateSummaryList,
getBillList,
getBillDetailList,
settlementConfirm
} from "@/api/app";
import {
shortcuts
} from "@/libs/shortcuts";
import excel from "@/libs/excel";
import {
offLineWorker,
onLineWorker
} from "@/api";
import logisticsAddress from "@/views/sys/order-manage/logisticsAddress";
export default {
name: "logiticsCompany",
components: {},
name: "billHistorical",
components: {
logisticsAddress,
},
data() {
return {
dictData: [{
title: "全部",
value: ""
}, {
title: "待确认",
value: 0
}, {
title: "待结算",
value: 1
}, {
title: "已打款",
value: 2
}],
tableSize: "default",
message: "",
selectIndex: "",
currentRow: {},
height: 510,
showCompany: false,
bindingVisiable: false,
showType: "0",
openSearch: true,
openTip: true,
loading: true,
reading: false,
loadingExport: true,
exportModalVisible: false,
importModalVisible: false,
deployModalVisible: false,
uploadfile: {
name: "",
},
drop: false,
loading: false,
shopLoading: false,
detailLoading: false,
settlementLoading: false,
shopVisible: false,
detailVisible: false,
orderDetailVisible: false,
currentDate: "",
selectList: [],
searchForm: {
id: "",
shopName: "",
contacts: "",
mobile: "",
pageNumber: 1,
pageSize: 10,
sort: "createTime",
order: "desc",
regionId: JSON.parse(this.getStore("user")).departmentId,
status: 0,
startDate: "",
endDate: "",
signCompany: "0",
},
selectDate: null,
options: {
shortcuts: shortcuts,
},
form: {},
columns: [{
type: "selection",
width: 60,
align: "center",
fixed: "left",
pageNumber: 1,
pageSize: 10
},
shopSearchForm: {
pageNumber: 1,
pageSize: 10
},
columns: [
{ type: "index", width: 60, align: "center" },
{ title: "账单日期", key: "billTime", width: 130 },
{ title: "商家数", key: "shopCount", width: 90 },
{ title: "记录数", key: "recordCount", width: 90 },
{ title: "结算基数", key: "totalBaseAmount", width: 120 },
{ title: "正向结算", key: "positiveSettlementAmount", width: 120 },
{ title: "退款/售后扣款", key: "negativeSettlementAmount", width: 140 },
{ title: "平台抽佣", key: "totalCommissionAmount", width: 120 },
{ title: "待结算金额", key: "totalSettlementAmount", width: 130 },
{
type: "index",
width: 60,
title: "操作",
key: "action",
width: 120,
align: "center",
fixed: "left",
},
{
title: "账单周期",
key: "shopName",
minWidth: 100,
sortable: true,
fixed: "left",
},
{
title: "店铺名称",
key: "shopName",
minWidth: 100,
sortable: true,
fixed: "left",
},
{
title: "订单数量",
key: "companyTel",
minWidth: 150,
sortable: true,
},
{
title: "配送费",
key: "companyEmail",
minWidth: 250,
},
render: (h, params) => h("a", { on: { click: () => this.openShopSummary(params.row) } }, "查看")
}
],
shopColumns: [
{ type: "selection", width: 60, align: "center" },
{ title: "店铺名称", key: "shopName", minWidth: 160 },
{ title: "记录数", key: "recordCount", width: 90 },
{ title: "正向记录", key: "positiveCount", width: 90 },
{ title: "扣款记录", key: "negativeCount", width: 90 },
{ title: "结算基数", key: "totalBaseAmount", width: 110 },
{ title: "正向结算", key: "positiveSettlementAmount", width: 110 },
{ title: "退款/售后扣款", key: "negativeSettlementAmount", width: 130 },
{ title: "平台抽佣", key: "totalCommissionAmount", width: 110 },
{ title: "应结算金额", key: "totalSettlementAmount", width: 120 },
{
title: "商品原价",
key: "contacts",
title: "操作",
key: "action",
width: 100,
},
{
title: "餐盒费",
key: "mobile",
width: 150,
},
{
title: "账户余额支付金额",
key: "mobile",
width: 150,
},
{
title: "商家实收总金额",
key: "mobile",
width: 150,
},
{
title: "活动金额",
key: "mobile",
width: 150,
},
{
title: "抵用券金额",
key: "mobile",
width: 150,
},
{
title: "平台补贴",
key: "mobile",
width: 150,
},
{
title: "商品平台抽成",
key: "mobile",
width: 150,
},
{
title: "商家补贴",
key: "mobile",
width: 150,
},
{
title: "商品商家抽成",
key: "mobile",
width: 150,
},
{
title: "商家营收",
key: "mobile",
width: 150,
},
{
title: "平台营收",
key: "mobile",
width: 150,
},
{
title: "本期期初",
key: "mobile",
width: 150,
},
{
title: "实际打款金额",
key: "mobile",
width: 150,
},
{
title: "账单状态",
key: "mobile",
width: 150,
},
align: "center",
render: (h, params) => h("a", { on: { click: () => this.openDetail(params.row) } }, "明细")
}
],
detailColumns: [
{ title: "订单号", key: "orderNumber", minWidth: 140 },
{ title: "订单ID", key: "orderId", minWidth: 170 },
{ title: "类型", key: "type", width: 100, render: (h, params) => h("span", params.row.type == 2 ? "退款/售后扣款" : "正常结算") },
{ title: "结算基数", key: "baseAmount", width: 110 },
{ title: "抽佣比例%", key: "commissionRate", width: 110 },
{ title: "平台抽佣", key: "commissionAmount", width: 110 },
{ title: "商家结算", key: "settlementAmount", width: 110 },
{ title: "退款/售后ID", key: "refundId", minWidth: 170 },
{ title: "生成时间", key: "createTime", minWidth: 170, render: (h, params) => h("span", this.formatDateTime(params.row.createTime)) },
{ title: "支付时间", key: "payTime", minWidth: 170, render: (h, params) => h("span", this.formatDateTime(params.row.payTime)) },
{
title: "操作",
key: "action",
width: 200,
width: 100,
align: "center",
fixed: "right",
render: (h, params) => {
return h("div", [h(
"a", {
on: {
click: () => {
this.findAllRecord(params.row);
},
},
},
"确认"
),
h("Divider", {
props: {
type: "vertical",
},
}),
h(
"a", {
on: {
click: () => {
this.stationBinding(params.row);
},
},
},
"详情"
),
h("Divider", {
props: {
type: "vertical",
},
}),
h(
"a", {
on: {
click: () => {
this.edit(params.row);
},
},
},
"修改"
),
]);
},
},
render: (h, params) => h("a", { on: { click: () => this.showOrderDetail(params.row) } }, "查看详情")
}
],
chooseColumns: [],
filename: "公司数据",
exportTitle: "确认导出",
exportType: "",
data: [],
exportData: [],
shopData: [],
detailData: [],
total: 0,
Visiable: false,
rechargeVisiable: false,
shopTotal: 0
};
},
methods: {
init() {
// this.getDataList();
this.getDataList();
},
handleSearch() {
this.searchForm.pageNumber = 1;
this.getDataList();
},
formatDateTime(isoString) {
if (!isoString) return ''
const date = new Date(isoString)
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
const hours = String(date.getHours()).padStart(2, '0')
const minutes = String(date.getMinutes()).padStart(2, '0')
const seconds = String(date.getSeconds()).padStart(2, '0')
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
},
getDataList() {
//
this.loading = true;
getBillDateSummaryList(this.searchForm).then(res => {
this.loading = false;
if (res.success) {
this.data = (res.result && res.result.records) || res.result || [];
this.total = (res.result && res.result.total) || this.data.length;
}
}).catch(() => this.loading = false);
},
handleSearch() {
changePage(v) {
this.searchForm.pageNumber = v;
this.getDataList();
},
changePageSize(v) {
this.searchForm.pageNumber = 1;
this.searchForm.pageSize = 10;
this.searchForm.pageSize = v;
this.getDataList();
},
openShopSummary(row) {
this.currentDate = row.billTime;
this.shopVisible = true;
this.selectList = [];
this.shopSearchForm.pageNumber = 1;
this.getShopSummary();
},
getShopSummary() {
this.shopLoading = true;
getBillList({
regionId: this.searchForm.regionId,
settlementDate: this.currentDate,
status: 0,
pageNumber: this.shopSearchForm.pageNumber,
pageSize: this.shopSearchForm.pageSize
}).then(res => {
this.shopLoading = false;
if (res.success) {
this.shopData = (res.result && res.result.records) || res.result || [];
this.shopTotal = (res.result && res.result.total) || this.shopData.length;
}
}).catch(() => this.shopLoading = false);
},
changeShopPage(v) {
this.shopSearchForm.pageNumber = v;
this.getShopSummary();
},
changeShopPageSize(v) {
this.shopSearchForm.pageNumber = 1;
this.shopSearchForm.pageSize = v;
this.getShopSummary();
},
openDetail(row) {
this.detailVisible = true;
this.detailLoading = true;
getBillDetailList({
regionId: this.searchForm.regionId,
settlementDate: this.currentDate,
shopId: row.shopId,
status: 0
}).then(res => {
this.detailLoading = false;
if (res.success) this.detailData = res.result || [];
}).catch(() => this.detailLoading = false);
},
settleSelected() {
if (this.settlementLoading) return;
if (this.selectList.length === 0) {
this.$Message.warning("请选择要结算的商家");
return;
}
this.settlementLoading = true;
settlementConfirm({
shopIds: this.selectList.map(item => item.shopId),
settlementDate: this.currentDate,
regionId: this.searchForm.regionId
}).then(res => {
if (res.success) {
this.$Message.success("结算任务已提交");
this.selectList = [];
this.shopVisible = false;
this.getDataList();
}
}).finally(() => {
this.settlementLoading = false;
});
},
closeOrderDetail(){
this.orderDetailVisible = false;
},
showOrderDetail(row) {
let data = {
id: row.orderId,
shopId: row.shopId || "",
status: "",
};
this.orderDetailVisible = true;
this.$nextTick(() => {
this.$refs.orderDetailDialog.initRecharge(data);
});
}
},
mounted() {
//
this.height = Number(document.documentElement.clientHeight - 230);
this.init();
},
}
};
</script>

485
src/views/app/bill/success/success.vue

@ -5,86 +5,52 @@
<template>
<div class="search">
<Card>
<Row v-show="openSearch" @keydown.enter.native="handleSearch">
<Form ref="searchForm" :model="searchForm" inline :label-width="100">
<FormItem label="状态" prop="orderId">
<Select ref="dep" @on-change="checkStatus" clearable="true">
<Option v-for="(item, i) in dictData" :key="i" :value="item.value">{{
item.title
}}</Option>
</Select>
<Row>
<Form inline :label-width="90">
<FormItem label="开始日期">
<DatePicker @on-change="v => searchForm.startDate = v" type="date" placeholder="开始日期" style="width: 160px" />
</FormItem>
<FormItem label="店铺名称" prop="shopName">
<Input type="text" v-model="searchForm.shopName" clearable placeholder="请输入公司名称"
style="width: 200px" />
<FormItem label="结束日期">
<DatePicker @on-change="v => searchForm.endDate = v" type="date" placeholder="结束日期" style="width: 160px" />
</FormItem>
<FormItem style="margin-left: -35px" class="br">
<FormItem>
<Button @click="handleSearch" type="primary" icon="ios-search">搜索</Button>
<Button @click="handleReset">重置</Button>
<a class="drop-down" @click="dropDown">
{{ dropDownContent }}
<Icon :type="dropDownIcon"></Icon>
</a>
</FormItem>
</Form>
</Row>
<Row align="middle" justify="space-between" class="operation">
<div>
<Button @click="add" type="primary" icon="md-briefcase">一键结算</Button>
<Button @click="delAll" icon="ios-checkbox-outline">确认</Button>
<Button @click="delAll" icon="md-folder-open">结算</Button>
</div>
<div class="icons">
<Tooltip content="刷新" placement="top" transfer>
<Icon type="md-refresh" size="18" class="item" @click="getDataList" />
</Tooltip>
<Tooltip :content="openSearch ? '关闭搜索' : '开启搜索'" placement="top" transfer>
<Icon type="ios-search" size="18" class="item tip" @click="openSearch = !openSearch" />
</Tooltip>
<Tooltip :content="openTip ? '关闭提示' : '开启提示'" placement="top" transfer>
<Icon type="md-bulb" size="18" class="item tip" @click="openTip = !openTip" />
</Tooltip>
<Tooltip content="表格密度" placement="top" transfer>
<Dropdown @on-click="changeTableSize" trigger="click">
<Icon type="md-list" size="18" class="item" />
<DropdownMenu slot="list">
<DropdownItem :selected="tableSize == 'default'" name="default">默认</DropdownItem>
<DropdownItem :selected="tableSize == 'large'" name="large">宽松</DropdownItem>
<DropdownItem :selected="tableSize == 'small'" name="small">紧密</DropdownItem>
</DropdownMenu>
</Dropdown>
</Tooltip>
</div>
</Row>
<Alert show-icon v-show="openTip">
已选择
<span class="select-count">{{ selectList.length }}</span>
<a class="select-clear" @click="clearSelectAll">清空</a>
</Alert>
<Table :loading="loading" border :columns="columns" :data="data" :size="tableSize" sortable="custom"
@on-sort-change="changeSort" @on-selection-change="showSelect" ref="table"></Table>
<Table :loading="loading" border :columns="columns" :data="data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize"
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
size="small" show-total show-elevator show-sizer></Page>
</Row>
</Card>
<Modal :title="线路维护" v-model="Visiable" :mask-closable="false" :scrollabele="true" :width="1000">
<logistics-address v-if="Visiable" ref="dialog"></logistics-address>
<div slot="footer" v-show=Visiable>
<Button type="text" @click="Visiable = false">关闭</Button>
<Modal title="已结算商家汇总" v-model="shopVisible" :mask-closable="false" :width="1100">
<Row align="middle" justify="end" class="operation">
<div>账单日期{{ currentDate }}</div>
</Row>
<Table :loading="shopLoading" border :columns="shopColumns" :data="shopData"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="shopSearchForm.pageNumber" :total="shopTotal" :page-size="shopSearchForm.pageSize"
@on-change="changeShopPage" @on-page-size-change="changeShopPageSize" :page-size-opts="[10, 20, 50]"
size="small" show-total show-elevator show-sizer></Page>
</Row>
<div slot="footer">
<Button type="text" @click="shopVisible = false">关闭</Button>
</div>
</Modal>
<Modal :title="线路绑定" v-model="bindingVisiable" :mask-closable="false" :scrollabele="true" :width="1000">
<line-binding v-if="bindingVisiable" ref="bindinglog"></line-binding>
<div slot="footer" v-show=bindingVisiable>
<Button type="text" @click="bindingVisiable = false">关闭</Button>
<Modal title="已结算记录明细" v-model="detailVisible" :mask-closable="false" :width="1500">
<Table :loading="detailLoading" border :columns="detailColumns" :data="detailData"></Table>
<div slot="footer">
<Button type="text" @click="detailVisible = false">关闭</Button>
</div>
</Modal>
<Modal :title="充值记录明细" v-model="rechargeVisiable" :mask-closable="false" :scrollabele="true" :width="1000">
<recharge-one v-if="rechargeVisiable" ref="rechargelog"></recharge-one>
<div slot="footer" v-show=rechargeVisiable>
<Button type="text" @click="rechargeVisiable = false">关闭</Button>
<Modal title="订单详情" v-model="orderDetailVisible" :mask-closable="false" :scrollabele="true" :width="1000">
<logistics-address v-if="orderDetailVisible" @closePage="closeOrderDetail" ref="orderDetailDialog"></logistics-address>
<div slot="footer" v-show="orderDetailVisible">
<Button type="text" @click="orderDetailVisible = false">关闭</Button>
</div>
</Modal>
</div>
@ -92,268 +58,201 @@
<script>
import {
getAllLogiticsCompanyData,
deleteLogiticsCompany,
onLineCompany,
offLineCompany
getBillDateSummaryList,
getBillList,
getBillDetailList
} from "@/api/app";
import {
shortcuts
} from "@/libs/shortcuts";
import excel from "@/libs/excel";
import {
offLineWorker,
onLineWorker
} from "@/api";
import logisticsAddress from "@/views/sys/order-manage/logisticsAddress";
export default {
name: "logiticsCompany",
components: {},
name: "billSuccess",
components: {
logisticsAddress,
},
data() {
return {
dictData: [{
title: "全部",
value: ""
}, {
title: "待确认",
value: 0
}, {
title: "待结算",
value: 1
}, {
title: "已打款",
value: 2
}],
tableSize: "default",
message: "",
selectIndex: "",
currentRow: {},
height: 510,
showCompany: false,
bindingVisiable: false,
showType: "0",
openSearch: true,
openTip: true,
loading: true,
reading: false,
loadingExport: true,
exportModalVisible: false,
importModalVisible: false,
deployModalVisible: false,
uploadfile: {
name: "",
},
drop: false,
selectList: [],
loading: false,
shopLoading: false,
detailLoading: false,
shopVisible: false,
detailVisible: false,
orderDetailVisible: false,
currentDate: "",
searchForm: {
id: "",
shopName: "",
contacts: "",
mobile: "",
pageNumber: 1,
pageSize: 10,
sort: "createTime",
order: "desc",
regionId: JSON.parse(this.getStore("user")).departmentId,
status: 1,
startDate: "",
endDate: "",
signCompany: "0",
},
selectDate: null,
options: {
shortcuts: shortcuts,
},
form: {},
columns: [{
type: "selection",
width: 60,
align: "center",
fixed: "left",
pageNumber: 1,
pageSize: 10
},
shopSearchForm: {
pageNumber: 1,
pageSize: 10
},
columns: [
{ type: "index", width: 60, align: "center" },
{ title: "结算日期", key: "billTime", width: 130 },
{ title: "商家数", key: "shopCount", width: 90 },
{ title: "记录数", key: "recordCount", width: 90 },
{ title: "结算基数", key: "totalBaseAmount", width: 120 },
{ title: "正向结算", key: "positiveSettlementAmount", width: 120 },
{ title: "退款/售后扣款", key: "negativeSettlementAmount", width: 140 },
{ title: "平台抽佣", key: "totalCommissionAmount", width: 120 },
{ title: "已结算金额", key: "totalSettlementAmount", width: 130 },
{
type: "index",
width: 60,
title: "操作",
key: "action",
width: 120,
align: "center",
fixed: "left",
},
{
title: "账单周期",
key: "shopName",
minWidth: 100,
sortable: true,
fixed: "left",
},
{
title: "店铺名称",
key: "shopName",
minWidth: 100,
sortable: true,
fixed: "left",
},
{
title: "订单数量",
key: "companyTel",
minWidth: 150,
sortable: true,
},
{
title: "配送费",
key: "companyEmail",
minWidth: 250,
},
render: (h, params) => h("a", { on: { click: () => this.openShopSummary(params.row) } }, "查看")
}
],
shopColumns: [
{ title: "店铺名称", key: "shopName", minWidth: 160 },
{ title: "记录数", key: "recordCount", width: 90 },
{ title: "正向记录", key: "positiveCount", width: 90 },
{ title: "扣款记录", key: "negativeCount", width: 90 },
{ title: "结算基数", key: "totalBaseAmount", width: 110 },
{ title: "正向结算", key: "positiveSettlementAmount", width: 110 },
{ title: "退款/售后扣款", key: "negativeSettlementAmount", width: 130 },
{ title: "平台抽佣", key: "totalCommissionAmount", width: 110 },
{ title: "已结算金额", key: "totalSettlementAmount", width: 120 },
{
title: "商品原价",
key: "contacts",
title: "操作",
key: "action",
width: 100,
},
{
title: "餐盒费",
key: "mobile",
width: 150,
},
{
title: "账户余额支付金额",
key: "mobile",
width: 150,
},
{
title: "商家实收总金额",
key: "mobile",
width: 150,
},
{
title: "活动金额",
key: "mobile",
width: 150,
},
{
title: "抵用券金额",
key: "mobile",
width: 150,
},
{
title: "平台补贴",
key: "mobile",
width: 150,
},
{
title: "商品平台抽成",
key: "mobile",
width: 150,
},
{
title: "商家补贴",
key: "mobile",
width: 150,
},
{
title: "商品商家抽成",
key: "mobile",
width: 150,
},
{
title: "商家营收",
key: "mobile",
width: 150,
},
{
title: "平台营收",
key: "mobile",
width: 150,
},
{
title: "本期期初",
key: "mobile",
width: 150,
},
{
title: "实际打款金额",
key: "mobile",
width: 150,
},
{
title: "账单状态",
key: "mobile",
width: 150,
},
align: "center",
render: (h, params) => h("a", { on: { click: () => this.openDetail(params.row) } }, "明细")
}
],
detailColumns: [
{ title: "店铺名称", key: "shopName", minWidth: 160 },
{ title: "订单号", key: "orderNumber", minWidth: 140 },
{ title: "订单ID", key: "orderId", minWidth: 170 },
{ title: "类型", key: "type", width: 100, render: (h, params) => h("span", params.row.type == 2 ? "退款/售后扣款" : "正常结算") },
{ title: "结算基数", key: "baseAmount", width: 110 },
{ title: "抽佣比例%", key: "commissionRate", width: 110 },
{ title: "平台抽佣", key: "commissionAmount", width: 110 },
{ title: "商家结算", key: "settlementAmount", width: 110 },
{ title: "生成时间", key: "createTime", minWidth: 170, render: (h, params) => h("span", this.formatDateTime(params.row.createTime)) },
{ title: "支付时间", key: "payTime", minWidth: 170, render: (h, params) => h("span", this.formatDateTime(params.row.payTime)) },
{ title: "确认时间", key: "confirmTime", minWidth: 170 },
{
title: "操作",
key: "action",
width: 200,
width: 100,
align: "center",
fixed: "right",
render: (h, params) => {
return h("div", [h(
"a", {
on: {
click: () => {
this.findAllRecord(params.row);
},
},
},
"确认"
),
h("Divider", {
props: {
type: "vertical",
},
}),
h(
"a", {
on: {
click: () => {
this.stationBinding(params.row);
},
},
},
"详情"
),
h("Divider", {
props: {
type: "vertical",
},
}),
h(
"a", {
on: {
click: () => {
this.edit(params.row);
},
},
},
"修改"
),
]);
},
},
render: (h, params) => h("a", { on: { click: () => this.showOrderDetail(params.row) } }, "查看详情")
}
],
chooseColumns: [],
filename: "公司数据",
exportTitle: "确认导出",
exportType: "",
data: [],
exportData: [],
shopData: [],
detailData: [],
total: 0,
Visiable: false,
rechargeVisiable: false,
shopTotal: 0
};
},
methods: {
init() {
// this.getDataList();
this.getDataList();
},
handleSearch() {
this.searchForm.pageNumber = 1;
this.getDataList();
},
formatDateTime(isoString) {
if (!isoString) return ''
const date = new Date(isoString)
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
const hours = String(date.getHours()).padStart(2, '0')
const minutes = String(date.getMinutes()).padStart(2, '0')
const seconds = String(date.getSeconds()).padStart(2, '0')
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
},
getDataList() {
//
this.loading = true;
getBillDateSummaryList(this.searchForm).then(res => {
this.loading = false;
if (res.success) {
this.data = (res.result && res.result.records) || res.result || [];
this.total = (res.result && res.result.total) || this.data.length;
}
}).catch(() => this.loading = false);
},
handleSearch() {
changePage(v) {
this.searchForm.pageNumber = v;
this.getDataList();
},
changePageSize(v) {
this.searchForm.pageNumber = 1;
this.searchForm.pageSize = 10;
this.searchForm.pageSize = v;
this.getDataList();
},
openShopSummary(row) {
this.currentDate = row.billTime;
this.shopVisible = true;
this.shopSearchForm.pageNumber = 1;
this.getShopSummary();
},
getShopSummary() {
this.shopLoading = true;
getBillList({
regionId: this.searchForm.regionId,
settlementDate: this.currentDate,
status: 1,
pageNumber: this.shopSearchForm.pageNumber,
pageSize: this.shopSearchForm.pageSize
}).then(res => {
this.shopLoading = false;
if (res.success) {
this.shopData = (res.result && res.result.records) || res.result || [];
this.shopTotal = (res.result && res.result.total) || this.shopData.length;
}
}).catch(() => this.shopLoading = false);
},
changeShopPage(v) {
this.shopSearchForm.pageNumber = v;
this.getShopSummary();
},
changeShopPageSize(v) {
this.shopSearchForm.pageNumber = 1;
this.shopSearchForm.pageSize = v;
this.getShopSummary();
},
openDetail(row) {
this.detailVisible = true;
this.detailLoading = true;
getBillDetailList({
regionId: this.searchForm.regionId,
settlementDate: this.currentDate,
shopId: row.shopId,
status: 1
}).then(res => {
this.detailLoading = false;
if (res.success) this.detailData = res.result || [];
}).catch(() => this.detailLoading = false);
},
closeOrderDetail(){
this.orderDetailVisible = false;
},
showOrderDetail(row) {
let data = {
id: row.orderId,
shopId: row.shopId || "",
status: "",
};
this.orderDetailVisible = true;
this.$nextTick(() => {
this.$refs.orderDetailDialog.initRecharge(data);
});
}
},
mounted() {
//
this.height = Number(document.documentElement.clientHeight - 230);
this.init();
},
}
};
</script>

10
src/views/app/business/bus/bus.vue

@ -256,12 +256,12 @@
{
title: "抵扣面额",
key: "discountAmount",
minWidth: 100,
minWidth: 80,
},
{
title: "剩余数量",
key: "remainCount",
width: 100,
width: 80,
},
{
title: "有效期",
@ -285,7 +285,7 @@
{
title: "适用场景",
key: "applyScene",
width: 150,
width: 100,
render: (h, params) => {
let re = ""
if (params.row.applyScene == 0) {
@ -306,12 +306,12 @@
{
title: "总数量",
key: "totalCount",
width: 150,
width: 100,
},
{
title: "发放方",
key: "issuerType",
width: 150,
width: 100,
render: (h, params) => {
let re = ""
if (params.row.issuerType == 2) {

5
src/views/app/business/courier/courier.vue

@ -191,11 +191,6 @@
align: "center",
fixed: "left",
},
{
title: "配送员编号",
key: "workerId",
minWidth: 125,
},
{
title: "配送员名称",
key: "workerName",

52
src/views/app/business/logistics/logistics.vue

@ -1,4 +1,4 @@
<style lang="less">
<style lang="less">
@import "@/styles/table-common.less";
@import "./logistics.less";
</style>
@ -326,7 +326,7 @@
on: {
click: () => this.goTransferOrder(params.row)
}
}, "选择")
}, "指派")
])
}];
},
@ -337,15 +337,30 @@
align: "center",
fixed: "left",
}, {
title: "订单编号",
key: "numberCode",
width: 140,
title: "订单时间",
key: "createTime",
width: 170,
align: "center",
render: (h, params) => h("span", this.getOrderNo(params.row))
render: (h, params) => h("span", this.formatDateTime(params.row.createTime))
},{
title: "送达时间",
key: "mustFinishTime",
width: 180,
align: "center",
render: (h, params) => h("div", [
h("Tag", {
props: {
color: this.isNearMustFinishTime(params.row) ? "red" : "green"
}
}, this.formatDateTime(params.row.mustFinishTime)),
this.isNearMustFinishTime(params.row) ? h("div", {
style: { color: "#ed4014", marginTop: "4px" }
}, this.getMustFinishWarningText(params.row)) : null
])
},{
title: "配送类型",
key: "deliveryType",
width: 170,
width: 100,
align: "center",
render: (h, params) => this.renderDeliveryTags(h, params.row)
}, {
@ -361,7 +376,7 @@
}, {
title: "订单状态",
key: "status",
width: 110,
width: 80,
align: "center",
render: (h, params) => h("Tag", {
props: {
@ -384,27 +399,6 @@
align: "center",
sortable: "custom",
render: (h, params) => this.renderFee(h, params.row)
}, {
title: "送达时间",
key: "mustFinishTime",
width: 180,
align: "center",
render: (h, params) => h("div", [
h("Tag", {
props: {
color: this.isNearMustFinishTime(params.row) ? "red" : "green"
}
}, this.formatDateTime(params.row.mustFinishTime)),
this.isNearMustFinishTime(params.row) ? h("div", {
style: { color: "#ed4014", marginTop: "4px" }
}, this.getMustFinishWarningText(params.row)) : null
])
}, {
title: "订单时间",
key: "createTime",
width: 170,
align: "center",
render: (h, params) => h("span", this.formatDateTime(params.row.createTime))
}, {
title: "操作",
key: "action",

145
src/views/app/business/luckey/luckey.vue

@ -20,6 +20,24 @@
</Row>
</TabPane>
<!-- 开奖记录 -->
<TabPane label="开奖记录" name="draw">
<Table border :loading="draw.loading" :columns="drawColumns" :data="draw.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="draw.pageNumber" :total="draw.total" :page-size="draw.pageSize"
@on-change="p => changePage('draw', p)" size="small" show-total></Page>
</Row>
</TabPane>
<!-- 中奖记录 -->
<TabPane label="中奖记录" name="winner">
<Table border :loading="winner.loading" :columns="winnerColumns" :data="winner.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="winner.pageNumber" :total="winner.total" :page-size="winner.pageSize"
@on-change="p => changePage('winner', p)" size="small" show-total></Page>
</Row>
</TabPane>
<!-- 任务 -->
<TabPane label="券任务规则" name="task">
<Button type="primary" icon="md-add" @click="openTask()" style="margin-bottom:12px">新增任务</Button>
@ -30,14 +48,37 @@
</Row>
</TabPane>
<TabPane label="学院排行榜" name="adventureRank">
<Table border :loading="adventureRank.loading" :columns="adventureRankColumns" :data="adventureRank.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="adventureRank.pageNumber" :total="adventureRank.total" :page-size="adventureRank.pageSize"
@on-change="p => changePage('adventureRank', p)" size="small" show-total></Page>
</Row>
</TabPane>
<TabPane label="个人奖励记录" name="adventureSession">
<Table border :loading="adventureSession.loading" :columns="adventureSessionColumns" :data="adventureSession.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="adventureSession.pageNumber" :total="adventureSession.total" :page-size="adventureSession.pageSize"
@on-change="p => changePage('adventureSession', p)" size="small" show-total></Page>
</Row>
</TabPane>
<!-- BUFF -->
<TabPane label="BUFF配置" name="buff">
<!-- <TabPane label="BUFF配置" name="buff">
<Button type="primary" icon="md-add" @click="openBuff()" style="margin-bottom:12px">新增BUFF</Button>
<Table border :loading="buff.loading" :columns="buffColumns" :data="buff.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="buff.pageNumber" :total="buff.total" :page-size="buff.pageSize"
@on-change="p => changePage('buff', p)" size="small" show-total></Page>
</Row>
</TabPane> -->
<TabPane label="学院配置" name="college">
<Button type="primary" icon="md-add" @click="openOperate('college')" style="margin-bottom:12px">新增学院</Button>
<Table border :loading="college.loading" :columns="collegeColumns" :data="college.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="college.pageNumber" :total="college.total" :page-size="college.pageSize"
@on-change="p => changePage('college', p)" size="small" show-total></Page>
</Row>
</TabPane>
<!-- 经营系统 -->
@ -49,14 +90,14 @@
@on-change="p => changePage('tree', p)" size="small" show-total></Page>
</Row>
</TabPane>
<TabPane label="仓库等级" name="warehouse">
<!-- <TabPane label="仓库等级" name="warehouse">
<Button type="primary" icon="md-add" @click="openOperate('warehouse')" style="margin-bottom:12px">新增仓库等级</Button>
<Table border :loading="warehouse.loading" :columns="warehouseColumns" :data="warehouse.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="warehouse.pageNumber" :total="warehouse.total" :page-size="warehouse.pageSize"
@on-change="p => changePage('warehouse', p)" size="small" show-total></Page>
</Row>
</TabPane>
</TabPane> -->
<TabPane label="防御塔" name="tower">
<Button type="primary" icon="md-add" @click="openOperate('tower')" style="margin-bottom:12px">新增防御塔等级</Button>
<Table border :loading="tower.loading" :columns="towerColumns" :data="tower.data"></Table>
@ -65,38 +106,31 @@
@on-change="p => changePage('tower', p)" size="small" show-total></Page>
</Row>
</TabPane>
<TabPane label="搜查规则" name="search">
<!-- <TabPane label="搜查规则" name="search">
<Button type="primary" icon="md-add" @click="openOperate('search')" style="margin-bottom:12px">新增搜查规则</Button>
<Table border :loading="search.loading" :columns="searchColumns" :data="search.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="search.pageNumber" :total="search.total" :page-size="search.pageSize"
@on-change="p => changePage('search', p)" size="small" show-total></Page>
</Row>
</TabPane>
<TabPane label="体力道具" name="stamina">
</TabPane> -->
<!-- <TabPane label="体力道具" name="stamina">
<Button type="primary" icon="md-add" @click="openOperate('stamina')" style="margin-bottom:12px">新增体力道具</Button>
<Table border :loading="stamina.loading" :columns="staminaColumns" :data="stamina.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="stamina.pageNumber" :total="stamina.total" :page-size="stamina.pageSize"
@on-change="p => changePage('stamina', p)" size="small" show-total></Page>
</Row>
</TabPane>
<TabPane label="校园地标" name="landmark">
</TabPane> -->
<!-- <TabPane label="校园地标" name="landmark">
<Button type="primary" icon="md-add" @click="openOperate('landmark')" style="margin-bottom:12px">新增校园地标</Button>
<Table border :loading="landmark.loading" :columns="landmarkColumns" :data="landmark.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="landmark.pageNumber" :total="landmark.total" :page-size="landmark.pageSize"
@on-change="p => changePage('landmark', p)" size="small" show-total></Page>
</Row>
</TabPane>
<TabPane label="学院配置" name="college">
<Button type="primary" icon="md-add" @click="openOperate('college')" style="margin-bottom:12px">新增学院</Button>
<Table border :loading="college.loading" :columns="collegeColumns" :data="college.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="college.pageNumber" :total="college.total" :page-size="college.pageSize"
@on-change="p => changePage('college', p)" size="small" show-total></Page>
</Row>
</TabPane>
</TabPane> -->
<TabPane label="经济审计" name="economy">
<Table border :loading="economy.loading" :columns="economyColumns" :data="economy.data"></Table>
<Row type="flex" justify="end" class="page">
@ -105,74 +139,45 @@
</Row>
</TabPane>
<TabPane label="松鼠冒险事件" name="adventureEvent">
<!-- <TabPane label="松鼠冒险事件" name="adventureEvent">
<Button type="primary" icon="md-add" @click="openAdventureEvent()" style="margin-bottom:12px">新增每日事件</Button>
<Table border :loading="adventureEvent.loading" :columns="adventureEventColumns" :data="adventureEvent.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="adventureEvent.pageNumber" :total="adventureEvent.total" :page-size="adventureEvent.pageSize"
@on-change="p => changePage('adventureEvent', p)" size="small" show-total></Page>
</Row>
</TabPane>
<TabPane label="松鼠冒险榜" name="adventureRank">
<Table border :loading="adventureRank.loading" :columns="adventureRankColumns" :data="adventureRank.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="adventureRank.pageNumber" :total="adventureRank.total" :page-size="adventureRank.pageSize"
@on-change="p => changePage('adventureRank', p)" size="small" show-total></Page>
</Row>
</TabPane>
<TabPane label="冒险游戏记录" name="adventureSession">
<Table border :loading="adventureSession.loading" :columns="adventureSessionColumns" :data="adventureSession.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="adventureSession.pageNumber" :total="adventureSession.total" :page-size="adventureSession.pageSize"
@on-change="p => changePage('adventureSession', p)" size="small" show-total></Page>
</Row>
</TabPane>
</TabPane> -->
<!-- 快讯 -->
<TabPane label="星球快讯" name="news">
<!-- <TabPane label="星球快讯" name="news">
<Button type="primary" icon="md-add" @click="openNews()" style="margin-bottom:12px">新增快讯</Button>
<Table border :loading="news.loading" :columns="newsColumns" :data="news.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="news.pageNumber" :total="news.total" :page-size="news.pageSize"
@on-change="p => changePage('news', p)" size="small" show-total></Page>
</Row>
</TabPane>
</TabPane> -->
<!-- 排行榜 -->
<TabPane label="通缉榜" name="rank">
<!-- <TabPane label="通缉榜" name="rank">
<Table border :loading="rank.loading" :columns="rankColumns" :data="rank.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="rank.pageNumber" :total="rank.total" :page-size="rank.pageSize"
@on-change="p => changePage('rank', p)" size="small" show-total></Page>
</Row>
</TabPane>
</TabPane> -->
<!-- 追捕记录 -->
<TabPane label="追捕记录" name="hunt">
<!-- <TabPane label="追捕记录" name="hunt">
<Table border :loading="hunt.loading" :columns="huntColumns" :data="hunt.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="hunt.pageNumber" :total="hunt.total" :page-size="hunt.pageSize"
@on-change="p => changePage('hunt', p)" size="small" show-total></Page>
</Row>
</TabPane>
</TabPane> -->
<!-- 开奖记录 -->
<TabPane label="开奖记录" name="draw">
<Table border :loading="draw.loading" :columns="drawColumns" :data="draw.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="draw.pageNumber" :total="draw.total" :page-size="draw.pageSize"
@on-change="p => changePage('draw', p)" size="small" show-total></Page>
</Row>
</TabPane>
<!-- 中奖记录 -->
<TabPane label="中奖记录" name="winner">
<Table border :loading="winner.loading" :columns="winnerColumns" :data="winner.data"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="winner.pageNumber" :total="winner.total" :page-size="winner.pageSize"
@on-change="p => changePage('winner', p)" size="small" show-total></Page>
</Row>
</TabPane>
</Tabs>
</Card>
@ -381,7 +386,7 @@
planetCollegePage, planetCollegeSave, planetCollegeDelete,
planetEconomyPage,
planetAdventureEventPage, planetAdventureEventSave, planetAdventureEventDelete,
planetAdventureRankPage, planetAdventureSessionPage
planetAdventureRankPage, planetAdventureRewardPage
} from '@/api/planet';
export default {
@ -527,10 +532,10 @@
return h('div', [
h('Button', { props: { type: 'text', size: 'small' }, on: { click: () => this.openPool(params.row) } }, '编辑'),
h('Button', { props: { type: 'text', size: 'small' }, on: { click: () => this.openReward(params.row) } }, '奖项'),
h('Button', {
/* h('Button', {
props: { type: 'text', size: 'small', disabled: params.row.status === 1 },
on: { click: () => this.doManualDraw(params.row) }
}, '手动开奖'),
}, '手动开奖'), */
h('Button', { props: { type: 'text', size: 'small' }, style: { color: '#ed4014' }, on: { click: () => this.delPool(params.row) } }, '删除')
])
}
@ -769,15 +774,12 @@
},
adventureSessionColumns() {
return [
{ title: '用户', key: 'nickname', minWidth: 120 },
{ title: '日期', key: 'playDate', width: 120 },
{ title: '分数', key: 'score', width: 90 },
{ title: '耗时', key: 'durationSeconds', width: 80 },
{ title: '免费局', width: 80, render: (h, p) => h('span', p.row.freeUsed === 1 ? '是' : '否') },
{ title: '扣券', key: 'costTickets', width: 80 },
{ title: '异常', minWidth: 80, render: (h, p) => h('Tag', { props: { color: p.row.cheatFlag === 'Y' ? 'red' : 'green' } }, p.row.cheatFlag === 'Y' ? '异常' : '正常') },
{ title: '原因', key: 'cheatReason', minWidth: 160 },
{ title: '时间', key: 'createTime', minWidth: 160 }
{ title: '手机号', key: 'mobile', minWidth: 120 },
{ title: '用户ID', key: 'linkUserId', minWidth: 120 },
{ title: '奖励金额', key: 'amount', width: 100 },
{ title: '交易方式/附言', key: 'dealingsWay', minWidth: 150 },
{ title: '备注', key: 'remark', minWidth: 180 },
{ title: '发放时间', key: 'dealingsTime', minWidth: 160 }
]
}
},
@ -877,7 +879,14 @@
loadEconomy() { if (!this.guardRegion('economy')) return; this.economy.loading = true; planetEconomyPage(this.baseParams('economy')).then(r => this.fill('economy', r)) },
loadAdventureEvent() { if (!this.guardRegion('adventureEvent')) return; this.adventureEvent.loading = true; planetAdventureEventPage(this.baseParams('adventureEvent')).then(r => this.fill('adventureEvent', r)) },
loadAdventureRank() { if (!this.guardRegion('adventureRank')) return; this.adventureRank.loading = true; planetAdventureRankPage(this.baseParams('adventureRank')).then(r => this.fill('adventureRank', r)) },
loadAdventureSession() { if (!this.guardRegion('adventureSession')) return; this.adventureSession.loading = true; planetAdventureSessionPage(this.baseParams('adventureSession')).then(r => this.fill('adventureSession', r)) },
loadAdventureSession() {
if (!this.guardRegion('adventureSession')) return
this.adventureSession.loading = true
planetAdventureRewardPage(Object.assign({}, this.baseParams('adventureSession'), {
pageNum: this.adventureSession.pageNumber,
dealingsWay: '学院排位赛排名奖励'
})).then(r => this.fill('adventureSession', r))
},
// ---- ----
openPool(row) {
this.poolForm = row ? Object.assign({}, row) : {

36
src/views/app/shop/shop.vue

@ -20,7 +20,6 @@
<Row align="middle" justify="space-between" class="operation">
<div>
<Button @click="add" type="primary" icon="md-add">添加店铺</Button>
<Button @click="delAll" icon="md-trash">批量删除</Button>
</div>
<div class="icons">
<Tooltip content="刷新" placement="top" transfer>
@ -187,16 +186,10 @@
key: "shopTypeTitle",
minWidth: 120,
},
{
title: "店铺地址",
key: "shopAddress",
minWidth: 125,
sortable: true,
},
{
title: "联系方式",
key: "contactPhone",
minWidth: 180,
minWidth: 130,
sortable: true,
},
{
@ -218,6 +211,33 @@
sortType: "desc",
width: 180,
},
{
title: "店铺地址",
key: "shopAddress",
width: 220,
sortable: true,
render: (h, params) => {
const address = params.row.shopAddress || "";
return h("Tooltip", {
props: {
content: address,
transfer: true,
placement: "top",
}
}, [
h("span", {
style: {
display: "inline-block",
width: "100%",
overflow: "hidden",
textOverflow: "ellipsis",
whiteSpace: "nowrap",
verticalAlign: "middle",
},
}, address)
]);
},
},
{
title: "操作",
key: "action",

36
src/views/app/shopArea/shopArea.vue

@ -18,10 +18,10 @@
type="primary"
icon="md-add"
v-show="showType == 'tree'"
>添加子圈层</Button
>添加子区域</Button
>
<Button @click="addRoot" icon="md-add" v-show="!isDepartmentAgent"
>添加一级圈层</Button
>添加一级区域</Button
>
<Button @click="delAll" icon="md-trash">批量删除</Button>
<Button @click="getParentList" icon="md-refresh">刷新</Button>
@ -29,7 +29,7 @@
v-model="searchKey"
suffix="ios-search"
@on-change="search"
placeholder="输入圈层名搜索"
placeholder="输入区域名搜索"
clearable
style="width: 250px"
v-show="showType == 'list'"
@ -71,7 +71,7 @@
v-model="searchKey"
suffix="ios-search"
@on-change="search"
placeholder="输入圈层名搜索"
placeholder="输入区域名搜索"
clearable
/>
<div style="position: relative">
@ -97,7 +97,7 @@
:label-width="100"
:rules="formValidate"
>
<FormItem label="上级圈层" prop="parentTitle" class="form-noheight">
<FormItem label="上级区域" prop="parentTitle" class="form-noheight">
<div style="display: flex">
<Input
v-model="form.parentTitle"
@ -108,10 +108,10 @@
transfer
trigger="click"
placement="right-start"
title="选择上级圈层"
title="选择上级区域"
width="250"
>
<Button icon="md-list">选择圈层</Button>
<Button icon="md-list">选择区域</Button>
<div slot="content" class="tree-bar tree-select">
<Tree
:data="dataEdit"
@ -123,7 +123,7 @@
</Poptip>
</div>
</FormItem>
<FormItem label="圈层名称" prop="title">
<FormItem label="区域名称" prop="title">
<Input v-model="form.title" />
</FormItem>
@ -212,9 +212,9 @@
:rules="formValidate"
>
<div v-if="showParent">
<FormItem label="上级圈层:">{{ addParentTitle }}</FormItem>
<FormItem label="上级区域:">{{ addParentTitle }}</FormItem>
</div>
<FormItem label="圈层名称" prop="title">
<FormItem label="区域名称" prop="title">
<Input v-model="formAdd.title" />
</FormItem>
<FormItem label="排序值" prop="sortOrder">
@ -341,7 +341,7 @@ export default {
align: "center",
},
{
title: "圈层名称",
title: "区域名称",
key: "title",
minWidth: 120,
sortable: true,
@ -377,7 +377,7 @@ export default {
},
},
},
"添加子圈层"
"添加子区域"
),
h("Divider", {
props: {
@ -471,7 +471,7 @@ export default {
//
let first = {
id: "0",
title: "一级圈层",
title: "一级区域",
};
res.result.unshift(first);
this.dataEdit = res.result;
@ -582,7 +582,7 @@ export default {
this.$refs.form.validate((valid) => {
if (valid) {
if (!this.form.id) {
this.$Message.warning("请先点击选择要修改的圈层");
this.$Message.warning("请先点击选择要修改的区域");
return;
}
this.submitLoading = true;
@ -618,7 +618,7 @@ export default {
add() {
if (this.form.id == "" || this.form.id == null) {
if (this.isDepartmentAgent) {
this.modalTitle = "添加子圈层";
this.modalTitle = "添加子区域";
this.showParent = true;
this.addParentTitle = this.userDepartmentTitle;
this.formAdd = {
@ -630,10 +630,10 @@ export default {
this.modalVisible = true;
return;
}
this.$Message.warning("请先点击选择一个圈层");
this.$Message.warning("请先点击选择一个区域");
return;
}
this.modalTitle = "添加子圈层";
this.modalTitle = "添加子区域";
this.showParent = true;
this.addParentTitle = this.form.title;
if (!this.form.children) {
@ -651,7 +651,7 @@ export default {
if (this.isDepartmentAgent) {
return;
}
this.modalTitle = "添加一级圈层";
this.modalTitle = "添加一级区域";
this.showParent = false;
this.addParentTitle = "";
this.formAdd = {

7
src/views/sys/order-manage/logisticsAddress.vue

@ -5,6 +5,7 @@
<div class="title">订单信息</div>
<div>订单编号{{orderData.numberCode}}</div>
<div>支付订单编号{{'ORDER'+orderData.id}}</div>
<div>订单类型{{getOrderTypeText(orderData.orderType)}}</div>
<div>订单状态{{getOrderStatusText(orderData)}}</div>
<div>创建时间{{orderData.createTime | formatDateTime}}</div>
<div v-if="orderData.payTime">支付时间{{orderData.payTime | formatDateTime}}</div>
@ -368,6 +369,12 @@
if (status == 5) return "拒绝售后";
return "";
},
getOrderTypeText(orderType) {
if (orderType == 1) return "直接购买";
if (orderType == 2) return "拼团购买";
if (orderType == 3) return "面对面团";
return "";
},
getOrderStatusText(item) {
if (!item) return "";
if (item.status == 0) return "待支付";

4
vue.config.js

@ -7,8 +7,8 @@ module.exports = {
port: 8889,
proxy: {
'/hiver': {
target: 'https://hbkuaishi.com', // 正式1
// target: 'http://192.168.100.34:8888', // 本地
// target: 'https://hbkuaishi.com', // 正式1
target: 'http://192.168.100.34:8888', // 本地
ws: false
},
'/foo': {

Loading…
Cancel
Save