Compare commits
10
Commits
9073b8310e
...
gyj
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b3112b547 | ||
|
|
ad93451897 | ||
|
|
55ca703755 | ||
|
|
8ef70b7ee8 | ||
|
|
ea6208ba8a | ||
|
|
011f54cf9c | ||
|
|
6d0b76e41e | ||
|
|
ba176fe8e4 | ||
|
|
b582f5c73b | ||
|
|
b80265f3e8 |
Binary file not shown.
|
After Width: | Height: | Size: 224 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 192 KiB |
@@ -15,5 +15,5 @@ export function getOrderList(query) {
|
||||
export function exportOrder(query) {
|
||||
|
||||
const urlParams = new URLSearchParams(query);
|
||||
return `http://repair.cpolar.top/order/list/export?${urlParams.toString()}`;
|
||||
return `https://api.cqcxj.cn/order/list/export?${urlParams.toString()}`;
|
||||
}
|
||||
+6
-8
@@ -9,9 +9,7 @@ const errorCode = {
|
||||
default: "系统未知错误,请反馈给管理员",
|
||||
};
|
||||
|
||||
// const url = "https://repair.cpolar.top"; // 开发地址
|
||||
const url = "https://api.cqcxj.cn"; // 正式地址
|
||||
// const url = "https://cqjql.scdswj.cn:9443"; // 临时地址n
|
||||
const url = "https://api.cqcxj.cn";
|
||||
|
||||
const service = axios.create({
|
||||
baseURL: url,
|
||||
@@ -47,7 +45,7 @@ service.interceptors.request.use(
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
Promise.reject(error);
|
||||
Promise.reject(error).then(() => {});
|
||||
}
|
||||
);
|
||||
|
||||
@@ -78,7 +76,7 @@ service.interceptors.response.use(
|
||||
// Message({ message: msg, type: 'warning' })
|
||||
ElMessage.error(message);
|
||||
return Promise.reject("error");
|
||||
} else if (code != 200) {
|
||||
} else if (code !== 200) {
|
||||
ElMessage.error(message);
|
||||
return Promise.reject("error");
|
||||
} else {
|
||||
@@ -88,11 +86,11 @@ service.interceptors.response.use(
|
||||
(error) => {
|
||||
console.log(error.response.data); // 获取错误状态码
|
||||
// 对响应错误做点什么
|
||||
if (error.message.indexOf("timeout") != -1) {
|
||||
if (error.message.indexOf("timeout") !== -1) {
|
||||
ElMessage.error("网络超时");
|
||||
} else if (error.message == "Network Error") {
|
||||
} else if (error.message === "Network Error") {
|
||||
ElMessage.error("网络连接错误");
|
||||
} else if (error.response.data.code == "401") {
|
||||
} else if (error.response.data.code === "401") {
|
||||
sessionStorage.clear();
|
||||
localStorage.clear();
|
||||
router.push("/login");
|
||||
|
||||
@@ -26,6 +26,11 @@ export const menuListItem = [
|
||||
url: "/activity",
|
||||
icon: "Menu",
|
||||
},
|
||||
{
|
||||
title: "重复下单开关",
|
||||
url: "/switchOrder",
|
||||
icon: "Menu",
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -64,6 +64,15 @@ const routerList = [
|
||||
requiresAuth: true, //有一些页面是否登录才能进去
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/switchOrder",
|
||||
name: "switchOrder",
|
||||
component: () => import("../views/system/switchOrder.vue"),
|
||||
meta: {
|
||||
name: "重复下单开关",
|
||||
requiresAuth: true, //有一些页面是否登录才能进去
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/edit",
|
||||
name: "edit",
|
||||
|
||||
@@ -8,7 +8,7 @@ export default {
|
||||
state: {
|
||||
UserInfo: {},
|
||||
token: sessionStorage.getItem("token") || "",
|
||||
isCollapse: true,
|
||||
isCollapse: false,
|
||||
themeConfig: {
|
||||
primary: "#4060c7",
|
||||
tabColor: "#FFFFFF",
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
<el-form-item label="服务名称" prop="formData.goodsName">
|
||||
<el-input
|
||||
v-model="formData.goodsName"
|
||||
maxlength="6"
|
||||
placeholder="请输入服务名称"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
@@ -40,6 +41,20 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="服务图标">
|
||||
<el-upload
|
||||
v-model:file-list="fileIcon"
|
||||
list-type="picture-card"
|
||||
:before-upload="beforeUpload"
|
||||
:http-request="addUploadIconFile"
|
||||
:limit="1"
|
||||
:on-exceed="handleIconExceed"
|
||||
:on-remove="handleIconRemove"
|
||||
>
|
||||
<el-icon><Plus /></el-icon>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="轮播图">
|
||||
<el-upload
|
||||
v-model:file-list="fileBannerList"
|
||||
@@ -106,13 +121,20 @@
|
||||
/>
|
||||
</template>
|
||||
|
||||
<template v-slot:default="scope" v-if="item.props === 'icon'">
|
||||
<el-image
|
||||
style="width: 300px; height: 200px"
|
||||
:src="scope.row.icon"
|
||||
|
||||
/>
|
||||
</template>
|
||||
|
||||
<template v-slot:default="scope" v-if="item.props === 'carouselImage'">
|
||||
|
||||
<view v-for="itemImg in scope.row.carouselImage">
|
||||
|
||||
<el-image
|
||||
:src="itemImg.url"
|
||||
:preview-src-list="[itemImg.url]"
|
||||
style="width:150px; height: 80px;margin-right: 5px;"
|
||||
:style="{
|
||||
boxShadow: `var(light)`,
|
||||
@@ -127,7 +149,7 @@
|
||||
<el-image
|
||||
style="width: 300px; height: 200px"
|
||||
:src="scope.row.details"
|
||||
:preview-src-list="[scope.row.details]"
|
||||
|
||||
/>
|
||||
</template>
|
||||
|
||||
@@ -201,18 +223,20 @@ const formData = ref({
|
||||
price: '',
|
||||
carouselImage: [],
|
||||
details: '',
|
||||
icon: '',
|
||||
isList: false
|
||||
})
|
||||
|
||||
const fileBannerList = ref([]); // 轮播图
|
||||
const fileDetail = ref(); // 详情图
|
||||
const fileDetail = ref([]); // 详情图
|
||||
const fileIcon = ref([]); // 服务图标
|
||||
|
||||
// 页面初始化
|
||||
const initData = () => {
|
||||
|
||||
getGoodsList(queryData.value).then((res) => {
|
||||
|
||||
let itemData = res.data.map(item => {
|
||||
tableData.value = res.data.map(item => {
|
||||
try {
|
||||
// 尝试将字符串转换为 JSON 对象
|
||||
item.carouselImage = JSON.parse(item.carouselImage);
|
||||
@@ -222,8 +246,6 @@ const initData = () => {
|
||||
}
|
||||
return item;
|
||||
});
|
||||
|
||||
tableData.value = itemData;
|
||||
total.value = res.total
|
||||
})
|
||||
}
|
||||
@@ -265,6 +287,13 @@ const handleDetailExceed= (files, uploadFiles) => {
|
||||
)
|
||||
}
|
||||
|
||||
// 服务图标上传限制
|
||||
const handleIconExceed = (files, uploadFiles) => {
|
||||
ElMessage.warning(
|
||||
`服务图标最多可上传1张`
|
||||
)
|
||||
}
|
||||
|
||||
// 轮播图移除
|
||||
const handleBannerRemove = (file) => {
|
||||
|
||||
@@ -279,6 +308,11 @@ const handleDetailRemove = (file, fileList) => {
|
||||
formData.value.details = '';
|
||||
}
|
||||
|
||||
// 服务图表移除
|
||||
const handleIconRemove = (file, fileList) => {
|
||||
formData.value.icon = '';
|
||||
}
|
||||
|
||||
// 轮播上传请求
|
||||
const addUploadCarouselImageFile = (params) => {
|
||||
const formData = new FormData();
|
||||
@@ -313,6 +347,23 @@ const addUploadDetailFile = (params) => {
|
||||
});
|
||||
}
|
||||
|
||||
// 服务图标上传
|
||||
const addUploadIconFile = (params) => {
|
||||
const formData = new FormData();
|
||||
formData.append('files', params.file);
|
||||
|
||||
addFile(formData)
|
||||
.then((response) => {
|
||||
handleIconSuccess(response, params.file, params.fileList);
|
||||
})
|
||||
.catch((error) => {
|
||||
if(error)
|
||||
{
|
||||
handleError(error, params.file, params.fileList);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 处理轮播上传成功的回调
|
||||
const handleCarouselImageSuccess = (response, file) => {
|
||||
|
||||
@@ -331,6 +382,12 @@ const handleDetailSuccess = (response) => {
|
||||
loading.value = false;
|
||||
}
|
||||
|
||||
// 处理服务图标上传成功的回调
|
||||
const handleIconSuccess = (response) => {
|
||||
formData.value.icon = response.data[0];
|
||||
loading.value = false;
|
||||
}
|
||||
|
||||
// 处理上传失败的回调
|
||||
const handleError = (error, file, fileList) => {
|
||||
loading.value = false;
|
||||
@@ -377,15 +434,30 @@ const onSubmit = () => {
|
||||
return;
|
||||
}
|
||||
|
||||
formData.value.carouselImage = JSON.stringify(formData.value.carouselImage); // 转为字符串
|
||||
let params = {...formData.value}
|
||||
params.carouselImage = JSON.stringify(params.carouselImage); // 转为字符串
|
||||
|
||||
addGoods(formData.value)
|
||||
addGoods(params)
|
||||
.then((res) => {
|
||||
|
||||
drawer.value = false;
|
||||
|
||||
formData.value = {
|
||||
goodsName: '',
|
||||
price: '',
|
||||
carouselImage: [],
|
||||
details: '',
|
||||
isList: false
|
||||
}
|
||||
|
||||
fileBannerList.value = [];
|
||||
fileDetail.value = [];
|
||||
|
||||
ElMessage({
|
||||
message: '添加成功',
|
||||
type: 'success',
|
||||
})
|
||||
drawer.value = false;
|
||||
|
||||
initData();
|
||||
})
|
||||
.catch((err) => {
|
||||
@@ -422,6 +494,8 @@ const cancelDrawer = () => {
|
||||
details: '',
|
||||
isList: false
|
||||
}
|
||||
fileBannerList.value = [];
|
||||
fileDetail.value = [];
|
||||
}
|
||||
|
||||
// 分页切换
|
||||
|
||||
@@ -16,6 +16,12 @@ export const options = [
|
||||
props: 'isList',
|
||||
width: '150',
|
||||
align: 'left'
|
||||
},
|
||||
{
|
||||
label: '服务图标',
|
||||
props: 'icon',
|
||||
width: 'auto',
|
||||
align: 'left'
|
||||
},
|
||||
{
|
||||
label: '轮播图',
|
||||
|
||||
@@ -135,6 +135,11 @@
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
<!-- 备案号放在 login-box 外面,居中显示 -->
|
||||
<div class="beian-info" style="position: absolute; bottom: 20px; width: 100%; text-align: center; color: #999; font-size: 16px;">
|
||||
渝ICP备2024040579号
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
+56
-20
@@ -27,20 +27,21 @@
|
||||
<el-option label="服务中" value="1" />
|
||||
<el-option label="待付款" value="2" />
|
||||
<el-option label="已完成" value="3" />
|
||||
<el-option label="已取消" value="4" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="维修费用">
|
||||
<el-input
|
||||
v-model="formSearch.amount"
|
||||
style="max-width: 300px"
|
||||
placeholder="维修费用"
|
||||
class="input-with-select"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="维修费用">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="formSearch.amount"-->
|
||||
<!-- style="max-width: 300px"-->
|
||||
<!-- placeholder="维修费用"-->
|
||||
<!-- class="input-with-select"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
|
||||
<br>
|
||||
<el-form-item label="按年">
|
||||
<el-form-item label="年">
|
||||
<el-date-picker
|
||||
v-model="formSearch.year"
|
||||
type="year"
|
||||
@@ -52,7 +53,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="按月">
|
||||
<el-form-item label="月">
|
||||
<el-date-picker
|
||||
v-model="formSearch.month"
|
||||
type="month"
|
||||
@@ -66,7 +67,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="按天">
|
||||
<el-form-item label="日">
|
||||
<el-date-picker
|
||||
v-model="formSearch.day"
|
||||
:disabled="!formSearch.month"
|
||||
@@ -81,11 +82,11 @@
|
||||
</el-form-item>
|
||||
|
||||
<br>
|
||||
<el-form-item label="用户昵称">
|
||||
<el-form-item label="用户姓名">
|
||||
<el-input
|
||||
v-model="formSearch.username"
|
||||
style="max-width: 300px"
|
||||
placeholder="用户昵称"
|
||||
placeholder="用户姓名"
|
||||
class="input-with-select"
|
||||
/>
|
||||
</el-form-item>
|
||||
@@ -94,7 +95,7 @@
|
||||
<el-input
|
||||
v-model="formSearch.surveyorsName"
|
||||
style="max-width: 300px"
|
||||
placeholder="用户昵称"
|
||||
placeholder="工程师姓名"
|
||||
class="input-with-select"
|
||||
/>
|
||||
</el-form-item>
|
||||
@@ -102,7 +103,7 @@
|
||||
<el-input
|
||||
v-model="formSearch.repairerName"
|
||||
style="max-width: 300px"
|
||||
placeholder="用户昵称"
|
||||
placeholder="工程师姓名"
|
||||
class="input-with-select"
|
||||
/>
|
||||
</el-form-item>
|
||||
@@ -146,6 +147,7 @@
|
||||
<el-tag type="warning" v-if="scope.row.status === 1">服务中</el-tag>
|
||||
<el-tag type="danger" v-if="scope.row.status === 2">待付款 </el-tag>
|
||||
<el-tag type="success" v-if="scope.row.status === 3">已完成</el-tag>
|
||||
<el-tag type="info" style="color: #d54f50" v-if="scope.row.status === 4">已取消</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
@@ -224,7 +226,7 @@
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="微信昵称"
|
||||
label="用户姓名"
|
||||
prop="username"
|
||||
width="300"
|
||||
align="center"
|
||||
@@ -429,7 +431,6 @@ const formSearch = ref({
|
||||
username: '',
|
||||
surveyorsName: '',
|
||||
repairerName: '',
|
||||
date: '',
|
||||
month: '',
|
||||
year: '',
|
||||
day: '',
|
||||
@@ -580,7 +581,7 @@ const excelDown = async () => {
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
const blob = await response.blob();
|
||||
const downloadUrl = window.URL.createObjectURL(blob);
|
||||
const a = document.createElement('a');
|
||||
@@ -602,22 +603,49 @@ const generateRandomNumber = () => {
|
||||
const downloadFile = () => {
|
||||
|
||||
let params = {...formSearch.value}
|
||||
|
||||
if(params.status !== ' ')
|
||||
{
|
||||
params.status = parseInt(params.status, 10);
|
||||
}else{
|
||||
delete params.status;
|
||||
}
|
||||
|
||||
if(params.year !== '')
|
||||
{
|
||||
let {
|
||||
year
|
||||
} = {...formatDate(params.year)};
|
||||
|
||||
params.year = year;
|
||||
}else{
|
||||
delete params.year;
|
||||
}
|
||||
|
||||
if(params.date !== '')
|
||||
if(params.month !== '')
|
||||
{
|
||||
let {
|
||||
month
|
||||
} = {...formatDate(params.month)};
|
||||
|
||||
params.month = month;
|
||||
}else{
|
||||
delete params.month;
|
||||
}
|
||||
|
||||
if(params.day !== '')
|
||||
{
|
||||
let {
|
||||
year,
|
||||
month,
|
||||
day
|
||||
} = {...formatDate(params.date)};
|
||||
} = {...formatDate(params.day)};
|
||||
|
||||
params.year = year;
|
||||
params.month = month;
|
||||
params.day = day;
|
||||
}else{
|
||||
delete params.day;
|
||||
}
|
||||
|
||||
return exportOrder(params);
|
||||
@@ -630,6 +658,8 @@ const onSearchSubmit = ()=> {
|
||||
if(params.status !== ' ')
|
||||
{
|
||||
params.status = parseInt(params.status, 10);
|
||||
}else{
|
||||
delete params.status;
|
||||
}
|
||||
|
||||
if(params.year !== '')
|
||||
@@ -639,6 +669,8 @@ const onSearchSubmit = ()=> {
|
||||
} = {...formatDate(params.year)};
|
||||
|
||||
params.year = year;
|
||||
}else{
|
||||
delete params.year;
|
||||
}
|
||||
|
||||
if(params.month !== '')
|
||||
@@ -648,6 +680,8 @@ const onSearchSubmit = ()=> {
|
||||
} = {...formatDate(params.month)};
|
||||
|
||||
params.month = month;
|
||||
}else{
|
||||
delete params.month;
|
||||
}
|
||||
|
||||
if(params.day !== '')
|
||||
@@ -661,6 +695,8 @@ const onSearchSubmit = ()=> {
|
||||
params.year = year;
|
||||
params.month = month;
|
||||
params.day = day;
|
||||
}else{
|
||||
delete params.day;
|
||||
}
|
||||
|
||||
getOrderList(params).then((res) => {
|
||||
|
||||
@@ -40,14 +40,6 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="状态">
|
||||
<el-switch
|
||||
v-model="formData.flag"
|
||||
inline-prompt
|
||||
active-text="启用"
|
||||
inactive-text="禁用"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<div style="display: flex;justify-content: center;margin-top: 50px">
|
||||
<el-button @click="handleCancel">取消</el-button>
|
||||
@@ -82,17 +74,6 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="状态" align="center">
|
||||
<template #default="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.flag"
|
||||
inline-prompt
|
||||
active-text="启用"
|
||||
inactive-text="禁用"
|
||||
@change="upStatus(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" width="280px" align="center">
|
||||
<template v-slot:default="scope">
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
<template>
|
||||
<el-card class="mt10" v-loading="loading">
|
||||
<span>
|
||||
重复下单开关
|
||||
</span>
|
||||
<el-divider />
|
||||
<el-switch
|
||||
size="large"
|
||||
v-model="formData.content"
|
||||
inline-prompt
|
||||
active-text="开启"
|
||||
inactive-text="关闭"
|
||||
@click="upStatus(formData.content)"
|
||||
/>
|
||||
</el-card>
|
||||
</template>
|
||||
<script setup>
|
||||
|
||||
import {nextTick, onMounted, reactive, ref} from 'vue'
|
||||
|
||||
import {ElMessage} from "element-plus";
|
||||
import {getConfigList, updateSystem} from "../../api/modules/system";
|
||||
|
||||
const loading = ref(true)
|
||||
|
||||
const formData = ref({
|
||||
id:4,
|
||||
content: true,
|
||||
});
|
||||
|
||||
// 初始化数据
|
||||
const initData = () => {
|
||||
|
||||
getConfigList().then((res) => {
|
||||
|
||||
loading.value = false;
|
||||
if(res.data[3].content !== '[]' && res.data[3].content !== null && res.data[3].content !== "")
|
||||
{
|
||||
formData.value.content = JSON.parse(res.data[3].content);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 更新状态
|
||||
const upStatus = (param) => {
|
||||
|
||||
loading.value = true;
|
||||
formData.value.content = param;
|
||||
|
||||
let params = {
|
||||
id: 4,
|
||||
content: JSON.stringify(param)
|
||||
};
|
||||
|
||||
// 更新系统配置
|
||||
updateSystem(params).then((res) => {
|
||||
|
||||
loading.value = false;
|
||||
|
||||
initData();
|
||||
|
||||
ElMessage({
|
||||
message: '修改成功',
|
||||
type: 'success',
|
||||
})
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
initData()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
||||
@@ -52,6 +52,23 @@
|
||||
<el-avatar :size="50" :src="scope.row.avatar" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="关注公众号"
|
||||
width="300"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="scope">
|
||||
<template v-if="scope.row.ampOpenid">
|
||||
<el-tag type="success">已关注</el-tag>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-tag type="info">未关注</el-tag>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="微信昵称"
|
||||
prop="nickName"
|
||||
|
||||
@@ -67,6 +67,21 @@
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="关注公众号"
|
||||
width="300"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="scope">
|
||||
<template v-if="scope.row.ampOpenid">
|
||||
<el-tag type="success">已关注</el-tag>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-tag type="info">未关注</el-tag>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="注册时间"
|
||||
prop="createTime"
|
||||
|
||||
@@ -68,6 +68,23 @@
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
label="关注公众号"
|
||||
width="300"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template #default="scope">
|
||||
<template v-if="scope.row.ampOpenid">
|
||||
<el-tag type="success">已关注</el-tag>
|
||||
</template>
|
||||
<template v-else>
|
||||
<el-tag type="info">未关注</el-tag>
|
||||
</template>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
label="注册时间"
|
||||
prop="createTime"
|
||||
|
||||
Reference in New Issue
Block a user