Merge remote-tracking branch 'origin/dev'

This commit is contained in:
纪寒 2022-12-07 10:42:48 +08:00
commit 0663aa6794
11 changed files with 556 additions and 418 deletions

View File

@ -1,208 +1,212 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head>
<head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit"> <meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico"> <link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title><%= webpackConfig.name %></title> <title>
<%= webpackConfig.name %>
</title>
<!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]--> <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
<style> <script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=6b427d1f3e633c70e11ca6e304444a63"></script>
html, <style>
body, html,
#app { body,
height: 100%; #app {
margin: 0px; height: 100%;
padding: 0px; margin: 0px;
} padding: 0px;
.chromeframe { }
margin: 0.2em 0;
background: #ccc;
color: #000;
padding: 0.2em 0;
}
#loader-wrapper { .chromeframe {
position: fixed; margin: 0.2em 0;
top: 0; background: #ccc;
left: 0; color: #000;
width: 100%; padding: 0.2em 0;
height: 100%; }
z-index: 999999;
}
#loader { #loader-wrapper {
display: block; position: fixed;
position: relative; top: 0;
left: 50%; left: 0;
top: 50%; width: 100%;
width: 150px; height: 100%;
height: 150px; z-index: 999999;
margin: -75px 0 0 -75px; }
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-webkit-animation: spin 2s linear infinite;
-ms-animation: spin 2s linear infinite;
-moz-animation: spin 2s linear infinite;
-o-animation: spin 2s linear infinite;
animation: spin 2s linear infinite;
z-index: 1001;
}
#loader:before { #loader {
content: ""; display: block;
position: absolute; position: relative;
top: 5px; left: 50%;
left: 5px; top: 50%;
right: 5px; width: 150px;
bottom: 5px; height: 150px;
border-radius: 50%; margin: -75px 0 0 -75px;
border: 3px solid transparent; border-radius: 50%;
border-top-color: #FFF; border: 3px solid transparent;
-webkit-animation: spin 3s linear infinite; border-top-color: #FFF;
-moz-animation: spin 3s linear infinite; -webkit-animation: spin 2s linear infinite;
-o-animation: spin 3s linear infinite; -ms-animation: spin 2s linear infinite;
-ms-animation: spin 3s linear infinite; -moz-animation: spin 2s linear infinite;
animation: spin 3s linear infinite; -o-animation: spin 2s linear infinite;
} animation: spin 2s linear infinite;
z-index: 1001;
}
#loader:after { #loader:before {
content: ""; content: "";
position: absolute; position: absolute;
top: 15px; top: 5px;
left: 15px; left: 5px;
right: 15px; right: 5px;
bottom: 15px; bottom: 5px;
border-radius: 50%; border-radius: 50%;
border: 3px solid transparent; border: 3px solid transparent;
border-top-color: #FFF; border-top-color: #FFF;
-moz-animation: spin 1.5s linear infinite; -webkit-animation: spin 3s linear infinite;
-o-animation: spin 1.5s linear infinite; -moz-animation: spin 3s linear infinite;
-ms-animation: spin 1.5s linear infinite; -o-animation: spin 3s linear infinite;
-webkit-animation: spin 1.5s linear infinite; -ms-animation: spin 3s linear infinite;
animation: spin 1.5s linear infinite; animation: spin 3s linear infinite;
} }
#loader:after {
content: "";
position: absolute;
top: 15px;
left: 15px;
right: 15px;
bottom: 15px;
border-radius: 50%;
border: 3px solid transparent;
border-top-color: #FFF;
-moz-animation: spin 1.5s linear infinite;
-o-animation: spin 1.5s linear infinite;
-ms-animation: spin 1.5s linear infinite;
-webkit-animation: spin 1.5s linear infinite;
animation: spin 1.5s linear infinite;
}
@-webkit-keyframes spin { @-webkit-keyframes spin {
0% { 0% {
-webkit-transform: rotate(0deg); -webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg); -ms-transform: rotate(0deg);
transform: rotate(0deg); transform: rotate(0deg);
} }
100% { 100% {
-webkit-transform: rotate(360deg); -webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg); -ms-transform: rotate(360deg);
transform: rotate(360deg); transform: rotate(360deg);
} }
} }
@keyframes spin { @keyframes spin {
0% { 0% {
-webkit-transform: rotate(0deg); -webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg); -ms-transform: rotate(0deg);
transform: rotate(0deg); transform: rotate(0deg);
} }
100% { 100% {
-webkit-transform: rotate(360deg); -webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg); -ms-transform: rotate(360deg);
transform: rotate(360deg); transform: rotate(360deg);
} }
} }
#loader-wrapper .loader-section {
position: fixed;
top: 0;
width: 51%;
height: 100%;
background: #7171C6;
z-index: 1000;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
#loader-wrapper .loader-section { #loader-wrapper .loader-section.section-left {
position: fixed; left: 0;
top: 0; }
width: 51%;
height: 100%;
background: #7171C6;
z-index: 1000;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
#loader-wrapper .loader-section.section-left { #loader-wrapper .loader-section.section-right {
left: 0; right: 0;
} }
#loader-wrapper .loader-section.section-right { .loaded #loader-wrapper .loader-section.section-left {
right: 0; -webkit-transform: translateX(-100%);
} -ms-transform: translateX(-100%);
transform: translateX(-100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.loaded #loader-wrapper .loader-section.section-right {
-webkit-transform: translateX(100%);
-ms-transform: translateX(100%);
transform: translateX(100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.loaded #loader-wrapper .loader-section.section-left { .loaded #loader {
-webkit-transform: translateX(-100%); opacity: 0;
-ms-transform: translateX(-100%); -webkit-transition: all 0.3s ease-out;
transform: translateX(-100%); transition: all 0.3s ease-out;
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); }
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
}
.loaded #loader-wrapper .loader-section.section-right { .loaded #loader-wrapper {
-webkit-transform: translateX(100%); visibility: hidden;
-ms-transform: translateX(100%); -webkit-transform: translateY(-100%);
transform: translateX(100%); -ms-transform: translateY(-100%);
-webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); transform: translateY(-100%);
transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000); -webkit-transition: all 0.3s 1s ease-out;
} transition: all 0.3s 1s ease-out;
}
.loaded #loader { .no-js #loader-wrapper {
opacity: 0; display: none;
-webkit-transition: all 0.3s ease-out; }
transition: all 0.3s ease-out;
}
.loaded #loader-wrapper { .no-js h1 {
visibility: hidden; color: #222222;
-webkit-transform: translateY(-100%); }
-ms-transform: translateY(-100%);
transform: translateY(-100%);
-webkit-transition: all 0.3s 1s ease-out;
transition: all 0.3s 1s ease-out;
}
.no-js #loader-wrapper { #loader-wrapper .load_title {
display: none; font-family: 'Open Sans';
} color: #FFF;
font-size: 19px;
width: 100%;
text-align: center;
z-index: 9999999999999;
position: absolute;
top: 60%;
opacity: 1;
line-height: 30px;
}
.no-js h1 { #loader-wrapper .load_title span {
color: #222222; font-weight: normal;
} font-style: italic;
font-size: 13px;
color: #FFF;
opacity: 0.5;
}
</style>
</head>
#loader-wrapper .load_title { <body>
font-family: 'Open Sans';
color: #FFF;
font-size: 19px;
width: 100%;
text-align: center;
z-index: 9999999999999;
position: absolute;
top: 60%;
opacity: 1;
line-height: 30px;
}
#loader-wrapper .load_title span {
font-weight: normal;
font-style: italic;
font-size: 13px;
color: #FFF;
opacity: 0.5;
}
</style>
</head>
<body>
<div id="app"> <div id="app">
<div id="loader-wrapper"> <div id="loader-wrapper">
<div id="loader"></div> <div id="loader"></div>
<div class="loader-section section-left"></div> <div class="loader-section section-left"></div>
<div class="loader-section section-right"></div> <div class="loader-section section-right"></div>
<div class="load_title">正在加载系统资源,请耐心等待</div> <div class="load_title">正在加载系统资源,请耐心等待</div>
</div> </div>
</div> </div>
</body> </body>
</html> </html>

