UNPKG

captain-ui

Version:

有赞vue wap业务组件库

163 lines (143 loc) 4.57 kB
"use strict"; 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;