fc3a52c4d777ece2acd9b444b41d141c.json 51 KB

1
  1. {"remainingRequest":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\front\\item\\zyAdmin\\src\\pages\\product\\productList\\index.vue?vue&type=style&index=0&id=b77c4908&scoped=true&lang=scss","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\product\\productList\\index.vue","mtime":1761614939050},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\css-loader\\index.js","mtime":1761614929364},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\loaders\\stylePostLoader.js","mtime":1761614937403},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\postcss-loader\\src\\index.js","mtime":1761614935133},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\sass-loader\\dist\\cjs.js","mtime":1761614936391},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1761614927801},{"path":"D:\\front\\item\\zyAdmin\\node_modules\\vue-loader\\lib\\index.js","mtime":1761614937402}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQo6OnYtZGVlcCAuZWwtdGFic19faXRlbSB7DQogIGhlaWdodDogNTRweCAhaW1wb3J0YW50Ow0KICBsaW5lLWhlaWdodDogNTRweCAhaW1wb3J0YW50Ow0KfQ0KOjp2LWRlZXAgLml2dS1tb2RhbC1tYXNrIHsNCiAgei1pbmRleDogOTk5ICFpbXBvcnRhbnQ7DQp9DQoNCjo6di1kZWVwIC5pdnUtbW9kYWwtd3JhcCB7DQogIHotaW5kZXg6IDk5OSAhaW1wb3J0YW50Ow0KfQ0KDQouQm94IHsNCiAgOjp2LWRlZXAgLml2dS1tb2RhbC1ib2R5IHsNCiAgICBoZWlnaHQ6IDcwMHB4Ow0KICAgIG92ZXJmbG93OiBhdXRvOw0KICB9DQp9DQoNCi5iYXRjaC1ib3ggew0KICA6OnYtZGVlcCAuaXZ1LW1vZGFsLWJvZHkgew0KICAgIG92ZXJmbG93OiBhdXRvOw0KICAgIG1pbi1oZWlnaHQ6IDM1MHB4Ow0KICB9DQp9DQoNCi50YWJCb3hfaW1nIHsNCiAgd2lkdGg6IDM2cHg7DQogIGhlaWdodDogMzZweDsNCiAgYm9yZGVyLXJhZGl1czogNHB4Ow0KICBjdXJzb3I6IHBvaW50ZXI7DQoNCiAgaW1nIHsNCiAgICB3aWR0aDogMTAwJTsNCiAgICBoZWlnaHQ6IDEwMCU7DQogIH0NCn0NCg0KLmJnIHsNCiAgcG9zaXRpb246IGZpeGVkOw0KICBsZWZ0OiAwOw0KICB0b3A6IDA7DQogIHdpZHRoOiAxMDAlOw0KICBoZWlnaHQ6IDEwMCU7DQogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC41KTsNCiAgei1pbmRleDogMTE7DQp9DQoNCjo6di1kZWVwIC5oYXBweS1zY3JvbGwtY29udGVudCB7DQogIHdpZHRoOiAxMDAlOw0KDQogIC5kZW1vLXNwaW4taWNvbi1sb2FkIHsNCiAgICBhbmltYXRpb246IGFuaS1kZW1vLXNwaW4gMXMgbGluZWFyIGluZmluaXRlOw0KICB9DQoNCiAgQGtleWZyYW1lcyBhbmktZGVtby1zcGluIHsNCiAgICBmcm9tIHsNCiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOw0KICAgIH0NCg0KICAgIDUwJSB7DQogICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOw0KICAgIH0NCg0KICAgIHRvIHsNCiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7DQogICAgfQ0KICB9DQoNCiAgLmRlbW8tc3Bpbi1jb2wgew0KICAgIGhlaWdodDogMTAwcHg7DQogICAgcG9zaXRpb246IHJlbGF0aXZlOw0KICAgIGJvcmRlcjogMXB4IHNvbGlkICNlZWU7DQogIH0NCn0NCg0KLmxhYmVsSW5wdXQgew0KICBib3JkZXI6IDFweCBzb2xpZCAjZGNkZWUyOw0KICBwYWRkaW5nOiAwIDE1cHggMCAxMHB4Ow0KICBib3JkZXItcmFkaXVzOiA1cHg7DQogIG1pbi1oZWlnaHQ6IDMwcHg7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgZm9udC1zaXplOiAxMnB4Ow0KDQogIC5zcGFuIHsNCiAgICBjb2xvcjogI2M1YzhjZTsNCiAgfQ0KDQogIC5pY29ueGlheWkgew0KICAgIG1hcmdpbi1sZWZ0OiA1cHg7DQogICAgZm9udC1zaXplOiAxMnB4Ow0KICB9DQp9DQouZWwtZHJvcGRvd24tbGluayB7DQogIGN1cnNvcjogcG9pbnRlcjsNCiAgY29sb3I6IHZhcigtLXByZXYtY29sb3ItcHJpbWFyeSk7DQogIGZvbnQtc2l6ZTogMTJweDsNCn0NCi5lbC1pY29uLWFycm93LWRvd24gew0KICBmb250LXNpemU6IDEycHg7DQp9DQouZWwtZHJvcGRvd24tbWVudV9faXRlbSB7DQogIGEgew0KICAgIGNvbG9yOiAjNjA2MjY2Ow0KICB9DQp9DQoubGFiZWxfd2lkdGggew0KICB3aWR0aDogNDAwcHg7DQp9DQouc2VhcmNoLWZvcm0gew0KICBkaXNwbGF5OiBmbGV4Ow0KICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47DQogIC5zZWFyY2gtZm9ybS1ib3ggew0KICAgIGRpc3BsYXk6IGZsZXg7DQogICAgZmxleC13cmFwOiB3cmFwOw0KICAgIGZsZXg6IDE7DQogIH0NCiAgLnNlYXJjaC1mb3JtLXN1YiB7DQogICAgZGlzcGxheTogZmxleDsNCiAgICBhbGlnbi1pdGVtczogYmFzZWxpbmU7DQogIH0NCn0NCg=="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";AAusCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/pages/product/productList","sourcesContent":["<template>\r\n <div class=\"article-manager\">\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt\" :body-style=\"{ padding: 0 }\">\r\n <div class=\"padding-add\">\r\n <el-form ref=\"artFrom\" :model=\"artFrom\" label-width=\"80px\" label-position=\"right\" inline @submit.native.prevent>\r\n <div class=\"acea-row search-form\">\r\n <div class=\"search-form-box\">\r\n <el-form-item label=\"商品搜索:\" label-for=\"store_name\">\r\n <el-input\r\n clearable\r\n placeholder=\"请输入商品名称/关键字/ID\"\r\n v-model=\"artFrom.store_name\"\r\n class=\"form_content_width\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"商品类型:\">\r\n <el-select v-model=\"artFrom.virtual_type\" clearable placeholder=\"全部\" class=\"form_content_width\">\r\n <el-option label=\"全部\" value=\"\" />\r\n <el-option label=\"普通商品\" value=\"0\" />\r\n <el-option label=\"卡密商品\" value=\"1\" />\r\n <el-option label=\"优惠券商品\" value=\"2\" />\r\n <el-option label=\"虚拟商品\" value=\"3\" />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"商品分类:\" label-for=\"pid\">\r\n <el-cascader\r\n v-model=\"artFrom.cate_id\"\r\n size=\"small\"\r\n :options=\"treeSelect\"\r\n :props=\"{ multiple: false, emitPath: false, checkStrictly: true }\"\r\n clearable\r\n class=\"form_content_width\"\r\n ></el-cascader>\r\n </el-form-item>\r\n <el-form-item label=\"配送方式:\">\r\n <el-select v-model=\"artFrom.logistics\" clearable placeholder=\"全部\" class=\"form_content_width\">\r\n <el-option label=\"全部\" value=\"\" />\r\n <el-option label=\"快递配送\" value=\"1\" />\r\n <el-option label=\"到店自提\" value=\"2\" />\r\n </el-select>\r\n </el-form-item>\r\n <template v-if=\"collapse\">\r\n <el-form-item label=\"商品标签:\" label-for=\"store_name\">\r\n <div class=\"labelInput acea-row row-between-wrapper form_content_width\" @click=\"openStoreLabel\">\r\n <div style=\"width: 90%\">\r\n <div v-if=\"storeLabelList.length\">\r\n <el-tag\r\n class=\"mr5\"\r\n closable\r\n v-for=\"(item, index) in storeLabelList\"\r\n :key=\"index\"\r\n @close=\"closeStoreLabel(item)\"\r\n >{{ item.label_name }}</el-tag\r\n >\r\n </div>\r\n <span class=\"span\" v-else>选择商品标签</span>\r\n </div>\r\n <div class=\"iconfont iconxiayi\"></div>\r\n </div>\r\n </el-form-item>\r\n <el-form-item label=\"商品规格:\">\r\n <el-select v-model=\"artFrom.spec_type\" clearable placeholder=\"全部\" class=\"form_content_width\">\r\n <el-option label=\"全部\" value=\"\" />\r\n <el-option label=\"单规格\" value=\"0\" />\r\n <el-option label=\"多规格\" value=\"1\" />\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"会员专属:\">\r\n <el-select v-model=\"artFrom.vip_product\" clearable placeholder=\"全部\" class=\"form_content_width\">\r\n <el-option label=\"全部\" value=\"\" />\r\n <el-option label=\"否\" value=\"0\" />\r\n <el-option label=\"是\" value=\"1\" />\r\n </el-select>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"添加时间:\">\r\n <el-date-picker\r\n class=\"form_range_content_width\"\r\n clearable\r\n v-model=\"timeVal\"\r\n type=\"daterange\"\r\n :editable=\"false\"\r\n @change=\"onchangeTime\"\r\n format=\"yyyy/MM/dd\"\r\n value-format=\"yyyy/MM/dd\"\r\n start-placeholder=\"开始日期\"\r\n end-placeholder=\"结束日期\"\r\n :picker-options=\"pickerOptions\"\r\n style=\"width: 250px\"\r\n ></el-date-picker>\r\n </el-form-item>\r\n <el-form-item label=\"库存:\" label-for=\"store_name\">\r\n <el-input\r\n clearable\r\n placeholder=\"最小值\"\r\n v-model=\"artFrom.stock_s[0]\"\r\n class=\"form_range_content_width\"\r\n />\r\n ~\r\n <el-input\r\n clearable\r\n placeholder=\"最大值\"\r\n v-model=\"artFrom.stock_s[1]\"\r\n class=\"form_range_content_width\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"价格:\" label-for=\"store_name\">\r\n <el-input\r\n clearable\r\n placeholder=\"最小值\"\r\n v-model=\"artFrom.price_s[0]\"\r\n class=\"form_range_content_width\"\r\n />\r\n ~\r\n <el-input\r\n clearable\r\n placeholder=\"最大值\"\r\n v-model=\"artFrom.price_s[1]\"\r\n class=\"form_range_content_width\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"销量:\" label-for=\"store_name\">\r\n <el-input\r\n clearable\r\n placeholder=\"最小值\"\r\n v-model=\"artFrom.sales_s[0]\"\r\n class=\"form_range_content_width\"\r\n />\r\n ~\r\n <el-input\r\n clearable\r\n placeholder=\"最大值\"\r\n v-model=\"artFrom.sales_s[1]\"\r\n class=\"form_range_content_width\"\r\n />\r\n </el-form-item>\r\n </template>\r\n </div>\r\n <div class=\"search-form-sub\">\r\n <el-button type=\"primary\" v-db-click @click=\"userSearchs\">查询</el-button>\r\n <el-button class=\"ResetSearch\" v-db-click @click=\"reset\">重置</el-button>\r\n <a class=\"ivu-ml-8 font12 ml10\" v-db-click @click=\"collapse = !collapse\">\r\n <template v-if=\"!collapse\"> 展开 <i class=\"el-icon-arrow-down\" /> </template>\r\n <template v-else> 收起 <i class=\"el-icon-arrow-up\" /> </template>\r\n </a>\r\n </div>\r\n </div>\r\n </el-form>\r\n </div>\r\n </el-card>\r\n <el-card :bordered=\"false\" shadow=\"never\" class=\"ivu-mt mt16\" :body-style=\"{ padding: '0 20px 20px' }\">\r\n <el-tabs v-model=\"artFrom.type\" @tab-click=\"onClickTab\">\r\n <el-tab-pane\r\n :label=\"item.name + '(' + item.count + ')'\"\r\n :name=\"item.type.toString()\"\r\n v-for=\"(item, index) in headeNum\"\r\n :key=\"index\"\r\n />\r\n </el-tabs>\r\n <div class=\"Button\">\r\n <router-link v-auth=\"['product-product-save']\" :to=\"$routeProStr + '/product/add_product'\"\r\n ><el-button type=\"primary\" class=\"mr14\">添加商品</el-button></router-link\r\n >\r\n <el-button v-auth=\"['product-crawl-save']\" type=\"success\" class=\"mr14\" v-db-click @click=\"onCopy\"\r\n >商品采集</el-button\r\n >\r\n <el-dropdown class=\"bnt mr14\" @command=\"batchSelect\">\r\n <el-button>批量修改<i class=\"el-icon-arrow-down el-icon--right\"></i></el-button>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item :command=\"1\">商品分类</el-dropdown-item>\r\n <el-dropdown-item :command=\"2\">物流设置</el-dropdown-item>\r\n <el-dropdown-item :command=\"3\">购买送积分</el-dropdown-item>\r\n <el-dropdown-item :command=\"4\">购买送优惠券</el-dropdown-item>\r\n <el-dropdown-item :command=\"5\">关联用户标签</el-dropdown-item>\r\n <el-dropdown-item :command=\"6\">活动推荐</el-dropdown-item>\r\n <el-dropdown-item v-auth=\"['product-product-product_show']\" v-if=\"artFrom.type === '1'\" :command=\"7\"\r\n >批量下架</el-dropdown-item\r\n >\r\n <el-dropdown-item v-auth=\"['product-product-product_show']\" v-if=\"artFrom.type === '2'\" :command=\"8\"\r\n >批量上架</el-dropdown-item\r\n >\r\n <el-dropdown-item v-auth=\"['product-product-product_show']\" :command=\"9\">设置商品标签</el-dropdown-item>\r\n <el-dropdown-item v-auth=\"['product-product-product_show']\" v-if=\"artFrom.type !== '6'\" :command=\"11\"\r\n >移到回收站</el-dropdown-item\r\n >\r\n <el-dropdown-item v-auth=\"['product-product-product_show']\" v-if=\"artFrom.type == '6'\" :command=\"12\"\r\n >恢复商品</el-dropdown-item\r\n >\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <el-dropdown class=\"bnt mr14\" @command=\"goodsMove\">\r\n <el-button>商品迁移<i class=\"el-icon-arrow-down el-icon--right\"></i></el-button>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item :command=\"1\">商品导入</el-dropdown-item>\r\n <el-dropdown-item :command=\"2\">商品导出</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n <el-button v-auth=\"['export-storeProduct']\" class=\"export\" v-db-click @click=\"onExports(0)\">数据导出</el-button>\r\n </div>\r\n <el-table\r\n ref=\"table\"\r\n :data=\"tableList\"\r\n class=\"ivu-mt mt14\"\r\n v-loading=\"loading\"\r\n highlight-current-row\r\n :row-key=\"getRowKey\"\r\n @selection-change=\"handleSelectRow\"\r\n empty-text=\"暂无数据\"\r\n >\r\n <el-table-column type=\"expand\" width=\"50\" v-if=\"['1', '2'].includes(artFrom.type)\">\r\n <template slot-scope=\"scope\">\r\n <expandRow :row=\"scope.row\"></expandRow>\r\n </template>\r\n </el-table-column>\r\n <el-table-column type=\"selection\" width=\"60\" :reserve-selection=\"true\"> </el-table-column>\r\n <el-table-column label=\"商品ID\" width=\"80\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.id }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"商品图\" min-width=\"90\">\r\n <template slot-scope=\"scope\">\r\n <div class=\"tabBox_img\" v-viewer>\r\n <img v-lazy=\"scope.row.image\" />\r\n </div>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"商品名称\" min-width=\"250\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.store_name }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"参与活动\" width=\"90\">\r\n <template slot-scope=\"scope\">\r\n <el-tag\r\n class=\"mb5 cup\"\r\n v-if=\"scope.row.activityExist.bargain\"\r\n type=\"\"\r\n @click=\"activityDetail(scope.row, 0)\"\r\n effect=\"dark\"\r\n >\r\n 砍价\r\n </el-tag>\r\n <el-tag\r\n class=\"mb5 cup\"\r\n v-if=\"scope.row.activityExist.combination\"\r\n type=\"success\"\r\n @click=\"activityDetail(scope.row, 1)\"\r\n effect=\"dark\"\r\n >\r\n 拼团\r\n </el-tag>\r\n <el-tag\r\n class=\"mb5 cup\"\r\n v-if=\"scope.row.activityExist.seckill\"\r\n type=\"warning\"\r\n @click=\"activityDetail(scope.row, 2)\"\r\n effect=\"dark\"\r\n >\r\n 秒杀\r\n </el-tag>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"商品类型\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.product_type }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"商品售价\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.price }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"销量\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.sales }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"库存\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.stock }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"排序\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <span>{{ scope.row.sort }}</span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"状态\" min-width=\"100\">\r\n <template slot-scope=\"scope\">\r\n <el-switch\r\n class=\"defineSwitch\"\r\n :active-value=\"1\"\r\n :inactive-value=\"0\"\r\n v-model=\"scope.row.is_show\"\r\n :value=\"scope.row.is_show\"\r\n :disabled=\"scope.row.stop_status ? true : false\"\r\n @change=\"changeSwitch(scope.row)\"\r\n size=\"large\"\r\n active-text=\"上架\"\r\n inactive-text=\"下架\"\r\n >\r\n </el-switch>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" fixed=\"right\" minWidth=\"100\">\r\n <template slot-scope=\"scope\">\r\n <!-- <a v-db-click @click=\"look(scope.row)\">查看</a>\r\n <el-divider direction=\"vertical\"></el-divider> -->\r\n <a v-db-click @click=\"edit(scope.row)\">编辑</a>\r\n <el-divider direction=\"vertical\"></el-divider>\r\n <el-dropdown size=\"small\">\r\n <span class=\"el-dropdown-link\">更多<i class=\"el-icon-arrow-down el-icon--right\"></i> </span>\r\n <el-dropdown-menu slot=\"dropdown\">\r\n <el-dropdown-item>\r\n <router-link :to=\"{ path: $routeProStr + '/product/product_reply/' + scope.row.id }\"\r\n ><a>查看评论</a></router-link\r\n >\r\n </el-dropdown-item>\r\n <el-dropdown-item v-db-click @click.native=\"openModal(scope.row, 'vipPriceSet')\"\r\n >会员价管理</el-dropdown-item\r\n >\r\n <el-dropdown-item v-db-click @click.native=\"openModal(scope.row, 'brokerageSet')\"\r\n >佣金管理</el-dropdown-item\r\n >\r\n <el-dropdown-item\r\n v-if=\"artFrom.type === '6'\"\r\n v-db-click\r\n @click.native=\"del(scope.row, '恢复商品', scope.$index)\"\r\n >恢复商品</el-dropdown-item\r\n >\r\n <el-dropdown-item\r\n v-if=\"artFrom.type === '6'\"\r\n v-db-click\r\n @click.native=\"fullDel(scope.row, '彻底删除', scope.$index)\"\r\n >彻底删除</el-dropdown-item\r\n >\r\n <el-dropdown-item v-else v-db-click @click.native=\"del(scope.row, '移入回收站', scope.$index)\"\r\n >移到回收站</el-dropdown-item\r\n >\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div class=\"acea-row row-right page\">\r\n <pagination\r\n v-if=\"total\"\r\n :total=\"total\"\r\n :page.sync=\"artFrom.page\"\r\n :limit.sync=\"artFrom.limit\"\r\n @pagination=\"getDataList\"\r\n />\r\n </div>\r\n <attribute :attrTemplate=\"attrTemplate\" v-on:changeTemplate=\"changeTemplate\"></attribute>\r\n </el-card>\r\n <!-- 生成淘宝京东表单-->\r\n <el-dialog\r\n :visible.sync=\"modals\"\r\n class=\"Box\"\r\n title=\"复制淘宝、天猫、京东、苏宁、1688\"\r\n :close-on-click-modal=\"false\"\r\n width=\"720px\"\r\n >\r\n <tao-bao ref=\"taobaos\" v-if=\"modals\" @on-close=\"onClose\"></tao-bao>\r\n </el-dialog>\r\n <el-dialog\r\n :visible.sync=\"batchModal\"\r\n class=\"batch-box\"\r\n title=\"批量设置\"\r\n :show-close=\"true\"\r\n :close-on-click-modal=\"false\"\r\n width=\"540px\"\r\n >\r\n <el-form\r\n class=\"batchFormData\"\r\n ref=\"batchFormData\"\r\n :rules=\"ruleBatch\"\r\n :model=\"batchFormData\"\r\n label-width=\"90px\"\r\n label-position=\"right\"\r\n @submit.native.prevent\r\n >\r\n <el-row :gutter=\"24\">\r\n <el-col :span=\"24\" v-if=\"batchType == 1\">\r\n <!-- <el-divider content-position=\"left\">基础设置</el-divider>-->\r\n <el-form-item label=\"商品分类:\" prop=\"cate_id\">\r\n <!-- <el-select v-model=\"batchFormData.cate_id\" placeholder=\"请选择商品分类\" multiple class=\"perW20\">\r\n <el-option v-for=\"item in treeSelect\" :disabled=\"item.pid === 0\" :value=\"item.id\" :key=\"item.id\">{{\r\n item.html + item.cate_name\r\n }}</el-option>\r\n </el-select> -->\r\n <el-cascader\r\n v-model=\"batchFormData.cate_id\"\r\n size=\"small\"\r\n :options=\"treeSelect\"\r\n :props=\"{ multiple: true, emitPath: false, checkStrictly: true }\"\r\n clearable\r\n style=\"width: 400px\"\r\n ></el-cascader>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\" v-if=\"batchType == 2\">\r\n <el-form-item label=\"物流方式:\" prop=\"logistics\">\r\n <el-checkbox-group v-model=\"batchFormData.logistics\" @change=\"logisticsBtn\">\r\n <el-checkbox label=\"1\">快递</el-checkbox>\r\n <el-checkbox label=\"2\">到店</el-checkbox>\r\n </el-checkbox-group>\r\n </el-form-item>\r\n <el-form-item label=\"运费设置:\">\r\n <el-radio-group v-model=\"batchFormData.freight\">\r\n <!-- <el-radio :label=\"1\">包邮</el-radio> -->\r\n <el-radio :label=\"2\">固定邮费</el-radio>\r\n <el-radio :label=\"3\">运费模板</el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <el-form-item label=\"\" v-if=\"batchFormData.freight == 2\">\r\n <div class=\"acea-row\">\r\n <el-input-number\r\n :controls=\"false\"\r\n :min=\"0\"\r\n v-model=\"batchFormData.postage\"\r\n placeholder=\"请输入金额\"\r\n class=\"perW20 maxW\"\r\n />\r\n </div>\r\n </el-form-item>\r\n <el-form-item label=\"\" v-if=\"batchFormData.freight == 3\" prop=\"temp_id\">\r\n <div class=\"acea-row\">\r\n <el-select v-model=\"batchFormData.temp_id\" clearable placeholder=\"请选择运费模板\" style=\"width: 414px\">\r\n <el-option\r\n v-for=\"(item, index) in templateList\"\r\n :value=\"item.id\"\r\n :key=\"index\"\r\n :label=\"item.name\"\r\n ></el-option>\r\n </el-select>\r\n </div>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\" v-if=\"[3, 4, 5, 6].includes(batchType)\">\r\n <!-- <el-divider content-position=\"left\" v-if=\"[3, 4, 5, 6].includes(batchType)\">营销设置</el-divider>-->\r\n <el-form-item label=\"赠送积分:\" prop=\"give_integral\" v-if=\"batchType == 3\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"batchFormData.give_integral\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n placeholder=\"请输入积分\"\r\n style=\"width: 100%\"\r\n />\r\n </el-form-item>\r\n <el-form-item label=\"赠送优惠券:\" v-if=\"batchType == 4\">\r\n <div v-if=\"couponName.length\" class=\"mb20\">\r\n <el-tag closable v-for=\"(item, index) in couponName\" :key=\"index\" @close=\"handleClose(item)\">{{\r\n item.title\r\n }}</el-tag>\r\n </div>\r\n <el-button type=\"primary\" v-db-click @click=\"addCoupon\">添加优惠券</el-button>\r\n </el-form-item>\r\n <el-form-item label=\"关联标签:\" prop=\"label_id\" v-if=\"batchType == 5\">\r\n <div class=\"acea-row label_width\">\r\n <div class=\"labelInput acea-row row-between-wrapper\" v-db-click @click=\"openLabel\">\r\n <div style=\"width: auto\">\r\n <div v-if=\"dataLabel.length\">\r\n <el-tag\r\n class=\"m-r-2\"\r\n closable\r\n v-for=\"(item, index) in dataLabel\"\r\n @close=\"closeLabel(item)\"\r\n :key=\"index\"\r\n >{{ item.label_name }}</el-tag\r\n >\r\n </div>\r\n <span class=\"span\" v-else>选择用户关联标签</span>\r\n </div>\r\n <div class=\"iconfont iconxiayi\"></div>\r\n </div>\r\n </div>\r\n </el-form-item>\r\n <el-form-item label=\"商品推荐:\" v-if=\"batchType == 6\">\r\n <el-checkbox-group v-model=\"batchFormData.recommend\">\r\n <el-checkbox label=\"is_hot\">热卖单品</el-checkbox>\r\n <!-- <el-checkbox label=\"is_benefit\">促销单品</el-checkbox> -->\r\n <el-checkbox label=\"is_best\">精品推荐</el-checkbox>\r\n <el-checkbox label=\"is_new\">首发新品</el-checkbox>\r\n <el-checkbox label=\"is_good\">优品推荐</el-checkbox>\r\n </el-checkbox-group>\r\n </el-form-item>\r\n </el-col>\r\n </el-row>\r\n </el-form>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button v-db-click @click=\"clearBatchData\">取 消</el-button>\r\n <el-button type=\"primary\" v-db-click @click=\"batchSub\">确 定</el-button>\r\n </span>\r\n </el-dialog>\r\n <!-- 商品标签 -->\r\n <el-dialog\r\n :visible.sync=\"tagShow\"\r\n title=\"请选择商品标签\"\r\n :show-close=\"true\"\r\n width=\"540px\"\r\n :close-on-click-modal=\"false\"\r\n >\r\n <goodsLabel\r\n ref=\"goodsLabel\"\r\n :defaultLabelList=\"goodsLabelList\"\r\n @activeLabel=\"activeGoodsLabel\"\r\n @close=\"labelClose\"\r\n ></goodsLabel>\r\n </el-dialog>\r\n <!-- 用户标签 -->\r\n <el-dialog\r\n :visible.sync=\"labelShow\"\r\n title=\"请选择用户标签\"\r\n width=\"540px\"\r\n :show-close=\"true\"\r\n :close-on-click-modal=\"false\"\r\n >\r\n <userLabel ref=\"userLabel\" @activeData=\"activeData\" @close=\"labelClose\"></userLabel>\r\n </el-dialog>\r\n <!-- 商品弹窗 -->\r\n <div v-if=\"isProductBox\">\r\n <div class=\"bg\" v-db-click @click=\"isProductBox = false\"></div>\r\n <goodsDetail :goodsId=\"goodsId\"></goodsDetail>\r\n </div>\r\n <coupon-list ref=\"couponTemplates\" @nameId=\"nameId\" :couponids=\"batchFormData.coupon_ids\"></coupon-list>\r\n <!-- 商品导入 -->\r\n <el-dialog\r\n :visible.sync=\"importShow\"\r\n title=\"商品导入\"\r\n width=\"900px\"\r\n :show-close=\"true\"\r\n :close-on-click-modal=\"false\"\r\n >\r\n <goodsImport v-if=\"importShow\" @close=\"importShow = false\"></goodsImport>\r\n </el-dialog>\r\n <brokerageSet ref=\"brokerageSet\" :productId=\"productId\"></brokerageSet>\r\n <vipPriceSet ref=\"vipPriceSet\" :productId=\"productId\"></vipPriceSet>\r\n <!-- 商品标签 -->\r\n <el-dialog :visible.sync=\"storeLabelShow\" title=\"选择商品标签\" width=\"540\">\r\n <storeLabelList\r\n v-if=\"storeLabelShow\"\r\n ref=\"storeLabel\"\r\n @activeData=\"activeStoreData\"\r\n @close=\"storeLabelClose\"\r\n ></storeLabelList>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport expandRow from './tableExpand.vue';\r\nimport attribute from './attribute';\r\nimport toExcel from '../../../utils/Excel.js';\r\nimport { mapState } from 'vuex';\r\nimport taoBao from './taoBao';\r\nimport goodsDetail from './components/goodsDetail.vue';\r\nimport couponList from '@/components/couponList';\r\nimport { exportProductList, exportProductExport } from '@/api/export';\r\nimport settings from '@/setting';\r\nimport goodsImport from './components/goodsImport.vue';\r\nimport brokerageSet from '../components/brokerageSet.vue';\r\nimport vipPriceSet from '../components/vipPriceSet.vue';\r\nimport {\r\n getGoodHeade,\r\n getGoods,\r\n PostgoodsIsShow,\r\n cascaderListApi, // 分类列表\r\n productShowApi,\r\n productUnshowApi,\r\n storeProductApi,\r\n batchSetting,\r\n productGetTemplateApi,\r\n productLabelUseListApi,\r\n productBatchDelete,\r\n} from '@/api/product';\r\nimport userLabel from '@/components/labelList';\r\nimport storeLabelList from '@/components/storeLabelList';\r\nimport goodsLabel from '@/components/goodsLabel';\r\n\r\nexport default {\r\n name: 'product_productList',\r\n components: {\r\n expandRow,\r\n attribute,\r\n taoBao,\r\n goodsDetail,\r\n userLabel,\r\n couponList,\r\n goodsImport,\r\n brokerageSet,\r\n vipPriceSet,\r\n storeLabelList,\r\n goodsLabel,\r\n },\r\n computed: {\r\n ...mapState('userLevel', ['categoryId']),\r\n },\r\n data() {\r\n return {\r\n routePre: settings.routePre,\r\n pickerOptions: this.$timeOptions,\r\n template: false,\r\n modals: false,\r\n importShow: false,\r\n batchModal: false,\r\n labelShow: false,\r\n batchType: 1, // 批量设置类型\r\n batchFormData: {\r\n cate_id: [],\r\n logistics: [],\r\n freight: 2,\r\n postage: 0,\r\n temp_id: null,\r\n give_integral: 0,\r\n label_id: [],\r\n coupon_ids: [],\r\n recommend: [],\r\n },\r\n ruleBatch: {},\r\n couponName: [], // 优惠券\r\n dataLabel: [], // 标签\r\n templateList: [], // 运费模版\r\n grid: {\r\n xl: 6,\r\n lg: 8,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n artFrom: {\r\n page: 1,\r\n limit: 15,\r\n cate_id: '',\r\n type: '1',\r\n store_name: '',\r\n spec_type: '',\r\n logistics: '',\r\n vip_product: '',\r\n is_gift: '',\r\n sales_s: ['', ''],\r\n stock_s: ['', ''],\r\n price_s: ['', ''],\r\n store_label_id: [],\r\n time: '',\r\n virtual_type: '',\r\n },\r\n list: [],\r\n tableList: [],\r\n headeNum: [],\r\n loading: false,\r\n data: [],\r\n total: 0,\r\n attrTemplate: false,\r\n ids: [],\r\n goodsId: '',\r\n isProductBox: false,\r\n treeSelect: [],\r\n multipleSelection: [],\r\n showBrokerage: false,\r\n showVipPrice: false,\r\n storeLabelShow: false,\r\n tagShow: false,\r\n productId: 0,\r\n storeLabelList: [],\r\n goodsLabelList: [],\r\n timeVal: [],\r\n collapse: false,\r\n };\r\n },\r\n watch: {\r\n $route() {\r\n if (this.$route.fullPath === this.$routeProStr + '/product/product_list?type=5') {\r\n this.getPath();\r\n }\r\n },\r\n },\r\n created() {},\r\n activated() {\r\n this.goodHeade();\r\n this.goodsCategory();\r\n this.getLabelList();\r\n if (this.$route.fullPath === this.$routeProStr + '/product/product_list?type=5') {\r\n this.getPath();\r\n } else {\r\n this.getDataList();\r\n }\r\n },\r\n methods: {\r\n // 具体日期\r\n onchangeTime(e) {\r\n this.timeVal = e;\r\n this.artFrom.time = this.timeVal ? this.timeVal.join('-') : '';\r\n this.artFrom.page = 1;\r\n this.getDataList();\r\n },\r\n // 标签弹窗关闭\r\n storeLabelClose() {\r\n this.storeLabelShow = false;\r\n },\r\n getLabelList() {\r\n productLabelUseListApi()\r\n .then((res) => {\r\n res.data.map((el) => {\r\n if (el.list && el.list.length) {\r\n el.list.map((label) => {\r\n label.active = false;\r\n });\r\n }\r\n });\r\n this.goodsLabelList = res.data;\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n openStoreLabel(row) {\r\n this.storeLabelShow = true;\r\n this.$nextTick((e) => {\r\n this.$refs.storeLabel.storeLabel(JSON.parse(JSON.stringify(this.storeLabelList)));\r\n });\r\n },\r\n closeStoreLabel(label) {\r\n let index = this.storeLabelList.indexOf(this.storeLabelList.filter((d) => d.id == label.id)[0]);\r\n this.storeLabelList.splice(index, 1);\r\n this.getLabelId(this.storeLabelList);\r\n },\r\n activeStoreData(storeDataLabel) {\r\n this.storeLabelShow = false;\r\n this.storeLabelList = storeDataLabel;\r\n this.getLabelId(storeDataLabel);\r\n },\r\n getLabelId(storeDataLabel) {\r\n let storeActiveIds = [];\r\n storeDataLabel.forEach((item) => {\r\n storeActiveIds.push(item.id);\r\n });\r\n this.artFrom.store_label_id = storeActiveIds;\r\n this.artFrom.page = 1;\r\n this.getDataList();\r\n },\r\n activityDetail(row, type) {\r\n let name = '';\r\n if (type === 0) {\r\n name = 'marketing_storeBargain';\r\n } else if (type === 1) {\r\n name = 'marketing_combinalist';\r\n } else if (type === 2) {\r\n name = 'marketing_storeSeckill';\r\n }\r\n this.$router.push({\r\n name,\r\n params: {\r\n product_id: row.id,\r\n },\r\n });\r\n },\r\n openModal(row, type) {\r\n this.productId = row.id;\r\n this.$refs[type].visible = true;\r\n },\r\n batchSub() {\r\n let data = this.batchFormData;\r\n data.ids = this.ids;\r\n data.type = this.batchType;\r\n let activeIds = [];\r\n this.dataLabel.forEach((item) => {\r\n activeIds.push(item.id);\r\n });\r\n data.label_id = activeIds;\r\n if (this.batchType == 2 && !this.batchFormData.logistics.length) {\r\n return this.$message.warning('请选择物流方式');\r\n }\r\n batchSetting(data)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.getDataList();\r\n this.clearBatchData(false);\r\n this.ids = [];\r\n })\r\n .catch((err) => {\r\n this.$message.error(err.msg);\r\n });\r\n },\r\n clearBatchData(status) {\r\n if (!status) {\r\n this.batchFormData = {\r\n cate_id: [],\r\n logistics: [],\r\n freight: 0,\r\n postage: null,\r\n temp_id: null,\r\n give_integral: null,\r\n label_id: [],\r\n coupon_ids: [],\r\n recommend: [],\r\n is_gift: null,\r\n label_list: [],\r\n };\r\n this.dataLabel = [];\r\n }\r\n this.batchModal = false;\r\n this.$refs.table.clearSelection();\r\n },\r\n // 批量设置商品\r\n batchSelect(type) {\r\n if (!this.ids.length) {\r\n this.$message.warning('请选择要修改的商品');\r\n } else if (type === 7) {\r\n this.onDismount();\r\n } else if (type === 8) {\r\n this.onShelves();\r\n } else if (type === 9) {\r\n this.batchType = type;\r\n this.tagShow = true;\r\n } else if (type === 11) {\r\n this.batchGoodsSetting('全部移到回收站', 1);\r\n } else if (type === 12) {\r\n this.batchGoodsSetting('恢复选中商品', 2);\r\n } else {\r\n this.batchType = type;\r\n this.batchModal = true;\r\n this.productGetTemplate();\r\n }\r\n },\r\n batchGoodsSetting(tit, type) {\r\n let url = type == 1 ? 'product/product/batch_delete' : 'product/product/batch_recover';\r\n let delfromData = {\r\n title: tit,\r\n url,\r\n method: 'post',\r\n ids: {\r\n ids: this.ids,\r\n },\r\n un: 1,\r\n };\r\n this.$modalSure(delfromData)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.goodHeade();\r\n this.getDataList();\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n goodsMove(type) {\r\n if (type === 1) {\r\n this.onImport();\r\n } else {\r\n this.onExports(2);\r\n }\r\n },\r\n activeData(dataLabel) {\r\n this.labelShow = false;\r\n this.dataLabel = dataLabel;\r\n },\r\n nameId(id, names) {\r\n this.batchFormData.coupon_ids = id;\r\n this.couponName = this.unique(names);\r\n },\r\n handleClose(name) {\r\n let index = this.couponName.indexOf(name);\r\n this.couponName.splice(index, 1);\r\n this.formValidate.coupon_ids.splice(index, 1);\r\n },\r\n //对象数组去重;\r\n unique(arr) {\r\n const res = new Map();\r\n return arr.filter((arr) => !res.has(arr.id) && res.set(arr.id, 1));\r\n },\r\n // 获取运费模板;\r\n productGetTemplate() {\r\n productGetTemplateApi().then((res) => {\r\n this.templateList = res.data;\r\n });\r\n },\r\n // 标签弹窗关闭\r\n labelClose() {\r\n this.labelShow = false;\r\n this.tagShow = false;\r\n },\r\n // 选择商品标签\r\n activeGoodsLabel(data) {\r\n console.log(data, 'data');\r\n this.tagShow = false;\r\n this.batchFormData.label_list = Array.from(new Set(data));\r\n this.batchSub();\r\n },\r\n look(row) {\r\n this.goodsId = row.id;\r\n this.isProductBox = true;\r\n },\r\n // 物流方式\r\n logisticsBtn(e) {\r\n this.batchFormData.logistics = e;\r\n },\r\n // 关联用户标签\r\n openLabel() {\r\n this.labelShow = true;\r\n // this.$refs.userLabel.setLabel(JSON.parse(JSON.stringify(this.dataLabel)));\r\n },\r\n closeLabel(label) {\r\n let index = this.dataLabel.indexOf(this.dataLabel.filter((d) => d.id == label.id)[0]);\r\n this.dataLabel.splice(index, 1);\r\n },\r\n // 添加优惠券\r\n addCoupon() {\r\n this.$refs.couponTemplates.isTemplate = true;\r\n this.$refs.couponTemplates.tableList();\r\n },\r\n getPath() {\r\n this.artFrom.page = 1;\r\n this.artFrom.type = this.$route.query.type.toString();\r\n this.getDataList();\r\n },\r\n onImport() {\r\n this.importShow = true;\r\n },\r\n // 导出\r\n async onExports(type) {\r\n let [th, filekey, data, fileName] = [[], [], [], ''];\r\n let excelData = JSON.parse(JSON.stringify(this.artFrom));\r\n excelData.page = 1;\r\n excelData.limit = 50;\r\n excelData.ids = this.ids;\r\n for (let i = 0; i < excelData.page + 1; i++) {\r\n let lebData = await this.getExcelData(excelData, type);\r\n if (!fileName) fileName = lebData.filename;\r\n if (!filekey.length) {\r\n filekey = lebData.fileKey;\r\n }\r\n if (!th.length) th = lebData.header;\r\n if (lebData.export.length) {\r\n data = data.concat(lebData.export);\r\n excelData.page++;\r\n } else {\r\n this.$exportExcel(th, filekey, fileName, data);\r\n return;\r\n }\r\n }\r\n },\r\n getExcelData(excelData, type) {\r\n let fun = type ? exportProductExport : exportProductList;\r\n return new Promise((resolve, reject) => {\r\n fun(excelData).then((res) => {\r\n resolve(res.data);\r\n });\r\n });\r\n },\r\n freight() {\r\n this.$refs.template.isTemplate = true;\r\n },\r\n // 批量上架\r\n onShelves() {\r\n if (this.ids.length === 0) {\r\n this.$message.warning('请选择要上架的商品');\r\n } else {\r\n let data = {\r\n ids: this.ids,\r\n };\r\n productShowApi(data)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.goodHeade();\r\n this.getDataList();\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n }\r\n },\r\n // 批量下架\r\n onDismount() {\r\n if (this.ids.length === 0) {\r\n this.$message.warning('请选择要下架的商品');\r\n } else {\r\n let data = {\r\n ids: this.ids,\r\n };\r\n productUnshowApi(data)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.artFrom.page = 1;\r\n this.goodHeade();\r\n this.getDataList();\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n }\r\n },\r\n\r\n // 全选\r\n // onSelectTab (selection) {\r\n // let data = []\r\n // selection.map((item) => {\r\n // data.push(item.id)\r\n // })\r\n // this.ids = data\r\n // },\r\n getRowKey(row) {\r\n return row.id;\r\n },\r\n // 选中某一行\r\n handleSelectRow(selection) {\r\n const uniqueArr = [];\r\n const ids = [];\r\n for (let i = 0; i < selection.length; i++) {\r\n const item = selection[i];\r\n if (!ids.includes(item.id)) {\r\n uniqueArr.push(item);\r\n ids.push(item.id);\r\n }\r\n }\r\n this.ids = ids;\r\n this.multipleSelection = uniqueArr;\r\n },\r\n // 添加淘宝商品成功\r\n onClose() {\r\n this.modals = false;\r\n },\r\n // 复制淘宝\r\n onCopy() {\r\n this.$router.push({\r\n path: this.$routeProStr + '/product/add_product',\r\n query: { type: -1 },\r\n });\r\n // this.modals = true\r\n },\r\n // tab选择\r\n onClickTab() {\r\n this.artFrom.page = 1;\r\n this.multipleSelection = [];\r\n this.$refs.table.clearSelection();\r\n this.getDataList();\r\n },\r\n // 下拉树\r\n handleCheckChange(data) {\r\n let value = '';\r\n let title = '';\r\n this.list = [];\r\n this.artFrom.cate_id = 0;\r\n data.forEach((item, index) => {\r\n value += `${item.id},`;\r\n title += `${item.title},`;\r\n });\r\n value = value.substring(0, value.length - 1);\r\n title = title.substring(0, title.length - 1);\r\n this.list.push({\r\n value,\r\n title,\r\n });\r\n this.artFrom.cate_id = value;\r\n this.getDataList();\r\n },\r\n // 获取商品表单头数量\r\n goodHeade() {\r\n getGoodHeade(this.artFrom)\r\n .then((res) => {\r\n this.headeNum = res.data.list;\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 商品分类;\r\n goodsCategory() {\r\n cascaderListApi(1)\r\n .then((res) => {\r\n this.treeSelect = res.data;\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 商品列表;\r\n getDataList() {\r\n this.loading = true;\r\n this.artFrom.cate_id = this.artFrom.cate_id || '';\r\n getGoods(this.artFrom)\r\n .then((res) => {\r\n let data = res.data;\r\n this.tableList = data.list;\r\n this.total = res.data.count;\r\n this.$nextTick(() => {\r\n //确保dom加载完毕\r\n // this.setChecked();\r\n this.showSelectData();\r\n });\r\n this.loading = false;\r\n })\r\n .catch((res) => {\r\n this.loading = false;\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n showSelectData() {\r\n if (this.multipleSelection.length > 0) {\r\n // 判断是否存在勾选过的数据\r\n this.tableList.forEach((row) => {\r\n // 获取数据列表接口请求到的数据\r\n this.multipleSelection.forEach((item) => {\r\n // 勾选到的数据\r\n if (row.id === item.id) {\r\n this.$refs.table.toggleRowSelection(item, true); // 若有重合,则回显该条数据\r\n }\r\n });\r\n });\r\n }\r\n },\r\n // 表格搜索\r\n userSearchs() {\r\n this.artFrom.page = 1;\r\n this.goodHeade();\r\n this.getDataList();\r\n },\r\n // 上下架\r\n changeSwitch(row) {\r\n PostgoodsIsShow(row.id, row.is_show)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.goodHeade();\r\n this.getDataList();\r\n })\r\n .catch((res) => {\r\n row.is_show = !row.is_show ? 1 : 0;\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 数据导出;\r\n exportData: function () {\r\n let th = ['商品名称', '商品简介', '商品分类', '价格', '库存', '销量', '收藏人数'];\r\n let filterVal = ['store_name', 'store_info', 'cate_name', 'price', 'stock', 'sales', 'collect'];\r\n this.where.page = 'nopage';\r\n getGoods(this.where).then((res) => {\r\n let data = res.data.map((v) => filterVal.map((k) => v[k]));\r\n let fileTime = Date.parse(new Date());\r\n let [fileName, fileType, sheetName] = ['商户数据_' + fileTime, 'xlsx', '商户数据'];\r\n toExcel({ th, data, fileName, fileType, sheetName });\r\n });\r\n },\r\n // 属性弹出;\r\n attrTap() {\r\n this.attrTemplate = true;\r\n },\r\n changeTemplate(msg) {\r\n this.attrTemplate = msg;\r\n },\r\n // 编辑\r\n edit(row) {\r\n this.$router.push({ path: this.$routeProStr + '/product/add_product/' + row.id });\r\n },\r\n // 确认\r\n del(row, tit, num) {\r\n let delfromData = {\r\n title: tit,\r\n num: num,\r\n url: `product/product/${row.id}`,\r\n method: 'DELETE',\r\n ids: '',\r\n un: 1,\r\n };\r\n this.$modalSure(delfromData)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.tableList.splice(num, 1);\r\n this.goodHeade();\r\n this.getDataList();\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n fullDel(row, tit, num) {\r\n let delfromData = {\r\n title: tit,\r\n num: num,\r\n url: `product/full_del/${row.id}`,\r\n method: 'DELETE',\r\n };\r\n this.$modalSure(delfromData)\r\n .then((res) => {\r\n this.$message.success(res.msg);\r\n this.tableList.splice(num, 1);\r\n this.goodHeade();\r\n this.getDataList();\r\n })\r\n .catch((res) => {\r\n this.$message.error(res.msg);\r\n });\r\n },\r\n // 重置\r\n reset(name) {\r\n this.artFrom = {\r\n page: 1,\r\n limit: 15,\r\n cate_id: '',\r\n type: '1',\r\n store_name: '',\r\n spec_type: '',\r\n logistics: '',\r\n vip_product: '',\r\n is_gift: '',\r\n sales_s: ['', ''],\r\n stock_s: ['', ''],\r\n price_s: ['', ''],\r\n store_label_id: [],\r\n time: '',\r\n virtual_type: '',\r\n };\r\n this.storeLabelList = [];\r\n this.tableList = [];\r\n this.total = 0;\r\n this.timeVal = [];\r\n this.getDataList();\r\n },\r\n },\r\n};\r\n</script>\r\n<style scoped lang=\"scss\">\r\n::v-deep .el-tabs__item {\r\n height: 54px !important;\r\n line-height: 54px !important;\r\n}\r\n::v-deep .ivu-modal-mask {\r\n z-index: 999 !important;\r\n}\r\n\r\n::v-deep .ivu-modal-wrap {\r\n z-index: 999 !important;\r\n}\r\n\r\n.Box {\r\n ::v-deep .ivu-modal-body {\r\n height: 700px;\r\n overflow: auto;\r\n }\r\n}\r\n\r\n.batch-box {\r\n ::v-deep .ivu-modal-body {\r\n overflow: auto;\r\n min-height: 350px;\r\n }\r\n}\r\n\r\n.tabBox_img {\r\n width: 36px;\r\n height: 36px;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n}\r\n\r\n.bg {\r\n position: fixed;\r\n left: 0;\r\n top: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(0, 0, 0, 0.5);\r\n z-index: 11;\r\n}\r\n\r\n::v-deep .happy-scroll-content {\r\n width: 100%;\r\n\r\n .demo-spin-icon-load {\r\n animation: ani-demo-spin 1s linear infinite;\r\n }\r\n\r\n @keyframes ani-demo-spin {\r\n from {\r\n transform: rotate(0deg);\r\n }\r\n\r\n 50% {\r\n transform: rotate(180deg);\r\n }\r\n\r\n to {\r\n transform: rotate(360deg);\r\n }\r\n }\r\n\r\n .demo-spin-col {\r\n height: 100px;\r\n position: relative;\r\n border: 1px solid #eee;\r\n }\r\n}\r\n\r\n.labelInput {\r\n border: 1px solid #dcdee2;\r\n padding: 0 15px 0 10px;\r\n border-radius: 5px;\r\n min-height: 30px;\r\n cursor: pointer;\r\n font-size: 12px;\r\n\r\n .span {\r\n color: #c5c8ce;\r\n }\r\n\r\n .iconxiayi {\r\n margin-left: 5px;\r\n font-size: 12px;\r\n }\r\n}\r\n.el-dropdown-link {\r\n cursor: pointer;\r\n color: var(--prev-color-primary);\r\n font-size: 12px;\r\n}\r\n.el-icon-arrow-down {\r\n font-size: 12px;\r\n}\r\n.el-dropdown-menu__item {\r\n a {\r\n color: #606266;\r\n }\r\n}\r\n.label_width {\r\n width: 400px;\r\n}\r\n.search-form {\r\n display: flex;\r\n justify-content: space-between;\r\n .search-form-box {\r\n display: flex;\r\n flex-wrap: wrap;\r\n flex: 1;\r\n }\r\n .search-form-sub {\r\n display: flex;\r\n align-items: baseline;\r\n }\r\n}\r\n</style>\r\n"]}]}