View File

@ -56,13 +56,13 @@ export default {
type: { type: {
type: String, type: String,
default: "url", default: "url",
} },
}, },
data() { data() {
return { return {
uploadUrl: process.env.VUE_APP_BASE_API + "/common/upload", // uploadUrl: process.env.VUE_APP_BASE_API + "/common/richTextPictureUrl", //
headers: { headers: {
Authorization: "Bearer " + getToken() Authorization: "Bearer " + getToken(),
}, },
Quill: null, Quill: null,
currentValue: "", currentValue: "",
@ -73,16 +73,16 @@ export default {
modules: { modules: {
// //
toolbar: [ toolbar: [
["bold", "italic", "underline", "strike"], // 线 线 ["bold", "italic", "underline", "strike"], // 线 线
["blockquote", "code-block"], // ["blockquote", "code-block"], //
[{ list: "ordered" }, { list: "bullet" }], // [{ list: "ordered" }, { list: "bullet" }], //
[{ indent: "-1" }, { indent: "+1" }], // [{ indent: "-1" }, { indent: "+1" }], //
[{ size: ["small", false, "large", "huge"] }], // [{ size: ["small", false, "large", "huge"] }], //
[{ header: [1, 2, 3, 4, 5, 6, false] }], // [{ header: [1, 2, 3, 4, 5, 6, false] }], //
[{ color: [] }, { background: [] }], // [{ color: [] }, { background: [] }], //
[{ align: [] }], // [{ align: [] }], //
["clean"], // ["clean"], //
["link", "image", "video"] // ["link", "image", "video"], //
], ],
}, },
placeholder: "请输入内容", placeholder: "请输入内容",
@ -126,7 +126,7 @@ export default {
const editor = this.$refs.editor; const editor = this.$refs.editor;
this.Quill = new Quill(editor, this.options); this.Quill = new Quill(editor, this.options);
// //
if (this.type == 'url') { if (this.type == "url") {
let toolbar = this.Quill.getModule("toolbar"); let toolbar = this.Quill.getModule("toolbar");
toolbar.addHandler("image", (value) => { toolbar.addHandler("image", (value) => {
this.uploadType = "image"; this.uploadType = "image";
@ -176,7 +176,14 @@ export default {
// //
let length = quill.getSelection().index; let length = quill.getSelection().index;
// res.url // res.url
quill.insertEmbed(length, "image", process.env.VUE_APP_BASE_API + res.fileName); quill.insertEmbed(
length,
"image",
process.env.VUE_APP_BASE_API + res.fileName
);
this.$emit("imgs", res.fileName);
// //
quill.setSelection(length + 1); quill.setSelection(length + 1);
} else { } else {
@ -191,7 +198,8 @@ export default {
</script> </script>
<style> <style>
.editor, .ql-toolbar { .editor,
.ql-toolbar {
white-space: pre-wrap !important; white-space: pre-wrap !important;
line-height: normal !important; line-height: normal !important;
} }

View File

@ -366,6 +366,7 @@
style="margin-top: 20px" style="margin-top: 20px"
> >
<editor <editor
@imgs="imgs"
:min-height="100" :min-height="100"
style="width: 90%; margin: 0 auto" style="width: 90%; margin: 0 auto"
v-model="form.goodsRemark" v-model="form.goodsRemark"
@ -506,8 +507,8 @@ export default {
name: "OperateGoodsInfo", name: "OperateGoodsInfo",
data() { data() {
return { return {
imgsurl: { pictureUrlList: [] },
imgone: "", imgone: "",
imageUrl: "", // imageUrl: "", //
value: "", value: "",
datas: null, datas: null,
@ -627,6 +628,9 @@ export default {
this.infos(); this.infos();
}, },
methods: { methods: {
imgs(item) {
this.imgsurl.pictureUrlList.push(item);
},
upwhetherShelf(row) { upwhetherShelf(row) {
console.log(row); console.log(row);
if (row.whetherShelf == false) { if (row.whetherShelf == false) {
@ -718,6 +722,10 @@ export default {
console.log(res); console.log(res);
}); });
} }
if (this.imgsurl.pictureUrlList.length > 0) {
updatePicture(this.imgsurl).then((res) => {});
}
this.imgsurl = { pictureUrlList: [] };
this.open = false; this.open = false;
this.reset(); this.reset();
this.StationName = "请选择所属护理站"; this.StationName = "请选择所属护理站";

View File

@ -18,6 +18,7 @@ export default {
name: "OperateGoodsInfo", name: "OperateGoodsInfo",
data() { data() {
return { return {
imgsurl: { pictureUrlList: [] },
imgone: "", imgone: "",
imageUrl: "", //商品图片 imageUrl: "", //商品图片
value: "", value: "",
@ -53,22 +54,22 @@ export default {
nursetotal: 0, nursetotal: 0,
nurseStationId: null, nurseStationId: null,
goods: [{ goods: [{
value: "BUSINESS", value: "BUSINESS",
label: "买卖", label: "买卖",
}, },
{ {
value: "LEASE", value: "LEASE",
label: "租赁", label: "租赁",
}, },
], ],
options: [{ options: [{
value: 0, value: 0,
label: "否", label: "否",
}, },
{ {
value: 1, value: 1,
label: "是", label: "是",
}, },
], ],
// goodAttributeDetailsLists:[], // goodAttributeDetailsLists:[],
goodDetailsLists: [], goodDetailsLists: [],
@ -138,6 +139,9 @@ export default {
this.infos(); this.infos();
}, },
methods: { methods: {
imgs(item) {
this.imgsurl.pictureUrlList.push(item);
},
upwhetherShelf(row) { upwhetherShelf(row) {
console.log(row); console.log(row);
if (row.whetherShelf == false) { if (row.whetherShelf == false) {
@ -229,6 +233,10 @@ export default {
console.log(res); console.log(res);
}); });
} }
if (this.imgsurl.pictureUrlList.length > 0) {
updatePicture(this.imgsurl).then((res) => { });
}
this.imgsurl = { pictureUrlList: [] };
this.open = false; this.open = false;
this.reset(); this.reset();
this.StationName = "请选择所属护理站"; this.StationName = "请选择所属护理站";
@ -239,8 +247,8 @@ export default {
goodsPrice: "", goodsPrice: "",
goodsStock: "", goodsStock: "",
sort: "", sort: "",
}, ], },],
}, ]; },];
}, },
handleQuery2() { handleQuery2() {
@ -259,7 +267,7 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
}), }),
this.handleQuery2(); this.handleQuery2();
}, },
addcancel() { addcancel() {
this.resetQuery2(); this.resetQuery2();
@ -292,7 +300,7 @@ export default {
goodsStock: "", goodsStock: "",
sort: "", sort: "",
ids: 9999999, ids: 9999999,
}, ]; },];
this.resetForm("form"); this.resetForm("form");
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
@ -335,7 +343,7 @@ export default {
goodsStock: "", goodsStock: "",
sort: "", sort: "",
ids: 9999999, ids: 9999999,
}, ]; },];
this.open = true; this.open = true;
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
@ -366,9 +374,9 @@ export default {
this.$refs["form"].validate((valid) => { this.$refs["form"].validate((valid) => {
if (valid) { if (valid) {
if (this.form.goodsInfoId != null) { if (this.form.goodsInfoId != null) {
this.form.goodDetailsLists.forEach((e) => { this.form.goodDetailsLists.forEach((e) => {
e.goodsPrice = Number(e.goodsPrice); e.goodsPrice = Number(e.goodsPrice);
}); });
this.form.id = this.form.goodsInfoId; this.form.id = this.form.goodsInfoId;
updateGoodsInfo(this.form).then((response) => { updateGoodsInfo(this.form).then((response) => {
var obj = { pictureUrlList: [] }; var obj = { pictureUrlList: [] };
@ -387,7 +395,7 @@ export default {
} else { } else {
this.form.goodDetailsLists.forEach((e) => { this.form.goodDetailsLists.forEach((e) => {
e.goodsPrice = Number(e.goodsPrice); e.goodsPrice = Number(e.goodsPrice);
}); });
addGoodsInfo(this.form).then((response) => { addGoodsInfo(this.form).then((response) => {
console.log(this.form); console.log(this.form);
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
@ -404,10 +412,10 @@ export default {
handleDelete(row) { handleDelete(row) {
console.log("row :>> ", row); console.log("row :>> ", row);
this.$confirm("是否确认删除订单信息的数据项?", "提示", { this.$confirm("是否确认删除订单信息的数据项?", "提示", {
confirmButtonText: "确定", confirmButtonText: "确定",
cancelButtonText: "取消", cancelButtonText: "取消",
type: "warning", type: "warning",
}) })
.then(() => { .then(() => {
var obj = { pictureUrlList: [] }; var obj = { pictureUrlList: [] };
obj.pictureUrlList.push(row.goodsPictureUrl); obj.pictureUrlList.push(row.goodsPictureUrl);
@ -421,7 +429,7 @@ export default {
// console.log('this.OrderDetailsList :>> ', this.OrderDetailsList); // console.log('this.OrderDetailsList :>> ', this.OrderDetailsList);
}); });
}) })
.catch(() => {}); .catch(() => { });
}, },
// handleDelete(row) { // handleDelete(row) {
// const ids = row.id || this.ids; // const ids = row.id || this.ids;

View File

@ -349,6 +349,7 @@
style="margin-top: 20px" style="margin-top: 20px"
> >
<editor <editor
@imgs="imgs"
:min-height="100" :min-height="100"
style="width: 90%; margin: 0 auto" style="width: 90%; margin: 0 auto"
v-model="form.goodsRemark" v-model="form.goodsRemark"

View File

@ -298,26 +298,23 @@
</el-form-item> </el-form-item>
<el-form-item label="下单方式" prop="buySource"> <el-form-item label="下单方式" prop="buySource">
<el-input <el-input
:value="buySourceinfo(orderList.buySource)" :value="orderChannelinfo(orderList.orderChannel)"
clearable disabled
@keyup.enter.native="handleQuery"
:disabled="true"
style="width: 240px" style="width: 240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="购买来源" prop="orderChannel"> <el-form-item label="购买来源" prop="orderChannel">
<el-input <el-input
:value="orderChannelinfo(orderList.orderChannel)" :value="buySourceinfo(orderList.buySource)"
clearable disabled
@keyup.enter.native="handleQuery"
:disabled="true"
style="width: 240px" style="width: 240px"
/> />
</el-form-item> </el-form-item>
<el-form-item label="综合评分" v-if="ratelist.compositeScore"> <el-form-item label="综合评分" v-if="orderList.compositeScore">
<div style="width: 240px"> <div style="width: 240px">
<el-rate <el-rate
v-model="ratelist.compositeScore" v-if="orderList.compositeScore"
v-model="orderList.compositeScore"
style="padding-top: 7px" style="padding-top: 7px"
disabled disabled
show-score show-score
@ -325,20 +322,24 @@
score-template="{value}" score-template="{value}"
> >
</el-rate> </el-rate>
<el-input
v-else
type="text"
disabled
style="width: 240px"
placeholder="未评分"
></el-input>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item label="评价内容" v-if="ratelist.evaluateContent"> <el-form-item label="评价内容" v-if="orderList.evaluateContent">
<el-input <el-input
type="textarea" type="textarea"
disabled disabled
style="width: 240px" style="width: 610px"
v-model="ratelist.evaluateContent" v-model="orderList.evaluateContent"
/> />
</el-form-item> </el-form-item>
<el-form-item <el-form-item label="评价图片" v-if="ratelist">
label="评价图片"
v-if="ratelist.orderEvaluatePictureInfoList"
>
<div <div
style=" style="
display: flex; display: flex;
@ -347,8 +348,8 @@
" "
> >
<img <img
style="width: 240px" style="width: 23%;height:100%;margin:1%"
v-for="(item, index) in ratelist.orderEvaluatePictureInfoList" v-for="(item, index) in ratelist"
:src="baseurl + item.evaluatePictureUrl" :src="baseurl + item.evaluatePictureUrl"
alt="" alt=""
:key="index" :key="index"
@ -662,7 +663,6 @@ export default {
}, },
created() { created() {
this.baseurl = baseurl; this.baseurl = baseurl;
this.getList();
this.info(); this.info();
this.infos(); this.infos();
}, },
@ -745,15 +745,10 @@ export default {
getGoodsOrderlist(id).then((res) => { getGoodsOrderlist(id).then((res) => {
this.orderList = res.data; this.orderList = res.data;
this.innerorder = true; this.innerorder = true;
this.ratelist = {};
if (row.orderStatus == "EVALUATED") { if (row.orderStatus == "EVALUATED") {
this.ratelist = {}; this.ratelist = res.data.orderEvaluatePictureInfoList;
selectOrderEvaluate(id).then((res) => {
if (res.data) {
this.ratelist = res.data;
}
});
} else { } else {
this.ratelist = {};
} }
}); });
}, },

View File

@ -297,7 +297,26 @@
> >
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-form-item
label="预约服务位置"
v-if="
query.orderStatus == 'COMPLETE' || query.orderStatus == 'EVALUATED'
"
>
<el-input
v-model="query.serviceLocationName"
disabled
style="width: 250px"
/>
</el-form-item>
</el-form> </el-form>
<div
id="container"
v-if="
this.query.orderStatus == 'COMPLETE' ||
this.query.orderStatus == 'EVALUATED'
"
></div>
</el-dialog> </el-dialog>
<!-- 派单弹框 --> <!-- 派单弹框 -->
<el-dialog <el-dialog
@ -509,11 +528,12 @@ import {
} from "@/api/system/order"; } from "@/api/system/order";
import { getListByUser } from "@/api/system/userlist.js"; import { getListByUser } from "@/api/system/userlist.js";
import baseurl from "@/api/baseurl.js"; import baseurl from "@/api/baseurl.js";
import { selectOrderEvaluate } from "@/api/system/goodsOrder";
export default { export default {
name: "order", name: "order",
data() { data() {
return { return {
map: null,
baseurl: null, baseurl: null,
orderStatuslist: [ orderStatuslist: [
{ {
@ -618,11 +638,54 @@ export default {
}, },
created() { created() {
this.baseurl = baseurl; this.baseurl = baseurl;
this.getList();
this.info(); this.info();
this.infos(); this.infos();
}, },
methods: { methods: {
init(query) {
this.map = new AMap.Map("container", {
resizeEnable: true, //
zoom: 18, //
center: [query.serveLocationLongitude, query.serveLocationLatitude], //
});
var layer = new AMap.LabelsLayer({
zooms: [3, 20],
zIndex: 1000,
// v1.4.15
collision: true,
// v1.4.15
animation: true,
});
this.map.add(layer);
var labelMarker = new AMap.LabelMarker({
name: "",
position: [query.serveLocationLongitude, query.serveLocationLatitude],
icon: {
type: "image",
image: "https://a.amap.com/jsapi_demos/static/images/poi-marker.png",
clipOrigin: [280, 8],
clipSize: [50, 68],
size: [25, 34],
anchor: "bottom-center",
angel: 0,
retina: true,
},
text: {
content: query.serviceLocationName,
direction: "top",
offset: [0, 0],
style: {
fontSize: 13,
fontWeight: "normal",
fillColor: "#fff",
padding: "2, 5",
backgroundColor: "#22884f",
},
},
});
layer.add(labelMarker);
},
// //
ordercacenl() { ordercacenl() {
var obj = { var obj = {
@ -671,6 +734,7 @@ export default {
seeLook(row) { seeLook(row) {
this.loading = true; this.loading = true;
const id = row.orderNo; const id = row.orderNo;
this.map = null;
appointmentOrderDetails(id).then((res) => { appointmentOrderDetails(id).then((res) => {
res.data.forEach((e) => { res.data.forEach((e) => {
if (e.serviceDate) { if (e.serviceDate) {
@ -679,24 +743,33 @@ export default {
} }
}); });
this.query = res.data[0]; this.query = res.data[0];
this.innerVisible4 = true;
if (row.orderStatus == "EVALUATED") { if (row.orderStatus == "EVALUATED") {
selectOrderEvaluate(id).then((res) => { if (res.data) {
if (res.data) { if (res.data[0].evaluateSatisfaction == "COMMONLY") {
if (res.data.evaluateSatisfaction == "COMMONLY") { this.query.evaluateSatisfaction = "一般";
this.query.evaluateSatisfaction = "一般"; } else if (res.data[0].evaluateSatisfaction == "SATISFIED") {
} else if (res.data.evaluateSatisfaction == "SATISFIED") { this.query.evaluateSatisfaction = "满意";
this.query.evaluateSatisfaction = "满意"; } else if (res.data[0].evaluateSatisfaction == "DISSATISFIED") {
} else if (res.data.evaluateSatisfaction == "DISSATISFIED") { this.query.evaluateSatisfaction = "不满意";
this.query.evaluateSatisfaction = "不满意";
}
this.loading = false;
this.innerVisible4 = true;
} else {
this.loading = false;
this.innerVisible4 = true;
} }
}); this.loading = false;
this.innerVisible4 = true;
setTimeout(() => {
this.init(this.query);
}, 500);
} else {
this.loading = false;
this.innerVisible4 = true;
setTimeout(() => {
this.init(this.query);
}, 500);
}
} else if (row.orderStatus == "COMPLETE") {
this.loading = false;
this.innerVisible4 = true;
setTimeout(() => {
this.init(this.query);
}, 500);
} else { } else {
this.loading = false; this.loading = false;
this.innerVisible4 = true; this.innerVisible4 = true;
@ -868,5 +941,9 @@ export default {
width: 250px; width: 250px;
height: 250px; height: 250px;
} }
#container {
width: 100%;
height: 600px;
}
</style> </style>

View File

@ -303,6 +303,7 @@
</el-form-item> </el-form-item>
<el-form-item label="护理站简介" prop="agencyIntroduce"> <el-form-item label="护理站简介" prop="agencyIntroduce">
<editor <editor
@imgs="imgs"
:min-height="62" :min-height="62"
style="width: 90%; margin: 0 auto" style="width: 90%; margin: 0 auto"
v-model="form.agencyIntroduce" v-model="form.agencyIntroduce"
@ -468,6 +469,7 @@ export default {
} }
}; };
return { return {
imgsurl: { pictureUrlList: [] },
imageUrl: "", imageUrl: "",
imageUrl2: "", imageUrl2: "",
imgtwo: "", imgtwo: "",
@ -604,6 +606,9 @@ export default {
this.infos(); this.infos();
}, },
methods: { methods: {
imgs(item) {
this.imgsurl.pictureUrlList.push(item);
},
imgUrl(imgUrl) { imgUrl(imgUrl) {
this.form.stationPictureUrl = imgUrl; this.form.stationPictureUrl = imgUrl;
}, },
@ -693,6 +698,11 @@ export default {
if (obj.pictureUrlList.length > 0) { if (obj.pictureUrlList.length > 0) {
updatePicture(obj).then((res) => {}); updatePicture(obj).then((res) => {});
} }
if (this.imgsurl.pictureUrlList.length > 0) {
updatePicture(this.imgsurl).then((res) => {});
}
this.imgsurl = { pictureUrlList: [] };
this.open = false; this.open = false;
this.reset(); this.reset();
}, },
@ -898,8 +908,6 @@ export default {
info() { info() {
// //
getListByUser(this.getListByUserquery).then((res) => { getListByUser(this.getListByUserquery).then((res) => {
//
// /
this.nurseStationlist = res.rows; this.nurseStationlist = res.rows;
this.total2 = res.total; this.total2 = res.total;
this.loading = false; this.loading = false;

View File

@ -153,11 +153,11 @@
align="center" align="center"
prop="nurseItemName" prop="nurseItemName"
/> />
<el-table-column <!-- <el-table-column
label="提前预约时长(h)" label="提前预约时长(h)"
align="center" align="center"
prop="advanceAppointDuration" prop="advanceAppointDuration"
/> /> -->
<el-table-column label="创建时间" align="center" prop="createTime" /> <el-table-column label="创建时间" align="center" prop="createTime" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column <el-table-column
@ -251,7 +251,7 @@
maxlength="50" maxlength="50"
/> />
</el-form-item> </el-form-item>
<el-form-item <!-- <el-form-item
label="提前预约时长" label="提前预约时长"
prop="nurseStationItem.advanceAppointDuration" prop="nurseStationItem.advanceAppointDuration"
> >
@ -262,6 +262,15 @@
type="number" type="number"
min="0" min="0"
/> />
</el-form-item> -->
<el-form-item label="排序" prop="nurseStationItem.sort">
<el-input
placeholder="请输入排序"
v-model="form.nurseStationItem.sort"
maxlength="10"
oninput="value=value.replace(/[^\d]/g,'')"
/>
</el-form-item> </el-form-item>
<el-form-item label="项目头像" prop="nurseStationItem.itemPictureUrl"> <el-form-item label="项目头像" prop="nurseStationItem.itemPictureUrl">
<stationAcatar <stationAcatar
@ -271,27 +280,18 @@
:type="'itemPictureUrl'" :type="'itemPictureUrl'"
/> />
</el-form-item> </el-form-item>
<el-form-item label="排序" prop="nurseStationItem.sort">
<el-input
placeholder="请输入排序"
v-model="form.nurseStationItem.sort"
maxlength="10"
oninput="value=value.replace(/[^\d]/g,'')"
/>
</el-form-item>
<el-form-item <el-form-item
label="项目内容简介" label="项目内容简介"
prop="nurseStationItem.nurseItemContent" prop="nurseStationItem.nurseItemContent"
> >
<el-input <editor
@imgs="imgs"
:min-height="82"
style="width: 90%"
maxlength="300" maxlength="300"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4 }"
placeholder="请输入内容"
style="width: 208px"
v-model="form.nurseStationItem.nurseItemContent" v-model="form.nurseStationItem.nurseItemContent"
> ></editor>
</el-input>
</el-form-item> </el-form-item>
<el-form-item label="项目时长和价格" required> <el-form-item label="项目时长和价格" required>
<el-table <el-table
@ -685,6 +685,7 @@ export default {
name: "NurseItem", name: "NurseItem",
data() { data() {
return { return {
imgsurl: { pictureUrlList: [] },
imageUrl: "", imageUrl: "",
imgone: "", imgone: "",
handstationlist: [], handstationlist: [],
@ -777,9 +778,9 @@ export default {
"nurseStationItem.sort": [ "nurseStationItem.sort": [
{ required: true, message: "排序不能为空", trigger: "blur" }, { required: true, message: "排序不能为空", trigger: "blur" },
], ],
"nurseStationItem.advanceAppointDuration": [ // "nurseStationItem.advanceAppointDuration": [
{ required: true, message: "提前预约时长不能为空", trigger: "blur" }, // { required: true, message: "", trigger: "blur" },
], // ],
"nurseStationItem.itemPictureUrl": [ "nurseStationItem.itemPictureUrl": [
{ {
required: true, required: true,
@ -802,6 +803,10 @@ export default {
// this.getList(); // this.getList();
}, },
methods: { methods: {
imgs(item) {
console.log(item)
this.imgsurl.pictureUrlList.push(item);
},
imgUrl(imgUrl) { imgUrl(imgUrl) {
this.form.nurseStationItem.itemPictureUrl = imgUrl; this.form.nurseStationItem.itemPictureUrl = imgUrl;
}, },
@ -943,7 +948,10 @@ export default {
if (obj.pictureUrlList.length > 0) { if (obj.pictureUrlList.length > 0) {
updatePicture(obj).then((res) => {}); updatePicture(obj).then((res) => {});
} }
if (this.imgsurl.pictureUrlList.length > 0) {
updatePicture(this.imgsurl).then((res) => {});
}
this.imgsurl = { pictureUrlList: [] };
this.open = false; this.open = false;
this.reset(); this.reset();
}, },
@ -1110,6 +1118,7 @@ export default {
this.form.nurseStationItemPrices.forEach((e) => { this.form.nurseStationItemPrices.forEach((e) => {
e.price = Number(e.price); e.price = Number(e.price);
}); });
this.form.nurseStationItem.advanceAppointDuration = 0;
updateNurseItem(this.form).then((response) => { updateNurseItem(this.form).then((response) => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
@ -1119,6 +1128,7 @@ export default {
this.form.nurseStationItemPrices.forEach((e) => { this.form.nurseStationItemPrices.forEach((e) => {
e.price = Number(e.price); e.price = Number(e.price);
}); });
this.form.nurseStationItem.advanceAppointDuration = 0;
addNurseItem(this.form).then((response) => { addNurseItem(this.form).then((response) => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.$forceUpdate(); this.$forceUpdate();

View File

@ -797,7 +797,12 @@ export default {
const userId = row.userId || this.ids; const userId = row.userId || this.ids;
getUser(userId).then((response) => { getUser(userId).then((response) => {
this.form = response.data; this.form = response.data;
this.form.nurseStationIds = Number(this.form.nurseStationIds); if (!this.form.nurseStationIds) {
this.form.nurseStationIds = ''
} else {
this.form.nurseStationIds = Number(this.form.nurseStationIds);
}
// if ( // if (
// !this.form.nurseStationIds || // !this.form.nurseStationIds ||
// this.form.nurseStationIds == null || // this.form.nurseStationIds == null ||
@ -843,8 +848,7 @@ export default {
this.$router.push("/system/user-auth/role/" + userId); this.$router.push("/system/user-auth/role/" + userId);
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm: function () { submitForm: function () {
console.log(this.form);
this.$refs["form"].validate((valid) => { this.$refs["form"].validate((valid) => {
if (valid) { if (valid) {
// this.form.nurseStationIds = this.form.nurseStationIds.join(","); // this.form.nurseStationIds = this.form.nurseStationIds.join(",");
@ -853,13 +857,26 @@ export default {
// obj.push(this.form.nurseStationIds); // obj.push(this.form.nurseStationIds);
// console.log(obj) // console.log(obj)
// this.form.nurseStationIds = obj; // this.form.nurseStationIds = obj;
console.log(this.form);
if (this.form.userId != undefined) { if (this.form.userId != undefined) {
updateUser(this.form).then((response) => { if (!this.form.nurseStationIds) {
this.$modal.msgSuccess("修改成功"); this.form.nurseStationIds = null
this.open = false; updateUser(this.form).then((response) => {
this.getList(); this.$modal.msgSuccess("修改成功");
}); this.open = false;
this.getList();
// console.log('bbb',this.form)
});
} else {
this.form.nurseStationIds = Number(this.form.nurseStationIds);
updateUser(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.open = false;
this.getList();
// console.log('bbb',this.form)
});
}
} else { } else {
addUser(this.form).then((response) => { addUser(this.form).then((response) => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");

View File

@ -2,7 +2,7 @@
const path = require('path') const path = require('path')
function resolve(dir) { function resolve(dir) {
return path.join(__dirname, dir) return path.join(__dirname, dir)
} }
const CompressionPlugin = require('compression-webpack-plugin') const CompressionPlugin = require('compression-webpack-plugin')
@ -15,122 +15,124 @@ const port = process.env.port || process.env.npm_config_port || 81 // 端口
//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
// 这里只列一部分,具体配置参考文档 // 这里只列一部分,具体配置参考文档
module.exports = { module.exports = {
// 部署生产环境和开发环境下的URL。 // 部署生产环境和开发环境下的URL。
// 默认情况下Vue CLI 会假设你的应用是被部署在一个域名的根路径上 // 默认情况下Vue CLI 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.xinyilu.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.xinyilu.vip/admin/,则设置 baseUrl 为 /admin/。 // 例如 https://www.xinyilu.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.xinyilu.vip/admin/,则设置 baseUrl 为 /admin/。
publicPath: process.env.NODE_ENV === "production" ? "/" : "/", publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
// 在npm run build 或 yarn build 时 生成文件的目录名称要和baseUrl的生产环境路径一致默认dist // 在npm run build 或 yarn build 时 生成文件的目录名称要和baseUrl的生产环境路径一致默认dist
outputDir: 'dist', outputDir: 'dist',
// 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
assetsDir: 'static', assetsDir: 'static',
// 是否开启eslint保存检测有效值ture | false | 'error' // 是否开启eslint保存检测有效值ture | false | 'error'
lintOnSave: process.env.NODE_ENV === 'development', lintOnSave: process.env.NODE_ENV === 'development',
// 如果你不需要生产环境的 source map可以将其设置为 false 以加速生产环境构建。 // 如果你不需要生产环境的 source map可以将其设置为 false 以加速生产环境构建。
productionSourceMap: false, productionSourceMap: false,
// webpack-dev-server 相关配置 // webpack-dev-server 相关配置
devServer: { devServer: {
host: '0.0.0.0', host: '0.0.0.0',
port: port, port: port,
open: true, open: true,
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
target: `http://localhost:8080`, target: `http://localhost:8080`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ['^' + process.env.VUE_APP_BASE_API]: ''
}
}
},
disableHostCheck: true
},
css: {
loaderOptions: {
sass: {
sassOptions: { outputStyle: "expanded" }
}
}
},
configureWebpack: {
name: name,
resolve: {
alias: {
'@': resolve('src')
}
},
plugins: [
// http://doc.xinyilu.vip/xinyilu-vue/other/faq.html#使用gzip解压缩静态文件
new CompressionPlugin({
cache: false, // 不启用文件缓存
test: /\.(js|css|html)?$/i, // 压缩文件格式
filename: '[path].gz[query]', // 压缩后的文件名
algorithm: 'gzip', // 使用gzip压缩
minRatio: 0.8 // 压缩率小于1才会压缩
})
],
},
chainWebpack(config) {
config.plugins.delete('preload') // TODO: need test
config.plugins.delete('prefetch') // TODO: need test
// set svg-sprite-loader
config.module
.rule('svg')
.exclude.add(resolve('src/assets/icons'))
.end()
config.module
.rule('icons')
.test(/\.svg$/)
.include.add(resolve('src/assets/icons'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]'
})
.end()
config
.when(process.env.NODE_ENV !== 'development',
config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end()
config
.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // only package third parties that are initially dependent
},
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
test: resolve('src/components'), // can customize your rules
minChunks: 3, // minimum common number
priority: 5,
reuseExistingChunk: true
} }
} }
}) },
config.optimization.runtimeChunk('single'), disableHostCheck: true
{ },
from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件 css: {
to: './' //到根目录下 loaderOptions: {
} sass: {
sassOptions: { outputStyle: "expanded" }
}
} }
) },
} configureWebpack: {
} externals: {
'AMap': 'AMap'
},
name: name,
resolve: {
alias: {
'@': resolve('src')
}
},
plugins: [
// http://doc.xinyilu.vip/xinyilu-vue/other/faq.html#使用gzip解压缩静态文件
new CompressionPlugin({
cache: false, // 不启用文件缓存
test: /\.(js|css|html)?$/i, // 压缩文件格式
filename: '[path].gz[query]', // 压缩后的文件名
algorithm: 'gzip', // 使用gzip压缩
minRatio: 0.8 // 压缩率小于1才会压缩
})
],
},
chainWebpack(config) {
config.plugins.delete('preload') // TODO: need test
config.plugins.delete('prefetch') // TODO: need test
// set svg-sprite-loader
config.module
.rule('svg')
.exclude.add(resolve('src/assets/icons'))
.end()
config.module
.rule('icons')
.test(/\.svg$/)
.include.add(resolve('src/assets/icons'))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.options({
symbolId: 'icon-[name]'
})
.end()
config
.when(process.env.NODE_ENV !== 'development',
config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end()
config
.optimization.splitChunks({
chunks: 'all',
cacheGroups: {
libs: {
name: 'chunk-libs',
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // only package third parties that are initially dependent
},
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
test: resolve('src/components'), // can customize your rules
minChunks: 3, // minimum common number
priority: 5,
reuseExistingChunk: true
}
}
})
config.optimization.runtimeChunk('single'), {
from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
to: './' //到根目录下
}
}
)
}
}