b4999f29dd18c18a81d5233de7019b15.json 35 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\\taoBao.vue?vue&type=style&index=0&id=19e32458&lang=scss&scoped=true","dependencies":[{"path":"D:\\front\\item\\zyAdmin\\src\\pages\\product\\productList\\taoBao.vue","mtime":1761614939051},{"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:DQo6OnYtZGVlcCAuaXZ1LWZvcm0taXRlbS1jb250ZW50IHsNCiAgbGluZS1oZWlnaHQ6IHVuc2V0ICFpbXBvcnRhbnQ7DQp9DQouQm94IC5pdnUtcmFkaW8td3JhcHBlciB7DQogIG1hcmdpbi1yaWdodDogMjVweDsNCn0NCi5Cb3ggLm51bVB1dCB7DQogIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7DQp9DQouYWRkIHsNCiAgY29sb3I6ICMyZDhjZjA7DQogIGN1cnNvcjogcG9pbnRlcjsNCn0NCi5sdW5Cb3ggew0KICAvKiB3aWR0aCA4MHB4ICovDQogIGRpc3BsYXk6IGZsZXg7DQogIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47DQogIGJvcmRlcjogMXB4IHNvbGlkICMwYmIyMGM7DQp9DQoucGljdHJ1ZUJveCB7DQogIGRpc3BsYXk6IGlubGluZS1ibG9jazsNCn0NCi5waWN0cnVlIHsNCiAgd2lkdGg6IDg1cHg7DQogIGhlaWdodDogODVweDsNCiAgYm9yZGVyOiAxcHggZG90dGVkIHJnYmEoMCwgMCwgMCwgMC4xKTsNCiAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICBwb3NpdGlvbjogcmVsYXRpdmU7DQogIGN1cnNvcjogcG9pbnRlcjsNCg0KICBpbWcgew0KICAgIHdpZHRoOiAxMDAlOw0KICAgIGhlaWdodDogMTAwJTsNCiAgfQ0KfQ0KLnBpY3RydWVUYWIgew0KICB3aWR0aDogNDBweCAhaW1wb3J0YW50Ow0KICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDsNCn0NCi51cExvYWQgew0KICB3aWR0aDogNDBweDsNCiAgaGVpZ2h0OiA0MHB4Ow0KICBib3JkZXI6IDFweCBkb3R0ZWQgcmdiYSgwLCAwLCAwLCAwLjEpOw0KICBib3JkZXItcmFkaXVzOiA0cHg7DQogIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC4wMik7DQogIGN1cnNvcjogcG9pbnRlcjsNCn0NCi5pdnUtdGFibGUtd3JhcHBlciB7DQogIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI2RjZGVlMjsNCiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkY2RlZTI7DQp9DQouZnQgew0KICBjb2xvcjogcmVkOw0KfQ0K"},{"version":3,"sources":["taoBao.vue"],"names":[],"mappings":";AA6zBA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"taoBao.vue","sourceRoot":"src/pages/product/productList","sourcesContent":["<template>\r\n <div class=\"Box\" v-loading=\"spinShow\">\r\n <div>\r\n <div>\r\n 生成的商品默认是没有上架的,请手动上架商品!\r\n <a href=\"https://doc.crmeb.com/single/v5/7785\" v-if=\"copyConfig.copy_type == 2\" target=\"_blank\">如何配置密钥</a>\r\n <span v-else\r\n >您当前剩余{{ copyConfig.copy_num }}条采集次数,<a class=\"add\" v-db-click @click=\"mealPay('copy')\"\r\n >增加采集次数</a\r\n ></span\r\n >\r\n </div>\r\n <div>商品采集设置:设置 > 系统设置 > 第三方接口设置 > 采集商品配置</div>\r\n </div>\r\n <el-form\r\n class=\"formValidate mt20\"\r\n ref=\"formValidate\"\r\n :model=\"formValidate\"\r\n :rules=\"ruleInline\"\r\n label-width=\"120px\"\r\n label-position=\"right\"\r\n @submit.native.prevent\r\n >\r\n <el-row :gutter=\"24\">\r\n <!--<el-col :span=\"24\">-->\r\n <!--<el-form-item label=\"\" label-for=\"\">-->\r\n <!--<el-radio-group v-model=\"artFrom.type\">-->\r\n <!--<el-radio label=\"taobao\">淘宝</el-radio>-->\r\n <!--<el-radio label=\"tmall\">天猫</el-radio>-->\r\n <!--<el-radio label=\"jd\">京东</el-radio>-->\r\n <!--<el-radio label=\"pdd\">拼多多</el-radio>-->\r\n <!--<el-radio label=\"suning\">苏宁</el-radio>-->\r\n <!--<el-radio label=\"1688\">1688</el-radio>-->\r\n <!--</el-radio-group>-->\r\n <!--</el-form-item>-->\r\n <!--</el-col>-->\r\n <el-col span=\"15\">\r\n <el-form-item label=\"链接地址:\">\r\n <el-input\r\n search\r\n enter-button=\"确定\"\r\n v-model=\"soure_link\"\r\n placeholder=\"请输入链接地址\"\r\n class=\"numPut\"\r\n @on-search=\"add\"\r\n />\r\n </el-form-item>\r\n </el-col>\r\n <div>\r\n <div v-if=\"isData\">\r\n <el-col :span=\"24\" class=\"\">\r\n <el-form-item label=\"商品名称:\" prop=\"store_name\">\r\n <el-input v-model=\"formValidate.store_name\" placeholder=\"请输入商品名称\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"商品简介:\" prop=\"store_info\" label-for=\"store_info\">\r\n <el-input v-model=\"formValidate.store_info\" type=\"textarea\" :rows=\"3\" placeholder=\"请输入商品简介\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"商品分类:\" prop=\"cate_id\">\r\n <!-- <el-select v-model=\"formValidate.cate_id\" multiple>\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=\"formValidate.cate_id\"\r\n size=\"small\"\r\n :options=\"treeSelect\"\r\n :props=\"{ multiple: true, emitPath: false, checkStrictly: true }\"\r\n filterable\r\n clearable\r\n ></el-cascader>\r\n </el-form-item>\r\n </el-col>\r\n <el-col v-bind=\"grid\">\r\n <el-form-item label=\"商品关键字:\" prop=\"keyword\" label-for=\"keyword\">\r\n <el-input v-model=\"formValidate.keyword\" placeholder=\"请输入商品关键字\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col v-bind=\"grid\">\r\n <el-form-item label=\"单位:\" prop=\"unit_name\" label-for=\"unit_name\">\r\n <el-input v-model=\"formValidate.unit_name\" placeholder=\"请输入单位\" />\r\n </el-form-item>\r\n </el-col>\r\n <el-col v-bind=\"grid\">\r\n <el-form-item label=\"虚拟销量:\" label-for=\"ficti\">\r\n <el-input-number\r\n :controls=\"false\"\r\n class=\"perW100\"\r\n v-model=\"formValidate.ficti\"\r\n placeholder=\"请输入虚拟销量\"\r\n />\r\n </el-form-item>\r\n </el-col>\r\n <el-col v-bind=\"grid\">\r\n <el-form-item label=\"积分:\" label-for=\"give_integral\">\r\n <el-input-number\r\n :controls=\"false\"\r\n class=\"perW100\"\r\n v-model=\"formValidate.give_integral\"\r\n placeholder=\"请输入积分\"\r\n />\r\n </el-form-item>\r\n </el-col>\r\n <el-col v-bind=\"grid\">\r\n <el-form-item label=\"运费模板:\" prop=\"temp_id\">\r\n <el-select v-model=\"formValidate.temp_id\" clearable>\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 </el-form-item>\r\n </el-col>\r\n <!--<el-col v-bind=\"grid\">-->\r\n <!--<el-form-item label=\"邮费:\" label-for=\"postage\">-->\r\n <!--<el-input-number controls-position=\"right\" v-model=\"formValidate.postage\" placeholder=\"请输入邮费\" />-->\r\n <!--</el-form-item>-->\r\n <!--</el-col>-->\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"商品图:\">\r\n <div class=\"pictrueBox\">\r\n <div class=\"pictrue\" v-if=\"formValidate.image\" v-viewer>\r\n <img v-lazy=\"formValidate.image\" />\r\n </div>\r\n </div>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"商品轮播图:\">\r\n <div class=\"acea-row\" v-viewer>\r\n <div\r\n class=\"lunBox mr15\"\r\n v-for=\"(item, index) in formValidate.slider_image\"\r\n :key=\"index\"\r\n draggable=\"true\"\r\n @dragstart=\"handleDragStart($event, item)\"\r\n @dragover.prevent=\"handleDragOver($event, item)\"\r\n @dragenter=\"handleDragEnter($event, item)\"\r\n @dragend=\"handleDragEnd($event, item)\"\r\n >\r\n <div class=\"pictrue\"><img v-lazy=\"item\" /></div>\r\n <ButtonGroup size=\"small\">\r\n <el-button v-db-click @click.native=\"checked(item, index)\">主图</el-button>\r\n <el-button v-db-click @click.native=\"handleRemove(index)\">移除</el-button>\r\n </ButtonGroup>\r\n </div>\r\n </div>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"批量设置:\" class=\"labeltop\" v-if=\"formValidate.attrs\">\r\n <el-col :xl=\"23\" :lg=\"24\" :md=\"24\" :sm=\"24\" :xs=\"24\">\r\n <el-form-item>\r\n <el-table :data=\"oneFormBatch\" border>\r\n <el-table-column\r\n :label=\"item.title\"\r\n :min-width=\"item.minWidth\"\r\n v-for=\"(item, index) in columns\"\r\n :key=\"index\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <template v-if=\"item.key\">\r\n <div>\r\n <span>{{ scope.row[item.key] }}</span>\r\n </div>\r\n </template>\r\n <template v-else-if=\"item.slot === 'pic'\">\r\n <div\r\n class=\"acea-row row-middle row-center-wrapper\"\r\n v-db-click\r\n @click=\"modalPicTap('dan', 'duopi', scope.$index)\"\r\n >\r\n <div class=\"pictrue pictrueTab\" v-if=\"oneFormBatch[0].pic\">\r\n <img v-lazy=\"oneFormBatch[0].pic\" />\r\n </div>\r\n <div class=\"upLoad pictrueTab acea-row row-center-wrapper\" v-else>\r\n <i class=\"el-icon-picture-outline\" style=\"font-size: 24px\"></i>\r\n </div>\r\n </div>\r\n </template>\r\n <template v-else-if=\"item.slot === 'price'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormBatch[0].price\"\r\n :min=\"0\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'cost'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormBatch[0].cost\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'ot_price'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormBatch[0].ot_price\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'stock'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormBatch[0].stock\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'bar_code'\">\r\n <el-input v-model=\"oneFormBatch[0].bar_code\"></el-input>\r\n </template>\r\n <template v-else-if=\"item.slot === 'weight'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormBatch[0].weight\"\r\n :min=\"0\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'volume'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormBatch[0].volume\"\r\n :min=\"0\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" fixed=\"right\" width=\"170\">\r\n <template slot-scope=\"\">\r\n <a v-db-click @click=\"batchAdd\">添加</a>\r\n <el-divider direction=\"vertical\"></el-divider>\r\n <a v-db-click @click=\"batchDel\">清空</a>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-form-item>\r\n </el-col>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"商品规格:\" props=\"spec_type\" label-for=\"spec_type\">\r\n <!-- 单规格表格-->\r\n <el-col :xl=\"23\" :lg=\"24\" :md=\"24\" :sm=\"24\" :xs=\"24\">\r\n <el-form-item>\r\n <el-table :data=\"items\" border>\r\n <el-table-column\r\n :label=\"item.title\"\r\n :min-width=\"item.minWidth\"\r\n v-for=\"(item, index) in columns\"\r\n :key=\"index\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <template v-if=\"item.key\">\r\n <div>\r\n <span>{{ scope.row[item.key] }}</span>\r\n </div>\r\n </template>\r\n <template v-else-if=\"item.slot === 'pic'\">\r\n <div\r\n class=\"acea-row row-middle row-center-wrapper\"\r\n v-db-click\r\n @click=\"modalPicTap('dan', scope.$index)\"\r\n >\r\n <div class=\"pictrue pictrueTab\" v-if=\"formValidate.attrs[scope.$index].pic\">\r\n <img v-lazy=\"formValidate.attrs[scope.$index].pic\" />\r\n </div>\r\n <div class=\"upLoad upLoadTab acea-row row-center-wrapper\" v-else>\r\n <i class=\"el-icon-picture-outline\" style=\"font-size: 24px\"></i>\r\n </div>\r\n </div>\r\n </template>\r\n <template v-else-if=\"item.slot === 'price'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"formValidate.attrs[scope.$index].price\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'cost'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"formValidate.attrs[scope.$index].cost\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'ot_price'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"formValidate.attrs[scope.$index].ot_price\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'stock'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"formValidate.attrs[scope.$index].stock\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'bar_code'\">\r\n <el-input v-model=\"formValidate.attrs[scope.$index].bar_code\"></el-input>\r\n </template>\r\n <template v-else-if=\"item.slot === 'weight'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"formValidate.attrs[scope.$index].weight\"\r\n :min=\"0\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'volume'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"formValidate.attrs[scope.$index].volume\"\r\n :min=\"0\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" fixed=\"right\" width=\"170\">\r\n <template slot-scope=\"scope\">\r\n <a v-db-click @click=\"delAttrTable(scope.$index)\">删除</a>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </el-form-item>\r\n </el-col>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"商品详情:\">\r\n <WangEditor\r\n style=\"width: 100%\"\r\n :content=\"formValidate.description\"\r\n @editorContent=\"getEditorContent\"\r\n ></WangEditor>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item>\r\n <el-button\r\n type=\"primary\"\r\n :loading=\"modal_loading\"\r\n class=\"submission\"\r\n v-db-click\r\n @click=\"handleSubmit('formValidate')\"\r\n >提交</el-button\r\n >\r\n </el-form-item>\r\n </el-col>\r\n </div>\r\n </div>\r\n </el-row>\r\n </el-form>\r\n <el-dialog\r\n :visible.sync=\"modalPic\"\r\n width=\"950px\"\r\n title=\"上传商品图\"\r\n :mask-closable=\"false\"\r\n :close-on-click-modal=\"false\"\r\n >\r\n <uploadPictures\r\n :isChoice=\"isChoice\"\r\n @getPic=\"getPic\"\r\n :gridBtn=\"gridBtn\"\r\n :gridPic=\"gridPic\"\r\n v-if=\"modalPic\"\r\n ></uploadPictures>\r\n </el-dialog>\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { crawlFromApi, cascaderListApi, crawlSaveApi, productGetTemplateApi, copyConfigApi } from '@/api/product';\r\nimport uploadPictures from '@/components/uploadPictures';\r\nimport WangEditor from '@/components/wangEditor/index.vue';\r\n\r\nexport default {\r\n name: 'taoBao',\r\n data() {\r\n return {\r\n // 批量设置表格data\r\n oneFormBatch: [\r\n {\r\n pic: '',\r\n price: 0,\r\n cost: 0,\r\n ot_price: 0,\r\n stock: 0,\r\n bar_code: '',\r\n weight: 0,\r\n volume: 0,\r\n },\r\n ],\r\n columnsBatch: [\r\n {\r\n title: '图片',\r\n slot: 'pic',\r\n align: 'center',\r\n minWidth: 80,\r\n },\r\n {\r\n title: '售价',\r\n slot: 'price',\r\n align: 'center',\r\n minWidth: 95,\r\n },\r\n {\r\n title: '成本价',\r\n slot: 'cost',\r\n align: 'center',\r\n minWidth: 95,\r\n },\r\n {\r\n title: '原价',\r\n slot: 'ot_price',\r\n align: 'center',\r\n minWidth: 95,\r\n },\r\n {\r\n title: '库存',\r\n slot: 'stock',\r\n align: 'center',\r\n minWidth: 95,\r\n },\r\n {\r\n title: '商品编码',\r\n slot: 'bar_code',\r\n align: 'center',\r\n minWidth: 120,\r\n },\r\n {\r\n title: '重量(KG)',\r\n slot: 'weight',\r\n align: 'center',\r\n minWidth: 95,\r\n },\r\n {\r\n title: '体积(m³)',\r\n slot: 'volume',\r\n align: 'center',\r\n minWidth: 95,\r\n },\r\n {\r\n title: '操作',\r\n slot: 'action',\r\n align: 'center',\r\n minWidth: 140,\r\n },\r\n ],\r\n modal_loading: false,\r\n images: '',\r\n soure_link: '',\r\n modalPic: false,\r\n isChoice: '',\r\n spinShow: false,\r\n gridPic: {\r\n xl: 6,\r\n lg: 8,\r\n md: 12,\r\n sm: 12,\r\n xs: 12,\r\n },\r\n gridBtn: {\r\n xl: 4,\r\n lg: 8,\r\n md: 8,\r\n sm: 8,\r\n xs: 8,\r\n },\r\n columns: [],\r\n treeSelect: [],\r\n ruleInline: {\r\n cate_id: [\r\n {\r\n required: true,\r\n message: '请选择商品分类',\r\n trigger: 'change',\r\n type: 'array',\r\n min: '1',\r\n },\r\n ],\r\n temp_id: [\r\n {\r\n required: true,\r\n message: '请选择运费模板',\r\n trigger: 'change',\r\n type: 'number',\r\n },\r\n ],\r\n },\r\n grid: {\r\n xl: 8,\r\n lg: 8,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n grid2: {\r\n xl: 12,\r\n lg: 12,\r\n md: 12,\r\n sm: 24,\r\n xs: 24,\r\n },\r\n formValidate: {\r\n store_name: '',\r\n cate_id: [],\r\n temp_id: '',\r\n keyword: '',\r\n unit_name: '',\r\n store_info: '',\r\n image: '',\r\n slider_image: [],\r\n description: '',\r\n ficti: 0,\r\n give_integral: 0,\r\n is_show: 0,\r\n price: 0,\r\n cost: 0,\r\n ot_price: 0,\r\n stock: 0,\r\n soure_link: '',\r\n description_images: '',\r\n postage: 0,\r\n attrs: [],\r\n items: [],\r\n },\r\n items: [\r\n {\r\n pic: '',\r\n price: 0,\r\n cost: 0,\r\n ot_price: 0,\r\n stock: 0,\r\n bar_code: '',\r\n weight: 0,\r\n volume: 0,\r\n },\r\n ],\r\n templateList: [],\r\n copyConfig: {\r\n copy_type: 2,\r\n copy_num: 0,\r\n },\r\n isData: false,\r\n artFrom: {\r\n type: 'taobao',\r\n url: '',\r\n },\r\n tableIndex: 0,\r\n content: '',\r\n };\r\n },\r\n components: { WangEditor, uploadPictures },\r\n computed: {},\r\n\r\n created() {\r\n this.goodsCategory();\r\n },\r\n mounted() {\r\n this.productGetTemplate();\r\n this.getCopyConfig();\r\n },\r\n methods: {\r\n mealPay(val) {\r\n this.$router.push({\r\n path: this.$routeProStr + '/setting/sms/sms_pay/index',\r\n query: { type: val },\r\n });\r\n },\r\n batchDel() {\r\n this.oneFormBatch = [\r\n {\r\n pic: '',\r\n price: 0,\r\n cost: 0,\r\n ot_price: 0,\r\n stock: 0,\r\n bar_code: '',\r\n weight: 0,\r\n volume: 0,\r\n },\r\n ];\r\n },\r\n batchAdd() {\r\n let formBatch = this.oneFormBatch[0];\r\n this.$set(\r\n this.formValidate,\r\n 'attrs',\r\n this.formValidate.attrs.map((item) => {\r\n if (formBatch.pic) {\r\n item.pic = formBatch.pic;\r\n }\r\n if (formBatch.price > 0) {\r\n item.price = formBatch.price;\r\n }\r\n if (formBatch.cost > 0) {\r\n item.cost = formBatch.cost;\r\n }\r\n if (formBatch.ot_price > 0) {\r\n item.ot_price = formBatch.ot_price;\r\n }\r\n if (formBatch.stock > 0) {\r\n item.stock = formBatch.stock;\r\n }\r\n if (formBatch.bar_code) {\r\n item.bar_code = formBatch.bar_code;\r\n }\r\n if (formBatch.weight) {\r\n item.weight = formBatch.weight;\r\n }\r\n if (formBatch.volume) {\r\n item.weight = formBatch.volume;\r\n }\r\n return item;\r\n }),\r\n );\r\n },\r\n getEditorContent(data) {\r\n this.content = data;\r\n },\r\n // 删除表格中的属性\r\n delAttrTable(index) {\r\n this.items.splice(index, 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 getCopyConfig() {\r\n copyConfigApi().then((res) => {\r\n this.copyConfig.copy_type = res.data.copy_type;\r\n this.copyConfig.copy_num = res.data.copy_num;\r\n });\r\n },\r\n // 删除图片\r\n handleRemove(i) {\r\n this.formValidate.slider_image.splice(i, 1);\r\n },\r\n // 选择主图\r\n checked(item, index) {\r\n this.formValidate.image = item;\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 add() {\r\n if (this.soure_link) {\r\n var reg = /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/;\r\n if (!reg.test(this.soure_link)) {\r\n return this.$message.warning('请输入以http开头的地址!');\r\n }\r\n this.spinShow = true;\r\n this.artFrom.url = this.soure_link;\r\n crawlFromApi(this.artFrom)\r\n .then((res) => {\r\n let info = res.data.info;\r\n this.columns = info.info.header;\r\n this.formValidate = info;\r\n this.formValidate.soure_link = this.soure_link;\r\n this.formValidate.attrs = info.info.value;\r\n if (this.formValidate.image) {\r\n this.oneFormBatch[0].pic = this.formValidate.image;\r\n }\r\n this.items = this.formValidate.attrs;\r\n this.isData = true;\r\n this.spinShow = false;\r\n })\r\n .catch((res) => {\r\n this.spinShow = false;\r\n this.$message.error(res.msg);\r\n });\r\n } else {\r\n this.$message.warning('请输入链接地址!');\r\n }\r\n },\r\n // 提交\r\n handleSubmit(name) {\r\n this.formValidate.description = this.content;\r\n this.$refs[name].validate((valid) => {\r\n if (valid) {\r\n this.modal_loading = true;\r\n // this.formValidate.attrs = [\r\n // {\r\n // pic: this.images,\r\n // price: this.formValidate.price,\r\n // cost: this.formValidate.cost,\r\n // ot_price: this.formValidate.ot_price,\r\n // stock: this.formValidate.stock,\r\n // bar_code: this.formValidate.bar_code,\r\n // weight: this.formValidate.weight,\r\n // volume: this.formValidate.volume\r\n // }\r\n // ];\r\n // this.formValidate.items = [];\r\n crawlSaveApi(this.formValidate)\r\n .then((res) => {\r\n this.$message.success('商品默认为不上架状态请手动上架商品!');\r\n setTimeout(() => {\r\n this.modal_loading = false;\r\n }, 500);\r\n setTimeout(() => {\r\n this.$emit('on-close');\r\n }, 600);\r\n })\r\n .catch((res) => {\r\n this.modal_loading = false;\r\n this.$message.error(res.msg);\r\n });\r\n } else {\r\n if (!this.formValidate.cate_id) {\r\n this.$message.warning('请填写商品分类!');\r\n }\r\n }\r\n });\r\n },\r\n // 点击商品图\r\n modalPicTap(tit, index) {\r\n this.modalPic = true;\r\n this.isChoice = tit === 'dan' ? '单选' : '多选';\r\n this.tableIndex = index;\r\n },\r\n // 获取单张图片信息\r\n getPic(pc) {\r\n if (this.tableIndex === 'duopi') {\r\n this.oneFormBatch[0].pic = pc.att_dir;\r\n } else {\r\n this.formValidate.attrs[this.tableIndex].pic = pc.att_dir;\r\n }\r\n this.modalPic = false;\r\n },\r\n handleDragStart(e, item) {\r\n this.dragging = item;\r\n },\r\n handleDragEnd(e, item) {\r\n this.dragging = null;\r\n },\r\n // 首先把div变成可以放置的元素,即重写dragenter/dragover\r\n handleDragOver(e) {\r\n // e.dataTransfer.dropEffect=\"move\";//在dragenter中针对放置目标来设置!\r\n e.dataTransfer.dropEffect = 'move';\r\n },\r\n handleDragEnter(e, item) {\r\n // 为需要移动的元素设置dragstart事件\r\n e.dataTransfer.effectAllowed = 'move';\r\n if (item === this.dragging) {\r\n return;\r\n }\r\n const newItems = [...this.formValidate.slider_image];\r\n const src = newItems.indexOf(this.dragging);\r\n const dst = newItems.indexOf(item);\r\n newItems.splice(dst, 0, ...newItems.splice(src, 1));\r\n this.formValidate.slider_image = newItems;\r\n },\r\n // 添加自定义弹窗\r\n addCustomDialog(editorId) {\r\n window.UE.registerUI(\r\n 'test-dialog',\r\n function (editor, uiName) {\r\n // 创建 dialog\r\n let dialog = new window.UE.ui.Dialog({\r\n iframeUrl: this.$routeProStr + '/widget.images/index.html?fodder=dialog',\r\n editor: editor,\r\n name: uiName,\r\n title: '上传图片',\r\n cssRules: 'width:960px;height:550px;padding:20px;',\r\n });\r\n this.dialog = dialog;\r\n let btn = new window.UE.ui.Button({\r\n name: 'dialog-button',\r\n title: '上传图片',\r\n cssRules: `background-image: url(../../../assets/images/icons.png);background-position: -726px -77px;`,\r\n onclick: function () {\r\n // 渲染dialog\r\n dialog.render();\r\n dialog.open();\r\n },\r\n });\r\n return btn;\r\n },\r\n 37,\r\n );\r\n // window.UE.registerUI('test-dialog', function (editor, uiName) {\r\n // let dialog = new window.UE.ui.Dialog({\r\n // iframeUrl: '/admin/widget.images/index.html?fodder=dialog',\r\n // editor: editor,\r\n // name: uiName,\r\n // title: '上传图片',\r\n // cssRules: 'width:960px;height:550px;padding:20px;'\r\n // })\r\n // this.dialog = dialog\r\n // var btn = new window.UE.ui.Button({\r\n // name: 'dialog-button',\r\n // title: '上传图片',\r\n // cssRules: `background-image: url(../../../assets/images/icons.png);background-position: -726px -77px;`,\r\n // onclick: function () {\r\n // dialog.render()\r\n // dialog.open()\r\n // }\r\n // })\r\n // return btn\r\n // }, 37)\r\n },\r\n },\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n::v-deep .ivu-form-item-content {\r\n line-height: unset !important;\r\n}\r\n.Box .ivu-radio-wrapper {\r\n margin-right: 25px;\r\n}\r\n.Box .numPut {\r\n width: 100% !important;\r\n}\r\n.add {\r\n color: #2d8cf0;\r\n cursor: pointer;\r\n}\r\n.lunBox {\r\n /* width 80px */\r\n display: flex;\r\n flex-direction: column;\r\n border: 1px solid #0bb20c;\r\n}\r\n.pictrueBox {\r\n display: inline-block;\r\n}\r\n.pictrue {\r\n width: 85px;\r\n height: 85px;\r\n border: 1px dotted rgba(0, 0, 0, 0.1);\r\n display: inline-block;\r\n position: relative;\r\n cursor: pointer;\r\n\r\n img {\r\n width: 100%;\r\n height: 100%;\r\n }\r\n}\r\n.pictrueTab {\r\n width: 40px !important;\r\n height: 40px !important;\r\n}\r\n.upLoad {\r\n width: 40px;\r\n height: 40px;\r\n border: 1px dotted rgba(0, 0, 0, 0.1);\r\n border-radius: 4px;\r\n background: rgba(0, 0, 0, 0.02);\r\n cursor: pointer;\r\n}\r\n.ivu-table-wrapper {\r\n border-left: 1px solid #dcdee2;\r\n border-top: 1px solid #dcdee2;\r\n}\r\n.ft {\r\n color: red;\r\n}\r\n</style>\r\n"]}]}