|
@@ -11,136 +11,107 @@
|
|
|
<el-dialog
|
|
|
:title="title"
|
|
|
:visible.sync="open"
|
|
|
- width="600px"
|
|
|
+ width="70vw"
|
|
|
append-to-body
|
|
|
:close-on-click-modal="false"
|
|
|
@close="cancel"
|
|
|
>
|
|
|
<div class="dialog">
|
|
|
- <el-form :model="form" ref="form" :rules="rules" label-width="80px">
|
|
|
- <el-form-item label="票务名称:">
|
|
|
- <el-input
|
|
|
- disabled
|
|
|
- type="number"
|
|
|
- v-model="form.priceAmount"
|
|
|
- placeholder="票务名称"
|
|
|
- clearable
|
|
|
- style="width: 260px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="座位类型:">
|
|
|
- <el-input
|
|
|
- disabled
|
|
|
- type="number"
|
|
|
- v-model="form.priceAmount"
|
|
|
- placeholder="座位类型"
|
|
|
- clearable
|
|
|
- style="width: 260px;"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="市场价:">
|
|
|
- <el-input
|
|
|
- disabled
|
|
|
- type="number"
|
|
|
- v-model="form.priceAmount"
|
|
|
- placeholder=""
|
|
|
- clearable
|
|
|
- style="width: 260px;"
|
|
|
- >
|
|
|
- <template slot="append">元</template>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="销售价:">
|
|
|
- <el-input
|
|
|
- disabled
|
|
|
- type="number"
|
|
|
- v-model="form.priceAmount"
|
|
|
- placeholder=""
|
|
|
- clearable
|
|
|
- style="width: 260px;"
|
|
|
- >
|
|
|
- <template slot="append">元</template>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="结算价:" prop="priceAmount">
|
|
|
- <el-input
|
|
|
- :disabled="isDisabled"
|
|
|
- type="number"
|
|
|
- v-model="form.priceAmount"
|
|
|
- placeholder=""
|
|
|
- clearable
|
|
|
- @change="changePriceAmount"
|
|
|
- style="width: 260px;"
|
|
|
- >
|
|
|
- <template slot="append">元</template>
|
|
|
- </el-input>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- </el-form>
|
|
|
+ <div>
|
|
|
+ <el-form :model="form" ref="form" size="small" :rules="rules" :inline="true" label-width="100px">
|
|
|
+ <el-form-item label="门店POIID" prop="poiId">
|
|
|
+ <el-input
|
|
|
+ v-model="form.poiId"
|
|
|
+ placeholder="请输入门店POIID"
|
|
|
+ clearable
|
|
|
+ style="width: 240px"
|
|
|
+ @keyup.enter.native="handleQuery"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="商品类目ID" prop="categoryId">
|
|
|
+ <el-select
|
|
|
+ v-model="form.categoryId"
|
|
|
+ placeholder="商品类目ID"
|
|
|
+ clearable
|
|
|
+ style="width: 240px"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="dict in dict.type.tiktok_category"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <el-table
|
|
|
+ row-key="tableId"
|
|
|
+ ref="tables"
|
|
|
+ v-loading="loading"
|
|
|
+ :data="goodsList"
|
|
|
+ border
|
|
|
+ @selection-change="handleSelectionChange">
|
|
|
+ <el-table-column type="selection" width="55"></el-table-column>
|
|
|
+ <el-table-column label="序号" align="center" type="index" width="50"></el-table-column>
|
|
|
+ <el-table-column label="座位类型" align="center" prop="priceName" />
|
|
|
+ <el-table-column label="销售价" align="center" prop="actualAmount" width="250">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span v-if="!isCheck(scope.row)">{{ scope.row.actualAmount }}</span>
|
|
|
+ <el-input-number v-else v-model="scope.row.actualAmount" controls-position="right"></el-input-number>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="划线价" align="center" prop="originAmount" width="250">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span v-if="!isCheck(scope.row)">{{ scope.row.originAmount }}</span>
|
|
|
+ <el-input-number v-else v-model="scope.row.originAmount" controls-position="right"></el-input-number>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="开始时间" align="center" prop="timeStart" />
|
|
|
+ <el-table-column label="结束时间" align="center" prop="timeEnd" />
|
|
|
+ <el-table-column label="抖音排期状态" align="center" prop="status">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <dict-tag :options="dict.type.tiktok_scheduling_status" :value="scope.row.status"/>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
</div>
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
<el-button @click="cancel">取消</el-button>
|
|
|
<el-button
|
|
|
type="primary"
|
|
|
@click="submitForm"
|
|
|
+ :disabled="!multipleSelection || multipleSelection.length == 0"
|
|
|
v-loading.fullscreen.lock="loading"
|
|
|
element-loading-text="提交中..."
|
|
|
element-loading-spinner="el-icon-loading"
|
|
|
element-loading-background="rgba(0, 0, 0, 0.8)"
|
|
|
>
|
|
|
<span v-if="loading">提交中...</span>
|
|
|
- <span v-else>保存</span>
|
|
|
+ <span v-else>推送已选</span>
|
|
|
</el-button>
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { saveAndEdit } from "@/api/ticketMr/priceMr";
|
|
|
-import Editor from "@/components/Editor";
|
|
|
-import { getToken } from "@/utils/auth";
|
|
|
+import { pushById } from "@/api/otaMr/meituan";
|
|
|
export default {
|
|
|
name: "dataEdit",
|
|
|
- props: {
|
|
|
- dict: {
|
|
|
- type: Object,
|
|
|
- default: () => [],
|
|
|
- },
|
|
|
- },
|
|
|
- components: {
|
|
|
- Editor,
|
|
|
- },
|
|
|
+ dicts: ['tiktok_category','tiktok_scheduling_status'],
|
|
|
data() {
|
|
|
return {
|
|
|
title: "编辑",
|
|
|
model: "EDIT",
|
|
|
open: false,
|
|
|
loading: false,
|
|
|
- tableType: false,
|
|
|
- isDisabled: false,
|
|
|
- form: {
|
|
|
- id: undefined,
|
|
|
- priceType: '2'
|
|
|
- },
|
|
|
+ goodsList: [],
|
|
|
+ form: {},
|
|
|
rules: {
|
|
|
- venueId: [{ required: true, message: "请选择场馆", trigger: ["change","blur"] }],
|
|
|
- auditoriumId: [{ required: true, message: "请选择演出厅", trigger: ["change","blur"] }],
|
|
|
- performId: [{ required: true, message: "请选择剧目", trigger: ["change","blur"] }],
|
|
|
- goodsId: [{ required: true, message: "请选择票务", trigger: ["change","blur"] }],
|
|
|
- seatTypeId: [{ required: true, message: "请选择座位类型", trigger: ["change","blur"] }],
|
|
|
- priceType: [{ required: true, message: "请选择结算方式", trigger: ["change","blur"] }],
|
|
|
- priceAmount: [{ required: true, message: "请输入价格", trigger: ["change","blur"] }],
|
|
|
- },
|
|
|
- uploadObj: {
|
|
|
- url: process.env.VUE_APP_UPLOAD_FILE_API + "/upload/single/minio",
|
|
|
- Headers: { Authorization: "Bearer " + getToken() },
|
|
|
+ poiId: [{ required: true, message: "请输入门店POIID", trigger: ["change","blur"] }],
|
|
|
+ categoryId: [{ required: true, message: "请选择商品类目ID", trigger: ["change","blur"] }],
|
|
|
},
|
|
|
- theatreList: [],
|
|
|
- goodsList: [],
|
|
|
- merchantList: [],
|
|
|
- editType: false,
|
|
|
- ticketList: [],
|
|
|
- seatList: []
|
|
|
+ multipleSelection: []
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
@@ -152,31 +123,25 @@ export default {
|
|
|
*/
|
|
|
openDialog(title, obj, type) {
|
|
|
this.open = true;
|
|
|
- if (obj){
|
|
|
- this.title = "编辑商品信息";
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$set(this.form, 'id', obj.id);
|
|
|
- this.$set(this.form, 'goodsId', obj.goodsId);
|
|
|
- this.$set(this.form, 'seatTypeId', obj.seatTypeId);
|
|
|
- this.$set(this.form, 'performId', obj.performId);
|
|
|
- this.$set(this.form, 'auditoriumId', obj.auditoriumId);
|
|
|
- this.$set(this.form, 'priceType', obj.priceType ? obj.priceType.toString():obj.priceType);
|
|
|
- this.$set(this.form, 'priceAmount', obj.priceAmount);
|
|
|
- });
|
|
|
- }else{
|
|
|
- this.title = "新增商品信息";
|
|
|
- this.$nextTick(() => {
|
|
|
- this.$refs["form"].clearValidate();
|
|
|
- });
|
|
|
- }
|
|
|
- },
|
|
|
- /** 价格输入事件 */
|
|
|
- changePriceAmount(val) {
|
|
|
- if(val * 1 < 0){
|
|
|
- this.$message.error("输入需大于或等于0!");
|
|
|
- this.$set(this.form, 'priceAmount', '');
|
|
|
- return false
|
|
|
- }
|
|
|
+ this.multipleSelection = []
|
|
|
+ this.form = JSON.parse(JSON.stringify(obj))
|
|
|
+
|
|
|
+ let list = []
|
|
|
+ obj.sku.forEach((item,index)=>{
|
|
|
+ list.push({
|
|
|
+ ...item,
|
|
|
+ tableId: "id_" + index
|
|
|
+ })
|
|
|
+ })
|
|
|
+ this.goodsList = JSON.parse(JSON.stringify(list))
|
|
|
+ this.$nextTick(()=>{
|
|
|
+ this.goodsList.forEach((item)=>{
|
|
|
+ if(item.checkFlag == 1) {
|
|
|
+ this.$refs.tables.toggleRowSelection(item,true)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ this.$refs["form"].clearValidate()
|
|
|
+ })
|
|
|
},
|
|
|
/**
|
|
|
* 保存
|
|
@@ -186,20 +151,45 @@ export default {
|
|
|
submitForm() {
|
|
|
this.$refs["form"].validate(async (valid) => {
|
|
|
if (valid) {
|
|
|
- // try {
|
|
|
- // this.loading = true;
|
|
|
- // const { code } = await saveAndEdit({ ...this.form });
|
|
|
- // if (code === 200) {
|
|
|
- // this.$message.success("操作成功!");
|
|
|
- // this.$emit("getList");
|
|
|
- // this.cancel();
|
|
|
- // }
|
|
|
- // } catch (error) {
|
|
|
- // } finally {
|
|
|
- // this.loading = false;
|
|
|
- // }
|
|
|
+ try {
|
|
|
+ if(!this.multipleSelection && this.multipleSelection.length <= 0) {
|
|
|
+ this.$message.error("请选择上推送的数据!!!");
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let flog = false
|
|
|
+ let list = []
|
|
|
+ this.multipleSelection.forEach((item)=>{
|
|
|
+ list.push({
|
|
|
+ ...item,
|
|
|
+ checkFlag: 1
|
|
|
+ })
|
|
|
+ if((!item.actualAmount && item.actualAmount !=0) || (!item.originAmount && item.originAmount !=0)) {
|
|
|
+ flog = true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ if(flog) {
|
|
|
+ this.$message.error("请输入销售价和结算价!!!");
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.loading = true;
|
|
|
+ const { code } = await pushById({
|
|
|
+ ...this.form,
|
|
|
+ sku: list
|
|
|
+ });
|
|
|
+ if (code === 200) {
|
|
|
+ this.$message.success("操作成功!");
|
|
|
+ this.$emit("getList");
|
|
|
+ this.cancel();
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error("error====",error)
|
|
|
+ } finally {
|
|
|
+ this.loading = false;
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+
|
|
|
}
|
|
|
- });
|
|
|
+ })
|
|
|
},
|
|
|
/**
|
|
|
* 重置
|
|
@@ -207,14 +197,7 @@ export default {
|
|
|
* @returns {any}
|
|
|
*/
|
|
|
reset() {
|
|
|
- this.$set(this.form, 'id', '');
|
|
|
- this.$set(this.form, 'goodsId', '');
|
|
|
- this.$set(this.form, 'venueId', '');
|
|
|
- this.$set(this.form, 'seatTypeId', '');
|
|
|
- this.$set(this.form, 'performId', '');
|
|
|
- this.$set(this.form, 'auditoriumId', '');
|
|
|
- this.$set(this.form, 'priceType', '2');
|
|
|
- this.$set(this.form, 'priceAmount', '');
|
|
|
+ this.$refs["form"].clearValidate()
|
|
|
},
|
|
|
/**
|
|
|
* 关闭弹框
|
|
@@ -225,6 +208,19 @@ export default {
|
|
|
this.reset();
|
|
|
this.open = false;
|
|
|
},
|
|
|
+ isCheck(row){
|
|
|
+ let flog = false
|
|
|
+ this.multipleSelection.forEach((item,index)=>{
|
|
|
+ if(item.tableId == row.tableId) {
|
|
|
+ flog = true
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return flog
|
|
|
+ },
|
|
|
+ handleSelectionChange(val) {
|
|
|
+ console.log("选中了====", val)
|
|
|
+ this.multipleSelection = val;
|
|
|
+ }
|
|
|
},
|
|
|
};
|
|
|
</script>
|