| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992 |
- <?php
- use common\helpers\ComponentHelper;
- ComponentHelper::loadComponentView('component/com-add-cat', __DIR__);
- ComponentHelper::loadComponentView('component/com-attr-group', __DIR__);
- ComponentHelper::loadComponentView('component/com-attr', __DIR__);
- ComponentHelper::loadComponentView('com-rich-text');
- ComponentHelper::loadComponentView('com-district');
- ComponentHelper::loadComponentView('com-coupon', Yii::$app->basePath . '/../addons/Coupon/backend/views/goods');
- $addons_settings = empty($addons_settings) ? [] : $addons_settings;
- foreach ($addons_settings as $key => $item) {
- ComponentHelper::loadComponentView($item['components'], Yii::$app->basePath . '/../addons/' . ucfirst($key) . '/backend/views/goods');
- }
- $addons_settings = \yii\helpers\Json::encode($addons_settings);
- if (!empty($components)) {
- foreach ($components as $addons => $component) {
- ComponentHelper::loadComponentView($component['component'], $component['path']);
- }
- $components = \yii\helpers\Json::encode($components);
- }
- ?>
- <script src="/resources/js/Sortable.min.js"></script>
- <script src="/resources/unpkg/vuedraggable@2.18.1/dist/vuedraggable.umd.min.js"></script>
- <style>
- <?= ComponentHelper::loadComponentView('edit', __DIR__ . '/css', [], true, 'css'); ?>
- </style>
- <div id="app" v-cloak>
- <el-card shadow="never" style="border:0" class="box-card" body-style="background-color: #f3f3f3;padding: 20px 0 0;" class="box-card" v-loading="cardLoading">
- <!-- <div slot="header">
- <div flex="cross:center box:first">
- <div><span @click="$navigate({r:'mall/goods/index'})" class="text">商品列表</span>/编辑商品</div>
- </div>
- </div> -->
- <div class="goods-box">
- <el-form :model="ruleForm" :rules="rules" ref="ruleForm" size="mini" label-width="150px" class="demo-ruleForm">
- <!-- tab切换 -->
- <div class="tabs-box">
- <div class="tabs-list" flex="cross:center">
- <span v-for="(item, index) in tabs" :key="index" class="tabs-item" :class="item.value == activeName ? 'tabActive' : ''" @click="toggle(item, index, 'tabs')">{{item.name}}</span>
- </div>
- </div>
- <!-- 基础设置 -->
- <div v-show="activeName == 'basic'">
- <?= ComponentHelper::loadComponentView('goods-basic', __DIR__) ?>
- </div>
- <div v-show="activeName == 'mode'">
- <div class="goods-box">
- <!-- <el-form :model="settingForm" ref="settingForm" size="mini" label-width="150px" class="demo-ruleForm"> -->
- <div class="basic" v-for="index in ">
- <!-- 分润设置 -->
- <component v-for="(addons,index) in addonsSettings" v-bind:is="addons.components" :goods="goods" :level_arr="level" :commission_type_map="commission_type_map" :coupon_type_map="coupon_type_map" :setting="setting[index]" @change="getData" style="margin-bottom:20px" :extend_data="extend_data[index] ?? {}"></component>
- </div>
- <!-- </el-form> -->
- </div>
- </div>
- <!-- 会员权益 -->
- <div v-show="activeName == 'member_benefits'">
- <?= ComponentHelper::loadComponentView('goods-member', __DIR__) ?>
- </div>
- <!-- 营销配置 -->
- <div v-show="activeName == 'marketing'">
- <?= ComponentHelper::loadComponentView('goods-marketing', __DIR__) ?>
- </div>
- </el-form>
- </div>
- </el-card>
- <div v-if="isAudit" class="bottom-btns" flex="main:center cross:center">
- <el-button size="mini" type="primary" @click="goodAudit('adopt')" :loading="btnLoading">通过</el-button>
- <el-button size="mini" type="primary" @click="goodAuditFailed('failed')" :loading="btnLoading">不通过</el-button>
- </div>
- <div v-else class="bottom-btns" flex="main:center cross:center">
- <el-button size="mini" type="primary" @click="submit()" :loading="btnLoading">保存</el-button>
- </div>
- </div>
- <script>
- const app = new Vue({
- el: '#app',
- data() {
- return {
- tabs: [{
- name: '基础设置',
- value: 'basic'
- },
- {
- name: '模式设置',
- value: 'mode'
- },
- {
- name: '营销配置',
- value: 'marketing'
- },
- {
- name: '会员权益',
- value: 'member_benefits'
- },
- ],
- activeName: 'basic',
- typeArr: [],
- goods_type: 'physical',
- is_base_show: false,
- is_mch: false,
- is_default_services: 1,
- typeIndex: 0,
- btnLoading: false,
- cardLoading: false,
- cats: [],
- freight_id: 0,
- goodsId: null,
- // freight: {
- // dialog: false,
- // list: [],
- // checked: {},
- // loading: false
- // },
- attrGroups: [], //规格组
- attrGroupName: '',
- attrName: [],
- // 批量设置
- batch: {},
- label_list: [], // 商品标签列表
- service_list: [], // 商品服务列表
- freight_rules: [ // 运费模板
- // {
- // id: '1',
- // name: '全国包邮'
- // },
- // {
- // id: '2',
- // name: '北京包邮'
- // }
- ],
- is_show_freight: false,
- defaultMemberPrice: [],
- member_level_list: [
- // {level: 1, name: '普通会员', value: {"sign_id_2:4":40, "sign_id_3:4": 41, "sign_id_2:5": 41, "sign_id_3:5": 41}},
- // {level: 2, name: '等级2', value: {"sign_id_2:4":30, "sign_id_3:4": 31, "sign_id_2:5": 32, "sign_id_3:5": 33}},
- // {level: 3, name: '等级3', value: {"sign_id_2:4":20, "sign_id_3:4": 21, "sign_id_2:5": 22, "sign_id_3:5": 23}},
- // {level: 4, name: '等级4', value: {"sign_id_2:6":10, "sign_id_3:4": 11, "sign_id_2:5": 12, "sign_id_3:5": 13}}
- ],
- dialogVisible: false, // 配送范围弹出框
- earaRule: [],
- multiple_selection: [], //优惠券
- is_show_counpon: 0, //优惠券是否展示
- show_addons: <?= $components ?? '{}'; ?>, //插件营销是否展示
- marketing_score_calculation_list: [ // 积分营销赠送计算方式选项
- {
- value: 0,
- label: '订单实付金额'
- },
- {
- value: 1,
- label: '商品利润'
- },
- {
- value: 2,
- label: '商品售价'
- }
- ],
- the_addons_name: 'Mch',
- ruleForm: {
- /*********************************** 基础设置 ****************************************/
- goods_type: 1,
- goods_name: '',
- subtitle: '',
- cover_pic: '',
- bannar_pic: [],
- video_url: '',
- cats: [],
- mchCats: [], //多商户系统分类
- services: [],
- freight: null,
- labels: '', // 商品标签
- is_attr: 0, // 是否有规格
- attr: [],
- price: 0,
- original_price: 0,
- cost_price: 0,
- stock: '',
- unit: '', // 单位
- stock_warning: 0, // 库存预警 - 自定义字段,后面改
- goods_weight: 0, // 商品重量 - 自定义字段,后面改
- goods_no: '', // 商品货号
- is_show_stock: 1, // 是否显示库存 - 自定义字段,后面改
- is_show_sales: 1, // 是否显示销量 - 自定义字段,后面改
- virtual_sales: 0,
- coupon_is_enable: 0, //优惠卷的开关
- // logistics_way: [{
- // name: '快递发货',
- // checked: true
- // }], // 快递发货 - 自定义字段,后面改
- freight_type: [1], //物流方式 1快递物流
- freight_rules_type: 1, // 运费规则类型 1运费模板 2统一运费
- freight_id: '', // 运费模板ID
- shipping_fee: 0, //统一运费
- free_shipping_num: 0, //满N件包邮
- free_shipping_money: 0, //满N元包邮
- is_cross_border: 0, // 是否跨境商品 - 自定义字段,后面改
- is_id_card: 0, // 是否身份证上传 - 自定义字段,后面改
- is_on_sale: 1, // 是否上架
- extra: {
- full_reduce_price_limit: 0, // 单品满额减免价格阈值
- full_reduce_money: 0, // 单品满额减免金额
- score_give_setting: {
- code: 'score',
- name: '积分',
- give_num: 0, // 货币赠送
- give_type: 1, // 货币赠送 1.固定值 2售价百分比
- },
- is_member_price: 0,
- member_price_setting: {},
- member_buy_limit_setting: {
- member_level: [],
- every_num: 0,
- every_day_num: 0,
- every_week_num: 0,
- every_month_num: 0,
- nums: 0,
- total_num: 0,
- },
- currency_deduct_setting: [], // 货币这块有bug,暂时不需要展示,所以不需要提交数据
- },
- coupon_selection: [],
- goods_setting: {
- /*********************************** 会员权益 **********************************************/
- member_setting: { // 会员权益模块提交的格式
- member_price_setting: '',
- member_price: {},
- member_buy_limit_setting: {
- member_level: [],
- every_num: 0,
- every_day_num: 0,
- every_week_num: 0,
- every_month_num: 0,
- nums: 0,
- total_num: 0,
- }
- },
- /*********************************** 营销设置 **********************************************/
- marketing_setting: { // 营销配置模块提交的格式
- full_reduce_price_limit: 0, // 单品满额减免价格阈值
- full_reduce_money: 0, // 单品满额减免金额
- score_give_setting: {
- code: 'score',
- name: '积分',
- give_num: 0, // 货币赠送
- give_type: 1, // 货币赠送 1.固定值 2售价百分比
- },
- score_deduct_setting: {
- code: 'score',
- name: '积分',
- deduct_num: 0, // 货币抵扣
- deduct_type: 1, // 1.单件抵扣 2.多件累计抵扣
- },
- currency_deduct_setting: [], // 货币这块有bug,暂时不需要展示,所以不需要提交数据
- }
- },
- /******************************* 配送范围 ************************************/
- is_area_limit: 0,
- // area_limit: [{ list: [] }]
- area_limit: [],
- mch_id: 0,
- addons: {},
-
- },
- rules: {
- cats: [{
- required: true,
- type: 'array',
- validator: (rule, value, callback) => {
- if (this.ruleForm.cats instanceof Array && this.ruleForm.cats.length > 0) {
- callback();
- }
- callback('请选择分类');
- }
- }],
- mchCats: [{
- required: true,
- type: 'array',
- validator: (rule, value, callback) => {
- if (this.ruleForm.mchCats instanceof Array && this.ruleForm.mchCats.length > 0) {
- callback();
- }
- callback('请选择系统分类');
- }
- }],
- goods_name: [{
- required: true,
- message: '请输入商品名称',
- trigger: 'blur'
- }],
- cover_pic: [{
- required: true,
- message: '请添加图片',
- trigger: 'change'
- }],
- price: [{
- required: true,
- message: '请输入价格',
- trigger: 'blur'
- }],
- extra: {
- full_reduce_price_limit: [{
- validator: (rule, value, callback) => {
- if (value > 1000000) {
- callback('不能大于1000000');
- }
- callback();
- }
- }],
- full_reduce_money: [{
- validator: (rule, value, callback) => {
- if (value > 1000000) {
- callback('不能大于1000000');
- }
- callback();
- }
- }]
- },
- stock: [{
- required: true,
- message: '请输入商品库存',
- trigger: 'blur'
- }],
- // area_limit: [{
- // required: true,
- // type: 'array',
- // validator: (rule, value, callback) => {
- // if (value instanceof Array && value[0]['list'].length === 0) {
- // callback('允许购买区域不能为空');
- // }
- // callback();
- // }
- // }],
- },
- revealArea: [],
- isAudit: false,
- addonsSettings: <?= $addons_settings ?? '{}'; ?>, // 各个插件模式配置
- setting: {},
- commission_type_map: {},
- coupon_type_map: {},
- goods: {},
- level: {},
- settingForm: {},
- storeId: 0,
- extend_data: {
- Boss: {
- is_show_prize_pool: false,
- is_show_extra_ratio: false,
- },
- Agent: {
- is_show_alone_computing_method: true,
- },
- Distribution: {
- is_show_alone_computing_method: true,
- },
- },
- form: {
- name: '',
- type: -1,
- compute_type: 1,
- select_com: 0,
- rule: []
- },
- all_freight_rules: [],
- };
- },
- created() {
- this.goodsId = parseInt(getQuery('id'));
- this.isAudit = getQuery('is_audit');
- let isMode = getQuery('is_mode');
- if (isMode) {
- this.activeName = 'mode';
- } else {
- this.activeName = 'basic';
- }
- },
- mounted: function() {
- this.getGoodsDetail();
- this.getModelDetail();
- },
- watch: {
- 'ruleForm.detail'(newVal, oldVal) {
- this.cForm.detail = newVal
- },
- },
- computed: {
- cForm() {
- let form = {};
- let ruleForm = JSON.parse(JSON.stringify(this.ruleForm));
- if (this.form) {
- form = Object.assign(ruleForm, JSON.parse(JSON.stringify(this.form)));
- } else {
- form = ruleForm;
- }
- if (getQuery('id')) {
- form.id = getQuery('id')
- }
- return form;
- },
- cRule() {
- return this.rule ? Object.assign({}, this.rules, this.rule) : this.rules;
- },
- },
- methods: {
- changeFreightType() {
- this.is_show_freight = inArray(1, this.ruleForm.freight_type);
- },
- getGoodsDetail() {
- let self = this;
- self.cardLoading = true;
- request({
- params: {
- r: 'mch/store-goods/edit',
- id: getQuery('id')
- },
- method: 'get',
- }).then(e => {
- self.cardLoading = false;
- if (e.data.code == 0) {
- if (!isEmpty(e.data.data.detail)) {
- self.attrGroups = e.data.data.detail.attr_groups;
- self.ruleForm = Object.assign(self.ruleForm, e.data.data.detail);
- console.info(self.ruleForm);
- self.selectCat(e.data.data.detail.cats)
- self.cats = e.data.data.detail.cats;
- if (e.data.data.detail.freight_type == 1) {
- this.is_show_freight = true;
- }
- if (self.ruleForm.area_limit) {
- self.deduplicationArea();
- }
- this.all_freight_rules = e.data.data.all_freight_rules;
- if (self.ruleForm.freight_rules_type == 1 && self.ruleForm.freight_id > 0) {
- this.form = Object.assign(this.form, this.all_freight_rules[self.ruleForm.freight_id]);
- }
- if (e.data.data.addons_setting) {
- let settings = e.data.data.addons_setting;
- let arr = [];
- for (key in settings) {
- let com_str = '<' + settings[key].components + ' :goods="goods" :level_arr="level" :commission_type_map="commission_type_map" :coupon_type_map="coupon_type_map" :setting="setting.' + key + '" @change="getData" style="margin-bottom:20px"></com-area>';
- arr.push(com_str);
- }
- console.log(arr, '==========8888888888888');
- self.AddonsSettings = arr;
- }
- }
- self.label_list = e.data.data.labels;
- self.service_list = e.data.data.services;
- self.member_level_list = e.data.data.levels;
- // 以下数据用于默认规格情况下的 会员价设置
- if (!e.data.data.detail.is_attr && e.data.data.detail.is_attr != 0) {
- self.member_level_list.forEach((item, index) => {
- let obj = {};
- obj['id'] = index;
- obj['name'] = item.name;
- obj['level'] = 'level' + parseInt(item.level);
- var key = item.level + '';
- self.$set(this.ruleForm.extra.member_price_setting, key, 0);
- });
- }
- // 以下数据用于默认规格情况下的 会员价设置
- var memberSetting = e.data.data.detail.extra;
- self.member_level_list.forEach(function(item, index) {
- let obj = {};
- let key = 'level' + parseInt(item.level);
- obj['id'] = index;
- obj['name'] = item.name;
- obj['level'] = key;
- if (memberSetting && memberSetting.member_price_setting && memberSetting.member_price_setting[key]) {
- self.member_level_list[index]['value'] = memberSetting.member_price_setting[key]; // 赋值到会员列表数据中
- } else {
- self.member_level_list[index]['value'] = {};
- }
- self.defaultMemberPrice.push(obj);
- });
- self.typeArr = e.data.data.goods_type;
- self.freight_rules = e.data.data.freight_rules;
- // 默认运费模板
- if (self.ruleForm.freight_rules_type == 1 && isEmpty(self.ruleForm.freight_id) && self.freight_rules.length > 0) {
- self.ruleForm.freight_id = self.freight_rules[0].id;
- }
- } else {
- self.$message.error(e.data.msg);
- }
- }).catch(e => {
- console.log(e);
- });
- },
- /* 配送范围start */
- openDistrict() {
- this.dialogVisible = true;
- this.earaRule = this.ruleForm.area_limit;
- },
- selectDistrict(e) {
- let list = [];
- for (let i in e) {
- let obj = {
- id: e[i].id,
- name: e[i].name
- };
- list.push(obj);
- }
- this.earaRule = list;
- },
- districtConfirm() {
- this.ruleForm.area_limit = JSON.parse(JSON.stringify(this.earaRule));
- this.deduplicationArea();
- this.dialogVisible = false;
- // this.$refs['ruleForm'].validate((valid) => {
- // return false;
- // })
- },
- deduplicationArea() {
- let that = this;
- let reg = /市$|特别行政区$/;
- let filt = [...new Set(this.ruleForm.area_limit.filter(v => reg.test(v.name)).map(v => v.name))];
- this.ruleForm.area_limit.forEach(v => {
- let length = that.revealArea.filter(f => f.name == v.name).length;
- if (filt.findIndex(f => f == v.name) != -1 && length > 0) {
- return;
- }
- that.revealArea.push(v);
- })
- },
- space() { // 删除地区
- this.ruleForm.area_limit = [];
- },
- /* 配送范围end */
- showMore(type) { // 展开更多
- switch (type) {
- case 'base':
- this.is_base_show = !this.is_base_show
- }
- },
- toggle(it, i, type) { // tab切换
- console.log(it, i, type, 'toggle ==========');
- switch (type) {
- case 'tabs':
- this.activeName = it.value
- break;
- case 'select':
- if (this.ruleForm.id > 0) return;
- this.ruleForm.goods_type = it.type
- break;
- default:
- break;
- }
- },
- coverPic(e) { // 选择图片
- this.ruleForm.cover_pic = e[0].url
- },
- bannerPic(e) { // 选择轮播图
- if (e.length) {
- e.forEach((item, index) => {
- if (this.ruleForm.bannar_pic.length >= 9) return;
- this.ruleForm.bannar_pic.push({
- id: item.id,
- pic_url: item.url
- });
- })
- }
- },
- delPic(type, index) { // 删除图片
- switch (type) {
- case 'cover_pic':
- this.ruleForm.cover_pic = ''
- break;
- case 'bannar_pic':
- this.ruleForm.bannar_pic.splice(index, 1)
- break;
- default:
- break;
- }
- },
- // 商品视频
- videoUrl(e) {
- if (e.length) {
- this.ruleForm.video_url = e[0].url;
- }
- },
- /*---商品分类----*/
- selectCat(cats) {
- this.cats = cats;
- let arr = [];
- cats.map(v => {
- arr.push(v.id);
- })
- this.ruleForm.cats = arr;
- this.$refs.ruleForm.validateField('cats');
- },
- selectMchCat(cats) {
- this.mchCats = cats;
- let arr = [];
- cats.map(v => {
- arr.push(v.id);
- })
- this.ruleForm.mchCats = arr;
- this.$refs.ruleForm.validateField('mchCats');
- },
- /*---商品分类end----*/
- /*----规格start----*/
- // 规格组合
- makeAttrGroup(e) {
- let self = this;
- let array = [];
- self.attrGroups.forEach(function(attrGroupItem, attrGroupIndex) {
- attrGroupItem.attr_list.forEach(function(attrListItem, attrListIndex) {
- let object = {
- attr_group_id: attrGroupItem.attr_group_id,
- attr_group_name: attrGroupItem.attr_group_name,
- attr_id: attrListItem.attr_id,
- attr_name: attrListItem.attr_name,
- };
- if (!array[attrGroupIndex]) {
- array[attrGroupIndex] = [];
- }
- array[attrGroupIndex].push(object)
- });
- });
- // 2.属性排列组合
- const res = array.reduce((osResult, options) => {
- return options.reduce((oResult, option) => {
- if (!osResult.length) {
- return oResult.concat(option)
- } else {
- return oResult.concat(osResult.map(o => [].concat(o, option)))
- }
- }, [])
- }, []);
- // 3.组合结果赋值
- for (let i in res) {
- const options = Array.isArray(res[i]) ? res[i] : [res[i]];
- const row = {
- attr_list: options,
- stock: typeof(self.ruleForm.attr[i]) == 'undefined' ? 0 : self.ruleForm.attr[i].stock,
- price: typeof(self.ruleForm.attr[i]) == 'undefined' ? 0 : self.ruleForm.attr[i].price,
- original_price: typeof(self.ruleForm.attr[i]) == 'undefined' ? 0 : self.ruleForm.attr[i].original_price,
- cost_price: typeof(self.ruleForm.attr[i]) == 'undefined' ? 0 : self.ruleForm.attr[i].cost_price,
- goods_no: typeof(self.ruleForm.attr[i]) == 'undefined' ? '' : self.ruleForm.attr[i].goods_no,
- weight: typeof(self.ruleForm.attr[i]) == 'undefined' ? 0 : self.ruleForm.attr[i].weight,
- pic_url: typeof(self.ruleForm.attr[i]) == 'undefined' ? '' : self.ruleForm.attr[i].pic_url,
- distributionLevelList: [],
- levelPrice: typeof(self.ruleForm.attr[i]) == 'undefined' ? {} : self.ruleForm.attr[i].levelPrice,
- sign_id: typeof(self.ruleForm.attr[i]) == 'undefined' ? '' : self.ruleForm.attr[i].sign_id,
- };
- let arr = [];
- row.attr_list.forEach(val => {
- arr.push(val.attr_id);
- })
- // console.info(arr.join(":"),"::::");
- row.sign_id = arr.join(":");
- // 动态绑定多规格会员价
- let obj = {};
- self.member_level_list.forEach(function(item, index) {
- let key = 'level' + item.level;
- obj[key] = 0;
- });
- row['member_price'] = obj;
- // 3-1.已设置数据的优先使用原数据
- if (self.ruleForm.attr.length) {
- for (let j in self.ruleForm.attr) {
- const oldOptions = [];
- for (let k in self.ruleForm.attr[j].attr_list) {
- oldOptions.push(self.ruleForm.attr[j].attr_list[k].attr_name)
- }
- const newOptions = [];
- for (let k in options) {
- newOptions.push(options[k].attr_name)
- }
- if (oldOptions.toString() === newOptions.toString()) {
- row['price'] = self.ruleForm.attr[j].price;
- row['stock'] = self.ruleForm.attr[j].stock;
- row['goods_no'] = self.ruleForm.attr[j].goods_no;
- row['weight'] = self.ruleForm.attr[j].weight;
- row['pic_url'] = self.ruleForm.attr[j].pic_url;
- break
- }
- }
- }
- res[i] = row;
- }
- self.ruleForm.attr = res;
- console.log(self.ruleForm.attr, '-------------------------------attr');
- },
- // 批量设置
- batchAttr(key) {
- let self = this;
- if (self.batch[key] && self.batch[key] >= 0 || key === 'goods_no') {
- self.ruleForm.attr.forEach(function(item, index) {
- // 批量设置会员价
- // 判断字符串是否出现过,并返回位置
- if (key.indexOf('level') !== -1) {
- item['member_price'][key] = self.batch[key];
- } else {
- item[key] = self.batch[key];
- }
- });
- }
- },
- destroyCat(value, index) {
- let self = this;
- self.ruleForm.cats.splice(self.ruleForm.cats.indexOf(value), 1)
- self.cats.splice(index, 1)
- },
- /*----规格end----*/
- submit() {
- // console.log('submit ========: ', this.ruleForm, this.settingForm); return null;
- if ('basic' == this.activeName || 'member_benefits' == this.activeName || 'marketing' == this.activeName) {
- this.$refs['ruleForm'].validate((valid) => {
- if (valid) {
- let self = this;
- if (Number(self.ruleForm.extra.member_buy_limit_setting.every_num) > 0 && Number(self.ruleForm.extra.member_buy_limit_setting.every_num) < Number(self.ruleForm.extra.member_buy_limit_setting.nums)) {
- this.$message.error('每次限购数量不能小于起购数量');
- return
- }
- if (Number(self.ruleForm.extra.member_buy_limit_setting.every_day_num) > 0 && Number(self.ruleForm.extra.member_buy_limit_setting.every_day_num) < Number(self.ruleForm.extra.member_buy_limit_setting.nums)) {
- this.$message.error('每天限购数量不能小于起购数量');
- return
- }
- if (self.ruleForm.is_attr == 1) {
- if (this.attrGroups.length == 0) {
- this.$message.error('请完善规格组');
- return
- }
- self.ruleForm.extra.member_price_setting = this.getMemberPrice(this.ruleForm.attr);
- }
- //把纯数字转字符
- this.ruleForm.goods_name = this.ruleForm.goods_name + '';
- this.ruleForm.subtitle = this.ruleForm.subtitle + '';
- self.btnLoading = true;
- params = Object.assign(self.ruleForm, this.cForm);
- request({
- params: {
- r: 'mch/store-goods/edit'
- },
- method: 'post',
- data: {
- form: JSON.stringify(params),
- }
- }).then(e => {
- self.btnLoading = false;
- if (e.data.code == 0) {
- self.$message.success(e.data.msg);
- this.$navigate({
- r: 'mch/store-goods/index'
- })
- } else {
- self.$message.error(e.data.msg);
- }
- }).catch(e => {
- self.$message.error(e.data.msg);
- self.btnLoading = false;
- });
- }
- });
- } else if ('mode' == this.activeName) {
- this.commissionSettingSubmit();
- }
- },
- //添加优惠券
- add_coupon(e) {
- this.ruleForm.coupon_selection = e;
- },
- //跳转新增优惠券界面
- // handle_coupon() {
- // this.$navigate({
- // r: 'coupon/default/edit'
- // })
- // },
- checkoutChange(it) {
- console.log(it)
- },
- getFreight() { // 获取运费规则选项
- let self = this;
- request({
- params: {
- r: 'mall/postage-rules/all-list'
- },
- method: 'get',
- data: {}
- }).then(e => {
- if (e.data.code == 0) {
- self.freight.list = e.data.data.list;
- // 添加商品时使用默认运费
- self.freight.list.unshift({
- id: 0,
- name: '默认运费',
- status: 1
- })
- console.log(self.freight.list)
- } else {
- self.$message.error(e.data.msg);
- }
- }).catch(e => {
- console.log(e);
- });
- },
- freightChange(e) {
- console.log(e)
- },
- // 获取规格会员价
- getMemberPrice(attr) {
- let that = this;
- let member_price_setting = {};
- let levels = objectKeys(attr[0].member_price_setting);
- levels.forEach(level => {
- that.$set(member_price_setting, level, {});
- });
- attr.forEach((v) => {
- let sign_id = v.sign_id;
- for (const key in v.member_price_setting) {
- member_price_setting[key][sign_id] = v.member_price_setting[key];
- }
- })
- member_price_setting = member_price_setting;
- return member_price_setting;
- },
- // 商品审核不通过
- goodAuditFailed(type) {
- this.$prompt('不通过原因', '审核', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- }).then(({
- value
- }) => {
- if (!value) {
- this.$message.error('驳回原因不能为空');
- return false;
- }
- let self = this;
- // self.btnLoading = true;
- request({
- params: {
- r: 'mch/store-goods/audit',
- },
- method: 'post',
- data: {
- goods_id: self.goodsId,
- type: type,
- check_remark: value,
- },
- }).then(e => {
- if (e.data.code == 0) {
- self.$message.success('操作成功');
- setTimeout(function() {
- navigateTo({
- r: 'mch/store-goods/index'
- });
- }, 300);
- } else {
- self.$message.error(e.data.msg);
- }
- }).catch(e => {
- self.btnLoading = false;
- self.$message.error('网络错误');
- console.log(e);
- });
- }).catch(() => {
- this.btnLoading = false;
- console.log('取消驳回审核');
- });
- },
- // 商品审核
- goodAudit(adopt) {
- let self = this;
- request({
- params: {
- r: 'mch/store-goods/audit',
- },
- method: 'post',
- data: {
- goods_id: self.goodsId,
- type: adopt,
- check_remark: '',
- },
- }).then(e => {
- if (e.data.code == 0) {
- self.$message.success('操作成功');
- setTimeout(function() {
- navigateTo({
- r: 'mch/store-goods/index'
- });
- }, 300);
- } else {
- self.$message.error(e.data.msg);
- }
- }).catch(e => {
- self.btnLoading = false;
- self.$message.error('网络错误');
- console.log(e);
- });
- },
- getModelDetail() {
- let self = this;
- self.cardLoading = true;
- request({
- params: {
- r: 'mch/store-goods/goods-model',
- id: getQuery('id')
- },
- method: 'get',
- }).then(e => {
- // console.log(e, '===============');
- self.cardLoading = false;
- if (e.data.code == 0) {
- if (e.data.data.detail) {
- self.storeId = e.data.data.detail.store_id;
- }
- self.level = e.data.data.level;
- if (!isEmpty(e.data.data.setting)) {
- self.setting = e.data.data.setting;
- for (let key in self.setting) {
- // 将空的
- if (isEmpty(self.setting[key])) self.setting[key] = {};
- }
- }
- self.commission_type_map = e.data.data.commission_type_map;
- self.coupon_type_map = e.data.data.coupon_type_map;
- } else {
- self.$message.error(e.data.msg);
- }
- }).catch(e => {
- console.log(e);
- });
- },
- commissionSettingSubmit() {
- let self = this;
- self.btnLoading = true;
- self.settingForm.goods_id = getQuery('id');
- self.settingForm.store_id = self.storeId;
- params = Object.assign(self.settingForm, this.cForm);
- request({
- params: {
- r: 'mch/store-goods/goods-model'
- },
- method: 'post',
- data: {
- form: params
- }
- }).then(e => {
- self.btnLoading = false;
- if (e.data.code == 0) {
- self.$message.success(e.data.msg);
- } else {
- self.$message.error(e.data.msg);
- }
- }).catch(e => {
- self.$message.error(e.data.msg);
- self.btnLoading = false;
- });
- },
- getData(val, key) {
- this.settingForm[key] = val;
- },
- addons_data_change(e) {
- Object.assign(this.ruleForm.addons, e);
- console.log(this.ruleForm.addons, '=======addons====');
- // this.ruleForm.addons.coupon_selection = e;
- },
- changeFreightRules(value) {
- this.form = Object.assign(this.form, this.all_freight_rules[value]);
- }
- }
- });
- </script>
|