captain-ui
Version:
有赞vue wap业务组件库
163 lines (143 loc) • 4.57 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
require("vant/es/action-sheet/style");
var _actionSheet = _interopRequireDefault(require("vant/es/action-sheet"));
require("vant/es/cell-group/style");
var _cellGroup = _interopRequireDefault(require("vant/es/cell-group"));
require("vant/es/cell/style");
var _cell = _interopRequireDefault(require("vant/es/cell"));
var _option = _interopRequireDefault(require("./option"));
var _components;
var _default = {
render: function render() {
var _vm = this;
var _h = _vm.$createElement;
var _c = _vm._self._c || _h;
return _c('van-cell', {
staticClass: "cap-express-way"
}, [_vm.editable ? _c('van-action-sheet', {
attrs: {
"title": _vm.actionsheetTitle
},
model: {
value: _vm.showActionSheet,
callback: function callback($$v) {
_vm.showActionSheet = $$v;
},
expression: "showActionSheet"
}
}, [_c('van-cell-group', _vm._l(_vm.computedList, function (item, index) {
return _c('cap-express-way-option', {
key: item.express_type,
attrs: {
"data": item,
"current-express-way": _vm.currentExpressWay
},
on: {
"change": function change($event) {
_vm.onSelectExpressWay(item, index);
}
}
});
}), 1)], 1) : _vm._e(), _c('van-cell', {
attrs: {
"title": _vm.cellTitle,
"is-link": _vm.editable,
"center": ""
},
on: {
"click": function click($event) {
_vm.showActionSheet = _vm.editable;
}
}
}, [_vm.currentOption.available ? _c('p', {
staticClass: "cap-express-way__fee"
}, [_vm._v("\n " + _vm._s(_vm.currentOption.postage) + "\n ")]) : _vm._e(), _c('p', {
staticClass: "cap-express-way__type",
class: {
'cap-express-way__type--big': !_vm.currentOption.available
}
}, [_vm._v("\n " + _vm._s(_vm.currentOption.postage_title) + "\n ")])])], 1);
},
name: 'cap-express-way',
components: (_components = {}, _components[_option.default.name] = _option.default, _components[_cell.default.name] = _cell.default, _components[_cellGroup.default.name] = _cellGroup.default, _components[_actionSheet.default.name] = _actionSheet.default, _components),
props: {
value: [Number, String],
expressList: {
type: Array,
required: true
},
cellTitle: {
type: String,
default: '配送方式'
},
actionsheetTitle: {
type: String,
default: '配送方式'
},
editable: {
type: Boolean,
default: true
}
},
data: function data() {
return {
showActionSheet: false,
currentExpressWay: this.value || this.getDefaultExpressWay()
};
},
computed: {
computedList: function computedList() {
var _this = this;
return this.expressList.map(function (item) {
return (0, _extends2.default)({}, item, {
postage: _this.calcPostage(item.postage)
});
});
},
currentOption: function currentOption() {
for (var i = 0; i < this.computedList.length; i++) {
if (this.computedList[i].express_type === this.currentExpressWay) {
return this.computedList[i];
}
}
return {};
}
},
watch: {
value: function value(val) {
this.currentExpressWay = val;
},
expressList: function expressList() {
this.getDefaultExpressWay();
}
},
methods: {
getDefaultExpressWay: function getDefaultExpressWay() {
var expressList = this.expressList || [];
for (var i = 0; i < expressList.length; i++) {
if (expressList[i].available !== false) {
return expressList[i].express_type;
}
}
return 0;
},
// 选中配送方式
onSelectExpressWay: function onSelectExpressWay(item, index) {
this.showActionSheet = false;
if (this.currentExpressWay !== item.express_type) {
this.currentExpressWay = item.express_type;
this.$emit('input', this.currentExpressWay);
this.$emit('change', item, index);
}
},
// 格式化运费
calcPostage: function calcPostage(postage) {
return postage === 0 ? '免运费' : '¥' + (postage / 100).toFixed(2);
}
}
};
exports.default = _default;