+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/src/views/virtual/orders/js/index.js b/frontend/src/views/virtual/orders/js/index.js
index d6ccd128..f04ccc2a 100644
--- a/frontend/src/views/virtual/orders/js/index.js
+++ b/frontend/src/views/virtual/orders/js/index.js
@@ -6,7 +6,9 @@ export default {
UiEdit: resolve => require(["views/virtual/orders/edit"], resolve),
UiDetail: resolve => require(["views/virtual/orders/detail"], resolve),
UiCards: resolve => require(["views/virtual/orders/cards"], resolve),
- UiShip: resolve => require(["views/virtual/orders/ship"], resolve)
+ UiShip: resolve => require(["views/virtual/orders/ship"], resolve),
+ UiShipNotBase: resolve =>
+ require(["views/virtual/orders/ship_not_base"], resolve)
},
data() {
return {
@@ -49,11 +51,16 @@ export default {
show: false,
data: null
},
+ shipNotBaseObj: {
+ show: false,
+ data: null
+ },
search: {
show: true
},
row: {}, // 当前行
orderConfirmShow: false,
+ orderShipConfirmShow: false,
cancel_remark: "",
logistics: null,
logisticsParams: {
@@ -701,7 +708,12 @@ export default {
class: ["btn"],
on: {
click: () => {
- this.openCards(true, 2, row);
+ if (this.type === 0) {
+ this.openCards(true, 2, row);
+ } else {
+ this.row = row;
+ this.orderShipConfirmShow = true;
+ }
}
}
},
@@ -914,7 +926,7 @@ export default {
* @return {[type]} [description]
*/
openEdit(bool, source, data = null) {
- console.log('source', source);
+ console.log("source", source);
this.editObj = {
show: bool,
source,
@@ -928,7 +940,7 @@ export default {
* @return {[type]} [description]
*/
openCards(bool, source, orderObj = {}) {
- console.log('source', source);
+ console.log("source", source);
this.cardsObj = {
show: bool,
source,
@@ -1042,11 +1054,29 @@ export default {
data: row
};
},
+ // 非销售订单排单
+ orderShipNotBase(type) {
+ let row = this.row;
+
+ if (type === 0) {
+ this.openCards(true, 2, row);
+ } else {
+ console.log(row);
+
+ this.shipNotBaseObj = {
+ show: true,
+ data: row
+ };
+ }
+
+ this.orderShipConfirmShow = false;
+ },
handleOrderSuccess(value) {
let page = value ? this.list_data.current_page : 1;
this.cardsObj.show = false;
this.editObj.show = false;
this.shipObj.show = false;
+ this.shipNotBaseObj.show = false;
this.orderConfirmShow = false;
this.$store.dispatch("initOrder");
this.index(page);
diff --git a/frontend/src/views/virtual/orders/js/index.js.bak b/frontend/src/views/virtual/orders/js/index.js.bak
deleted file mode 100644
index 5817698c..00000000
--- a/frontend/src/views/virtual/orders/js/index.js.bak
+++ /dev/null
@@ -1,633 +0,0 @@
-import * as API from 'api/virtual/orders';
-import * as CONFIGS from 'api/virtual/configs';
-export default {
- name: 'Orders',
- components: {
- UiEdit: resolve => require(['views/virtual/orders/edit'], resolve),
- UiDetail: resolve => require(['views/virtual/orders/detail'], resolve),
- UiCards: resolve => require(['views/virtual/orders/cards'], resolve)
- },
- data() {
- return {
- params: {
- type: 0,
- sn: '',
- company_name: '',
- package_name: '',
- order_status: '',
- carrier_operator: '',
- time: []
- },
- type: 0,
- list_data: null,
- editObj: {
- show: false,
- data: null
- },
- detailObj: {
- show: false,
- data: null
- },
- cardsObj: {
- show: false
- },
- search: {
- show: false
- },
- cancel_remark: '',
- logistics: null,
- logisticsParams: {
- logistics_company: '',
- logistics_no: ''
- },
- refundParams: {
- channel: '',
- account: '',
- remark: ''
- },
- table_titles: [
- {
- title: '订单编号',
- key: 'sn',
- width: 230
- },
- {
- title: '企业名称',
- key: 'company_name',
- width: 275
- },
- {
- title: '运营商',
- key: 'carrier_operator',
- width: 75
- },
- {
- title: '套餐名称',
- key: 'package_name',
- width: 100
- },
- {
- title: '套餐单价',
- key: 'unit_price',
- width: 90
- },
- {
- title: '订单数量',
- key: '',
- width: 90,
- render: (h, {
- row,
- column,
- index
- }) => {
- return h('span', Number(row.counts));
- }
- },
- {
- title: '订单金额',
- key: 'custom_price',
- width: 100
- },
- {
- title: '订单状态',
- key: '',
- width: 100,
- render: (h, {
- row,
- column,
- index
- }) => {
- let status = ['error', 'default', 'warning', 'primary', 'success'];
-
- return h('Tag', {
- props: {
- color: status[row.order_status]
- }
- }, row.order_status_name);
- }
- },
- {
- title: '收款状态',
- key: '',
- width: 100,
- render: (h, {
- row,
- column,
- index
- }) => {
- let status = ['error', 'success', 'default'];
-
- return h('Tag', {
- props: {
- color: status[row.transaction_status]
- }
- }, row.transaction_status_name);
- }
- },
- {
- title: '下单时间',
- key: 'order_at',
- width: 150
- },
- {
- title: '操作',
- key: 'action',
- width: 360,
- render: (h, {
- row,
- column,
- index
- }) => {
- let html = [];
-
- if (row.deleted_at) {
- return h('Tag', {
- props: {
- color: 'default'
- }
- }, '该订单已被删除');
- }
-
- if (this.haveJurisdiction('show')) {
- html.push(h('Button', {
- props: {
- type: 'dashed',
- size: 'small',
- disabled: false,
- icon: 'md-eye'
- },
- class: ['btn'],
- on: {
- click: (event) => {
- this.show(row);
- }
- }
- }, '查看'));
- }
-
- if (this.haveJurisdiction('update')) {
- // 排单
- if (row.shipments !== row.counts) {
- html.push(h('Tooltip', {
- props: {
- content: '已排单' + row.shipments + '张'
- },
- class: ['umar-r5']
- }, [h('Button', {
- props: {
- type: 'error',
- size: 'small'
- },
- class: ['btn'],
- on: {
- click: () => {
- this.openCards(true, 2);
- }
- }
- }, '排单')]));
- }
-
- // 未收款 -> 已收款
- if (row.transaction_status === 0) {
- html.push(h('Button', {
- props: {
- type: 'success',
- size: 'small',
- disabled: false,
- ghost: true
- },
- class: ['btn'],
- on: {
- click: () => {
- this.$Modal.confirm({
- title: '提示',
- content: '请确认是否已收款?',
- onOk: () => {
- API.update({
- transaction_status: 1
- }, row.id).then(res => {
- if (res.code == 0) {
- this.$Message.success('修改成功');
- this.request();
- }
- });
- }
- });
- }
- }
- }, '确认收款'));
- }
-
- // 已收款 -> 已退款 (要先取消订单)
- if (row.transaction_status === 1 && row.order_status === 1) {
- html.push(h('Button', {
- props: {
- type: 'error',
- size: 'small',
- disabled: false,
- ghost: true
- },
- class: ['btn'],
- on: {
- click: () => {
- this.$Modal.confirm({
- title: '请填写退款信息并确认',
- render: (h) => {
- let refundHtml = [];
-
- let Options = [];
- Options.push(h('Option', {
- props: {
- key: 'bank',
- value: 'bank'
- }
- }, '银行转账'));
- Options.push(h('Option', {
- props: {
- key: 'alipay',
- value: 'alipay'
- }
- }, '支付宝转账'));
-
- refundHtml.push(h('Select', {
- props: {
- value: this.refundParams.channel,
- placeholder: '请选择退款方式...'
- },
- class: ['umar-b10'],
- on: {
- 'on-change': (val) => {
- this.refundParams.channel = val;
- }
- }
- }, Options));
-
- refundHtml.push(h('Input', {
- props: {
- value: this.refundParams.account,
- autofocus: true,
- placeholder: '请输入退款账号...'
- },
- class: ['umar-b10'],
- on: {
- 'input': (val) => {
- this.refundParams.account = val;
- }
- }
- }));
-
- refundHtml.push(h('Input', {
- props: {
- value: this.refundParams.remark,
- autofocus: true,
- placeholder: '请输入退款备注...'
- },
- class: ['umar-b10'],
- on: {
- 'input': (val) => {
- this.refundParams.remark = val;
- }
- }
- }));
-
- return h('div', refundHtml);
- },
- onOk: () => {
- if (!this.refundParams.channel) {
- this.$Message.error('请选择退款方式');
- return;
- }
-
- if (!this.refundParams.account) {
- this.$Message.error('请输入退款账号');
- return;
- }
-
- API.update({
- transaction_status: 2,
- extends: {
- refund_channel: this.refundParams.channel,
- refund_account: this.refundParams.account,
- refund_remark: this.refundParams.remark
- }
- }, row.id).then(res => {
- if (res.code == 0) {
- this.$Message.success('修改成功');
- this.request();
- }
-
- this.refundParams.channel = '';
- this.refundParams.account = '';
- this.refundParams.remark = '';
- });
- }
-
- });
- }
- }
- }, '确认退款'));
- }
-
- // 已下单 -> 取消订单 | 出库
- if (row.order_status === 0) {
- html.push(h('Button', {
- props: {
- type: 'info',
- size: 'small',
- disabled: false,
- ghost: true
- },
- class: ['btn'],
- on: {
- click: () => {
- this.$Modal.confirm({
- render: (h) => {
- return h('Input', {
- props: {
- value: this.cancel_remark,
- autofocus: true,
- placeholder: '...'
- },
- on: {
- 'input': (val) => {
- this.cancel_remark = val;
- }
- }
- });
- },
- title: '请输入取消理由',
- onOk: () => {
- if (!this.cancel_remark) {
- this.$Message.error('请输入取消理由');
- return;
- }
-
- API.update({
- order_status: 1,
- extends: {
- cancel_remark: this.cancel_remark
- }
- }, row.id).then(res => {
- if (res.code == 0) {
- this.$Message.success('取消成功');
- this.request();
- }
-
- this.cancel_remark = '';
- });
- }
- });
- }
- }
- }, '取消订单'));
-
- html.push(h('Button', {
- props: {
- type: 'warning',
- size: 'small',
- disabled: false,
- ghost: true
- },
- class: ['btn'],
- on: {
- click: () => {
- this.$Modal.confirm({
- title: '提示',
- content: '请确认订单是否已出库?',
- onOk: () => {
- API.update({
- order_status: 2
- }, row.id).then(res => {
- if (res.code == 0) {
- this.$Message.success('修改成功');
- this.request();
- }
- });
- }
- });
- }
- }
- }, '确认出库'));
- }
-
- // 已出库 -> 已发货
- if (row.order_status === 2) {
- html.push(h('Button', {
- props: {
- type: 'warning',
- size: 'small',
- disabled: false,
- ghost: true
- },
- class: ['btn'],
- on: {
- click: () => {
- this.getLogistics().then(logistics => {
- this.$Modal.confirm({
- title: '请填写发货信息',
- render: (h) => {
- let Options = [];
- for (const key in logistics) {
- Options.push(h('Option', {
- props: {
- key: key,
- value: key
- }
- }, logistics[key]));
- }
-
- let Select = h('Select', {
- props: {
- value: this.logisticsParams.logistics_company,
- placeholder: '请选择快递公司...'
- },
- class: ['umar-b10'],
- on: {
- 'on-change': (val) => {
- this.logisticsParams.logistics_company = val;
- }
- }
- }, Options);
-
- let Input = h('Input', {
- props: {
- value: this.logisticsParams.logistics_no,
- autofocus: true,
- placeholder: '请输入快递单号...'
- },
- on: {
- 'input': (val) => {
- this.logisticsParams.logistics_no = val;
- }
- }
- });
-
- return h('div', [Select, Input]);
- },
- onOk: () => {
- API.update({
- order_status: 3,
- logistics_company: this.logisticsParams.logistics_company,
- logistics_no: this.logisticsParams.logistics_no
- }, row.id).then(res => {
- if (res.code == 0) {
- this.$Message.success('修改成功');
- this.request();
- }
- });
- }
-
- });
- });
- }
- }
- }, '订单发货'));
- }
-
- // 已发货 -> 已签收
- if (row.order_status === 3) {
- html.push(h('Button', {
- props: {
- type: 'warning',
- size: 'small',
- disabled: false,
- ghost: true
- },
- class: ['btn'],
- on: {
- click: () => {
- this.$Modal.confirm({
- title: '提示',
- content: '请确认订单是否确认签收?',
- onOk: () => {
- API.update({
- order_status: 4
- }, row.id).then(res => {
- if (res.code == 0) {
- this.$Message.success('修改成功');
- this.request();
- }
- });
- }
- });
- }
- }
- }, '确认签收'));
- }
- }
-
- if (html.length) {
- return h('div', html);
- }
- }
- }
- ]
- };
- },
- created() {
- this.index(1);
- },
- methods: {
- // 查看订单明细
- show(row) {
- this.isShowLoading(true);
- API.show(row.id).then(res => {
- this.isShowLoading(false);
- if (res.code === 0) {
- this.detailObj = {
- show: true,
- data: res.data
- };
- }
- }).catch(() => {
- this.isShowLoading(false);
- });
- },
- /**
- * [index 列表]
- * @param {Number} page [description]
- * @return {[type]} [description]
- */
- index(page = 1) {
- this.type = Number(this.$route.params.type);
- this.params.type = Number(this.$route.params.type);
- let data = this.searchDataHandle({}, {
- page
- }, this.params);
- this.isShowLoading(true);
- API.index(data).then(res => {
- this.isShowLoading(false);
- if (res.code == 0) {
- this.list_data = res.data;
- }
- }).catch(() => {
- this.isShowLoading(false);
- });
- },
-
- /**
- * [openEdit 打开编辑弹窗]
- * source 0:从创建订单按钮打开 1:从选卡页面打开
- * @return {[type]} [description]
- */
- openEdit(bool, source, data = null) {
- this.editObj = {
- show: bool,
- source,
- data
- };
- },
-
- /**
- * [openCards 打开选卡弹窗]
- * source 0:选创建订单页面打开 1:从选卡按钮打开 2:从排单按钮打开
- * @return {[type]} [description]
- */
- openCards(bool, source) {
- this.cardsObj = {
- show: bool,
- source
- };
- },
-
- /**
- * [request 刷新]
- * @return {[type]} [description]
- */
- request() {
- const result = this.list_data;
- let page = result.current_page;
-
- if (result && result.data.length == 1) {
- page = this.returnPage(result.total, result.current_page, result.per_page);
- }
-
- this.index(page);
- },
-
- resetSearch() {
- for (let k in this.params) {
- if (k === 'time') {
- this.params[k] = [];
- } else {
- this.params[k] = '';
- }
- }
- this.index(1);
- },
- getLogistics() {
- return new Promise(resolve => {
- if (this.logistics) {
- resolve(this.logistics);
- } else {
- CONFIGS.get('logistics').then(res => {
- if (res.code === 0) {
- this.logistics = res.data;
- }
- resolve(this.logistics);
- });
- }
- });
- }
- }
-};
diff --git a/frontend/src/views/virtual/orders/js/ship_not_base.js b/frontend/src/views/virtual/orders/js/ship_not_base.js
new file mode 100644
index 00000000..1813c58f
--- /dev/null
+++ b/frontend/src/views/virtual/orders/js/ship_not_base.js
@@ -0,0 +1,72 @@
+import * as API from "api/virtual/orders";
+
+export default {
+ props: {
+ show: {
+ type: Boolean,
+ default: false
+ },
+ source: {
+ type: Number,
+ default: 0
+ },
+ data: {
+ type: Object,
+ default: {}
+ }
+ },
+ data() {
+ return {
+ my_show: false,
+ loading: false,
+ params: {},
+ file: null
+ };
+ },
+ watch: {
+ show(bool) {
+ this.my_show = bool;
+ }
+ },
+ methods: {
+ ok() {
+ let params = {};
+ params.order_id = this.data.id;
+
+ if (this.file === null) {
+ return this.$Message.error("请上传文件");
+ }
+
+ params.file = this.file;
+
+ this.$Modal.confirm({
+ title: "提示",
+ content: "请确认是否提交排单?",
+ onOk: () => {
+ this.loading = true;
+ API.shipNotBase(params).then(res => {
+ if (res.code == 0) {
+ this.$Message.success("修改成功");
+ this.$emit("update-success");
+ this.clear();
+ }
+ this.loading = false;
+ });
+ }
+ });
+ },
+ selectFile(file) {
+ this.file = file;
+ return false;
+ },
+ visibleChange(bool) {
+ if (!bool) {
+ this.$emit("update:show", false);
+ }
+ },
+ clear() {
+ this.file = null;
+ this.my_show = false;
+ }
+ }
+};
diff --git a/frontend/src/views/virtual/orders/ship_not_base.vue b/frontend/src/views/virtual/orders/ship_not_base.vue
new file mode 100644
index 00000000..4a777b22
--- /dev/null
+++ b/frontend/src/views/virtual/orders/ship_not_base.vue
@@ -0,0 +1,54 @@
+