tianyi 2 months ago
parent
commit
83e924d6f1
  1. 8
      src/api/app.js
  2. 11
      src/api/index.js
  3. 2
      src/locale/lang/zh-CN.js
  4. 18
      src/views/app/bill/historical/historical.vue
  5. 17
      src/views/app/bill/success/success.vue
  6. 94
      src/views/app/business/courier/courier.vue
  7. 207
      src/views/app/business/courier/logisticsAddress.vue
  8. 264
      src/views/app/business/deliverytruck/addEdit.vue
  9. 26
      src/views/app/business/deliverytruck/deliveryTruck.vue
  10. 181
      src/views/app/business/expressCompany/addEdit.vue
  11. 11
      src/views/app/business/expressCompany/expressCompany.vue
  12. 10
      src/views/app/business/logistics/logistics.vue
  13. 312
      src/views/app/business/logiticsCompany/addEdit.vue
  14. 22
      src/views/app/business/logiticsCompany/logiticsCompany.vue
  15. 308
      src/views/app/business/problemFeedback/addEdit.vue
  16. 4
      src/views/app/business/problemFeedback/problemFeedback.vue
  17. 80
      src/views/app/business/recharge/logisticsAddress.vue
  18. 206
      src/views/app/business/recharge/recharge.vue
  19. 398
      src/views/app/business/recharge/rechargeOne.vue
  20. 20
      src/views/app/marketing-management/marketing-management.vue
  21. 209
      src/views/app/shop/logisticsAddress.vue
  22. 30
      src/views/app/shop/shop.vue
  23. 133
      src/views/login.vue
  24. 6
      src/views/main-components/footer.vue
  25. 6
      src/views/sys/order-manage/logisticsAddress.vue
  26. 11
      src/views/sys/order-manage/orderManage.vue

8
src/api/app.js

