Files
ipms-sjy/yudao-ui-admin/src/views/mall/product/spu/index.vue

718 lines
20 KiB
Vue
Raw Normal View History

2022-05-18 17:12:03 +08:00
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
2022-08-18 22:38:51 +08:00
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
2022-05-18 17:12:03 +08:00
<el-form-item label="商品名称" prop="name">
2022-08-18 22:38:51 +08:00
<el-input
v-model="queryParams.name"
placeholder="请输入商品名称"
clearable
@keyup.enter.native="handleQuery"
/>
2022-05-18 17:12:03 +08:00
</el-form-item>
<el-form-item label="卖点" prop="sellPoint">
2022-08-18 22:38:51 +08:00
<el-input
v-model="queryParams.sellPoint"
placeholder="请输入卖点"
clearable
@keyup.enter.native="handleQuery"
/>
2022-05-18 17:12:03 +08:00
</el-form-item>
<el-form-item label="分类id" prop="categoryId">
2022-08-18 22:38:51 +08:00
<el-input
v-model="queryParams.categoryId"
placeholder="请输入分类id"
clearable
@keyup.enter.native="handleQuery"
/>
2022-05-18 17:12:03 +08:00
</el-form-item>
2022-05-31 23:54:43 +08:00
<el-form-item label="价格(分)" prop="price">
2022-08-18 22:38:51 +08:00
<el-input
v-model="queryParams.price"
placeholder="请输入价格 单位使用:分"
clearable
@keyup.enter.native="handleQuery"
/>
2022-05-18 17:12:03 +08:00
</el-form-item>
<el-form-item label="库存数量" prop="quantity">
2022-08-18 22:38:51 +08:00
<el-input
v-model="queryParams.quantity"
placeholder="请输入库存数量"
clearable
@keyup.enter.native="handleQuery"
/>
2022-05-18 17:12:03 +08:00
</el-form-item>
2022-05-31 23:54:43 +08:00
<el-form-item label="状态" prop="status">
2022-08-18 22:38:51 +08:00
<el-select
v-model="queryParams.status"
placeholder="请选择上下架状态"
clearable
size="small"
>
<el-option label="请选择字典生成" value="" />
<el-option label="上架" value="0" />
<el-option label="下架" value="1" />
2022-05-18 17:12:03 +08:00
</el-select>
</el-form-item>
<el-form-item label="创建时间">
2022-08-18 22:38:51 +08:00
<el-date-picker
v-model="dateRangeCreateTime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期"
/>
2022-05-18 17:12:03 +08:00
</el-form-item>
<el-form-item>
2022-08-18 22:38:51 +08:00
<el-button type="primary" icon="el-icon-search" @click="handleQuery"
>搜索</el-button
>
2022-05-18 17:12:03 +08:00
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<!-- 操作工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
2022-08-18 22:38:51 +08:00
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['product:spu:create']"
>新增
2022-06-05 22:43:20 +08:00
</el-button>
2022-05-18 17:12:03 +08:00
</el-col>
<el-col :span="1.5">
2022-08-18 22:38:51 +08:00
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['product:spu:export']"
>导出
2022-06-05 22:43:20 +08:00
</el-button>
2022-05-18 17:12:03 +08:00
</el-col>
2022-08-18 22:38:51 +08:00
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
2022-05-18 17:12:03 +08:00
</el-row>
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
2022-08-18 22:38:51 +08:00
<el-table-column label="主键" align="center" prop="id" />
<el-table-column label="商品名称" align="center" prop="name" />
2022-07-06 17:06:19 +08:00
<!-- <el-table-column label="卖点" align="center" prop="sellPoint"/>-->
<!-- <el-table-column label="描述" align="center" prop="description"/>-->
2022-08-18 22:38:51 +08:00
<el-table-column label="分类id" align="center" prop="categoryId" />
2022-07-01 20:37:41 +08:00
<el-table-column label="商品主图地址" align="center" prop="picUrls">
<template slot-scope="scope">
2022-08-18 22:38:51 +08:00
<img
v-if="scope.row.picUrls"
:src="scope.row.picUrls[0]"
alt="分类图片"
class="img-height"
/>
2022-07-01 20:37:41 +08:00
</template>
</el-table-column>
2022-08-18 22:38:51 +08:00
<el-table-column label="排序字段" align="center" prop="sort" />
<el-table-column label="点赞初始人数" align="center" prop="likeCount" />
<el-table-column label="价格 (分)" align="center" prop="price" />
<el-table-column label="库存数量" align="center" prop="quantity" />
2022-07-06 17:06:19 +08:00
<!-- <el-table-column label="状态" align="center" prop="status"/>-->
2022-08-18 22:38:51 +08:00
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
>
2022-05-18 17:12:03 +08:00
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
2022-08-18 22:38:51 +08:00
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
2022-05-18 17:12:03 +08:00
<template slot-scope="scope">
2022-08-18 22:38:51 +08:00
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['product:spu:update']"
>修改
2022-06-05 22:43:20 +08:00
</el-button>
2022-08-18 22:38:51 +08:00
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['product:spu:delete']"
>删除
2022-06-05 22:43:20 +08:00
</el-button>
2022-05-18 17:12:03 +08:00
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
2022-08-18 22:38:51 +08:00
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNo"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
2022-05-18 17:12:03 +08:00
2022-08-23 20:27:39 +08:00
<el-dialog :title="title" :visible.sync="open" width="900px" append-to-body destroy-on-close :close-on-click-modal="false" >
2022-08-31 18:52:26 +08:00
<save @closeDialog="closeDialog" :type="dialogType" :obj="dialogObj" v-if="open" />
</el-dialog>
2022-05-18 17:12:03 +08:00
</div>
</template>
<script>
2022-08-18 22:38:51 +08:00
import {
createSpu,
updateSpu,
deleteSpu,
getSpu,
getSpuPage,
exportSpuExcel,
} from "@/api/mall/product/spu";
2022-07-06 17:06:19 +08:00
import {
createProductCategory,
deleteProductCategory,
2022-07-06 17:06:19 +08:00
exportCategoryExcel,
getProductCategory,
getProductCategoryList,
2022-08-18 22:38:51 +08:00
updateProductCategory,
2022-07-06 17:06:19 +08:00
} from "@/api/mall/product/category";
import {
createProperty,
updateProperty,
deleteProperty,
getProperty,
getPropertyPage,
2022-08-18 22:38:51 +08:00
exportPropertyExcel,
2022-07-06 17:06:19 +08:00
} from "@/api/mall/product/property";
2022-05-18 17:12:03 +08:00
2022-08-18 22:38:51 +08:00
import Editor from "@/components/Editor";
import ImageUpload from "@/components/ImageUpload";
import save from "./save";
2022-06-10 17:23:35 +08:00
2022-07-06 17:06:19 +08:00
export default {
name: "Spu",
components: {
2022-08-18 22:38:51 +08:00
Editor,
ImageUpload,
save,
2022-07-06 17:06:19 +08:00
},
data() {
return {
tableLeftTitles: [],
dbTagValues: [],
allhistoryTags: [],
unUseTags: [],
propertyPageList: [],
isShowTagInput: false,
addTagInput: {
2022-08-18 22:38:51 +08:00
name: "",
propertyId: "",
2022-07-06 17:06:19 +08:00
selectValues: [],
selectValueIds: [],
2022-08-18 22:38:51 +08:00
selectObect: [],
2022-07-06 17:06:19 +08:00
},
skuTags: [],
propName: {
checkStrictly: true,
2022-08-18 22:38:51 +08:00
label: "name",
value: "id",
2022-07-06 17:06:19 +08:00
},
categoryList: [],
// 遮罩层
loading: true,
// 导出遮罩层
exportLoading: false,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 商品spu列表
list: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
2022-08-31 18:52:26 +08:00
// 弹出层类型
dialogType: "add",
// 弹出层参数
dialogObj:{},
2022-07-06 17:06:19 +08:00
dateRangeCreateTime: [],
// 查询参数
queryParams: {
pageNo: 1,
pageSize: 10,
name: null,
sellPoint: null,
description: null,
categoryId: null,
picUrls: null,
sort: null,
likeCount: null,
price: null,
quantity: null,
status: null,
},
// 表单参数
form: {
id: undefined,
name: undefined,
sellPoint: undefined,
description: undefined,
categoryId: undefined,
categoryIds: [],
picUrls: undefined,
sort: undefined,
likeCount: undefined,
price: undefined,
quantity: undefined,
status: undefined,
isShowTagInput: undefined,
skus: [],
},
// 表单校验
rules: {
2022-08-18 22:38:51 +08:00
sellPoint: [
{ required: true, message: "卖点不能为空", trigger: "blur" },
],
description: [
{ required: true, message: "描述不能为空", trigger: "blur" },
],
categoryIds: [
{ required: true, message: "分类id不能为空", trigger: "blur" },
],
picUrls: [{ required: true, message: "商品主图地址", trigger: "blur" }],
sort: [
{ required: true, message: "排序字段不能为空", trigger: "blur" },
],
2022-07-06 17:06:19 +08:00
},
tagIndex: 0,
};
},
created() {
this.getList();
this.getPropertyPageList();
this.getListCategory();
},
methods: {
getTableSpecData() {
2022-08-18 22:38:51 +08:00
return this.value;
2022-07-06 17:06:19 +08:00
},
2022-08-18 22:38:51 +08:00
tableSpanMethod({ row, column, rowIndex, columnIndex }) {},
2022-07-06 17:06:19 +08:00
changeSkuStatus(tagIndex) {
if (this.form.skus[tagIndex].status == 0) {
this.form.skus[tagIndex].status = 1;
} else {
this.form.skus[tagIndex].status = 0;
}
},
skuAddProdName() {
if (this.initing) {
2022-08-18 22:38:51 +08:00
return;
2022-07-06 17:06:19 +08:00
}
2022-08-18 22:38:51 +08:00
let skuList = [];
2022-07-06 17:06:19 +08:00
for (let i = 0; i < this.value.length; i++) {
2022-08-18 22:38:51 +08:00
const sku = Object.assign({}, this.value[i]);
2022-07-06 17:06:19 +08:00
if (!sku.properties) {
2022-08-18 22:38:51 +08:00
return;
2022-07-06 17:06:19 +08:00
}
2022-08-18 22:38:51 +08:00
sku.skuName = "";
let properties = sku.properties.split(";");
2022-07-06 17:06:19 +08:00
for (const propertiesKey in properties) {
2022-08-18 22:38:51 +08:00
sku.skuName += properties[propertiesKey].split(":")[1] + " ";
2022-07-06 17:06:19 +08:00
}
2022-08-18 22:38:51 +08:00
sku.prodName = this.prodName + " " + sku.skuName;
skuList.push(sku);
2022-07-06 17:06:19 +08:00
}
2022-08-18 22:38:51 +08:00
this.$emit("input", skuList);
2022-07-06 17:06:19 +08:00
},
2022-08-18 22:38:51 +08:00
handleTagClose(tagIndex, tagItemIndex) {},
2022-07-06 17:06:19 +08:00
//确定添加sku规格
addTag() {
let skus = this.unUseTags.map(function (item, index) {
2022-08-18 22:38:51 +08:00
return item.name;
2022-07-06 17:06:19 +08:00
});
let index = skus.indexOf(this.addTagInput.name);
2022-06-10 17:23:35 +08:00
2022-07-06 17:06:19 +08:00
this.addTagInput.propertyId = this.unUseTags[index].id;
for (let i = 0; i < this.addTagInput.selectValues.length; i++) {
2022-08-18 22:38:51 +08:00
for (
let j = 0;
j < this.unUseTags[index].propertyValueList.length;
j++
) {
if (
this.addTagInput.selectValues[i] ===
this.unUseTags[index].propertyValueList[j].name
) {
this.addTagInput.selectValueIds.push(
this.unUseTags[index].propertyValueList[j].id
);
2022-07-06 17:06:19 +08:00
this.addTagInput.selectObect.push({
2022-08-18 22:38:51 +08:00
id: this.unUseTags[index].propertyValueList[j].id,
name: this.unUseTags[index].propertyValueList[j].name,
});
2022-07-06 17:06:19 +08:00
}
}
}
2022-08-18 22:38:51 +08:00
let addTagInput = JSON.parse(JSON.stringify(this.addTagInput));
2022-07-06 17:06:19 +08:00
this.skuTags.push(addTagInput);
2022-06-10 17:23:35 +08:00
2022-07-06 17:06:19 +08:00
// if (this.skuTags.length > 1) {
this.skuTags = this.skuTags.sort((a, b) => a.propertyId - b.propertyId);
2022-08-18 22:38:51 +08:00
this.skuTags.forEach(function (item, index) {
item.selectObect = item.selectObect.sort((a, b) => a.id - b.id);
});
2022-06-05 22:43:20 +08:00
2022-08-18 22:38:51 +08:00
for (let i = 0; i < this.skuTags.length; i++) {
let selectValueIds = [];
let selectValues = [];
2022-07-06 17:06:19 +08:00
for (let j = 0; j < this.skuTags[i].selectObect.length; j++) {
selectValueIds.push(this.skuTags[i].selectObect[j].id);
selectValues.push(this.skuTags[i].selectObect[j].name);
}
this.skuTags[i].selectValues = selectValues;
this.skuTags[i].selectValueIds = selectValueIds;
}
2022-06-05 22:43:20 +08:00
2022-07-06 17:06:19 +08:00
this.unUseTags.splice(index, 1);
this.isShowTagInput = false;
this.getTable();
},
getTable() {
this.form.skus = [];
let skuTags = JSON.parse(JSON.stringify(this.skuTags));
let sku1s = [];
let skuIds = [];
let propertyIds = [];
let propertyNames = [];
for (let i = 0; i < skuTags.length; i++) {
sku1s.push(skuTags[i].selectValues);
skuIds.push(skuTags[i].selectValueIds);
propertyIds.push(skuTags[i].propertyId);
propertyNames.push(skuTags[i].name);
}
2022-06-10 17:23:35 +08:00
2022-08-18 22:38:51 +08:00
let skuAll = sku1s.reduce(
(x, y) => {
let arr = [];
x.forEach((m) => y.forEach((y) => arr.push(m.concat([y]))));
return arr;
},
[[]]
);
2022-07-04 14:06:53 +08:00
2022-08-18 22:38:51 +08:00
let skuIdAll = skuIds.reduce(
(x, y) => {
let arr = [];
x.forEach((m) => y.forEach((y) => arr.push(m.concat([y]))));
return arr;
},
[[]]
);
2022-06-10 17:23:35 +08:00
2022-07-06 17:06:19 +08:00
for (let i = 0; i < skuAll.length; i++) {
let han = {
propertyNames: propertyNames,
propertyIds: propertyIds,
propertyChildNames: skuAll[i],
propertyChildIds: skuIdAll[i],
properties: [],
2022-08-18 22:38:51 +08:00
picUrl: "",
costPrice: "",
originalPrice: "",
spuId: "",
prodName: "",
price: "",
barCode: "",
status: "0",
};
2022-07-06 17:06:19 +08:00
this.form.skus.push(han);
}
2022-08-18 22:38:51 +08:00
this.form.skus.forEach((x) => {
2022-07-06 17:06:19 +08:00
x.properties = [];
for (let i = 0; i < x.propertyIds.length; i++) {
x.properties.push({
propertyId: x.propertyIds[i],
2022-08-18 22:38:51 +08:00
valueId: x.propertyChildIds[i],
});
2022-07-06 17:06:19 +08:00
}
2022-08-18 22:38:51 +08:00
});
2022-07-06 17:06:19 +08:00
},
hideTagInput() {
this.isShowTagInput = false;
this.addTagInput = {
2022-08-18 22:38:51 +08:00
name: "",
propertyId: "",
2022-07-06 17:06:19 +08:00
selectValues: [],
selectValueIds: [],
selectObect: [],
};
},
shopTagInput() {
if (this.unUseTags.length <= 0) {
2022-08-18 22:38:51 +08:00
return this.$message.error("规格已经添加完毕");
2022-07-06 17:06:19 +08:00
}
this.isShowTagInput = true;
this.addTagInput = {
2022-08-18 22:38:51 +08:00
name: "",
propertyId: "",
2022-07-06 17:06:19 +08:00
selectValues: [],
selectValueIds: [],
selectObect: [],
};
},
//删除已选的规格
removeTag(row) {
let skus = this.allhistoryTags.map(function (item, index) {
2022-08-18 22:38:51 +08:00
return item.name;
});
2022-07-06 17:06:19 +08:00
let index = skus.indexOf(this.skuTags[row].name);
this.unUseTags.push(this.allhistoryTags[index]);
this.skuTags.splice(row, 1);
this.getTable();
},
handleTagClick(row) {
for (let i = 0; i < this.propertyPageList.length; i++) {
if (row == this.propertyPageList[i].name) {
2022-08-18 22:38:51 +08:00
this.dbTagValues = this.propertyPageList[i].propertyValueList;
2022-07-06 17:06:19 +08:00
}
}
},
/** 查询规格 */
getPropertyPageList() {
// 执行查询
2022-08-18 22:38:51 +08:00
getPropertyPage().then((response) => {
2022-07-06 17:06:19 +08:00
this.propertyPageList = response.data.list;
2022-06-10 17:23:35 +08:00
2022-07-06 17:06:19 +08:00
this.unUseTags = this.propertyPageList.map(function (item, index) {
2022-08-18 22:38:51 +08:00
return item;
});
2022-07-06 17:06:19 +08:00
this.allhistoryTags = JSON.parse(JSON.stringify(this.unUseTags));
});
},
/** 查询分类 */
getListCategory() {
// 执行查询
2022-08-18 22:38:51 +08:00
getProductCategoryList().then((response) => {
2022-07-06 17:06:19 +08:00
this.categoryList = this.handleTree(response.data, "id", "parentId");
});
},
/** 查询列表 */
getList() {
this.loading = true;
// 处理查询参数
2022-08-18 22:38:51 +08:00
let params = { ...this.queryParams };
this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
2022-07-06 17:06:19 +08:00
// 执行查询
2022-08-18 22:38:51 +08:00
getSpuPage(params).then((response) => {
2022-07-06 17:06:19 +08:00
this.list = response.data.list;
this.total = response.data.total;
this.loading = false;
});
},
/** 取消按钮 */
cancel() {
this.open = false;
this.reset();
},
/** 表单重置 */
reset() {
this.form = {
id: undefined,
name: undefined,
sellPoint: undefined,
description: undefined,
categoryId: undefined,
categoryIds: [],
picUrls: undefined,
sort: undefined,
likeCount: undefined,
price: undefined,
quantity: undefined,
status: undefined,
isShowTagInput: undefined,
skus: [],
};
this.skuTags = [];
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNo = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.dateRangeCreateTime = [];
this.resetForm("queryForm");
this.handleQuery();
},
/** 新增按钮操作 */
handleAdd() {
2022-08-31 18:52:26 +08:00
this.dialogType = "add";
this.dialogObj={};
2022-07-06 17:06:19 +08:00
this.open = true;
this.title = "添加商品spu";
},
/** 修改按钮操作 */
handleUpdate(row) {
2022-08-31 18:52:26 +08:00
this.dialogType = "upd";
this.dialogObj.id = row.id;
this.open = true;
console.log("修改")
this.title = "修改商品spu";
2022-07-06 17:06:19 +08:00
},
2022-08-31 18:52:26 +08:00
closeDialog(){
console.log("关闭")
this.dialogType = "add";
this.dialogObj={};
this.open = false;
this.getList()
2022-07-06 17:06:19 +08:00
},
getHandleTable() {
this.form.skus = [];
let skuTags = JSON.parse(JSON.stringify(this.skuTags));
let sku1s = [];
let skuIds = [];
let propertyIds = [];
let propertyNames = [];
for (let i = 0; i < skuTags.length; i++) {
sku1s.push(skuTags[i].selectValues);
skuIds.push(skuTags[i].selectValueIds);
propertyIds.push(skuTags[i].propertyId);
propertyNames.push(skuTags[i].name);
}
2022-08-18 22:38:51 +08:00
let skuAll = sku1s.reduce(
(x, y) => {
let arr = [];
x.forEach((m) => y.forEach((y) => arr.push(m.concat([y]))));
return arr;
},
[[]]
);
2022-07-06 17:06:19 +08:00
2022-08-18 22:38:51 +08:00
let skuIdAll = skuIds.reduce(
(x, y) => {
let arr = [];
x.forEach((m) => y.forEach((y) => arr.push(m.concat([y]))));
return arr;
},
[[]]
);
2022-07-06 17:06:19 +08:00
for (let i = 0; i < skuAll.length; i++) {
let han = {
propertyNames: propertyNames,
propertyIds: propertyIds,
propertyChildNames: skuAll[i],
propertyChildIds: skuIdAll[i],
properties: this.form.skusList[i].properties,
picUrl: this.form.skusList[i].picUrl,
costPrice: this.form.skusList[i].costPrice,
originalPrice: this.form.skusList[i].originalPrice,
spuId: this.form.skusList[i].spuId,
prodName: this.form.skusList[i].prodName,
price: this.form.skusList[i].price,
barCode: this.form.skusList[i].barCode,
status: this.form.skusList[i].status,
2022-08-18 22:38:51 +08:00
};
2022-07-06 17:06:19 +08:00
this.form.skus.push(han);
}
2022-08-18 22:38:51 +08:00
this.form.skus.forEach((x) => {
2022-07-06 17:06:19 +08:00
x.properties = [];
for (let i = 0; i < x.propertyIds.length; i++) {
x.properties.push({
propertyId: x.propertyIds[i],
2022-08-18 22:38:51 +08:00
valueId: x.propertyChildIds[i],
});
2022-07-06 17:06:19 +08:00
}
2022-08-18 22:38:51 +08:00
});
2022-07-06 17:06:19 +08:00
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
2022-08-18 22:38:51 +08:00
this.$modal
.confirm('是否确认删除商品spu编号为"' + id + '"的数据项?')
.then(function () {
return deleteSpu(id);
})
.then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
2022-07-06 17:06:19 +08:00
},
/** 导出按钮操作 */
handleExport() {
// 处理查询参数
2022-08-18 22:38:51 +08:00
let params = { ...this.queryParams };
2022-07-06 17:06:19 +08:00
params.pageNo = undefined;
params.pageSize = undefined;
2022-08-18 22:38:51 +08:00
this.addBeginAndEndTime(params, this.dateRangeCreateTime, "createTime");
2022-07-06 17:06:19 +08:00
// 执行导出
2022-08-18 22:38:51 +08:00
this.$modal
.confirm("是否确认导出所有商品spu数据项?")
.then(() => {
this.exportLoading = true;
return exportSpuExcel(params);
})
.then((response) => {
this.$download.excel(response, "商品spu.xls");
this.exportLoading = false;
})
.catch(() => {});
},
},
2022-07-06 17:06:19 +08:00
};
2022-05-18 17:12:03 +08:00
</script>
2022-06-10 17:23:35 +08:00
<style lang="scss">
2022-07-06 17:06:19 +08:00
.app-container {
.el-tag + .el-tag {
margin-left: 10px;
}
2022-06-10 17:23:35 +08:00
2022-07-06 17:06:19 +08:00
.button-new-tag {
margin-left: 10px;
height: 32px;
line-height: 30px;
padding-top: 0;
padding-bottom: 0;
}
2022-06-10 17:23:35 +08:00
2022-07-06 17:06:19 +08:00
.input-new-tag {
width: 90px;
margin-left: 10px;
vertical-align: bottom;
}
2022-07-01 20:37:41 +08:00
2022-07-06 17:06:19 +08:00
.img-height {
height: 65px;
2022-06-10 17:23:35 +08:00
}
2022-07-06 17:06:19 +08:00
}
2022-06-10 17:23:35 +08:00
</style>