web-base-admin/src/views/siteConfiguration/goodsDetails.vue

248 lines
6.7 KiB
Vue
Raw Normal View History

2025-03-23 09:18:42 +08:00
<!--
* @Descripttion:
* @version:
* @Author: kBank
* @Date: 2023-02-23 15:59:57
-->
<template>
<div class="page">
<div class="main">
<el-form :model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="100px"
class="demo-ruleForm">
<el-row>
<el-col :span="22">
2025-04-01 23:46:26 +08:00
<el-form-item :label="'标题'"
2025-03-23 09:18:42 +08:00
prop="titleName">
<el-input clearable
v-model="ruleForm.titleName"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
2025-04-01 23:46:26 +08:00
<el-form-item :label="'副标题'"
2025-03-23 09:18:42 +08:00
prop="twoLevelTitle">
<el-input clearable
v-model="ruleForm.twoLevelTitle"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
2025-04-01 23:46:26 +08:00
<el-form-item :label="'商品分类'"
2025-03-23 09:18:42 +08:00
prop="pkAreaClassify">
<el-select clearable
v-model="ruleForm.pkAreaClassify">
<el-option v-for="item in classifyList"
:key="item.pkId"
:label="item.classifyName"
:value="item.pkId"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
2025-04-01 23:46:26 +08:00
<el-form-item :label="'国家'"
2025-03-23 09:18:42 +08:00
prop="languageType">
<el-select v-model="ruleForm.languageType"
size="medium"
filterable
2025-04-01 23:46:26 +08:00
:placeholder="'请选择'">
2025-03-23 09:18:42 +08:00
<el-option v-for="item in countryList"
:key="item.pkCountry"
:label="item.name"
:value="item.pkCountry">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
2025-04-01 23:46:26 +08:00
<el-form-item :label="'上传封面'"
2025-03-23 09:18:42 +08:00
prop="coverAddress">
<imageUpload v-model="ruleForm.coverAddress" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
2025-04-01 23:46:26 +08:00
<el-form-item :label="'上传图片'"
2025-03-23 09:18:42 +08:00
prop="picture">
<imageUpload v-model="ruleForm.picture" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="22">
2025-04-01 23:46:26 +08:00
<el-form-item :label="'内容'"
2025-03-23 09:18:42 +08:00
prop="content">
<editor ref="sptwEditor"
v-model="ruleForm.content"
:min-height="196"
:uploadUrl="uploadImgUrl" />
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="footer">
<el-button size="small"
2025-04-01 23:46:26 +08:00
class="thebtn2"> {{ '取消' }}</el-button>
2025-03-23 09:18:42 +08:00
<el-button size="small"
@click="submit"
2025-04-01 23:46:26 +08:00
class="thebtn1"> {{ '确认' }}</el-button>
2025-03-23 09:18:42 +08:00
</div>
</div>
</template>
<script>
import Editor from '@/components/Editor'
import * as api from '@/api/site.js'
import ImageUpload from '@/components/ImageUpload'
export default {
components: {
Editor,
ImageUpload,
},
data() {
return {
uploadImgUrl: process.env.VUE_APP_BASE_API + '/system/upload',
ruleForm: {
isType: '',
},
rules: {
2025-04-01 23:46:26 +08:00
picture: [{ required: true, message: '请上传图片', trigger: 'change' }],
2025-03-23 09:18:42 +08:00
coverAddress: [
2025-04-01 23:46:26 +08:00
{ required: true, message: '请上传封面图片', trigger: 'change' },
2025-03-23 09:18:42 +08:00
],
pkAreaClassify: [
2025-04-01 23:46:26 +08:00
{ required: true, message: '请选择商品分类', trigger: 'change' },
2025-03-23 09:18:42 +08:00
],
2025-04-01 23:46:26 +08:00
titleName: [{ required: true, message: '请输入标题', trigger: 'blur' }],
2025-03-23 09:18:42 +08:00
twoLevelTitle: [
2025-04-01 23:46:26 +08:00
{ required: true, message: '请输入副标题', trigger: 'blur' },
2025-03-23 09:18:42 +08:00
],
2025-04-01 23:46:26 +08:00
content: [{ required: true, message: '请输入内容', trigger: 'blur' }],
sort: [{ required: true, message: '请输入排序', trigger: 'blur' }],
2025-03-23 09:18:42 +08:00
languageType: [
2025-04-01 23:46:26 +08:00
{ required: true, message: '请选择国家', trigger: 'change' },
2025-03-23 09:18:42 +08:00
],
},
localList: [],
popList: [],
webList: [],
gradeList: [],
pkId: '',
funcList: [],
jsList: [],
news: false,
lookOver: false,
classifyList: [],
countryList: [],
}
},
mounted() {
this.pkId = this.$route.query.pkId || ''
if (this.pkId != '') {
this.getDetails()
}
this.goodClify()
},
methods: {
goodClify() {
api
.classifyList({
isRecommend: 0,
})
.then((res) => {
this.classifyList = res.data
})
api.userCountryList().then((res) => {
this.countryList = res.data
})
},
getDetails() {
api.getOneProduct(this.pkId).then((res) => {
this.ruleForm = res.data
this.$forceUpdate()
})
},
submit() {
let obj = Object.assign({}, this.ruleForm, { pkId: this.pkId })
let urlRequest = ''
if (this.pkId == '') {
urlRequest = api.productSave
} else {
urlRequest = api.productUpdate
}
urlRequest(obj).then((res) => {
if (res.code == 200) {
if (this.pkId == '') {
this.$message({
2025-04-01 23:46:26 +08:00
message: '添加成功',
2025-03-23 09:18:42 +08:00
type: 'success',
})
} else {
this.$message({
2025-04-01 23:46:26 +08:00
message: '修改成功',
2025-03-23 09:18:42 +08:00
type: 'success',
})
}
this.$router.replace({
path: 'goodsSet',
})
}
// console.log(
// '%c [ res ]-238',
// 'font-size:13px; background:#5f4299; color:#a386dd;',
// res
// )
})
},
},
}
</script>
<style lang="scss" scoped>
.page {
padding: 20px;
background: #f9f9f9;
font-size: 14px;
.main {
background: #ffffff;
border-radius: 8px;
box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5);
padding: 10px;
}
::v-deep .el-select {
width: 100%;
}
}
.footer {
height: 68px;
background: #ffffff;
box-shadow: 0px -3px 20px 0px rgba(204, 204, 204, 0.5);
// margin: 0 20px;
display: flex;
justify-content: center;
align-items: center;
.thebtn1 {
background: #3181e5;
color: #ffffff;
padding: 9px 45px;
}
.thebtn2 {
background: #cccccc;
color: #ffffff;
padding: 9px 45px;
}
}
</style>