260b14e66ad55aaeec00fc92dedefc36.json 38 KB

1
  1. {"remainingRequest":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\product\\productAdd\\components\\SpecStock.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\src\\pages\\product\\productAdd\\components\\SpecStock.vue","mtime":1761185180160},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\babel-loader\\lib\\index.js","mtime":456789000000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"C:\\Users\\Administrator\\Desktop\\crmeb5.0\\template\\admin\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQppbXBvcnQgdnVlZHJhZ2dhYmxlIGZyb20gJ3Z1ZWRyYWdnYWJsZSc7DQppbXBvcnQgVmlydHVhbFNjcm9sbCBmcm9tICcuL3ZpcnR1YWxUYWJlbC52dWUnOw0KZXhwb3J0IGRlZmF1bHQgew0KICBuYW1lOiAnU3BlY1N0b2NrJywNCiAgY29tcG9uZW50czogew0KICAgIGRyYWdnYWJsZTogdnVlZHJhZ2dhYmxlLA0KICAgIFZpcnR1YWxTY3JvbGwsDQogIH0sDQogIHByb3BzOiB7DQogICAgZm9ybVZhbGlkYXRlOiB7DQogICAgICB0eXBlOiBPYmplY3QsDQogICAgICByZXF1aXJlZDogdHJ1ZSwNCiAgICB9LA0KICAgIHJ1bGVMaXN0OiB7DQogICAgICB0eXBlOiBBcnJheSwNCiAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgIH0sDQogICAgYXR0cnM6IHsNCiAgICAgIHR5cGU6IEFycmF5LA0KICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgfSwNCiAgICBtYW55Rm9ybVZhbGlkYXRlOiB7DQogICAgICB0eXBlOiBBcnJheSwNCiAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgIH0sDQogICAgb25lRm9ybVZhbGlkYXRlOiB7DQogICAgICB0eXBlOiBBcnJheSwNCiAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgIH0sDQogICAgdGFibGVLZXk6IHsNCiAgICAgIHR5cGU6IE51bWJlciwNCiAgICAgIHJlcXVpcmVkOiB0cnVlLA0KICAgIH0sDQogICAgY2FuU2VsOiB7DQogICAgICB0eXBlOiBCb29sZWFuLA0KICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgfSwNCiAgICBmb3JtRHluYW1pYzogew0KICAgICAgdHlwZTogT2JqZWN0LA0KICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgfSwNCiAgICBvbmVGb3JtQmF0Y2g6IHsNCiAgICAgIHR5cGU6IEFycmF5LA0KICAgICAgcmVxdWlyZWQ6IHRydWUsDQogICAgfSwNCiAgfSwNCiAgZGF0YSgpIHsNCiAgICByZXR1cm4gew0KICAgICAgdmlydHVhbExpc3Q6IFtdLA0KICAgIH07DQogIH0sDQogIG1ldGhvZHM6IHsNCiAgICBjaGFuZ2VTcGVjKHZhbCkgew0KICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlU3BlYycsIHZhbCk7DQogICAgfSwNCiAgICBjb25maXJtKG5hbWUpIHsNCiAgICAgIHRoaXMuJGVtaXQoJ2NvbmZpcm0nLCBuYW1lKTsNCiAgICB9LA0KICAgIG9uTW92ZVNwZWModmFsKSB7DQogICAgICB0aGlzLiRlbWl0KCdvbk1vdmVTcGVjJywgdmFsKTsNCiAgICB9LA0KICAgIGNoYW5nZURlZmF1bHRTZWxlY3QoZSwgaW5kZXgpIHsNCiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZURlZmF1bHRTZWxlY3QnLCBlLCBpbmRleCk7DQogICAgfSwNCiAgICBjaGFuZ2VEZWZhdWx0U2hvdyhpbmRleCkgew0KICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlRGVmYXVsdFNob3cnLCBpbmRleCk7DQogICAgfSwNCiAgICBtb2RhbFBpY1RhcCh0eXBlLCB0YWJsZU5hbWUsIGluZGV4KSB7DQogICAgICB0aGlzLiRlbWl0KCdtb2RhbFBpY1RhcCcsIHR5cGUsIHRhYmxlTmFtZSwgaW5kZXgpOw0KICAgIH0sDQogICAgaGFuZGxlUmVtb3ZlMihpbmRleCwgdHlwZSwgdGFibGVOYW1lKSB7DQogICAgICB0aGlzLiRlbWl0KCdoYW5kbGVSZW1vdmUyJywgaW5kZXgsIHR5cGUsIHRhYmxlTmFtZSk7DQogICAgfSwNCiAgICBiYXRjaEFkZCgpIHsNCiAgICAgIHRoaXMuJGVtaXQoJ2JhdGNoQWRkJyk7DQogICAgfSwNCiAgICBoYW5kbGVBZGRSb2xlKCkgew0KICAgICAgdGhpcy4kZW1pdCgnaGFuZGxlQWRkUm9sZScpOw0KICAgIH0sDQogICAgYmF0Y2hEZWwoKSB7DQogICAgICB0aGlzLiRlbWl0KCdiYXRjaERlbCcpOw0KICAgIH0sDQogICAgaGFuZGxlRm9jdXMoZSkgew0KICAgICAgdGhpcy4kZW1pdCgnaGFuZGxlRm9jdXMnLCBlKTsNCiAgICB9LA0KICAgIGF0dHJEZXRhaWxDaGFuZ2VWYWx1ZSh2YWwsIGluZGV4KSB7DQogICAgICB0aGlzLiRlbWl0KCdhdHRyRGV0YWlsQ2hhbmdlVmFsdWUnLCB2YWwsIGluZGV4KTsNCiAgICB9LA0KICAgIGhhbmRsZUJsdXIoZSkgew0KICAgICAgdGhpcy4kZW1pdCgnaGFuZGxlQmx1cicsIGUpOw0KICAgIH0sDQogICAgYXR0ckNoYW5nZVZhbHVlKHZhbCwgaW5kZXgpIHsNCiAgICAgIHRoaXMuJGVtaXQoJ2F0dHJDaGFuZ2VWYWx1ZScsIHZhbCwgaW5kZXgpOw0KICAgIH0sDQogICAgaGFuZGxlU2hvd1BvcChlKSB7DQogICAgICB0aGlzLiRlbWl0KCdoYW5kbGVTaG93UG9wJywgZSk7DQogICAgfSwNCiAgICBoYW5kbGVTZWxJbWcoZSkgew0KICAgICAgdGhpcy4kZW1pdCgnaGFuZGxlU2VsSW1nJywgZSk7DQogICAgfSwNCiAgICBoYW5kbGVTYXZlQXNUZW1wbGF0ZSgpIHsNCiAgICAgIHRoaXMuJGVtaXQoJ2hhbmRsZVNhdmVBc1RlbXBsYXRlJyk7DQogICAgfSwNCiAgICBhZGRHb29kc0NvdXBvbihpbmRleCwgdHlwZSkgew0KICAgICAgdGhpcy4kZW1pdCgnYWRkR29vZHNDb3Vwb24nLCBpbmRleCwgdHlwZSk7DQogICAgfSwNCiAgICBjaGFuZ2VDdXJyZW50SW5kZXgoaW5kZXgpIHsNCiAgICAgIHRoaXMuJGVtaXQoJ2NoYW5nZUN1cnJlbnRJbmRleCcsIGluZGV4KTsNCiAgICB9LA0KICAgIGFkZFZpcnR1YWwoaW5kZXgsIHR5cGUpIHsNCiAgICAgIHRoaXMuJGVtaXQoJ2FkZFZpcnR1YWwnLCBpbmRleCwgdHlwZSk7DQogICAgfSwNCiAgICBoYW5kbGVSZW1vdmVJbWcoaW5kZXgpIHsNCiAgICAgIHRoaXMuJGVtaXQoJ2hhbmRsZVJlbW92ZUltZycsIGluZGV4KTsNCiAgICB9LA0KICAgIGhhbmRsZVJlbW92ZVJvbGUoaW5kZXgpIHsNCiAgICAgIHRoaXMuJGVtaXQoJ2hhbmRsZVJlbW92ZVJvbGUnLCBpbmRleCk7DQogICAgfSwNCiAgICBzZWUodmFsLCB0eXBlLCBpbmRleCkgew0KICAgICAgdGhpcy4kZW1pdCgnc2VlJywgdmFsLCB0eXBlLCBpbmRleCk7DQogICAgfSwNCiAgICBjcmVhdGVBdHRyKGRhdGEsIGluZGV4KSB7DQogICAgICB0aGlzLiRlbWl0KCdjcmVhdGVBdHRyJywgZGF0YSwgaW5kZXgpOw0KICAgIH0sDQogICAgLy8g55Sf5oiQ5YiX6KGoIOihjCDliJcg5pWw5o2uDQogICAgdGFibGVDZWxsQ2xhc3NOYW1lKHsgcm93LCBjb2x1bW4sIHJvd0luZGV4LCBjb2x1bW5JbmRleCB9KSB7DQogICAgICAvL+azqOaEj+i/memHjOaYr+ino+aehA0KICAgICAgLy/liKnnlKjljZXlhYPmoLznmoQgY2xhc3NOYW1lIOeahOWbnuiwg+aWueazle+8jOe7meihjOWIl+e0ouW8lei1i+WAvA0KICAgICAgcm93LmluZGV4ID0gcm93SW5kZXggfHwgJyc7DQogICAgICBjb2x1bW4uaW5kZXggPSBjb2x1bW5JbmRleDsNCiAgICB9LA0KICAgIC8vIOinhOagvOWbvueJh+a3u+WKoOW8gOWFsw0KICAgIGFkZFBpYyhlLCBpKSB7DQogICAgICBpZiAoZSkgew0KICAgICAgICB0aGlzLmF0dHJzLm1hcCgoaXRlbSwgaWkpID0+IHsNCiAgICAgICAgICBpZiAoaWkgIT09IGkpIHsNCiAgICAgICAgICAgIHRoaXMuJHNldChpdGVtLCAnYWRkX3BpYycsIDApOw0KICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgICAgIHRoaXMuY2FuU2VsID0gZmFsc2U7DQogICAgICB9IGVsc2Ugew0KICAgICAgICB0aGlzLmNhblNlbCA9IHRydWU7DQogICAgICB9DQogICAgfSwNCiAgICAvLyDlkIjlubbljZXlhYPmoLwNCiAgICBvYmplY3RTcGFuTWV0aG9kKHsgcm93LCBjb2x1bW4sIHJvd0luZGV4LCBjb2x1bW5JbmRleCB9KSB7DQogICAgICBpZiAoY29sdW1uSW5kZXggPT09IDAgJiYgcm93SW5kZXggPiAwKSB7DQogICAgICAgIGxldCBsYWJsZSA9IGNvbHVtbi5sYWJlbDsNCiAgICAgICAgLy/ov5nph4zliKTmlq3nrKzlh6DliJfpnIDopoHlkIjlubYNCiAgICAgICAgY29uc3QgdGFnRmFtaWx5ID0gdGhpcy5tYW55Rm9ybVZhbGlkYXRlW3Jvd0luZGV4XS5kZXRhaWxbbGFibGVdOw0KICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubWFueUZvcm1WYWxpZGF0ZS5maW5kSW5kZXgoKGl0ZW0sIGluZGV4KSA9PiB7DQogICAgICAgICAgaWYgKGluZGV4ID4gMCkgcmV0dXJuIGl0ZW0uZGV0YWlsW2xhYmxlXSA9PSB0YWdGYW1pbHk7DQogICAgICAgIH0pOw0KICAgICAgICBpZiAocm93SW5kZXggPT0gaW5kZXgpIHsNCiAgICAgICAgICBsZXQgbGVuID0gMTsNCiAgICAgICAgICBmb3IgKGxldCBpID0gaW5kZXggKyAxOyBpIDwgdGhpcy5tYW55Rm9ybVZhbGlkYXRlLmxlbmd0aDsgaSsrKSB7DQogICAgICAgICAgICBpZiAodGhpcy5tYW55Rm9ybVZhbGlkYXRlW2ldLmRldGFpbFtsYWJsZV0gIT09IHRhZ0ZhbWlseSkgew0KICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGxlbisrOw0KICAgICAgICAgIH0NCiAgICAgICAgICByZXR1cm4gew0KICAgICAgICAgICAgcm93c3BhbjogbGVuLA0KICAgICAgICAgICAgY29sc3BhbjogMSwNCiAgICAgICAgICB9Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgIHJldHVybiB7DQogICAgICAgICAgICByb3dzcGFuOiAwLA0KICAgICAgICAgICAgY29sc3BhbjogMCwNCiAgICAgICAgICB9Ow0KICAgICAgICB9DQogICAgICB9DQogICAgfSwNCiAgfSwNCn07DQo="},{"version":3,"sources":["SpecStock.vue"],"names":[],"mappings":";AA0iBA;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;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;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"SpecStock.vue","sourceRoot":"src/pages/product/productAdd/components","sourcesContent":["<template>\r\n <!-- 规格库存 -->\r\n <el-row :gutter=\"24\">\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"规格类型:\" props=\"spec_type\">\r\n <el-radio-group v-model=\"formValidate.spec_type\" @input=\"changeSpec\">\r\n <el-radio :label=\"0\" class=\"radio\">单规格</el-radio>\r\n <el-radio :label=\"1\">多规格</el-radio>\r\n </el-radio-group>\r\n <el-dropdown v-if=\"formValidate.spec_type == 1\" class=\"ml20\" @command=\"confirm\" trigger=\"hover\">\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 v-for=\"(item, index) in ruleList\" :key=\"index\" :command=\"item.rule_name\">{{\r\n item.rule_name\r\n }}</el-dropdown-item>\r\n </el-dropdown-menu>\r\n </el-dropdown>\r\n </el-form-item>\r\n </el-col>\r\n <!-- 规格设置 -->\r\n <el-col :span=\"24\" v-if=\"formValidate.spec_type === 1\" class=\"noForm\">\r\n <el-form-item label=\"商品规格:\" prop=\"\">\r\n <div class=\"specifications\">\r\n <draggable\r\n group=\"specifications\"\r\n :disabled=\"attrs.length < 2\"\r\n :list=\"attrs\"\r\n handle=\".move-icon\"\r\n @end=\"onMoveSpec\"\r\n animation=\"300\"\r\n >\r\n <div\r\n class=\"specifications-item active\"\r\n v-for=\"(item, index) in attrs\"\r\n :key=\"index\"\r\n @click=\"changeCurrentIndex(index)\"\r\n >\r\n <div class=\"move-icon\">\r\n <span class=\"iconfont icondrag2\"></span>\r\n </div>\r\n <i class=\"del el-icon-error\" @click=\"handleRemoveRole(index, item.value)\"></i>\r\n <div class=\"specifications-item-box\">\r\n <div class=\"lineBox\"></div>\r\n <div class=\"specifications-item-name mb18\">\r\n <el-input\r\n v-model=\"item.value\"\r\n placeholder=\"规格名称\"\r\n @change=\"attrChangeValue(index, item.value)\"\r\n @focus=\"handleFocus(item.value)\"\r\n class=\"specifications-item-name-input\"\r\n maxlength=\"30\"\r\n show-word-limit\r\n ></el-input>\r\n <el-checkbox\r\n class=\"ml20\"\r\n v-model=\"item.add_pic\"\r\n :disabled=\"!item.add_pic && !canSel\"\r\n :true-label=\"1\"\r\n :false-label=\"0\"\r\n @change=\"(e) => addPic(e, index)\"\r\n >添加规格图</el-checkbox\r\n >\r\n <el-tooltip\r\n class=\"item\"\r\n effect=\"dark\"\r\n content=\"添加规格图片, 仅支持打开一个(建议尺寸:800*800)\"\r\n placement=\"right\"\r\n >\r\n <i class=\"el-icon-info\"></i>\r\n </el-tooltip>\r\n </div>\r\n <div class=\"rulesBox ml30\">\r\n <draggable\r\n class=\"item\"\r\n :list=\"item.detail\"\r\n :disabled=\"item.detail.length < 2\"\r\n handle=\".drag\"\r\n @end=\"onMoveSpec\"\r\n >\r\n <div v-for=\"(det, indexn) in item.detail\" :key=\"indexn\" class=\"mr10 spec drag\">\r\n <i class=\"el-icon-error\" @click=\"handleRemove2(item.detail, indexn, det.value)\"></i>\r\n\r\n <el-input\r\n style=\"width: 120px\"\r\n v-model=\"det.value\"\r\n placeholder=\"规格值\"\r\n @change=\"attrDetailChangeValue(det.value, index)\"\r\n @focus=\"handleFocus(det.value)\"\r\n maxlength=\"30\"\r\n @blur=\"handleBlur()\"\r\n >\r\n <template slot=\"prefix\">\r\n <span class=\"iconfont icondrag2\"></span>\r\n </template>\r\n </el-input>\r\n <div class=\"img-popover\" v-if=\"item.add_pic\">\r\n <div class=\"popper-arrow\"></div>\r\n <div class=\"popper\" @click=\"handleSelImg(det, indexn)\">\r\n <img class=\"img\" v-if=\"det.pic\" :src=\"det.pic\" />\r\n <i v-else class=\"el-icon-plus\"></i>\r\n </div>\r\n <i v-if=\"det.pic\" class=\"img-del el-icon-error\" @click=\"handleRemoveImg(det)\"></i>\r\n </div>\r\n </div>\r\n <el-popover\r\n :ref=\"'popoverRef_' + index\"\r\n placement=\"\"\r\n width=\"210\"\r\n trigger=\"click\"\r\n @after-enter=\"handleShowPop(index)\"\r\n >\r\n <el-input\r\n :ref=\"'inputRef_' + index\"\r\n placeholder=\"请输入规格值\"\r\n v-model=\"formDynamic.attrsVal\"\r\n @keyup.enter.native=\"createAttr(formDynamic.attrsVal, index)\"\r\n @blur=\"createAttr(formDynamic.attrsVal, index)\"\r\n maxlength=\"30\"\r\n show-word-limit\r\n >\r\n </el-input>\r\n <div class=\"addfont\" slot=\"reference\" type=\"text\" v-db-click>添加规格值</div>\r\n </el-popover>\r\n </draggable>\r\n </div>\r\n </div>\r\n </div>\r\n </draggable>\r\n <el-button v-if=\"attrs.length < 4\" v-db-click @click=\"handleAddRole()\">添加新规格</el-button>\r\n <el-button v-if=\"attrs.length >= 1\" type=\"text\" v-db-click @click=\"handleSaveAsTemplate()\"\r\n >另存为模板</el-button\r\n >\r\n </div>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\" v-if=\"formValidate.spec_type === 1\">\r\n <el-form-item label=\"商品属性:\" class=\"labeltop\" v-if=\"manyFormValidate.length\">\r\n <VirtualScroll\r\n :data=\"manyFormValidate\"\r\n :buffer=\"50\"\r\n :height=\"62\"\r\n key-prop=\"index\"\r\n @change=\"(renderData) => (virtualList = renderData)\"\r\n >\r\n <!-- <el-table row-key=\"id\" :data=\"virtualList\" height=\"500px\"> </el-table> -->\r\n <el-table\r\n row-key=\"index\"\r\n height=\"700px\"\r\n :data=\"manyFormValidate\"\r\n style=\"width: 100%\"\r\n :cell-class-name=\"tableCellClassName\"\r\n :span-method=\"objectSpanMethod\"\r\n border\r\n :key=\"tableKey\"\r\n >\r\n <el-table-column\r\n v-for=\"(item, index) in formValidate.header\"\r\n :key=\"index\"\r\n :label=\"item.title\"\r\n :min-width=\"item.minWidth || '100'\"\r\n :fixed=\"item.fixed\"\r\n >\r\n <template slot-scope=\"scope\">\r\n <!-- 批量设置 -->\r\n <template v-if=\"scope.$index == 0\">\r\n <template v-if=\"item.key\">\r\n <div v-if=\"attrs.length && attrs[scope.column.index] && manyFormValidate.length\">\r\n <el-select v-model=\"oneFormBatch[0][item.title]\" :placeholder=\"`请选择${item.title}`\" clearable>\r\n <el-option\r\n v-for=\"val in attrs[scope.column.index].detail\"\r\n :key=\"val.value\"\r\n :label=\"val.value\"\r\n :value=\"val.value\"\r\n >\r\n </el-option>\r\n </el-select>\r\n </div>\r\n </template>\r\n <template v-else-if=\"item.slot === 'pic'\">\r\n <div class=\"acea-row row-middle\" v-db-click @click=\"modalPicTap('dan', 'duopi', scope.$index)\">\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 :max=\"9999999999\"\r\n class=\"priceBox\"\r\n clearable\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 :min=\"0\"\r\n :max=\"9999999999\"\r\n class=\"priceBox\"\r\n clearable\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 :min=\"0\"\r\n class=\"priceBox\"\r\n clearable\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 :disabled=\"formValidate.virtual_type == 1\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n class=\"priceBox\"\r\n clearable\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'fictitious'\"> -- </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 === 'bar_code_number'\">\r\n <el-input v-model=\"oneFormBatch[0].bar_code_number\"></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 :step=\"0.1\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n class=\"priceBox\"\r\n clearable\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 :step=\"0.1\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n class=\"priceBox\"\r\n clearable\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'selected_spec'\"> -- </template>\r\n <template v-else-if=\"item.slot === 'action'\">\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 </template>\r\n <template v-else>\r\n <template v-if=\"item.key\">\r\n <div>\r\n <span>{{ scope.row.detail[item.key] }}</span>\r\n </div>\r\n </template>\r\n <template v-if=\"item.slot === 'pic'\">\r\n <div class=\"acea-row row-middle\" v-db-click @click=\"modalPicTap('dan', 'duoTable', scope.$index)\">\r\n <div class=\"pictrue pictrueTab\" v-if=\"manyFormValidate[scope.$index].pic\">\r\n <img v-lazy=\"manyFormValidate[scope.$index].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-if=\"item.slot === 'price'\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"manyFormValidate[scope.$index].price\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\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=\"manyFormValidate[scope.$index].cost\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\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=\"manyFormValidate[scope.$index].ot_price\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\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=\"manyFormValidate[scope.$index].stock\"\r\n :disabled=\"formValidate.virtual_type == 1\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n :precision=\"0\"\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=\"manyFormValidate[scope.$index].bar_code\"></el-input>\r\n </template>\r\n <template v-else-if=\"item.slot === 'bar_code_number'\">\r\n <el-input v-model=\"manyFormValidate[scope.$index].bar_code_number\"></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=\"manyFormValidate[scope.$index].weight\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\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=\"manyFormValidate[scope.$index].volume\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n class=\"priceBox\"\r\n ></el-input-number>\r\n </template>\r\n <template v-else-if=\"item.slot === 'fictitious'\">\r\n <el-button\r\n v-if=\"!manyFormValidate[scope.$index].coupon_id && formValidate.virtual_type == 2\"\r\n v-db-click\r\n @click=\"addGoodsCoupon(scope.$index, 'manyFormValidate')\"\r\n >选择优惠券</el-button\r\n >\r\n <span\r\n class=\"see\"\r\n v-else-if=\"manyFormValidate[scope.$index].coupon_id && formValidate.virtual_type == 2\"\r\n v-db-click\r\n @click=\"see(manyFormValidate[scope.$index], 'manyFormValidate', scope.$index)\"\r\n >{{ manyFormValidate[scope.$index].coupon_name }}</span\r\n >\r\n <el-button\r\n v-else-if=\"\r\n !manyFormValidate[scope.$index].virtual_list.length &&\r\n !manyFormValidate[scope.$index].stock &&\r\n formValidate.virtual_type == 1\r\n \"\r\n v-db-click\r\n @click=\"addVirtual(scope.$index, 'manyFormValidate')\"\r\n >添加卡密</el-button\r\n >\r\n <span\r\n class=\"see\"\r\n v-else-if=\"\r\n (manyFormValidate[scope.$index].virtual_list.length || manyFormValidate[scope.$index].stock) &&\r\n formValidate.virtual_type == 1\r\n \"\r\n v-db-click\r\n @click=\"see(manyFormValidate[scope.$index], 'manyFormValidate', scope.$index)\"\r\n >已设置</span\r\n >\r\n </template>\r\n\r\n <template v-else-if=\"item.slot === 'selected_spec'\">\r\n <el-switch\r\n v-model=\"manyFormValidate[scope.$index].is_default_select\"\r\n :active-value=\"1\"\r\n :inactive-value=\"0\"\r\n @change=\"(e) => changeDefaultSelect(e, scope.$index)\"\r\n />\r\n </template>\r\n <template v-else-if=\"item.slot === 'action'\">\r\n <el-switch\r\n class=\"defineSwitch\"\r\n v-model=\"manyFormValidate[scope.$index].is_show\"\r\n active-text=\"显示\"\r\n inactive-text=\"隐藏\"\r\n :active-value=\"1\"\r\n :inactive-value=\"0\"\r\n @change=\"changeDefaultShow(scope.$index)\"\r\n />\r\n </template>\r\n </template>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n </VirtualScroll>\r\n </el-form-item>\r\n </el-col>\r\n <!-- ------------------------------------------------- -->\r\n <!-- 单规格表格-->\r\n <div v-if=\"formValidate.spec_type === 0\">\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"图片:\">\r\n <div class=\"pictrueBox\" v-db-click @click=\"modalPicTap('dan', 'danTable', 0)\">\r\n <div class=\"pictrue\" v-if=\"oneFormValidate[0].pic\">\r\n <img v-lazy=\"oneFormValidate[0].pic\" />\r\n <el-input v-model=\"oneFormValidate[0].pic\" style=\"display: none\"></el-input>\r\n </div>\r\n <div class=\"upLoad acea-row row-center-wrapper\" v-else>\r\n <el-input v-model=\"oneFormValidate[0].pic\" style=\"display: none\"></el-input>\r\n <i class=\"el-icon-picture-outline\" style=\"font-size: 24px\"></i>\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 <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormValidate[0].price\"\r\n :min=\"0\"\r\n :precision=\"2\"\r\n :max=\"9999999999\"\r\n class=\"input_width input-number-unit-class\"\r\n :active-change=\"false\"\r\n class-unit=\"元\"\r\n ></el-input-number>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"成本价:\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormValidate[0].cost\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n :precision=\"2\"\r\n :active-change=\"false\"\r\n class=\"input_width input-number-unit-class\"\r\n class-unit=\"元\"\r\n ></el-input-number>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"划线价:\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormValidate[0].ot_price\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n :precision=\"2\"\r\n :active-change=\"false\"\r\n class=\"input_width input-number-unit-class\"\r\n class-unit=\"元\"\r\n ></el-input-number>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"库存:\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormValidate[0].stock\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n :disabled=\"formValidate.virtual_type == 1\"\r\n :precision=\"0\"\r\n class=\"input_width input-number-unit-class\"\r\n :class-unit=\"formValidate.unit_name || '件'\"\r\n ></el-input-number>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"商品编码:\">\r\n <el-input v-model.trim=\"oneFormValidate[0].bar_code\" class=\"input_width\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"条形码:\">\r\n <el-input v-model.trim=\"oneFormValidate[0].bar_code_number\" class=\"input_width\"></el-input>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\" v-if=\"formValidate.virtual_type == 0\">\r\n <el-form-item label=\"重量:\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormValidate[0].weight\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n class=\"input_width input-number-unit-class\"\r\n class-unit=\"kg\"\r\n ></el-input-number>\r\n </el-form-item>\r\n </el-col>\r\n <el-col :span=\"24\">\r\n <el-form-item label=\"体积:\" v-if=\"formValidate.virtual_type == 0\">\r\n <el-input-number\r\n :controls=\"false\"\r\n v-model=\"oneFormValidate[0].volume\"\r\n :min=\"0\"\r\n :max=\"9999999999\"\r\n class=\"input_width input-number-unit-class\"\r\n class-unit=\"m³\"\r\n ></el-input-number>\r\n </el-form-item>\r\n </el-col>\r\n\r\n <el-col :span=\"24\">\r\n <el-form-item\r\n :label=\"formValidate.virtual_type == 1 ? '添加卡密/网盘:' : '选择优惠券:'\"\r\n v-if=\"formValidate.virtual_type == 1 || formValidate.virtual_type == 2\"\r\n >\r\n <el-button\r\n v-if=\"!oneFormValidate[0].coupon_id && formValidate.virtual_type == 2\"\r\n v-db-click\r\n @click=\"addGoodsCoupon(0, 'oneFormValidate')\"\r\n >选择优惠券</el-button\r\n >\r\n <span\r\n class=\"see\"\r\n v-else-if=\"oneFormValidate[0].coupon_id && formValidate.virtual_type == 2\"\r\n v-db-click\r\n @click=\"see(oneFormValidate[0], 'oneFormValidate', 0)\"\r\n >{{ oneFormValidate[0].coupon_name }}</span\r\n >\r\n <el-button\r\n v-if=\"\r\n !oneFormValidate[0].virtual_list.length && !oneFormValidate[0].stock && formValidate.virtual_type == 1\r\n \"\r\n v-db-click\r\n @click=\"addVirtual(0, 'oneFormValidate')\"\r\n >添加卡密</el-button\r\n >\r\n <span\r\n class=\"see\"\r\n v-else-if=\"\r\n (oneFormValidate[0].virtual_list.length || oneFormValidate[0].stock > 0) && formValidate.virtual_type == 1\r\n \"\r\n v-db-click\r\n @click=\"see(oneFormValidate[0], 'oneFormValidate', 0)\"\r\n >已设置</span\r\n >\r\n </el-form-item>\r\n </el-col>\r\n </div>\r\n </el-row>\r\n</template>\r\n\r\n<script>\r\nimport vuedraggable from 'vuedraggable';\r\nimport VirtualScroll from './virtualTabel.vue';\r\nexport default {\r\n name: 'SpecStock',\r\n components: {\r\n draggable: vuedraggable,\r\n VirtualScroll,\r\n },\r\n props: {\r\n formValidate: {\r\n type: Object,\r\n required: true,\r\n },\r\n ruleList: {\r\n type: Array,\r\n required: true,\r\n },\r\n attrs: {\r\n type: Array,\r\n required: true,\r\n },\r\n manyFormValidate: {\r\n type: Array,\r\n required: true,\r\n },\r\n oneFormValidate: {\r\n type: Array,\r\n required: true,\r\n },\r\n tableKey: {\r\n type: Number,\r\n required: true,\r\n },\r\n canSel: {\r\n type: Boolean,\r\n required: true,\r\n },\r\n formDynamic: {\r\n type: Object,\r\n required: true,\r\n },\r\n oneFormBatch: {\r\n type: Array,\r\n required: true,\r\n },\r\n },\r\n data() {\r\n return {\r\n virtualList: [],\r\n };\r\n },\r\n methods: {\r\n changeSpec(val) {\r\n this.$emit('changeSpec', val);\r\n },\r\n confirm(name) {\r\n this.$emit('confirm', name);\r\n },\r\n onMoveSpec(val) {\r\n this.$emit('onMoveSpec', val);\r\n },\r\n changeDefaultSelect(e, index) {\r\n this.$emit('changeDefaultSelect', e, index);\r\n },\r\n changeDefaultShow(index) {\r\n this.$emit('changeDefaultShow', index);\r\n },\r\n modalPicTap(type, tableName, index) {\r\n this.$emit('modalPicTap', type, tableName, index);\r\n },\r\n handleRemove2(index, type, tableName) {\r\n this.$emit('handleRemove2', index, type, tableName);\r\n },\r\n batchAdd() {\r\n this.$emit('batchAdd');\r\n },\r\n handleAddRole() {\r\n this.$emit('handleAddRole');\r\n },\r\n batchDel() {\r\n this.$emit('batchDel');\r\n },\r\n handleFocus(e) {\r\n this.$emit('handleFocus', e);\r\n },\r\n attrDetailChangeValue(val, index) {\r\n this.$emit('attrDetailChangeValue', val, index);\r\n },\r\n handleBlur(e) {\r\n this.$emit('handleBlur', e);\r\n },\r\n attrChangeValue(val, index) {\r\n this.$emit('attrChangeValue', val, index);\r\n },\r\n handleShowPop(e) {\r\n this.$emit('handleShowPop', e);\r\n },\r\n handleSelImg(e) {\r\n this.$emit('handleSelImg', e);\r\n },\r\n handleSaveAsTemplate() {\r\n this.$emit('handleSaveAsTemplate');\r\n },\r\n addGoodsCoupon(index, type) {\r\n this.$emit('addGoodsCoupon', index, type);\r\n },\r\n changeCurrentIndex(index) {\r\n this.$emit('changeCurrentIndex', index);\r\n },\r\n addVirtual(index, type) {\r\n this.$emit('addVirtual', index, type);\r\n },\r\n handleRemoveImg(index) {\r\n this.$emit('handleRemoveImg', index);\r\n },\r\n handleRemoveRole(index) {\r\n this.$emit('handleRemoveRole', index);\r\n },\r\n see(val, type, index) {\r\n this.$emit('see', val, type, index);\r\n },\r\n createAttr(data, index) {\r\n this.$emit('createAttr', data, index);\r\n },\r\n // 生成列表 行 列 数据\r\n tableCellClassName({ row, column, rowIndex, columnIndex }) {\r\n //注意这里是解构\r\n //利用单元格的 className 的回调方法,给行列索引赋值\r\n row.index = rowIndex || '';\r\n column.index = columnIndex;\r\n },\r\n // 规格图片添加开关\r\n addPic(e, i) {\r\n if (e) {\r\n this.attrs.map((item, ii) => {\r\n if (ii !== i) {\r\n this.$set(item, 'add_pic', 0);\r\n }\r\n });\r\n this.canSel = false;\r\n } else {\r\n this.canSel = true;\r\n }\r\n },\r\n // 合并单元格\r\n objectSpanMethod({ row, column, rowIndex, columnIndex }) {\r\n if (columnIndex === 0 && rowIndex > 0) {\r\n let lable = column.label;\r\n //这里判断第几列需要合并\r\n const tagFamily = this.manyFormValidate[rowIndex].detail[lable];\r\n const index = this.manyFormValidate.findIndex((item, index) => {\r\n if (index > 0) return item.detail[lable] == tagFamily;\r\n });\r\n if (rowIndex == index) {\r\n let len = 1;\r\n for (let i = index + 1; i < this.manyFormValidate.length; i++) {\r\n if (this.manyFormValidate[i].detail[lable] !== tagFamily) {\r\n break;\r\n }\r\n len++;\r\n }\r\n return {\r\n rowspan: len,\r\n colspan: 1,\r\n };\r\n } else {\r\n return {\r\n rowspan: 0,\r\n colspan: 0,\r\n };\r\n }\r\n }\r\n },\r\n },\r\n};\r\n</script>\r\n<style lang=\"scss\" scoped>\r\n@use '../productAdd.scss' as *;\r\n</style>\r\n"]}]}