|
@@ -13,56 +13,86 @@
|
|
|
ref="formData"
|
|
|
label-width="100px"
|
|
|
class="demo-ruleForm"
|
|
|
- >
|
|
|
- <el-form-item label="合作商户:" prop="a">
|
|
|
- <el-input
|
|
|
- clearable
|
|
|
- v-model="formData.a"
|
|
|
- placeholder="输入合作商户"
|
|
|
- ></el-input> </el-form-item
|
|
|
- ><el-form-item label="关联使用:" prop="b">
|
|
|
+ ><el-form-item label="关联使用:" prop="useType">
|
|
|
<el-select
|
|
|
multiple
|
|
|
clearable
|
|
|
- v-model="formData.b"
|
|
|
+ v-model="formData.useType"
|
|
|
placeholder="请选择关联使用"
|
|
|
>
|
|
|
<el-option label="积分商城" :value="1"> </el-option
|
|
|
><el-option label="会员卡" :value="2"> </el-option>
|
|
|
- </el-select> </el-form-item
|
|
|
- ><el-form-item label="商品分类:" prop="">
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="合作商户:" prop="merId">
|
|
|
<el-select
|
|
|
+ @change="changeMerId"
|
|
|
clearable
|
|
|
- v-model="formData.classification"
|
|
|
- placeholder="请选择商品分类"
|
|
|
+ v-model="formData.merId"
|
|
|
+ placeholder="请选择合作商户"
|
|
|
>
|
|
|
<el-option
|
|
|
- v-for="(item, index) in classificationList"
|
|
|
+ v-for="(item, index) in merList"
|
|
|
:key="index"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
+ :label="item.merName"
|
|
|
+ :value="item.merId"
|
|
|
+ >
|
|
|
+ </el-option></el-select></el-form-item
|
|
|
+ ><el-form-item label="商户店铺:" prop="storeId" v-if="formData.merId">
|
|
|
+ <el-select
|
|
|
+ @change="changeStoreId"
|
|
|
+ clearable
|
|
|
+ v-model="formData.storeId"
|
|
|
+ placeholder="请选择商户店铺"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="(item, index) in computerStore(storeList)"
|
|
|
+ :key="index"
|
|
|
+ :label="item.storeName"
|
|
|
+ :value="item.storeId"
|
|
|
>
|
|
|
</el-option>
|
|
|
</el-select> </el-form-item
|
|
|
- ><el-form-item label="商品名称:" prop="c">
|
|
|
+ ><el-form-item
|
|
|
+ label="商品分类:"
|
|
|
+ prop="categoryIds"
|
|
|
+ v-if="formData.storeId"
|
|
|
+ >
|
|
|
+ <el-cascader
|
|
|
+ clearable
|
|
|
+ placeholder="请选择商品分类"
|
|
|
+ v-model="formData.categoryIds"
|
|
|
+ :options="computerTree(categorytreeList)"
|
|
|
+ :show-all-levels="false"
|
|
|
+ :props="{
|
|
|
+ label: 'categoryName',
|
|
|
+ value: 'categoryId',
|
|
|
+ checkStrictly: true,
|
|
|
+ emitPath: false,
|
|
|
+ }"
|
|
|
+ ></el-cascader> </el-form-item
|
|
|
+ ><el-form-item label="商品名称:" prop="goodsName">
|
|
|
<el-input
|
|
|
clearable
|
|
|
- v-model="formData.c"
|
|
|
+ v-model="formData.goodsName"
|
|
|
placeholder="输入商品名称"
|
|
|
></el-input> </el-form-item
|
|
|
- ><el-form-item label="商品主图:" prop="urls">
|
|
|
+ ><el-form-item label="商品主图:" prop="mainImg">
|
|
|
<ul class="imgList">
|
|
|
<li
|
|
|
class="imgLi"
|
|
|
- v-for="(item, index) in formData.urls"
|
|
|
+ v-for="(item, index) in formData.mainImg"
|
|
|
:key="index"
|
|
|
>
|
|
|
- <i class="el-icon-error del" @click="formData.urls.splice(index,1)"></i>
|
|
|
+ <i
|
|
|
+ class="el-icon-error del"
|
|
|
+ @click="formData.mainImg.splice(index, 1)"
|
|
|
+ ></i>
|
|
|
<el-image
|
|
|
style="width: 90px; height: 90px"
|
|
|
:src="$methodsTools.splitImgHost(item)"
|
|
|
:preview-src-list="
|
|
|
- formData.urls.map((i) => $methodsTools.splitImgHost(i))
|
|
|
+ formData.mainImg.map((i) => $methodsTools.splitImgHost(i))
|
|
|
"
|
|
|
:initial-index="index"
|
|
|
>
|
|
@@ -79,33 +109,59 @@
|
|
|
<p style="color: #a4a4a4; margin: 0">
|
|
|
建议尺寸:800*800像素;大小200K以下
|
|
|
</p></el-form-item
|
|
|
- ><el-form-item label="兑换积分:" prop="e">
|
|
|
- <el-input-number
|
|
|
- :controls="false"
|
|
|
- v-model="formData.e"
|
|
|
- placeholder="输入兑换积分"
|
|
|
- :min="0"
|
|
|
- :precision="0" /></el-form-item
|
|
|
- ><el-form-item label="商品原价:" prop="f">
|
|
|
+ ><el-form-item label="商品原价:" prop="standPrice">
|
|
|
<el-input-number
|
|
|
:controls="false"
|
|
|
- v-model="formData.f"
|
|
|
+ v-model="formData.standPrice"
|
|
|
placeholder="输入商品原价"
|
|
|
:min="0"
|
|
|
:precision="2"
|
|
|
/> </el-form-item
|
|
|
- ><el-form-item label="会员优惠价:" prop="g">
|
|
|
+ ><el-form-item label="会员优惠价:" prop="specialPrice">
|
|
|
<el-input-number
|
|
|
:controls="false"
|
|
|
- v-model="formData.g"
|
|
|
+ v-model="formData.specialPrice"
|
|
|
placeholder="输入会员优惠价"
|
|
|
:min="0"
|
|
|
:precision="2"
|
|
|
- />
|
|
|
+ /> </el-form-item
|
|
|
+ ><el-form-item label="可抵扣积分:" prop="e">
|
|
|
+ <el-input-number
|
|
|
+ :controls="false"
|
|
|
+ v-model="formData.e"
|
|
|
+ placeholder="输入可抵扣积分"
|
|
|
+ :min="0"
|
|
|
+ :precision="0" /></el-form-item
|
|
|
+ ><el-form-item label="状态:" prop="status">
|
|
|
+ <el-radio-group v-model="formData.status">
|
|
|
+ <el-radio :label="1">启用</el-radio
|
|
|
+ ><el-radio :label="0">禁用</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="商品详情:">
|
|
|
+ <div style="margin-bottom: 14px">
|
|
|
+ <el-button
|
|
|
+ size="small"
|
|
|
+ @click="mobileDetailStatus = 1"
|
|
|
+ :type="mobileDetailStatus === 1 ? 'primary' : ''"
|
|
|
+ >手机端</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ size="small"
|
|
|
+ @click="mobileDetailStatus = 2"
|
|
|
+ :type="mobileDetailStatus === 2 ? 'primary' : ''"
|
|
|
+ >电脑端</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
<editor
|
|
|
- v-model="formData.html"
|
|
|
+ v-show="mobileDetailStatus === 1"
|
|
|
+ v-model="formData.mobileDetailHtml"
|
|
|
+ :min-height="300"
|
|
|
+ :max-height="500"
|
|
|
+ :uploadStatus="2"
|
|
|
+ /><editor
|
|
|
+ v-show="mobileDetailStatus === 2"
|
|
|
+ v-model="formData.pcDetailHtml"
|
|
|
:min-height="300"
|
|
|
:max-height="500"
|
|
|
:uploadStatus="2"
|
|
@@ -117,6 +173,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { mapGetters } from "vuex";
|
|
|
import Editor from "@/components/Editor";
|
|
|
export default {
|
|
|
components: { Editor },
|
|
@@ -135,7 +192,7 @@ export default {
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
- classificationList: [
|
|
|
+ categoryIdsList: [
|
|
|
{
|
|
|
label: "技术类",
|
|
|
value: 1,
|
|
@@ -146,20 +203,40 @@ export default {
|
|
|
},
|
|
|
],
|
|
|
formData: {
|
|
|
+ useType: [],
|
|
|
+ merId: "",
|
|
|
+ storeId: "",
|
|
|
+ categoryIds: "",
|
|
|
accountList: [{}],
|
|
|
invoiceBo: {},
|
|
|
+ storeId: null,
|
|
|
+ status: 1,
|
|
|
},
|
|
|
+ mobileDetailStatus: 1,
|
|
|
rules: {
|
|
|
- tenantName: [
|
|
|
- { required: true, message: "请输入机构名称", trigger: "blur" },
|
|
|
+ useType: [
|
|
|
+ { required: true, message: "请选择关联使用", trigger: "change" },
|
|
|
],
|
|
|
- billType: [
|
|
|
- { required: true, message: "请选择账期类型", trigger: "change" },
|
|
|
+ merId: [
|
|
|
+ { required: true, message: "请选择合作商户", trigger: "change" },
|
|
|
],
|
|
|
+ storeId: [
|
|
|
+ { required: true, message: "请选择商户店铺", trigger: "change" },
|
|
|
+ ],
|
|
|
+ categoryIds: [
|
|
|
+ { required: true, message: "请选择商品分类", trigger: "change" },
|
|
|
+ ],
|
|
|
+ status: [{ required: true, message: "请选择状态", trigger: "change" }],
|
|
|
},
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
|
+ changeMerId(e) {
|
|
|
+ this.$set(this.formData, "storeId", null);
|
|
|
+ },
|
|
|
+ changeStoreId(e) {
|
|
|
+ this.$set(this.formData, "categoryIds", null);
|
|
|
+ },
|
|
|
uploadImg(e) {
|
|
|
var self = this;
|
|
|
var file = e.target.files[0];
|
|
@@ -182,7 +259,16 @@ export default {
|
|
|
});
|
|
|
},
|
|
|
init() {
|
|
|
- this.formData = JSON.parse(JSON.stringify(this.activeData));
|
|
|
+ this.formData = {
|
|
|
+ useType:[],
|
|
|
+ merId: "",
|
|
|
+ storeId: "",
|
|
|
+ categoryIds: "",
|
|
|
+ accountList: [{}],
|
|
|
+ invoiceBo: {},
|
|
|
+ storeId: null,
|
|
|
+ status: 1,
|
|
|
+ };
|
|
|
},
|
|
|
close() {
|
|
|
this.$refs["formData"].resetFields();
|
|
@@ -200,6 +286,25 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
computed: {
|
|
|
+ ...mapGetters(["merList", "storeList", "categorytreeList"]),
|
|
|
+ computerStore: function () {
|
|
|
+ return function (rows) {
|
|
|
+ var array = [];
|
|
|
+ if (rows?.length > 0) {
|
|
|
+ array = rows.filter((i) => i.merId == this.formData.merId) || [];
|
|
|
+ }
|
|
|
+ return array;
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computerTree: function () {
|
|
|
+ return function (rows) {
|
|
|
+ var array = [];
|
|
|
+ if (rows?.length > 0) {
|
|
|
+ array = rows.filter((i) => i.storeId === this.formData.storeId);
|
|
|
+ }
|
|
|
+ return array;
|
|
|
+ };
|
|
|
+ },
|
|
|
isShow: {
|
|
|
get() {
|
|
|
if (this.dialogVisible) {
|
|
@@ -264,7 +369,7 @@ export default {
|
|
|
width: 220px;
|
|
|
margin-right: 10px;
|
|
|
}
|
|
|
-.del{
|
|
|
+.del {
|
|
|
color: red;
|
|
|
position: absolute;
|
|
|
top: 0;
|