diff --git a/manager/src/api/order.js b/manager/src/api/order.js index 4981a96d..052ba454 100644 --- a/manager/src/api/order.js +++ b/manager/src/api/order.js @@ -160,3 +160,8 @@ export const refundLog = (params) => { export const storeAddress = (sn) => { return getRequest(`/order/afterSale/getStoreAfterSaleAddress/${sn}`) } + +// 订单核验 +export const orderTake = (sn, verificationCode) => { + return putRequest(`/order/order/take/${sn}/${verificationCode}`); +}; diff --git a/manager/src/api/shops.js b/manager/src/api/shops.js index 36cba3c3..972463e8 100644 --- a/manager/src/api/shops.js +++ b/manager/src/api/shops.js @@ -87,3 +87,11 @@ export const downloadBill = (id) => { return getRequest(`/order/bill/downLoad/${id}`, {}, 'blob') } +// 获取物流模版 +export const getShipTemplate = (id) => { + // return getRequest(`/order/bill/shipTemplate`) +} + +export const replyMemberComment = (id, params) => { + return putRequest(`/member/evaluation/reply/${id}`, params) +} diff --git a/manager/src/assets/goodsType1.png b/manager/src/assets/goodsType1.png new file mode 100644 index 00000000..765c17c9 Binary files /dev/null and b/manager/src/assets/goodsType1.png differ diff --git a/manager/src/assets/goodsType2.png b/manager/src/assets/goodsType2.png new file mode 100644 index 00000000..7a957134 Binary files /dev/null and b/manager/src/assets/goodsType2.png differ diff --git a/manager/src/assets/goodsTypeTpl.png b/manager/src/assets/goodsTypeTpl.png new file mode 100644 index 00000000..dafa3393 Binary files /dev/null and b/manager/src/assets/goodsTypeTpl.png differ diff --git a/manager/src/components/affix-time.vue b/manager/src/components/affix-time.vue index a81b6d25..672e8762 100644 --- a/manager/src/components/affix-time.vue +++ b/manager/src/components/affix-time.vue @@ -10,14 +10,7 @@ {{ item.year + '年' + item.month + '月' }} -
- -
+ diff --git a/manager/src/components/map/multiple-region.vue b/manager/src/components/map/multiple-region.vue new file mode 100644 index 00000000..21f07bdc --- /dev/null +++ b/manager/src/components/map/multiple-region.vue @@ -0,0 +1,222 @@ + + + diff --git a/manager/src/router/router.js b/manager/src/router/router.js index 89e9b6a7..5e16c9b4 100644 --- a/manager/src/router/router.js +++ b/manager/src/router/router.js @@ -31,6 +31,13 @@ export const otherRouter = { meta: { title: "个人中心" }, component: () => import("@/views/personal-center/personal-center.vue") }, + { + path: "goods-publish", + title: "商品发布", + name: "goods-publish", + meta: { title: "商品发布" }, + component: () => import("@/views/goods/goodsOperation.vue") + }, { path: "change-password", title: "修改密码", diff --git a/manager/src/views/distribution/distributionOrder.vue b/manager/src/views/distribution/distributionOrder.vue index 64b007bd..33116731 100644 --- a/manager/src/views/distribution/distributionOrder.vue +++ b/manager/src/views/distribution/distributionOrder.vue @@ -20,12 +20,6 @@ style="width: 200px" /> - - - @@ -68,7 +62,6 @@ getDistributionOrder } from "@/api/distribution"; import {orderStatusList} from './dataJson' - import {getShopListData} from '@/api/shops' import vueQr from 'vue-qr' export default { @@ -80,7 +73,6 @@ return { timeRange: [], // 范围时间 orderStatusList, // 订单状态列表 - shopList: [], // 店铺列表 distributionId: this.$route.query.id, // 分销id loading: true, // 表单加载状态 searchForm: { // 搜索框初始化对象 @@ -109,12 +101,7 @@ tooltip: true, minWidth:80, }, - { - title: "店铺名称", - key: "storeName", - minWidth:80, - tooltip: true - }, + { title: "状态", slot: "distributionOrderStatus", @@ -147,7 +134,6 @@ // 初始化数据 init() { this.getDataList(); - this.getShopList() }, //分页 改变页码 changePage(v) { @@ -187,25 +173,7 @@ this.total = this.data.length; this.loading = false; }, - getShopList(val) { // 获取店铺列表 搜索用 - const params = { - pageNumber: 1, - pageSize: 10, - storeName: '' - } - if (val) { - params.storeName = val; - } else { - params.storeName = '' - } - - getShopListData(params).then(res => { - this.shopList = res.result.records - }) - }, - searchChange(val) { // 店铺搜索,键盘点击回调 - this.getShopList(val) - }, + filterStatus (status) { // 过滤订单状态 const arr = [ {status: 'WAIT_BILL', title: '待结算'}, diff --git a/manager/src/views/goods/addGoods.scss b/manager/src/views/goods/addGoods.scss new file mode 100644 index 00000000..499380ab --- /dev/null +++ b/manager/src/views/goods/addGoods.scss @@ -0,0 +1,528 @@ +/*选择商品品类*/ +.content-goods-publish { + padding: 15px; + margin: 0 auto; + text-align: center; + border-radius: 0.8em; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); + background: none repeat 0 0 #fff; + + /*商品品类*/ + .goods-category { + min-height: 500px; + border-radius: 0.8em; + text-align: left; + padding: 10px; + background: #ededed; + + ul { + padding: 12px 8px; + list-style: none; + width: 300px; + background: none repeat 0 0 #fff; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04); + border-radius: 0.4em; + display: inline-block; + letter-spacing: normal; + margin-right: 15px; + vertical-align: top; + word-spacing: normal; + + li { + line-height: 20px; + padding: 10px 5px; + cursor: pointer; + color: #333; + font-size: 12px; + display: flex; + flex-wrap: nowrap; + flex-direction: row; + justify-content: space-between; + align-items: center; + } + } + } + + /** 当前品类被选中的样式 */ + .activeClass { + border-radius: 0.4em; + background-color: rgba($color: $theme_color, $alpha: 0.2); + border: 1px solid rgba($color: $theme_color, $alpha: 0.8); + color: #fff; + } + + /*!*当前选择的商品品类文字*!*/ + .current-goods-category { + text-align: left; + padding: 10px; + width: 100%; + border: 1px solid #fbeed5; + color: #c09853; + background-color: #fcf8e3; + margin: 10px auto; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + font-size: 12px; + font-weight: bold; + } +} + +/*编辑基本信息*/ +.el-form { + padding-bottom: 80px; + + .el-form-item { + width: 100%; + text-align: left; + } +} + +.sku-val { + justify-content: flex-start; + flex-wrap: wrap; + + >.ivu-form { + flex-wrap: wrap !important; + } + + /deep/ .sku-item-content-val { + margin-right: 20px; + } +} + +div.base-info-item { + h4 { + margin-bottom: 10px; + padding: 0 10px; + border: 1px solid #ddd; + background-color: #f8f8f8; + font-weight: bold; + color: #333; + font-size: 14px; + line-height: 40px; + text-align: left; + } + + >div { + padding-left: 5%; + } + + .form-item-view { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: space-between; + // padding-left: 80px; + + .form-item-view-wholesale { + display: flex; + + .form-item-view-wholesale-preview { + padding-left: 5%; + } + + } + + .layout { + margin-bottom: 20px; + width: 100%; + justify-content: center; + + .sku-item-content { + margin: 20px 0; + display: flex; + width: 100% !important; + flex: 1; + + flex-direction: column; + align-items: flex-start; + justify-content: flex-start; + width: 100%; + + >.ivu-card-body { + width: 100%; + } + + .ivu-card-body { + width: 100%; + justify-content: center; + align-items: flex-start; + } + + .sku-item-content-name { + display: flex; + align-items: flex-start; + justify-content: flex-start; + width: 100%; + } + } + } + + .shop-category-text { + font-size: 12px; + } + } + + .form-item-view-bottom { + margin-bottom: 50px; + } + + .item-goods-properts-row { + display: flex; + flex-direction: row; + word-break: break-all; + white-space: normal; + width: 300px; + height: 100px; + } + + .item-goods-properts { + display: flex; + flex-direction: row; + margin-bottom: 10px; + } + + .form-item { + display: flex; + align-items: center; + } + + /** 审核信息-拒绝原因 */ + .auth-info { + color: red; + } + + .el-form-item { + width: 30%; + min-width: 300px; + } + + .goods-name-width { + width: 50%; + min-width: 300px; + } + + .el-form-item__content { + margin-left: 120px; + text-align: left; + } + + p.goods-group-manager { + padding-left: 7.5%; + text-align: left; + color: #999; + font-size: 13px; + } + + /*teatarea*/ + /deep/ .el-textarea { + width: 150%; + } + + .seo-text { + width: 150%; + } +} + +/*折叠面板*/ +.el-collapse-item { + /deep/ .el-collapse-item__header { + text-align: left; + background-color: #f8f8f8; + padding: 0 10px; + font-weight: bold; + color: #333; + font-size: 14px; + } + + .el-form-item { + margin-left: 5%; + width: 25%; + } + + /deep/ .el-form-item__content { + margin-left: 120px; + text-align: left; + } + + p.goods-group-manager { + padding-left: 12%; + text-align: left; + color: #999; + } + + /deep/ .el-collapse-item__content { + padding: 10px 0; + text-align: left; + } +} + +.success { + >h1 { + font-size: 28px; + } + + >* { + margin: 10px; + } +} + +.operation { + >* { + margin: 10px 0; + } +} + +/*商品描述*/ +.goods-intro { + line-height: 40; +} + +/** 底部步骤 */ +.footer { + width: 100%; + margin-top: 20px; + padding: 10px; + background-color: #ffc; + position: sticky; + bottom: 0px; + text-align: center; + z-index: 999; + + >.ivu-btn { + margin: 0 10px; + } +} + +/*图片上传组件第一张图设置封面*/ +.goods-images { + /deep/ li.el-upload-list__item:first-child { + position: relative; + } + + /deep/ li.el-upload-list__item:first-child:after { + content: "封"; + color: #fff; + font-weight: bold; + font-size: 12px; + position: absolute; + left: -15px; + top: -6px; + width: 40px; + height: 24px; + padding-top: 6px; + background: #13ce66; + text-align: center; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + -webkit-box-shadow: 0 0 1pc 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 1pc 1px rgba(0, 0, 0, 0.2); + } +} + +.el-form-item__label { + word-break: break-all; +} + +.step-list { + height: 60px; + padding: 10px 30px; + background-color: #fff; + margin-bottom: 20px; + border-radius: 0.8em; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1); +} + +.add-sku-btn { + margin-top: 10px; +} + +.sku-item:not(:first-child) { + margin-top: 10px; +} + +.sku-upload-list { + text-align: center; + border: 1px solid transparent; + border-radius: 4px; + overflow: hidden; + background: #fff; + position: relative; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + margin-right: 8px; +} + +.preview-picture { + width: 100%; + margin: 0 auto; + display: block; + // text-align: center; + border: 1px solid transparent; + // justify-self: center; + // align-self: center; +} + +.preview-picture img { + width: 100%; + height: 100%; +} + +.sku-upload-list img { + width: 100%; + height: 100%; +} + +.sku-upload-list-cover { + display: none; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: rgba(0, 0, 0, 0.6); +} + +.sku-upload-list:hover .sku-upload-list-cover { + display: block; +} + +.sku-upload-list-cover i { + color: #fff; + font-size: 20px; + cursor: pointer; + margin: 0 2px; +} + +.required { + /deep/ .ivu-form-item-label::before { + content: "*"; + display: inline-block; + margin-right: 4px; + line-height: 1; + font-family: SimSun; + font-size: 14px; + color: #ed4014; + } +} + +.demo-upload-list { + width: 150px; + height: 150px; + text-align: center; + border: 1px solid transparent; + border-radius: 4px; + display: inline-block; + background: #fff; + position: relative; + margin-right: 4px; + vertical-align: bottom; +} + +.demo-upload-list img { + width: 100%; + height: 100%; +} + +.demo-upload-list-cover { + display: none; + position: absolute; + top: 0; + bottom: 0; + left: 0; + + right: 0; + background: rgba(0, 0, 0, 0.6); + + justify-content: space-between; + align-items: center; + flex-direction: column; +} + +.demo-upload-list:hover .demo-upload-list-cover { + display: flex; +} + +.demo-upload-list-cover div { + margin-top: 50px; + width: 100%; + + >i { + width: 50%; + margin-top: 8px; + color: #fff; + font-size: 20px; + cursor: pointer; + } +} + +.active-goods-type { + background: #e8e8e8; +} + +.goods-type-list { + max-height: 500px; + overflow-y: auto; +} + +.template-item { + justify-content: flex-start !important; +} + +.tree-bar { + height: auto !important; + max-height: auto !important; + min-height: 240px !important; +} + +.goods-type-item { + padding: 20px 0; + width: 100%; + cursor: pointer; + transition: 0.35s; + display: flex; + justify-content: center; + align-items: center; + + /deep/ img { + margin-right: 20px; + width: 100px; + margin-left: 10px; + } + + + + /deep/ p { + color: #999; + font-size: 14px; + margin-top: 10px; + } +} + +.goods-type-item:hover { + background: #ededed; +} + +.goods-list-box { + height: 450px; + overflow: auto; +} + +h2 { + cursor: pointer; + font-size: 21px; + color: #333; +} + +.form-item-view-wholesale-form-col { + height: 400px; +} + +.form-item-view-wholesale-row-del { + display: "flex"; + justify-content: "space-between"; + align-items: "center"; +} +.promise-intro-btn{ + margin: 10px 0; + text-align: left; +} diff --git a/manager/src/views/goods/goods-info/goods.vue b/manager/src/views/goods/goods-info/goods.vue index 0154fdba..ebd1d0c5 100644 --- a/manager/src/views/goods/goods-info/goods.vue +++ b/manager/src/views/goods/goods-info/goods.vue @@ -69,6 +69,9 @@ >搜索 +
+ +
- - + +
-
-
-
-
商家回复:
-
{{ infoData.reply }}
-
-
-
- -
-
-
+
+
+ + + + + +
+
@@ -102,6 +101,10 @@ export default { name: "goods-review", // 会员评价 data() { return { + replyForm:{ + reply:'', + replyImage:[] + }, infoData: {}, // 商品信息 infoFlag: false, // 评价展示 infoTitle: "", // modal名称 @@ -173,6 +176,14 @@ export default { align: "left", width: 170 }, + + { + title: "回复状态", + key: "replyStatus", + align: "left", + width: 100, + slot: "replyStatus", + }, { title: "页面展示", key: "shopDisable", diff --git a/manager/src/views/goods/goodsOperation.vue b/manager/src/views/goods/goodsOperation.vue new file mode 100644 index 00000000..77c41ece --- /dev/null +++ b/manager/src/views/goods/goodsOperation.vue @@ -0,0 +1,60 @@ + + + diff --git a/manager/src/views/goods/goodsOperationFirst.vue b/manager/src/views/goods/goodsOperationFirst.vue new file mode 100644 index 00000000..7653fe1a --- /dev/null +++ b/manager/src/views/goods/goodsOperationFirst.vue @@ -0,0 +1,260 @@ + + + diff --git a/manager/src/views/goods/goodsOperationSec.vue b/manager/src/views/goods/goodsOperationSec.vue new file mode 100644 index 00000000..2ec73c3b --- /dev/null +++ b/manager/src/views/goods/goodsOperationSec.vue @@ -0,0 +1,2023 @@ + + + + + diff --git a/manager/src/views/goods/goodsOperationThird.vue b/manager/src/views/goods/goodsOperationThird.vue new file mode 100644 index 00000000..b2b90859 --- /dev/null +++ b/manager/src/views/goods/goodsOperationThird.vue @@ -0,0 +1,38 @@ + + + \ No newline at end of file diff --git a/manager/src/views/logistics/company.vue b/manager/src/views/logistics/company.vue new file mode 100644 index 00000000..b332dd7f --- /dev/null +++ b/manager/src/views/logistics/company.vue @@ -0,0 +1,321 @@ + + + diff --git a/manager/src/views/logistics/index.vue b/manager/src/views/logistics/index.vue index b332dd7f..ada85b41 100644 --- a/manager/src/views/logistics/index.vue +++ b/manager/src/views/logistics/index.vue @@ -1,321 +1,32 @@ + + diff --git a/manager/src/views/logistics/shipTemplate.vue b/manager/src/views/logistics/shipTemplate.vue new file mode 100644 index 00000000..48e80c91 --- /dev/null +++ b/manager/src/views/logistics/shipTemplate.vue @@ -0,0 +1,633 @@ + + + + diff --git a/manager/src/views/member/list/memberDetail.vue b/manager/src/views/member/list/memberDetail.vue index a03c260d..9bd4a02f 100644 --- a/manager/src/views/member/list/memberDetail.vue +++ b/manager/src/views/member/list/memberDetail.vue @@ -563,12 +563,7 @@ } } }, - { - title: "购买店铺", - key: "storeName", - width: 120, - tooltip: true - }, + { title: "下单时间", key: "createTime", diff --git a/manager/src/views/order/after-order/afterSaleOrderDetail.vue b/manager/src/views/order/after-order/afterSaleOrderDetail.vue index a5d605c3..6c710283 100644 --- a/manager/src/views/order/after-order/afterSaleOrderDetail.vue +++ b/manager/src/views/order/after-order/afterSaleOrderDetail.vue @@ -127,37 +127,7 @@ -
-

商家处理

-
-
商家
-
-
- {{ afterSaleInfo.storeName }} -
-
-
- -
-
备注信息
-
- {{ afterSaleInfo.auditRemark || "暂无备注信息" }} -
-
-
@@ -248,14 +218,7 @@ " >

物流信息

-
-
收货商家
-
{{ afterSaleInfo.storeName }}
-
-
-
收货商家手机
-
{{ storeMsg.salesConsigneeMobile }}
-
+
收货地址
diff --git a/manager/src/views/order/after-order/orderComplaintDetail.vue b/manager/src/views/order/after-order/orderComplaintDetail.vue index 84281dfa..b5de5efb 100644 --- a/manager/src/views/order/after-order/orderComplaintDetail.vue +++ b/manager/src/views/order/after-order/orderComplaintDetail.vue @@ -137,9 +137,9 @@ - diff --git a/manager/src/views/order/order/orderDetail.vue b/manager/src/views/order/order/orderDetail.vue index dbf46b14..3845b868 100644 --- a/manager/src/views/order/order/orderDetail.vue +++ b/manager/src/views/order/order/orderDetail.vue @@ -7,6 +7,10 @@ + + + + @@ -431,7 +435,80 @@
+ + +
+
+ + + + + + +
+
+ + + +
+
+ + +
+
+ + + +

+ + 订单核销 +

+
+
+ + + +
+
+
+ + +
+
@@ -451,6 +528,34 @@ export default { }, data () { return { + // 分包裹发货 + groupShipModal: false, + shipLoading: true, + groupOrderDeliveryForm: { + logisticsNo: "", //发货单号 + logisticsId: "", //物流公司 + }, + checkedLogistics: [], //选中的物流公司集合 + + orderTakeModal: false, //订单核销弹出框 + + //订单核销表单 + orderTakeForm: { + qrCode: "", + }, + //验证要调整的订单金额 + orderTakeValidate: { + qrCode: [ + { required: true, message: "订单核销码不能为空", trigger: "blur" }, + ], + }, + + groupOrderDeliverFormValidate: { + logisticsNo: [{ required: true, message: "发货单号不能为空", trigger: "change" },], + logisticsId: [{ required: true, message: "请选择物流公司", trigger: "blur" },], + }, + + typeList: [], showPrices: false, printHiddenFlag: false,//隐藏信息 @@ -634,6 +739,40 @@ export default { minWidth: 200, }, ], + // 选择要发货的商品 + selectGroupShipGoods: [], + groupShipColumns: [ + {type: "selection", width: 60, align: "center",}, + {title: "商品", key: "goodsName", width: 300, slot: "goodsSlot",}, + { + title: "单价", + key: "unitPrice", + slot: "priceSlot", + width: 100, + render: (h, params) => { + if (!params.row.unitPrice) { + return h("div", this.$options.filters.unitPrice(0, "¥")); + } + return h("div", this.$options.filters.unitPrice(params.row.unitPrice, "¥")); + }, + }, + {title: "数量", key: "num", slot: "numSlot", width: 120,}, + { + title: "已发包裹", + key: "deliverNumber", + render: (h, params) => { + return h("div", params.row.deliverNumber ? params.row.deliverNumber : 0); + }, + }, + { + title: "小计", + key: "subTotal", + width: 120, + render: (h, params) => { + return h("div", this.$options.filters.unitPrice(params.row.subTotal, "¥")); + }, + }, + ], }; }, watch: { @@ -642,6 +781,81 @@ export default { }, }, methods: { + // 选中 + selectGroupShipGoodsMethods (selected) { + this.selectGroupShipGoods = selected; + }, + //订单核销提交 + orderTakeSubmit () { + this.$refs.orderTakeForm.validate((valid) => { + if (valid) { + API_Order.orderTake(this.sn, this.orderTakeForm.qrCode).then( + (res) => { + if (res.success) { + this.$Message.success("订单核销成功"); + this.orderTakeModal = false; + this.getDataDetail(); + } + } + ); + } + }); + }, + //弹出订单核销框 + orderTake () { + this.orderTakeForm.qrCode = this.orderInfo.order.verificationCode; + this.orderTakeModal = true; + }, + // 分包裹发货 + groupShip () { + this.groupShipModal = true; + this.getLogisticsList(); + }, + // 分页获取物流公司 + getLogisticsList () { + API_Order.getLogisticsChecked().then((res) => { + if (res.success) { + this.checkedLogistics = res.result; + } + }); + }, + // 分包裹发货 + confirmShipGroupGoods () { + this.$refs.groupOrderDeliveryForm.validate(async (valid) => { + if (valid) { + if (this.selectGroupShipGoods.length) { + let submit = { + ...this.groupOrderDeliveryForm, + orderSn: this.sn, + partDeliveryDTOList: this.selectGroupShipGoods.map((item) => { + return { + orderItemId: item.id, + deliveryNum: item.canNum ? item.canNum : item.num, + }; + }), + }; + const res = await API_Order.partDelivery(this.sn, submit); + if (res.success) { + this.$Message.success("发货成功!"); + this.shipLoading = false; + this.getDataDetail(); + this.getOrderPackage(); + this.groupShipModal = false; + this.groupOrderDeliveryForm = [] + } else { + this.shipLoading = false; + this.groupShipModal = true; + } + } else { + this.shipLoading = false; + this.groupShipModal = true; + this.$Message.error("请选择要发货的商品"); + } + } else { + this.shipLoading = false; + } + }); + }, gotoHomes () { return false }, diff --git a/manager/src/views/order/order/orderList.vue b/manager/src/views/order/order/orderList.vue index 0b8c503b..4768b050 100644 --- a/manager/src/views/order/order/orderList.vue +++ b/manager/src/views/order/order/orderList.vue @@ -53,23 +53,6 @@ style="width: 160px" >
- - - - - - - - - - - - - - - - -