@ -317,6 +317,14 @@ export const editShopTakeway = (params) => {
export const editShop = (params) => { export const editShop = (params) => {
return putRequest('/app/shop/edit', params) return putRequest('/app/shop/edit', params)
} }
//删除评论
export const deleteComment = (params) => {
return postRequest('/app/comment/deleteByOrderId', params)
}
//评论列表
export const getCommentList = (params) => {
return postBodyRequest('/app/comment/getCommentList', params)
}
// 启用用户 // 启用用户
export const enableShop = (params) => { export const enableShop = (params) => {

11
src/api/index.js

@ -681,7 +681,7 @@ export const deleteOrder = (params) => {
// 获取配送员 // 获取配送员
export const getWorkerListData = (params) => { export const getWorkerListData = (params) => {
return postBodyRequest('/worker/getMatchingWorkerList', params) return postBodyRequest('/worker/getByCondition', params)
} }
// 创建订单 // 创建订单
@ -796,9 +796,14 @@ export const disableCourier = (id, params) => {
} }
// 查询充值记录 // 查询充值记录
export const getWorkerRechargeRecord = (params) => { export const getGroupList = (params) => {
return getRequest(`/recharge/getByCondition`, params) return postBodyRequest(`/mall/admin/orderGroup/page`, params)
} }
//查看拼团订单
export const getPTOrder = (id,params) => {
return getRequest(`/mall/admin/orderGroup/detail/${id}`, params)
}
// 查询线路列表 // 查询线路列表
export const getWorkerAddress = (params) => { export const getWorkerAddress = (params) => {
return postBodyRequest(`/app/operatingArea/getOperatingAreaList`, params) return postBodyRequest(`/app/operatingArea/getOperatingAreaList`, params)

2
src/locale/lang/zh-CN.js

@ -1,5 +1,5 @@
export default { export default {
hiver: '嘻嘻哈哈', hiver: '校园项目管理后台',
usernameLogin: '账户密码登录', usernameLogin: '账户密码登录',
mobileLogin: '手机短信登录', mobileLogin: '手机短信登录',
autoLogin: '自动登录', autoLogin: '自动登录',

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

@ -93,7 +93,6 @@
<script> <script>
import { import {
getAllLogiticsCompanyData, getAllLogiticsCompanyData,
getLogiticsCompanyData,
deleteLogiticsCompany, deleteLogiticsCompany,
onLineCompany, onLineCompany,
offLineCompany offLineCompany
@ -344,22 +343,7 @@
getDataList() { getDataList() {
// //
this.loading = true; this.loading = true;
getLogiticsCompanyData(this.searchForm).then((res) => {
this.loading = false;
if (res.success) {
if (!this.getStore("roles").includes("ROLE_ADMIN")) {
res.result.content.forEach((e) => {
e.mobile = "您无权查看该数据";
});
}
this.data = res.result.content;
this.total = res.result.totalElements;
if (this.data.length == 0 && this.searchForm.pageNumber > 1) {
this.searchForm.pageNumber -= 1;
this.getDataList();
}
}
});
}, },
handleSearch() { handleSearch() {
this.searchForm.pageNumber = 1; this.searchForm.pageNumber = 1;

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

@ -93,7 +93,6 @@
<script> <script>
import { import {
getAllLogiticsCompanyData, getAllLogiticsCompanyData,
getLogiticsCompanyData,
deleteLogiticsCompany, deleteLogiticsCompany,
onLineCompany, onLineCompany,
offLineCompany offLineCompany
@ -344,22 +343,6 @@
getDataList() { getDataList() {
// //
this.loading = true; this.loading = true;
getLogiticsCompanyData(this.searchForm).then((res) => {
this.loading = false;
if (res.success) {
if (!this.getStore("roles").includes("ROLE_ADMIN")) {
res.result.content.forEach((e) => {
e.mobile = "您无权查看该数据";
});
}
this.data = res.result.content;
this.total = res.result.totalElements;
if (this.data.length == 0 && this.searchForm.pageNumber > 1) {
this.searchForm.pageNumber -= 1;
this.getDataList();
}
}
});
}, },
handleSearch() { handleSearch() {
this.searchForm.pageNumber = 1; this.searchForm.pageNumber = 1;

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

@ -6,7 +6,7 @@
<div class="search"> <div class="search">
<Card> <Card>
<Row v-show="openSearch" @keydown.enter.native="handleSearch"> <Row v-show="openSearch" @keydown.enter.native="handleSearch">
<Form ref="searchForm" :model="searchForm" inline :label-width="90"> <Form ref="searchForm" :model="searchForm" inline :label-width="100">
<FormItem label="配送员名称" prop="WorkerName"> <FormItem label="配送员名称" prop="WorkerName">
<Input type="text" v-model="searchForm.workerName" clearable placeholder="请输入配送员名称" <Input type="text" v-model="searchForm.workerName" clearable placeholder="请输入配送员名称"
style="width: 200px" /> style="width: 200px" />
@ -19,7 +19,7 @@
</Select> </Select>
</FormItem> </FormItem>
<FormItem label="是否接指派单" prop="getPushOrder"> <FormItem label="是否接指派单" prop="getPushOrder">
<Select ref="dep" @on-change="checkStatus" style="width:200px"> <Select ref="dep" @on-change="checkStatus" style="width:210px">
<Option v-for="(item, i) in dictData" :key="i" :value="item.value">{{ <Option v-for="(item, i) in dictData" :key="i" :value="item.value">{{
item.title item.title
}}</Option> }}</Option>
@ -67,6 +67,12 @@
size="small" show-total show-elevator show-sizer></Page> size="small" show-total show-elevator show-sizer></Page>
</Row> </Row>
</Card> </Card>
<Modal :title="查看评论" v-model="Visiable" :mask-closable="false" :scrollabele="true" :width="1200">
<logistics-address v-if="Visiable" ref="dialog"></logistics-address>
<div slot="footer" v-show=Visiable>
<Button type="text" @click="Visiable = false">关闭</Button>
</div>
</Modal>
<addEdit :data="form" :type="showType" v-model="showWorker" @on-submit="getDataList" /> <addEdit :data="form" :type="showType" v-model="showWorker" @on-submit="getDataList" />
</div> </div>
</template> </template>
@ -88,18 +94,22 @@
userColumns, userColumns,
userData userData
} from "./importTemplate"; } from "./importTemplate";
import "viewerjs/dist/viewer.css";
import Viewer from "viewerjs";
// //
import { import {
exportColumn exportColumn
} from "./exportColumn"; } from "./exportColumn";
import excel from "@/libs/excel"; import excel from "@/libs/excel";
import addEdit from "./addEdit.vue"; import addEdit from "./addEdit.vue";
import logisticsAddress from "@/views/app/business/courier/logisticsAddress.vue";
import dict from "@/views/my-components/hiver/dict"; import dict from "@/views/my-components/hiver/dict";
export default { export default {
name: "Courier", name: "Courier",
components: { components: {
addEdit, addEdit,
dict, dict,
logisticsAddress
}, },
data() { data() {
return { return {
@ -111,6 +121,7 @@
openTip: true, openTip: true,
loading: true, loading: true,
reading: false, reading: false,
Visiable: false,
importLoading: false, importLoading: false,
loadingExport: true, loadingExport: true,
exportModalVisible: false, exportModalVisible: false,
@ -138,7 +149,7 @@
isOnLine:'', //0线1线 isOnLine:'', //0线1线
getPushOrder:'', //0 1 getPushOrder:'', //0 1
pageNum: 1, pageNum: 1,
pageSize: 1000 pageSize: 10
}, },
selectDate: null, selectDate: null,
options: { options: {
@ -248,27 +259,30 @@
width: 200, width: 200,
align: "center" align: "center"
}, },
{
title: "手上的待接单订单数",
key: "orderWaitCount",
width: 200,
align: "center",
},
{
title: "手上的待取货订单数",
key: "orderGetCount",
width: 200,
align: "center",
},
{
title: "手上的待送达订单数",
key: "orderPutCount",
width: 180,
},
{ {
title: "学生/身份证", title: "学生/身份证",
key: "cardPicture", key: "cardPicture",
width: 180, width: 180,
render: (h, params) => {
return h("img", {
attrs: {
src: params.row.cardPicture,
},
style: {
cursor: "zoom-in",
width: "80px",
height: "60px",
margin: "10px 0",
"object-fit": "contain",
},
on: {
click: () => {
this.showPic(params.row.cardPicture);
},
},
});
},
}, },
{ {
title: "是否接指派", title: "是否接指派",
@ -361,6 +375,21 @@
type: "vertical", type: "vertical",
}, },
}), }),
h(
"a", {
on: {
click: () => {
this.findAllRecord(params.row);
},
},
},
"查看评论"
),
h("Divider", {
props: {
type: "vertical",
},
}),
onOrOffLine, onOrOffLine,
h("Divider", { h("Divider", {
props: { props: {
@ -381,7 +410,7 @@
}, },
}, },
}, },
"查看接单规则" "接单规则"
), ),
]); ]);
}, },
@ -425,6 +454,16 @@
this.searchForm.isOnLine = v this.searchForm.isOnLine = v
console.log(v) console.log(v)
}, },
showPic(v) {
let image = new Image();
image.src = v;
let viewer = new Viewer(image, {
hidden: function() {
viewer.destroy();
},
});
viewer.show();
},
checkStatus(v){ checkStatus(v){
this.searchForm.getPushOrder = v this.searchForm.getPushOrder = v
console.log(v) console.log(v)
@ -441,10 +480,11 @@
getDataList() { getDataList() {
// //
this.loading = true; this.loading = true;
getWorkerListData(this.searchForm).then((res) => { getWorkerListData(this.searchForm).then((res) => {
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {
this.data = res.result; this.data = res.result.content;
this.total = res.result.totalElements; this.total = res.result.totalElements;
if (this.data.length == 0 && this.searchForm.pageNum > 1) { if (this.data.length == 0 && this.searchForm.pageNum > 1) {
this.searchForm.pageNum -= 1; this.searchForm.pageNum -= 1;
@ -453,6 +493,13 @@
} }
}); });
}, },
findAllRecord(v) {
this.Visiable = true;
console.log(v)
this.$nextTick(() => {
this.$refs.dialog.initRecharge(v);
});
},
handleSearch() { handleSearch() {
this.searchForm.pageNum = 1; this.searchForm.pageNum = 1;
this.searchForm.pageSize = 10; this.searchForm.pageSize = 10;
@ -526,6 +573,7 @@
this.showWorker = true; this.showWorker = true;
}, },
edit(v) { edit(v) {
this.$Message.warning("暂未开放");return
// null"" // null""
for (let attr in v) { for (let attr in v) {
if (v[attr] == null) { if (v[attr] == null) {
@ -667,8 +715,6 @@
} }
}, },
mounted() { mounted() {
//
this.height = Number(document.documentElement.clientHeight - 230);
this.init(); this.init();
}, },
}; };

207
src/views/app/business/courier/logisticsAddress.vue

@ -0,0 +1,207 @@
<template>
<div class="search">
<Card>
<Table :loading="loading" border :columns="columns" :data="data" :size="tableSize" ref="table"
sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="searchForm.pageNum" :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>
</div>
</template>
<script>
import {
deleteComment,
getCommentList
} from "@/api/app";
import "viewerjs/dist/viewer.css";
import Viewer from "viewerjs";
export default {
name: "logisticsAddress",
components: {
},
data() {
return {
tableSize: "default",
loading: true, //
searchForm: {
pageNum: 1,
pageSize: 10,
picture: 0,
score: 0,
shopId: ""
},
selectList: [], //
columns: [
{
type: "index",
width: 60,
align: "center",
},
{
title: "评价用户",
key: "createByName",
minWidth: 125,
},
{
title: "评价时间",
key: "createTime",
minWidth: 125,
render: (h, params) => {
return h(
"div",
this.formatDateTime(params.row.createTime)
);
}
},
{
title: "星级",
key: "score",
minWidth: 125,
},
{
title: "评价",
key: "remark",
minWidth: 125,
},
{
title: "评价图",
key: "picture",
minWidth: 125,
render: (h, params) => {
return h("img", {
attrs: {
src: params.row.picture,
},
style: {
cursor: "zoom-in",
width: "80px",
height: "60px",
margin: "10px 0",
"object-fit": "contain",
},
on: {
click: () => {
this.showPic(params.row.picture);
},
},
});
},
},
{
title: "操作",
key: "action",
width: 200,
align: "center",
fixed: "right",
render: (h, params) => {
return h("div", [
h(
"a", {
on: {
click: () => {
this.remove(params.row);
},
},
},
"删除"
),
]);
},
},
],
data: [], //
total: 0, //
};
},
methods: {
initRecharge(data) {
//data
console.log(data);
this.searchForm.shopId = data.workerId;
this.getDataList();
},
changePage(v) {
this.searchForm.pageNum = v;
this.getDataList();
},
changePageSize(v) {
this.searchForm.pageSize = v;
this.getDataList();
},
remove(v) {
this.$Modal.confirm({
title: "确认删除",
content: "您确认要删除该评论吗?",
loading: true,
onOk: () => {
deleteComment({
orderId: v.id
}).then((res) => {
this.$Modal.remove();
if (res.success) {
this.$Message.success("删除成功");
this.getDataList();
}
});
},
});
},
showPic(v) {
if(v == ''){
this.$Message.warning("没有评价图");return
}
let image = new Image();
image.src = v;
let viewer = new Viewer(image, {
hidden: function() {
viewer.destroy();
},
});
viewer.show();
},
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}`
},
changeSort(e) {
this.searchForm.sort = e.key;
this.searchForm.order = e.order;
if (e.order === "normal") {
this.searchForm.order = "";
}
this.getDataList();
},
changeSelect(e) {
this.selectList = e;
},
getDataList(params) {
this.loading = true;
//
getCommentList(this.searchForm).then((res) => {
this.loading = false;
if (res.code == 200) {
this.data = res.result.records;
this.total = res.result.total;
}
});
},
},
};
</script>
<style lang="less">
//@import "@/styles/table-common.less";
</style>

264
src/views/app/business/deliverytruck/addEdit.vue

@ -1,264 +0,0 @@
<template>
<div class="company-edit">
<!-- Drawer抽屉 -->
<Drawer
:title="title"
v-model="visible"
width="500"
draggable
:mask-closable="type == '0'"
>
<div :style="{ maxHeight: maxHeight }" class="drawer-content">
<div class="drawer-header">
<div style="margin-right: 16px">送车配置</div>
</div>
<Form label-colon v-show="type != '2'">
<Row :gutter="32">
<Col span="24">
<FormItem label="车牌号">
{{ form.companyName }}
</FormItem>
</Col>
</Row>
</Form>
<Form
ref="form"
:model="form"
:rules="formValidate"
label-position="top"
>
<Row :gutter="32" v-if="type == '2'">
<Col span="24">
<FormItem label="车牌号" prop="companyName">
<Input v-model="form.companyName" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="联系人" prop="contacts">
<Input v-model="form.contacts" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="手机号" prop="mobile">
<Input v-model="form.mobile" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="所在地区" prop="companyAddress">
<al-cascader
v-model="form.companyAddress"
data-type="name"
level="2"
transfer
/>
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="详细地址" prop="companyStreet">
<Input v-model="form.companyStreet" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="商圈区域" prop="region">
<region-tree-choose
@on-change="handleSelectRegion"
ref="regionTree"
></region-tree-choose>
</FormItem>
</Col>
<Col span="12">
<FormItem label="返佣金额" prop="rebateAmount">
<Input v-model="form.rebateAmount" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="当次缴纳" prop="depoNum">
<Input v-model="form.depoNum" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="押金余额" prop="depoBal">
<Input v-model="form.depoBal" :disabled="true"/>
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="送车信息收费标准说明">
<Input type="textarea" v-model="form.remark" :rows="4" />
</FormItem>
</Col>
</Row>
</Form>
</div>
<div class="drawer-footer br" v-show="type != '0'">
<Button type="primary" :loading="submitLoading" @click="submit"
>提交</Button
>
<Button @click="visible = false">取消</Button>
</div>
</Drawer>
</div>
</template>
<script>
import { addLogiticsCompany, editLogiticsCompany } from "@/api/app";
import dict from "@/views/my-components/hiver/dict";
import uploadPicInput from "@/views/my-components/hiver/upload-pic-input";
import regionTreeChoose from "@/views/my-components/hiver/region-tree-choose";
export default {
name: "company",
components: {
dict,
uploadPicInput,
regionTreeChoose
},
props: {
value: {
type: Boolean,
default: false,
},
data: {
type: Object,
},
type: {
type: String,
default: "0",
},
},
data() {
return {
roleList: [],
visible: this.value,
title: "",
data:[],
passColor: "",
submitLoading: false,
maxHeight: 510,
form: {
companyAddress: [],
companyStreet: '',
},
formValidate: {
//
companyName: [
{ required: true, message: "请输入车牌号", trigger: "change" },
],
contacts: [
{ required: true, message: "请输入联系人", trigger: "change" },
],
mobile: [
{ required: true, message: "请输入手机号", trigger: "change" },
],
},
};
},
methods: {
init() {
},
changePass(v, grade, strength) {
this.form.password = strength;
},
submit() {
this.$refs.form.validate((valid) => {
if (valid) {
if (this.type == "1") {
//
this.submitLoading = true;
editLogiticsCompany(this.form).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.$emit("on-submit", true);
this.visible = false;
}
});
} else {
//
this.submitLoading = true;
addLogiticsCompany(this.form).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.$emit("on-submit", true);
this.visible = false;
}
});
}
}
});
},
handleSelectRegion(v) {
this.form.region = v;
},
setCurrentValue(value) {
if (value === this.visible) {
return;
}
if (this.type == "1") {
this.title = "编辑送车信息";
this.maxHeight =
Number(document.documentElement.clientHeight - 121) + "px";
} else if (this.type == "2") {
this.title = "添加送车信息";
this.maxHeight =
Number(document.documentElement.clientHeight - 121) + "px";
} else {
this.title = "送车信息详情";
this.maxHeight = "100%";
}
//
this.$refs.form.resetFields();
if (this.type == "0" || this.type == "1") {
//
let data = this.data;
//
if (data.companyAddress) {
data.companyAddress = data.companyAddress.split(",");
} else {
data.companyAddress = [];
}
//
this.$refs.regionTree.setData(data.region, data.regionTitle);
//
this.form = data;
} else {
//
this.form = {
companyAddress: [],
signCompany: "4",
};
}
this.visible = value;
},
},
watch: {
value(val) {
this.setCurrentValue(val);
},
visible(value) {
this.$emit("input", value);
},
},
mounted() {
this.init();
},
};
</script>
<style lang="less">
@import "@/styles/drawer-common.less";
</style>

26
src/views/app/business/deliverytruck/deliveryTruck.vue

@ -181,19 +181,12 @@
<Button type="text" @click="rechargeVisiable = false">关闭</Button> <Button type="text" @click="rechargeVisiable = false">关闭</Button>
</div> </div>
</Modal> </Modal>
<addEdit
:data="form"
:type="showType"
v-model="showCompany"
@on-submit="getDataList"
/>
</div> </div>
</template> </template>
<script> <script>
import { import {
getAllLogiticsCompanyData, getAllLogiticsCompanyData,
getLogiticsCompanyData,
deleteLogiticsCompany, deleteLogiticsCompany,
offLineCompany, offLineCompany,
onLineCompany onLineCompany
@ -202,13 +195,11 @@ import { shortcuts } from "@/libs/shortcuts";
// //
import { exportColumn } from "./exportColumn"; import { exportColumn } from "./exportColumn";
import excel from "@/libs/excel"; import excel from "@/libs/excel";
import addEdit from "./addEdit.vue";
// //
import rechargeOne from "@/views/app/business/recharge/rechargeOne.vue"; import rechargeOne from "@/views/app/business/recharge/rechargeOne.vue";
export default { export default {
name: "logiticsCompany", name: "logiticsCompany",
components: { components: {
addEdit,
rechargeOne rechargeOne
}, },
data() { data() {
@ -491,22 +482,7 @@ export default {
getDataList() { getDataList() {
// //
this.loading = true; this.loading = true;
getLogiticsCompanyData(this.searchForm).then((res) => {
this.loading = false;
if (res.success) {
if (!this.getStore("roles").includes("ROLE_ADMIN")) {
res.result.content.forEach((e) => {
e.mobile = "您无权查看该数据";
});
}
this.data = res.result.content;
this.total = res.result.totalElements;
if (this.data.length == 0 && this.searchForm.pageNumber > 1) {
this.searchForm.pageNumber -= 1;
this.getDataList();
}
}
});
}, },
handleSearch() { handleSearch() {
this.searchForm.pageNumber = 1; this.searchForm.pageNumber = 1;

181
src/views/app/business/expressCompany/addEdit.vue

@ -1,181 +0,0 @@
<template>
<div class="company-edit">
<!-- Drawer抽屉 -->
<Drawer :title="title" v-model="visible" width="500" draggable :mask-closable="type == '0'">
<div :style="{ maxHeight: maxHeight }" class="drawer-content">
<div class="drawer-header">
<div style="margin-right: 16px">楼栋配置</div>
</div>
<Form label-colon>
<Row :gutter="32">
<Col span="24">
<FormItem label="楼栋名称" prop="companyName">
<Input v-model="form.name" />
</FormItem>
</Col>
</Row>
</Form>
<Form ref="form" :model="form" :rules="formValidate" label-position="top">
<Row :gutter="32">
<Col span="24">
<FormItem label="学校id" prop="companyName">
<Input v-model="form.schoolId" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="排序" prop="companyTel">
<Input v-model="form.orderByField" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="备注">
<Input type="textarea" v-model="form.remark" :rows="4" />
</FormItem>
</Col>
</Row>
</Form>
</div>
<div class="drawer-footer br" v-show="type != '0'">
<Button type="primary" :loading="submitLoading" @click="submit">提交</Button>
<Button @click="visible = false">取消</Button>
</div>
</Drawer>
</div>
</template>
<script>
import {
addLogiticsCompany,
editLogiticsCompany
} from "@/api/app";
import dict from "@/views/my-components/hiver/dict";
import uploadPicInput from "@/views/my-components/hiver/upload-pic-input";
import regionTreeChoose from "@/views/my-components/hiver/region-tree-choose";
export default {
name: "expressCompany",
components: {
dict,
uploadPicInput,
regionTreeChoose
},
props: {
value: {
type: Boolean,
default: false,
},
data: {
type: Object,
},
type: {
type: String,
default: "0",
},
},
data() {
return {
roleList: [],
visible: this.value,
title: "",
passColor: "",
submitLoading: false,
maxHeight: 510,
form: {
orderByField: '',
name: '',
remark: '',
schoolId: ''
},
formValidate: {
//
name: [{
required: true,
message: "请输入名称",
trigger: "change"
}, ]
},
};
},
methods: {
init() {
},
handleSelectRegion(v) {
this.form.region = v;
},
submit() {
this.$refs.form.validate((valid) => {
if (valid) {
if (this.type == "1") {
//
this.submitLoading = true;
editLogiticsCompany(this.form).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.$emit("on-submit", true);
this.visible = false;
}
});
} else {
//
this.submitLoading = true;
addLogiticsCompany(this.form).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.$emit("on-submit", true);
this.visible = false;
}
});
}
}
});
},
setCurrentValue(value) {
if (value === this.visible) {
return;
}
if (this.type == "1") {
this.title = "编辑楼栋";
this.maxHeight =
Number(document.documentElement.clientHeight - 121) + "px";
} else if (this.type == "2") {
this.title = "添加新楼栋";
this.maxHeight =
Number(document.documentElement.clientHeight - 121) + "px";
}
//
this.$refs.form.resetFields();
if (this.type == "1") {
//
let data = this.data;
//
this.form = data;
} else {
}
this.visible = value;
},
},
watch: {
value(val) {
this.setCurrentValue(val);
},
visible(value) {
this.$emit("input", value);
},
},
mounted() {
this.init();
},
};
</script>
<style lang="less">
@import "@/styles/drawer-common.less";
</style>

11
src/views/app/business/expressCompany/expressCompany.vue

@ -93,14 +93,12 @@
<Button type="text" @click="rechargeVisiable = false">关闭</Button> <Button type="text" @click="rechargeVisiable = false">关闭</Button>
</div> </div>
</Modal> </Modal>
<addEdit :data="form" :type="showType" v-model="showCompany" @on-submit="getDataList" />
</div> </div>
</template> </template>
<script> <script>
import { import {
getAllLogiticsCompanyData, getAllLogiticsCompanyData,
getLogiticsCompanyData,
deleteLogiticsCompany, deleteLogiticsCompany,
onLineCompany, onLineCompany,
offLineCompany offLineCompany
@ -113,13 +111,11 @@
exportColumn exportColumn
} from "./exportColumn"; } from "./exportColumn";
import excel from "@/libs/excel"; import excel from "@/libs/excel";
import addEdit from "./addEdit.vue";
// //
import rechargeOne from "@/views/app/business/recharge/rechargeOne.vue"; import rechargeOne from "@/views/app/business/recharge/rechargeOne.vue";
export default { export default {
name: "logiticsCompany", name: "logiticsCompany",
components: { components: {
addEdit,
rechargeOne rechargeOne
}, },
data() { data() {
@ -271,12 +267,7 @@
getDataList() { getDataList() {
// //
this.loading = true; this.loading = true;
getLogiticsCompanyData(this.searchForm).then((res) => {
this.loading = false;
if (res.success) {
this.data = res.result;
}
});
}, },
handleSearch() { handleSearch() {
this.getDataList(); this.getDataList();

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

@ -11,13 +11,13 @@
<TabPane label="跑腿订单" name="3"></TabPane> <TabPane label="跑腿订单" name="3"></TabPane>
</Tabs> </Tabs>
<Tabs v-model="tabName1" :animated="false" @on-click="changeTab"> <Tabs v-model="tabName1" :animated="false" @on-click="changeTab">
<TabPane label="待接单" name="0"></TabPane>
<TabPane label="待取货" name="1"></TabPane>
<TabPane label="待送达" name="2"></TabPane>
<TabPane label="全部" name="10"></TabPane> <TabPane label="全部" name="10"></TabPane>
<TabPane label="待支付" name=""></TabPane> <TabPane label="待支付" name=""></TabPane>
<TabPane label="待成团" name=""></TabPane> <TabPane label="待成团" name=""></TabPane>
<TabPane label="待消费" name=""></TabPane> <TabPane label="待消费" name=""></TabPane>
<TabPane label="待接单" name="0"></TabPane>
<TabPane label="待取货" name="1"></TabPane>
<TabPane label="待送达" name="2"></TabPane>
<TabPane label="已完成" name=""></TabPane> <TabPane label="已完成" name=""></TabPane>
<TabPane label="待退款" name=""></TabPane> <TabPane label="待退款" name=""></TabPane>
<TabPane label="已退款" name=""></TabPane> <TabPane label="已退款" name=""></TabPane>
@ -26,7 +26,7 @@
<TabPane label="已售后" name=""></TabPane> <TabPane label="已售后" name=""></TabPane>
</Tabs> </Tabs>
<Row v-show="openSearch" @keydown.enter.native="handleSearch"> <Row v-show="openSearch" @keydown.enter.native="handleSearch">
<Form ref="searchForm" :model="searchForm" inline :label-width="70"> <Form ref="searchForm" :model="searchForm" inline :label-width="90">
<FormItem label="配送员名称" prop="workerName"> <FormItem label="配送员名称" prop="workerName">
<Input type="text" v-model="searchForm.workerName" clearable placeholder="请输入配送员名称" <Input type="text" v-model="searchForm.workerName" clearable placeholder="请输入配送员名称"
style="width: 200px" /> style="width: 200px" />
@ -420,7 +420,7 @@
handleSelectDep(v) { handleSelectDep(v) {
this.searchForm.departmentId = v; this.searchForm.departmentId = v;
}, },
changeOrderTab() { changeOrderTab(v) {
this.searchForm.pageNum = 1; this.searchForm.pageNum = 1;
this.searchForm.deliveryType = v; this.searchForm.deliveryType = v;
this.getLogisticsInfo(); this.getLogisticsInfo();

312
src/views/app/business/logiticsCompany/addEdit.vue

@ -1,312 +0,0 @@
<template>
<div class="company-edit">
<!-- Drawer抽屉 -->
<Drawer
:title="title"
v-model="visible"
width="500"
draggable
:mask-closable="type == '0'"
>
<div :style="{ maxHeight: maxHeight }" class="drawer-content">
<div class="drawer-header">
<div style="margin-right: 16px">公司配置</div>
</div>
<Form label-colon v-show="type != '2'">
<Row :gutter="32">
<Col span="24">
<FormItem label="公司名称">
{{ form.companyName }}
</FormItem>
</Col>
</Row>
</Form>
<Form
ref="form"
:model="form"
:rules="formValidate"
label-position="top"
>
<Row :gutter="32" v-if="type == '2'">
<Col span="24">
<FormItem label="公司名称" prop="companyName">
<Input v-model="form.companyName" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="登录账号" prop="username">
<Input v-model="form.username" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="登录密码" prop="password">
<SetPassword v-model="form.password" @on-change="changePass" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="公司电话" prop="companyTel">
<Input v-model="form.companyTel" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="公司邮箱" prop="companyEmail">
<Input v-model="form.companyEmail" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="所在地区" prop="companyAddress">
<al-cascader
v-model="form.companyAddress"
data-type="name"
level="2"
transfer
/>
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="详细地址" prop="companyStreet">
<Input v-model="form.companyStreet" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="联系人" prop="contacts">
<Input v-model="form.contacts" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="手机号" prop="mobile">
<Input v-model="form.mobile" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="商圈区域" prop="region">
<region-tree-choose
@on-change="handleSelectRegion"
ref="regionTree"
></region-tree-choose>
</FormItem>
</Col>
<Col span="12">
<FormItem label="返佣金额" prop="rebateAmount">
<Input v-model="form.rebateAmount" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="当次缴纳" prop="depoNum">
<Input v-model="form.depoNum" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="押金余额" prop="depoBal">
<Input v-model="form.depoBal" :disabled="true"/>
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="是否支持上门取货" prop="canToDoor">
<i-switch
size="large"
v-model="form.canToDoor"
:true-value="1"
:false-value="0"
>
<span slot="open"></span>
<span slot="close"></span>
</i-switch>
</FormItem>
</Col>
<Col span="12">
<FormItem label="押金余额" prop="depoBal">
<Input v-model="form.depoBal" :disabled="true"/>
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="物流公司收费标准说明">
<Input type="textarea" v-model="form.remark" :rows="4" />
</FormItem>
</Col>
</Row>
</Form>
</div>
<div class="drawer-footer br" v-show="type != '0'">
<Button type="primary" :loading="submitLoading" @click="submit"
>提交</Button
>
<Button @click="visible = false">取消</Button>
</div>
</Drawer>
</div>
</template>
<script>
import { addLogiticsCompany, editLogiticsCompany } from "@/api/app";
import dict from "@/views/my-components/hiver/dict";
import uploadPicInput from "@/views/my-components/hiver/upload-pic-input";
import regionTreeChoose from "@/views/my-components/hiver/region-tree-choose";
export default {
name: "company",
components: {
dict,
uploadPicInput,
regionTreeChoose
},
props: {
value: {
type: Boolean,
default: false,
},
data: {
type: Object,
},
type: {
type: String,
default: "0",
},
},
data() {
return {
roleList: [],
visible: this.value,
title: "",
data:[],
passColor: "",
submitLoading: false,
maxHeight: 510,
form: {
companyAddress: [],
companyStreet: '',
},
formValidate: {
//
companyName: [
{ required: true, message: "请输入公司名称", trigger: "change" },
],
contacts: [
{ required: true, message: "请输入联系人", trigger: "change" },
],
mobile: [
{ required: true, message: "请输入手机号", trigger: "change" },
],
},
};
},
methods: {
init() {
},
changePass(v, grade, strength) {
this.form.password = strength;
},
submit() {
this.$refs.form.validate((valid) => {
if (valid) {
if (this.type == "1") {
//
this.submitLoading = true;
editLogiticsCompany(this.form).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.$emit("on-submit", true);
this.visible = false;
}
});
} else {
//
this.submitLoading = true;
this.form.companyAddress = JSON.stringify(this.form.companyAddress)
this.form.signCompany = "0"
console.log(this.form)
addLogiticsCompany(this.form).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.$emit("on-submit", true);
this.visible = false;
}
});
}
}
});
},
handleSelectRegion(v) {
this.form.region = v;
},
setCurrentValue(value) {
if (value === this.visible) {
return;
}
if (this.type == "1") {
this.title = "编辑物流公司";
this.maxHeight =
Number(document.documentElement.clientHeight - 121) + "px";
} else if (this.type == "2") {
this.title = "添加物流公司";
this.maxHeight =
Number(document.documentElement.clientHeight - 121) + "px";
} else {
this.title = "物流公司详情";
this.maxHeight = "100%";
}
//
this.$refs.form.resetFields();
if (this.type == "0" || this.type == "1") {
//
let data = this.data;
//
if (data.companyAddress) {
data.companyAddress = data.companyAddress.split(",");
} else {
data.companyAddress = [];
}
//
this.$refs.regionTree.setData(data.region, data.regionTitle);
//
this.form = data;
} else {
//
this.form = {
companyAddress: [],
signCompany: "0",
};
}
this.visible = value;
},
},
watch: {
value(val) {
this.setCurrentValue(val);
},
visible(value) {
this.$emit("input", value);
},
},
mounted() {
this.init();
},
};
</script>
<style lang="less">
@import "@/styles/drawer-common.less";
</style>

22
src/views/app/business/logiticsCompany/logiticsCompany.vue

@ -112,15 +112,12 @@
</FormItem> </FormItem>
</Form> </Form>
</Modal> </Modal>
<addEdit :data="form" :type="showType" v-model="showCompany" @on-submit="getDataList" />
</div> </div>
</template> </template>
<script> <script>
import { import {
getAllLogiticsCompanyData, getAllLogiticsCompanyData,
getLogiticsCompanyData,
deleteLogiticsCompany, deleteLogiticsCompany,
onLineCompany, onLineCompany,
offLineCompany offLineCompany
@ -133,7 +130,6 @@
exportColumn exportColumn
} from "./exportColumn"; } from "./exportColumn";
import excel from "@/libs/excel"; import excel from "@/libs/excel";
import addEdit from "./addEdit.vue";
import logisticsAddress from "@/views/app/company/logisticsAddress.vue"; import logisticsAddress from "@/views/app/company/logisticsAddress.vue";
import lineBinding from "@/views/app/business/logiticsCompany/lineBinding.vue"; import lineBinding from "@/views/app/business/logiticsCompany/lineBinding.vue";
// //
@ -145,7 +141,6 @@
export default { export default {
name: "logiticsCompany", name: "logiticsCompany",
components: { components: {
addEdit,
logisticsAddress, logisticsAddress,
rechargeOne, rechargeOne,
lineBinding lineBinding
@ -512,22 +507,7 @@
getDataList() { getDataList() {
// //
this.loading = true; this.loading = true;
getLogiticsCompanyData(this.searchForm).then((res) => {
this.loading = false;
if (res.success) {
if (!this.getStore("roles").includes("ROLE_ADMIN")) {
res.result.content.forEach((e) => {
e.mobile = "您无权查看该数据";
});
}
this.data = res.result.content;
this.total = res.result.totalElements;
if (this.data.length == 0 && this.searchForm.pageNumber > 1) {
this.searchForm.pageNumber -= 1;
this.getDataList();
}
}
});
}, },
handleSearch() { handleSearch() {
this.searchForm.pageNumber = 1; this.searchForm.pageNumber = 1;

308
src/views/app/business/problemFeedback/addEdit.vue

@ -1,308 +0,0 @@
<template>
<div class="company-edit">
<!-- Drawer抽屉 -->
<Drawer
:title="title"
v-model="visible"
width="500"
draggable
:mask-closable="type == '0'"
>
<div :style="{ maxHeight: maxHeight }" class="drawer-content">
<div class="drawer-header">
<div style="margin-right: 16px">公司配置</div>
</div>
<Form label-colon v-show="type != '2'">
<Row :gutter="32">
<Col span="24">
<FormItem label="公司名称">
{{ form.companyName }}
</FormItem>
</Col>
</Row>
</Form>
<Form
ref="form"
:model="form"
:rules="formValidate"
label-position="top"
>
<Row :gutter="32" v-if="type == '2'">
<Col span="24">
<FormItem label="公司名称" prop="companyName">
<Input v-model="form.companyName" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="登录账号" prop="username">
<Input v-model="form.username" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="登录密码" prop="password">
<SetPassword v-model="form.password" @on-change="changePass" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="公司电话" prop="companyTel">
<Input v-model="form.companyTel" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="公司邮箱" prop="companyEmail">
<Input v-model="form.companyEmail" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="所在地区" prop="companyAddress">
<al-cascader
v-model="form.companyAddress"
data-type="name"
level="2"
transfer
/>
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="详细地址" prop="companyStreet">
<Input v-model="form.companyStreet" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="联系人" prop="contacts">
<Input v-model="form.contacts" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="手机号" prop="mobile">
<Input v-model="form.mobile" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="商圈区域" prop="region">
<region-tree-choose
@on-change="handleSelectRegion"
ref="regionTree"
></region-tree-choose>
</FormItem>
</Col>
<Col span="12">
<FormItem label="返佣金额" prop="rebateAmount">
<Input v-model="form.rebateAmount" />
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="12">
<FormItem label="当次缴纳" prop="depoNum">
<Input v-model="form.depoNum" />
</FormItem>
</Col>
<Col span="12">
<FormItem label="押金余额" prop="depoBal">
<Input v-model="form.depoBal" :disabled="true"/>
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="是否支持上门取货" prop="canToDoor">
<i-switch
size="large"
v-model="form.canToDoor"
:true-value="1"
:false-value="0"
>
<span slot="open"></span>
<span slot="close"></span>
</i-switch>
</FormItem>
</Col>
<Col span="12">
<FormItem label="押金余额" prop="depoBal">
<Input v-model="form.depoBal" :disabled="true"/>
</FormItem>
</Col>
</Row>
<Row :gutter="32">
<Col span="24">
<FormItem label="物流公司收费标准说明">
<Input type="textarea" v-model="form.remark" :rows="4" />
</FormItem>
</Col>
</Row>
</Form>
</div>
<div class="drawer-footer br" v-show="type != '0'">
<Button type="primary" :loading="submitLoading" @click="submit"
>提交</Button
>
<Button @click="visible = false">取消</Button>
</div>
</Drawer>
</div>
</template>
<script>
import { addLogiticsCompany, editLogiticsCompany } from "@/api/app";
import dict from "@/views/my-components/hiver/dict";
import uploadPicInput from "@/views/my-components/hiver/upload-pic-input";
import regionTreeChoose from "@/views/my-components/hiver/region-tree-choose";
export default {
name: "company",
components: {
dict,
uploadPicInput,
regionTreeChoose
},
props: {
value: {
type: Boolean,
default: false,
},
data: {
type: Object,
},
type: {
type: String,
default: "0",
},
},
data() {
return {
roleList: [],
visible: this.value,
title: "",
data:[],
passColor: "",
submitLoading: false,
maxHeight: 510,
form: {
companyAddress: [],
companyStreet: '',
},
formValidate: {
//
companyName: [
{ required: true, message: "请输入公司名称", trigger: "change" },
],
contacts: [
{ required: true, message: "请输入联系人", trigger: "change" },
],
mobile: [
{ required: true, message: "请输入手机号", trigger: "change" },
],
},
};
},
methods: {
init() {
},
changePass(v, grade, strength) {
this.form.password = strength;
},
submit() {
this.$refs.form.validate((valid) => {
if (valid) {
if (this.type == "1") {
//
this.submitLoading = true;
editLogiticsCompany(this.form).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.$emit("on-submit", true);
this.visible = false;
}
});
} else {
//
this.submitLoading = true;
addLogiticsCompany(this.form).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.$emit("on-submit", true);
this.visible = false;
}
});
}
}
});
},
handleSelectRegion(v) {
this.form.region = v;
},
setCurrentValue(value) {
if (value === this.visible) {
return;
}
if (this.type == "1") {
this.title = "编辑物流公司";
this.maxHeight =
Number(document.documentElement.clientHeight - 121) + "px";
} else if (this.type == "2") {
this.title = "添加物流公司";
this.maxHeight =
Number(document.documentElement.clientHeight - 121) + "px";
} else {
this.title = "物流公司详情";
this.maxHeight = "100%";
}
//
this.$refs.form.resetFields();
if (this.type == "0" || this.type == "1") {
//
let data = this.data;
//
if (data.companyAddress) {
data.companyAddress = data.companyAddress.split(",");
} else {
data.companyAddress = [];
}
//
this.$refs.regionTree.setData(data.region, data.regionTitle);
//
this.form = data;
} else {
//
this.form = {
companyAddress: [],
signCompany: "0",
};
}
this.visible = value;
},
},
watch: {
value(val) {
this.setCurrentValue(val);
},
visible(value) {
this.$emit("input", value);
},
},
mounted() {
this.init();
},
};
</script>
<style lang="less">
@import "@/styles/drawer-common.less";
</style>

4
src/views/app/business/problemFeedback/problemFeedback.vue

@ -120,8 +120,6 @@
</FormItem> </FormItem>
</Form> </Form>
</Modal> </Modal>
<addEdit :data="form" :type="showType" v-model="showCompany" @on-submit="getDataList" />
</div> </div>
</template> </template>
@ -139,14 +137,12 @@
exportColumn exportColumn
} from "./exportColumn"; } from "./exportColumn";
import excel from "@/libs/excel"; import excel from "@/libs/excel";
import addEdit from "./addEdit.vue";
import logisticsAddress from "@/views/app/company/logisticsAddress.vue"; import logisticsAddress from "@/views/app/company/logisticsAddress.vue";
// //
import rechargeOne from "@/views/app/business/recharge/rechargeOne.vue"; import rechargeOne from "@/views/app/business/recharge/rechargeOne.vue";
export default { export default {
name: "problemFeedback", name: "problemFeedback",
components: { components: {
addEdit,
logisticsAddress, logisticsAddress,
rechargeOne rechargeOne
}, },

80
src/views/app/business/recharge/logisticsAddress.vue

@ -1,79 +1,60 @@
<template> <template>
<div class="search"> <div style="max-height:600px;overflow: scroll;scrollbar-width: none;">
<div class="search" v-for="(item,index) in orderData" :key="index">
<div style="font-size: 24px;font-weight: 700;padding: 10px;">订单{{index + 1}}</div>
<div style="display: flex;"> <div style="display: flex;">
<div class="waiceng"> <div class="waiceng">
<div class="title">订单信息</div> <div class="title">订单信息</div>
<div>订单编号{{orderData.numberCode}}</div> <div>订单编号{{item.numberCode}}</div>
<div>支付订单编号{{'ORDER'+orderData.id}}</div> <div>支付订单编号{{'ORDER'+item.id}}</div>
<div>创建时间{{item.createTime | formatDateTime}}</div>
</div> </div>
<div class="waiceng"> <div class="waiceng">
<div class="title">用户信息</div> <div class="title">用户信息</div>
<div>收货人<span class="blue-color">{{orderData.receiverName}}</span></div> <div>收货人<span class="blue-color">{{item.receiverName}}</span></div>
<div>收货电话<span class="blue-color">{{orderData.receiverPhone}}</span></div> <div>收货电话<span class="blue-color">{{item.receiverPhone}}</span></div>
<div>收货地址<span class="blue-color">{{orderData.receiverAddress}}</span></div> <div>收货地址<span class="blue-color">{{item.receiverAddress}}</span></div>
<div>要求送达时间<span class="blue-color">2026/04/07 09:31:00</span></div>
</div> </div>
<div class="waiceng"> <div class="waiceng">
<div class="title">店铺信息</div> <div class="title">店铺信息</div>
<div>店铺名称<span class="blue-color">{{orderData.shopName}}</span></div> <div>店铺名称<span class="blue-color">{{item.shopName}}</span></div>
<div>店铺电话<span class="blue-color">{{orderData.shopPhone}}</span></div> <div>店铺电话<span class="blue-color">{{item.shopPhone}}</span></div>
<div>配送方式 <span class="blue-color">{{orderData.deliveryType == 1?'配送':'不配送'}}</span></div> <div>配送方式 <span class="blue-color">{{item.deliveryType == 1?'配送':'不配送'}}</span></div>
</div>
<div class="waiceng">
<div class="title">其他信息</div>
<div>配送员<span class="blue-color">张宝芹</span></div>
<div>配送员电话<span class="blue-color">15832720108</span></div>
<div>备注<span class="blue-color">{{orderData.remark}}</span></div>
</div> </div>
</div> </div>
<div style="display: flex;"> <div style="display: flex;">
<div class="waiceng" style="width: 70%;"> <div class="waiceng" style="width: 100%;">
<div class="title">商品信息</div> <div class="title">商品信息</div>
<div class="box" v-for="(item,index) in orderData.goodsList" :key="index"> <div class="box" v-for="(item1,index) in item.goodsList" :key="index">
<div style="flex:1;">{{item.productName}}</div> <div style="flex:1;">{{item1.productName}}</div>
<div class="price"> X{{item.quantity}}</div> <div class="price"> X{{item1.quantity}}</div>
<div class="price">¥{{item.price}}</div> <div class="price">¥{{item1.price}}</div>
</div> </div>
<div class="box"> <div class="box">
<div style="flex:1;">餐盒费</div> <div style="flex:1;">餐盒费</div>
<div class="price">¥{{orderData.packageFee}}</div> <div class="price">¥{{item.packageFee}}</div>
</div> </div>
<div class="box"> <div class="box">
<div style="flex:1;">配送费</div> <div style="flex:1;">配送费</div>
<div class="price">¥{{orderData.deliveryFee}}</div> <div class="price">¥{{item.deliveryFee}}</div>
</div> </div>
<div class="zong">活动优惠<span style="color:red;">¥0</span> 下单返佣<span style="color:red;">¥0</span> <div class="zong">活动优惠<span style="color:red;">¥0</span> 下单返佣<span style="color:red;">¥0</span>
合计<span style="color:#11cd6e;">¥{{orderData.totalAmount}}</span></div> 合计<span style="color:#11cd6e;">¥{{item.totalAmount}}</span></div>
<div class="zong">流水金额<span class="blue-color">¥24</span> </div>
<div class="zong">商家预计收入<span class="blue-color">¥20.16</span> </div>
</div>
<div class="waiceng" style="width: 30%;background: #eee;padding: 0;">
<div style="background: #fff;padding: 10px;margin-bottom: 10px;border-radius: 10px;">
<div class="title">物流信息</div>
<div class="text">用户提交订单时间{{orderData.createTime | formatDateTime }}</div>
<div class="text">用户完成支付时间2026/04/07 09:06:41</div>
<div class="text">商家接单时间2026/04/07 09:06:41</div>
<div class="text">配送员已接单2026/04/07 09:06:44</div>
</div>
<div style="background: #fff;padding: 10px;border-radius: 10px;">
<div class="title">运营订单备注</div>
<textarea name="" id="" cols="30" rows="10" style="width: 100%;border: 1px solid #eee;"></textarea>
<div class='btn' @tap="returnOrder">退款</div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div>
</template> </template>
<script> <script>
import { import {
returnOrder, getPTOrder
} from "@/api/index"; } from "@/api/index";
export default { export default {
name: "logisticsAddress", name: "logisticsAddress",
data() { data() {
return { return {
orderData: {} orderData: []
}; };
}, },
filters: { filters: {
@ -91,17 +72,13 @@
}, },
methods: { methods: {
initRecharge(data) { initRecharge(data) {
console.log('111112222', data); this.getPTOrder(data)
this.orderData = data
}, },
returnOrder(){ getPTOrder(id){
returnOrder({ getPTOrder(id).then((res) => {
orderId:orderData.id,
userId:orderData.userId
}).then((res) => {
this.loading = false;
if (res.success) { if (res.success) {
this.$Message.success("取消订单成功"); this.orderData = res.result.childOrders;
this.$forceUpdate()
} }
}); });
} }
@ -123,6 +100,7 @@
border-radius: 10px; border-radius: 10px;
margin: 5px; margin: 5px;
padding: 10px; padding: 10px;
flex: 1;
} }
.btn { .btn {

206
src/views/app/business/recharge/recharge.vue

@ -40,13 +40,8 @@
</Tooltip> </Tooltip>
</div> </div>
</Row> </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" ref="table" <Table :loading="loading" border :columns="columns" :data="data" :size="tableSize" ref="table"
sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect"></Table> sortable="custom" ></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" <Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize"
@on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]" @on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
@ -54,7 +49,7 @@
</Row> </Row>
</Card> </Card>
<!-- 订单详情 --> <!-- 订单详情 -->
<Modal :title="订单详情" v-model="Visiable" :mask-closable="false" :scrollabele="true" :width="1000"> <Modal :title="订单详情" v-model="Visiable" :mask-closable="false" :scrollabele="true" :width="850">
<logistics-address v-if="Visiable" ref="dialog"></logistics-address> <logistics-address v-if="Visiable" ref="dialog"></logistics-address>
<div slot="footer" v-show="Visiable"> <div slot="footer" v-show="Visiable">
<Button type="text" @click="Visiable = false">关闭</Button> <Button type="text" @click="Visiable = false">关闭</Button>
@ -65,17 +60,12 @@
<script> <script>
import { import {
getWorkerRechargeRecord getGroupList
} from "@/api/index"; } from "@/api/index";
import uploadPicInput from "@/views/my-components/hiver/upload-pic-input"; import logisticsAddress from "@/views/app/business/recharge/logisticsAddress";
import {
shortcuts
} from "@/libs/shortcuts";
import logisticsAddress from "@/views/sys/order-manage/logisticsAddress";
export default { export default {
name: "recharge", name: "recharge",
components: { components: {
uploadPicInput,
logisticsAddress, logisticsAddress,
}, },
data() { data() {
@ -85,33 +75,16 @@
openSearch: true, // openSearch: true, //
openTip: true, // openTip: true, //
loading: true, // loading: true, //
modalType: 0, //
modalVisible: false, //
modalTitle: "", //
searchForm: { searchForm: {
// shopId:'',
pageNumber: 1, // headUserId:'',
pageSize: 10, // status:'',
sort: "createTime", // productName:'',
order: "desc", // isFace:'',
startDate: "", // pageNumber: 1,
endDate: "", // pageSize: 10,
},
selectDate: null,
options: {
shortcuts: shortcuts,
},
form: {
//
name: "",
logo: "",
clientSecret: "",
homeUri: "",
redirectUri: "",
autoApprove: false,
}, },
submitLoading: false, //
selectList: [], //
columns: [{ columns: [{
type: "index", type: "index",
width: 60, width: 60,
@ -119,28 +92,62 @@
}, },
{ {
title: "拼团编号", title: "拼团编号",
key: "rechargeId", key: "id",
align: "center", align: "center",
}, },
{ {
title: "商名", title: "商名",
key: "rechargeName", key: "productName",
align: "center", align: "center",
}, },
{ {
title: "成团时间", title: "成团时间",
key: "rechargeWorkerId", key: "successTime",
align: "center", align: "center",
}, },
{ {
title: "几人团", title: "几人团/已拼成",
key: "rechargeNum", key: "targetMembers",
align: "center", align: "center",
render: (h, params) => {
let re = params.row.targetMembers + '/' + params.row.currentMembers
return h(
"div",
re
);
}
}, },
{ {
title: "状态", title: "状态",
key: "createTime", key: "status", //0 1 2 3
align: "center", align: "center",
render: (h, params) => {
let re = "",
color = "";
if (params.row.status == "3") {
re = "面对面";
color = "yellow";
} else if (params.row.status == "0") {
re = "待成团";
color = "yellow";
} else if (params.row.status == "1") {
re = "成功";
color = "green";
} else if (params.row.status == "2") {
re = "失败";
color = "red";
}
return h("div", [
h(
"Tag", {
props: {
color: color,
},
},
re
),
]);
},
}, },
{ {
title: "操作", title: "操作",
@ -150,43 +157,23 @@
fixed: "right", fixed: "right",
render: (h, params) => { render: (h, params) => {
return h("div", [ return h("div", [
h("Divider", {
props: {
type: "vertical",
},
}),
h(
"a", {
on: {
click: () => {
this.edit(params.row);
},
},
},
"查看详情"
),
h("Divider", {
props: {
type: "vertical",
},
}),
h( h(
"a", { "a", {
on: { on: {
click: () => { click: () => {
this.edit(params.row); this.getOrder(params.row.id);
}, },
}, },
}, },
"查看订单" "查看订单"
), )
]); ]);
}, },
}, },
], ],
data: [], // data: [], //
total: 0, // total: 0, //
rechargeWorkerId: "",
}; };
}, },
methods: { methods: {
@ -196,11 +183,6 @@
changePage(v) { changePage(v) {
this.searchForm.pageNumber = v; this.searchForm.pageNumber = v;
this.getDataList(); this.getDataList();
this.clearSelectAll();
},
edit(v){
this.Visiable = true;
}, },
changePageSize(v) { changePageSize(v) {
this.searchForm.pageSize = v; this.searchForm.pageSize = v;
@ -215,55 +197,28 @@
this.$refs.searchForm.resetFields(); this.$refs.searchForm.resetFields();
this.searchForm.pageNumber = 1; this.searchForm.pageNumber = 1;
this.searchForm.pageSize = 10; this.searchForm.pageSize = 10;
this.selectDate = null;
this.searchForm.startDate = "";
this.searchForm.endDate = "";
// //
this.getDataList(); this.getDataList();
}, },
changeSort(e) { //
this.searchForm.sort = e.key; getOrder(v){
this.searchForm.order = e.order; console.log(v)
if (e.order === "normal") { this.Visiable = true
this.searchForm.order = ""; this.$nextTick(() => {
} this.$refs.dialog.initRecharge(v);
this.getDataList(); });
},
clearSelectAll() {
this.$refs.table.selectAll(false);
},
changeSelect(e) {
this.selectList = e;
},
selectDateRange(v) {
if (v) {
this.searchForm.startDate = v[0];
this.searchForm.endDate = v[1];
}
}, },
changeTableSize(v) { changeTableSize(v) {
this.tableSize = v; this.tableSize = v;
}, },
exportData() {
this.$refs.table.exportCsv({
filename: "数据",
});
},
generateSecret() {
getSecretKey().then((res) => {
if (res.success) {
this.form.clientSecret = res.result;
}
});
},
getDataList() { getDataList() {
this.loading = true; this.loading = true;
// //
getWorkerRechargeRecord(this.rechargeWorkerId).then((res) => { getGroupList(this.searchForm).then((res) => {
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {
this.data = res.result.content; this.data = res.result.records;
this.total = res.result.totalElements; this.total = res.result.total;
if (this.data.length == 0 && this.searchForm.pageNumber > 1) { if (this.data.length == 0 && this.searchForm.pageNumber > 1) {
this.searchForm.pageNumber -= 1; this.searchForm.pageNumber -= 1;
this.getDataList(); this.getDataList();
@ -271,35 +226,6 @@
} }
}); });
}, },
handleSubmit() {
this.$refs.form.validate((valid) => {
if (valid) {
this.submitLoading = true;
if (this.modalType === 0) {
// id
delete this.form.id;
addClient(this.form).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.getDataList();
this.modalVisible = false;
}
});
} else {
//
updateClient(this.form).then((res) => {
this.submitLoading = false;
if (res.success) {
this.$Message.success("操作成功");
this.getDataList();
this.modalVisible = false;
}
});
}
}
});
},
}, },
mounted() { mounted() {
this.init(); this.init();

398
src/views/app/business/recharge/rechargeOne.vue

@ -1,227 +1,185 @@
<template> <template>
<!--1.首先弹窗页面中要有el-dialog组件即弹窗组件我们把弹窗中的内容放在el-dialog组件中--> <!--1.首先弹窗页面中要有el-dialog组件即弹窗组件我们把弹窗中的内容放在el-dialog组件中-->
<!--2.设置:visible.sync属性动态绑定一个布尔值通过这个属性来控制弹窗是否弹出--> <!--2.设置:visible.sync属性动态绑定一个布尔值通过这个属性来控制弹窗是否弹出-->
<div class="search"> <div class="search">
<Card> <Card>
<Table <Table :loading="loading" border :columns="columns" :data="data" :size="tableSize" ref="table"
:loading="loading" sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect"></Table>
border <Row type="flex" justify="end" class="page">
:columns="columns" <Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize"
:data="data" @on-change="changePage" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
:size="tableSize" size="small" show-total show-elevator show-sizer></Page>
ref="table" </Row>
sortable="custom" </Card>
@on-sort-change="changeSort" </div>
@on-selection-change="changeSelect"
></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>
</div>
</template> </template>
<script> <script>
import { import uploadPicInput from "@/views/my-components/hiver/upload-pic-input";
getWorkerRechargeRecord import {
} from "@/api/index"; shortcuts
import uploadPicInput from "@/views/my-components/hiver/upload-pic-input"; } from "@/libs/shortcuts";
import { shortcuts } from "@/libs/shortcuts"; export default {
export default { name: "rechargeOne",
name: "rechargeOne", components: {
components: { uploadPicInput,
uploadPicInput, },
}, data() {
data() { return {
return { tableSize: "default",
tableSize: "default", openSearch: true, //
openSearch: true, // openTip: true, //
openTip: true, // loading: true, //
loading: true, // modalType: 0, //
modalType: 0, // modalVisible: false, //
modalVisible: false, // modalTitle: "", //
modalTitle: "", // searchForm: {
searchForm: { //
// pageNumber: 1, //
pageNumber: 1, // pageSize: 10, //
pageSize: 10, // sort: "createTime", //
sort: "createTime", // order: "desc", //
order: "desc", // startDate: "", //
startDate: "", // endDate: "", //
endDate: "", // },
}, selectDate: null,
selectDate: null, options: {
options: { shortcuts: shortcuts,
shortcuts: shortcuts, },
}, form: {
form: { //
// name: "",
name: "", logo: "",
logo: "", clientSecret: "",
clientSecret: "", homeUri: "",
homeUri: "", redirectUri: "",
redirectUri: "", autoApprove: false,
autoApprove: false, },
}, submitLoading: false, //
submitLoading: false, // selectList: [], //
selectList: [], // columns: [{
columns: [ type: "selection",
{ width: 60,
type: "selection", align: "center",
width: 60, fixed: "left",
align: "center", },
fixed: "left", {
}, type: "index",
{ width: 60,
type: "index", align: "center",
width: 60, fixed: "left",
align: "center", },
fixed: "left", {
}, title: "充值编号",
{ key: "rechargeId",
title: "充值编号", minWidth: 125,
key: "rechargeId", sortable: true,
minWidth: 125, fixed: "left",
sortable: true, },
fixed: "left", {
}, title: "被充值人名称",
{ key: "rechargeName",
title: "被充值人名称", minWidth: 125,
key: "rechargeName", sortable: true,
minWidth: 125, fixed: "left",
sortable: true, },
fixed: "left", {
}, title: "被充值人编号",
{ key: "rechargeWorkerId",
title: "被充值人编号", minWidth: 125,
key: "rechargeWorkerId", sortable: true,
minWidth: 125, fixed: "left",
sortable: true, },
fixed: "left", {
}, title: "充值金额",
{ key: "rechargeNum",
title: "充值金额", minWidth: 125,
key: "rechargeNum", sortable: true,
minWidth: 125, fixed: "left",
sortable: true, },
fixed: "left", {
}, title: "充值描述",
{ key: "rechargeDescribe",
title: "充值描述", minWidth: 125,
key: "rechargeDescribe", sortable: true,
minWidth: 125, fixed: "left",
sortable: true, },
fixed: "left", {
}, title: "充值时间",
{ key: "createTime",
title: "充值时间", width: 170,
key: "createTime", sortable: true,
width: 170, sortType: "desc",
sortable: true, },
sortType: "desc", ],
}, data: [], //
], total: 0, //
data: [], // rechargeWorkerId: "",
total: 0, // detailVisible: false,
rechargeWorkerId: "", };
detailVisible:false, },
}; methods: {
}, init() {
methods: { this.getDataList();
init() { },
this.getDataList(); initRecharge(data) {
}, this.detailVisible = true;
initRecharge(data) { //data
this.detailVisible=true; console.log(data);
//data this.getDataList1(data);
console.log(data); },
this.getDataList1(data); changePage(v) {
}, this.searchForm.pageNumber = v;
changePage(v) { this.getDataList();
this.searchForm.pageNumber = v; this.clearSelectAll();
this.getDataList(); },
this.clearSelectAll(); changePageSize(v) {
}, this.searchForm.pageSize = v;
changePageSize(v) { this.getDataList();
this.searchForm.pageSize = v; },
this.getDataList(); changeSort(e) {
}, this.searchForm.sort = e.key;
changeSort(e) { this.searchForm.order = e.order;
this.searchForm.sort = e.key; if (e.order === "normal") {
this.searchForm.order = e.order; this.searchForm.order = "";
if (e.order === "normal") { }
this.searchForm.order = ""; this.getDataList();
} },
this.getDataList(); clearSelectAll() {
}, this.$refs.table.selectAll(false);
clearSelectAll() { },
this.$refs.table.selectAll(false); changeSelect(e) {
}, this.selectList = e;
changeSelect(e) { },
this.selectList = e; selectDateRange(v) {
}, if (v) {
selectDateRange(v) { this.searchForm.startDate = v[0];
if (v) { this.searchForm.endDate = v[1];
this.searchForm.startDate = v[0]; }
this.searchForm.endDate = v[1]; },
} changeTableSize(v) {
}, this.tableSize = v;
changeTableSize(v) { },
this.tableSize = v; exportData() {
}, this.$refs.table.exportCsv({
exportData() { filename: "数据",
this.$refs.table.exportCsv({ });
filename: "数据", },
}); getDataList() {
}, this.loading = true;
getDataList() {
this.loading = true; },
// getDataList1(params) {
getWorkerRechargeRecord(this.searchForm).then((res) => { this.loading = true;
this.loading = false;
if (res.success) { },
this.data = res.result.content; },
this.total = res.result.totalElements; mounted() {
if (this.data.length == 0 && this.searchForm.pageNumber > 1) { //this.init();
this.searchForm.pageNumber -= 1; },
this.getDataList(); };
}
}
});
},
getDataList1(params) {
this.loading = true;
//
getWorkerRechargeRecord(params).then((res) => {
this.loading = false;
if (res.success) {
this.data = res.result.content;
this.total = res.result.totalElements;
if (this.data.length == 0 && this.searchForm.pageNumber > 1) {
this.searchForm.pageNumber -= 1;
this.getDataList();
}
}
});
},
},
mounted() {
//this.init();
},
};
</script> </script>
<style lang="less"> <style lang="less">
//@import "@/styles/table-common.less"; //@import "@/styles/table-common.less";
</style> </style>

20
src/views/app/marketing-management/marketing-management.vue

@ -167,7 +167,6 @@
} from "@/api/index"; } from "@/api/index";
import { import {
getAllLogiticsCompanyData, getAllLogiticsCompanyData,
getLogiticsCompanyData,
} from "@/api/app"; } from "@/api/app";
import { import {
shortcuts shortcuts
@ -651,24 +650,7 @@
getWuLiuValue(v) { getWuLiuValue(v) {
this.searchForm.companyName = v this.searchForm.companyName = v
getLogiticsCompanyData({
companyName: v,
id: "",
contacts: "",
mobile: "",
pageNumber: 1,
pageSize: 10,
sort: "createTime",
order: "desc",
startDate: "",
endDate: "",
signCompany: "",
}).then((res) => {
this.loading = false;
if (res.success) {
this.wuliuList = res.result.content
}
});
}, },
getShouValue(v) { getShouValue(v) {

209
src/views/app/shop/logisticsAddress.vue

@ -0,0 +1,209 @@
<template>
<div class="search">
<Card>
<Table :loading="loading" border :columns="columns" :data="data" :size="tableSize" ref="table"
sortable="custom" @on-sort-change="changeSort" @on-selection-change="changeSelect"></Table>
<Row type="flex" justify="end" class="page">
<Page :current="searchForm.pageNum" :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>
</div>
</template>
<script>
import {
deleteComment,
getCommentList
} from "@/api/app";
import "viewerjs/dist/viewer.css";
import Viewer from "viewerjs";
export default {
name: "logisticsAddress",
components: {
},
data() {
return {
tableSize: "default",
loading: true, //
searchForm: {
pageNum: 1,
pageSize: 10,
picture: 0,
score: 0,
shopId: ""
},
selectList: [], //
columns: [
{
type: "index",
width: 60,
align: "center",
},
{
title: "评价用户",
key: "createByName",
minWidth: 125,
},
{
title: "评价时间",
key: "createTime",
minWidth: 125,
render: (h, params) => {
return h(
"div",
this.formatDateTime(params.row.createTime)
);
}
},
{
title: "星级",
key: "score",
minWidth: 125,
},
{
title: "评价",
key: "remark",
minWidth: 125,
},
{
title: "评价图",
key: "picture",
minWidth: 125,
render: (h, params) => {
return h("img", {
attrs: {
src: params.row.picture,
},
style: {
cursor: "zoom-in",
width: "80px",
height: "60px",
margin: "10px 0",
"object-fit": "contain",
},
on: {
click: () => {
this.showPic(params.row.picture);
},
},
});
},
},
{
title: "操作",
key: "action",
width: 200,
align: "center",
fixed: "right",
render: (h, params) => {
return h("div", [
h(
"a", {
on: {
click: () => {
this.remove(params.row);
},
},
},
"删除"
),
]);
},
},
],
data: [], //
total: 0, //
};
},
methods: {
initRecharge(data) {
//data
console.log('djdjdjd1',data);
this.searchForm.shopId = data.id;
console.log('djdjdjd1',this.searchForm.shopId);
this.getDataList();
},
changePage(v) {
this.searchForm.pageNum = v;
this.getDataList();
},
changePageSize(v) {
this.searchForm.pageSize = v;
this.getDataList();
},
remove(v) {
this.$Modal.confirm({
title: "确认删除",
content: "您确认要删除该评论吗?",
loading: true,
onOk: () => {
deleteComment({
orderId: v.id
}).then((res) => {
this.$Modal.remove();
if (res.success) {
this.$Message.success("删除成功");
this.getDataList();
}
});
},
});
},
showPic(v) {
if(v == ''){
this.$Message.warning("没有评价图");return
}
let image = new Image();
image.src = v;
let viewer = new Viewer(image, {
hidden: function() {
viewer.destroy();
},
});
viewer.show();
},
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}`
},
changeSort(e) {
this.searchForm.sort = e.key;
this.searchForm.order = e.order;
if (e.order === "normal") {
this.searchForm.order = "";
}
this.getDataList();
},
changeSelect(e) {
this.selectList = e;
},
getDataList(params) {
this.loading = true;
//
getCommentList(this.searchForm).then((res) => {
this.loading = false;
if (res.code == 200) {
this.data = res.result.records;
this.total = res.result.total;
}
});
},
},
};
</script>
<style lang="less">
//@import "@/styles/table-common.less";
</style>

30
src/views/app/shop/shop.vue

@ -122,6 +122,12 @@
<Button type="text" @click="Visiable = false">关闭</Button> <Button type="text" @click="Visiable = false">关闭</Button>
</div> </div>
</Modal> </Modal>
<Modal :title="查看评论" v-model="courierVisiable" :mask-closable="false" :scrollabele="true" :width="1200">
<logistics-address v-if="courierVisiable" ref="courierDialog"></logistics-address>
<div slot="footer" v-show=courierVisiable>
<Button type="text" @click="courierVisiable = false">关闭</Button>
</div>
</Modal>
<check-password ref="checkPass" @on-success="resetPass" /> <check-password ref="checkPass" @on-success="resetPass" />
<addEdit :data="form" :type="showType" v-model="showUser" @on-submit="getDataList" /> <addEdit :data="form" :type="showType" v-model="showUser" @on-submit="getDataList" />
@ -159,6 +165,7 @@
import excel from "@/libs/excel"; import excel from "@/libs/excel";
import addEdit from "./addEdit.vue"; import addEdit from "./addEdit.vue";
import mernage from "./mernage.vue"; import mernage from "./mernage.vue";
import logisticsAddress from "@/views/app/shop/logisticsAddress.vue";
import dict from "@/views/my-components/hiver/dict"; import dict from "@/views/my-components/hiver/dict";
import goodsList from "./dictManage.vue"; import goodsList from "./dictManage.vue";
@ -173,6 +180,7 @@
export default { export default {
name: "user-manage", name: "user-manage",
components: { components: {
logisticsAddress,
departmentChoose, departmentChoose,
checkPassword, checkPassword,
addEdit, addEdit,
@ -182,6 +190,7 @@
}, },
data() { data() {
return { return {
courierVisiable:false,
Visiable:false, Visiable:false,
tableSize: "default", tableSize: "default",
height: 510, height: 510,
@ -372,6 +381,21 @@
type: "vertical", type: "vertical",
}, },
}), }),
h(
"a", {
on: {
click: () => {
this.findAllRecord(params.row);
},
},
},
"查看评论"
),
h("Divider", {
props: {
type: "vertical",
},
}),
h( h(
"a", { "a", {
on: { on: {
@ -669,6 +693,12 @@
this.showType = "0"; this.showType = "0";
this.showUser = true; this.showUser = true;
}, },
findAllRecord(v) {
this.courierVisiable = true;
this.$nextTick(() => {
this.$refs.courierDialog.initRecharge(v);
});
},
add() { add() {
this.showType = "2"; this.showType = "2";
this.showUser = true; this.showUser = true;

133
src/views/login.vue

@ -57,57 +57,20 @@
</Form> </Form>
</TabPane> </TabPane>
</Tabs> </Tabs>
<Tooltip content="hiver App扫码登录" placement="right" class="qr block-tool">
<router-link to="/login-qr">
<XIcon type="iconfont icon-saomadenglu1" size="30" />
</router-link>
</Tooltip>
</div> </div>
<Row justify="space-between" align="middle"> <Row justify="space-between" align="middle">
<Checkbox v-model="form.saveLogin" size="large">{{ <Checkbox v-model="form.saveLogin" size="large">{{
$t("autoLogin") $t("autoLogin")
}}</Checkbox> }}</Checkbox>
<Dropdown trigger="click" @on-click="handleDropDown">
<a class="forget-pass">{{ $t("forgetPass") }}</a>
<DropdownMenu slot="list">
<DropdownItem name="test">体验测试账号</DropdownItem>
<DropdownItem name="resetByMobile">使用手机号重置密码(付费)</DropdownItem>
<DropdownItem name="resetByEmail">使用邮箱重置密码(付费)</DropdownItem>
</DropdownMenu>
</Dropdown>
</Row> </Row>
<Button class="login-btn" type="primary" size="large" :loading="loading" @click="submitLogin" long> <Button class="login-btn" type="primary" size="large" :loading="loading" @click="submitLogin" long>
<span v-if="!loading">{{ $t("login") }}</span> <span v-if="!loading">{{ $t("login") }}</span>
<span v-else>{{ $t("logining") }}</span> <span v-else>{{ $t("logining") }}</span>
</Button> </Button>
<Row type="flex" justify="space-between" class="other-login"> <Row type="flex" justify="space-between" class="other-login">
<div class="other-way icons">
{{ $t("otherLogin") }}
<div class="other-icon" @click="toGithubLogin">
<Icon custom="iconfont icon-github" size="20" class="other-icon"
@click="toGithubLogin" />
</div>
<div class="other-icon" @click="toQQLogin">
<Icon custom="iconfont icon-qq" size="22" />
</div>
<div class="other-icon" @click="toWeixinLogin">
<Icon custom="iconfont icon-weixin" size="23" />
</div>
<Icon v-show="!showMore" type="ios-arrow-down" class="other-icon" size="16"
@click="showMore = true"></Icon>
<div class="other-icon" v-show="showMore" @click="toWeiboLogin">
<Icon custom="iconfont icon-weibo" size="23" />
</div>
<div class="other-icon" v-show="showMore" @click="toDingdingLogin">
<Icon custom="iconfont icon-dingding" size="20" />
</div>
<div class="other-icon" v-show="showMore" @click="toWorkwechatLogin">
<Icon custom="iconfont icon-qiyeweixin" size="20" />
</div>
<Icon v-show="showMore" type="ios-arrow-up" class="other-icon" size="16"
@click="showMore = false"></Icon>
</div>
<router-link to="/register"> <router-link to="/register">
<a class="forget-pass">{{ $t("registerAccount") }}</a> <a class="forget-pass">{{ $t("registerAccount") }}</a>
</router-link> </router-link>
@ -119,7 +82,6 @@
</div> </div>
<Footer /> <Footer />
</Col> </Col>
<LangSwitch />
</Row> </Row>
</div> </div>
</template> </template>
@ -128,12 +90,6 @@
import { import {
login, login,
userInfo, userInfo,
githubLogin,
qqLogin,
weiboLogin,
wechatLogin,
dingdingLogin,
workwechatLogin,
getJWT, getJWT,
sendLoginSms, sendLoginSms,
smsLogin, smsLogin,
@ -148,7 +104,6 @@
import Cookies from "js-cookie"; import Cookies from "js-cookie";
import Header from "@/views/main-components/header"; import Header from "@/views/main-components/header";
import Footer from "@/views/main-components/footer"; import Footer from "@/views/main-components/footer";
import LangSwitch from "@/views/main-components/lang-switch";
import RectLoading from "@/views/my-components/hiver/rect-loading"; import RectLoading from "@/views/my-components/hiver/rect-loading";
import CountDownButton from "@/views/my-components/hiver/count-down-button"; import CountDownButton from "@/views/my-components/hiver/count-down-button";
import util from "@/libs/util.js"; import util from "@/libs/util.js";
@ -156,13 +111,11 @@
components: { components: {
CountDownButton, CountDownButton,
RectLoading, RectLoading,
LangSwitch,
Header, Header,
Footer, Footer,
}, },
data() { data() {
return { return {
showMore: false,
captchaImg: "", captchaImg: "",
loadingCaptcha: true, loadingCaptcha: true,
socialLogining: true, socialLogining: true,
@ -322,66 +275,6 @@
}); });
} }
}, },
toGithubLogin() {
this.socialLogining = true;
githubLogin().then((res) => {
if (res.success) {
window.location.href = res.result;
} else {
this.socialLogining = false;
}
});
},
toQQLogin() {
this.socialLogining = true;
qqLogin().then((res) => {
if (res.success) {
window.location.href = res.result;
} else {
this.socialLogining = false;
}
});
},
toWeiboLogin() {
this.socialLogining = true;
weiboLogin().then((res) => {
if (res.success) {
window.location.href = res.result;
} else {
this.socialLogining = false;
}
});
},
toWeixinLogin() {
this.socialLogining = true;
wechatLogin().then((res) => {
if (res.success) {
window.location.href = res.result;
} else {
this.socialLogining = false;
}
});
},
toDingdingLogin() {
this.socialLogining = true;
dingdingLogin().then((res) => {
if (res.success) {
window.location.href = res.result;
} else {
this.socialLogining = false;
}
});
},
toWorkwechatLogin() {
this.socialLogining = true;
workwechatLogin().then((res) => {
if (res.success) {
window.location.href = res.result;
} else {
this.socialLogining = false;
}
});
},
relatedLogin() { relatedLogin() {
let q = this.$route.query; let q = this.$route.query;
let error = q.error; let error = q.error;
@ -443,22 +336,6 @@
this.socialLogining = false; this.socialLogining = false;
} }
}, },
handleDropDown(v) {
if (v == "test") {
this.test();
} else if (v == "resetByMobile") {
this.$router.push({
name: "reset",
});
} else if (v == "resetByEmail") {
this.$router.push({
name: "reset",
query: {
type: "1",
},
});
}
},
showNotice() { showNotice() {
getNotice().then((res) => { getNotice().then((res) => {
if (res.success) { if (res.success) {
@ -480,12 +357,6 @@
} }
}); });
}, },
test() {
this.$Notice.info({
title: "测试体验账号",
desc: "账号:test或test2<br>密码:123456",
});
},
}, },
mounted() { mounted() {
this.showNotice(); this.showNotice();

6
src/views/main-components/footer.vue

@ -1,8 +1,10 @@
<template> <template>
<div class="foot"> <div class="foot">
<Row type="flex" justify="center" class="copyright"> <Row type="flex" justify="center" class="copyright">
Copyright © 2025 - Present Copyright © 2022 - Present
<a href="https://hiver.cc" target="_blank" style="margin: 0 5px">Hiver.cc</a> <!-- <a href="https://hiver.cc" target="_blank" style="margin: 0 5px"> -->
河北快拾科技
<!-- </a> -->
{{ $t("rights") }} {{ $t("rights") }}
</Row> </Row>
</div> </div>

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

@ -26,7 +26,7 @@
<div>备注<span class="blue-color">{{orderData.deliveryInfo.remark}}</span></div> <div>备注<span class="blue-color">{{orderData.deliveryInfo.remark}}</span></div>
</div> </div>
</div> </div>
<div style="display: flex;"> <div style="display: flex;" v-if="orderData.status ==7 || orderData.status ==11">
<div class="waiceng" style="width: 70%;"> <div class="waiceng" style="width: 70%;">
<div class="title" style="color:red">申请退款信息-用户全部退款</div> <div class="title" style="color:red">申请退款信息-用户全部退款</div>
<div class="box" v-for="(item,index) in orderData.goodsList" :key="index"> <div class="box" v-for="(item,index) in orderData.goodsList" :key="index">
@ -200,8 +200,6 @@
}); });
}, },
processReturn(item,status){ processReturn(item,status){
console.log('ggggg',item)
console.log('hhhhh',status)
let url = '' let url = ''
//退 //退
if(item.status == 7){ if(item.status == 7){
@ -229,7 +227,7 @@
this.returnFormData.refundType = item.refundType; this.returnFormData.refundType = item.refundType;
this.returnFormData.refundTypeStatus = item.refundTypeStatus; this.returnFormData.refundTypeStatus = item.refundTypeStatus;
let that = this let that = this;
returnOrNoOrder(this.returnFormData).then((res) => { returnOrNoOrder(this.returnFormData).then((res) => {
this.loading = false; this.loading = false;
if (res.success) { if (res.success) {

11
src/views/sys/order-manage/orderManage.vue

@ -153,7 +153,13 @@
{ {
title: "店铺名称", title: "店铺名称",
key: "shopName", key: "shopName",
width: 200, width: 230,
align: "center",
},
{
title: "配送费",
key: "deliveryFee",
width: 130,
align: "center", align: "center",
}, },
{ {
@ -171,7 +177,6 @@
{ {
title: "完成支付时间", title: "完成支付时间",
key: "createTime", key: "createTime",
width: 170,
align: "center", align: "center",
render: (h, params) => { render: (h, params) => {
return h( return h(
@ -205,6 +210,8 @@
re = "等待同意退款"; re = "等待同意退款";
} else if (params.row.status == 8) { } else if (params.row.status == 8) {
re = "订单已退款"; re = "订单已退款";
} else if (params.row.status == 10) {
re = "待成团";
} else if (params.row.status == 11) { } else if (params.row.status == 11) {
re = "售后中"; re = "售后中";
} else if (params.row.status == 12) { } else if (params.row.status == 12) {

Loading…
Cancel
Save