12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001 |
- <template>
- <div class="live-config-container">
- <!-- 根tabs -->
- <el-tabs v-model="rootActiveName" @tab-click="handleClick" class="white-bg-tabs">
- <el-tab-pane v-for="item in rootTabs" :key="item.name" :label="item.label" :name="item.name">
- <!-- 营销内容 start -->
- <el-tabs v-if="item.name == 'market'" v-model="marketActiveName" type="card" @tab-click="handleTabClick">
- <el-tab-pane v-for="marketItem in marketTabs" :key="marketItem.name" :label="marketItem.label" :name="marketItem.name" class="market-tab-pane">
- <!-- 观看奖励 start -->
- <template>
- <div v-if="marketItem.name == 'watchReward'">
- <!-- 提示信息 -->
- <div class="tip-message">
- 设置观看奖励,用户达到直播观看时长后可领取奖励
- </div>
- <!-- 开启观看奖励开关 -->
- <div class="reward-switch">
- <span class="switch-label">开启观看奖励</span>
- <el-switch v-model="watchRewardForm.enabled"></el-switch>
- </div>
- <!-- 观看奖励设置 -->
- <div v-if="watchRewardForm.enabled" class="section-block">
- <div class="section-title">观看奖励设置</div>
- <!-- 表单内容 -->
- <el-form
- :model="watchRewardForm"
- :rules="rules"
- ref="watchRewardForm"
- label-width="130px"
- >
- <!-- 参与条件 -->
- <el-form-item label="参与条件" prop="participateCondition">
- <el-radio v-model="watchRewardForm.participateCondition" label="1">
- 达到指定观看时长
- </el-radio>
- </el-form-item>
- <!-- 观看时长 -->
- <el-form-item label="观看时长" prop="watchDuration">
- <el-input v-model="watchRewardForm.watchDuration" placeholder="请输入观看时长" class="duration-input">
- <template #append>分钟</template>
- </el-input>
- </el-form-item>
- <!-- 实施动作 -->
- <el-form-item label="实施动作" prop="action">
- <el-select v-model="watchRewardForm.action" placeholder="请选择实施动作" style="width: 300px;">
- <el-option
- v-for="item in actionOptions"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- ></el-option>
- </el-select>
- </el-form-item>
- <!-- 领取提示语 -->
- <el-form-item label="领取提示语" prop="receivePrompt">
- <el-input v-model="watchRewardForm.receivePrompt" placeholder="请输入领取提示语"></el-input>
- </el-form-item>
- <!-- 红包设置 -->
- <div>
- <div class="section-title">红包设置</div>
- <!-- 根据实施动作类型显示不同的表单内容 -->
- <template v-if="watchRewardForm.action === '1'">
- <!-- 现金红包设置 -->
- <!-- 红包发放方式 1固定金额 2随机金额 -->
- <el-form-item label="红包发放方式" prop="redPacketType">
- <el-radio-group v-model="watchRewardForm.redPacketType">
- <el-radio label="1">固定金额</el-radio>
- <el-radio label="2">随机金额</el-radio>
- </el-radio-group>
- </el-form-item>
- <!-- 红包金额 -->
- <el-form-item label="红包金额" prop="redPacketAmount">
- <el-input v-model="watchRewardForm.redPacketAmount" placeholder="请输入红包金额"></el-input>
- </el-form-item>
- <!-- 红包发放数量 -->
- <el-form-item label="红包发放数量" prop="redPacketCount">
- <el-input v-model="watchRewardForm.redPacketCount" placeholder="红包数量+28888人数"></el-input>
- </el-form-item>
- <!-- 红包领取方式 1二维码核销 2微信提现 -->
- <el-form-item label="红包领取方式" prop="receiveMethod">
- <el-radio-group v-model="watchRewardForm.receiveMethod">
- <el-radio label="1">二维码领取</el-radio>
- <el-radio label="2">微信发放</el-radio>
- </el-radio-group>
- </el-form-item>
- </template>
- <template v-else>
- <!-- 积分红包设置 -->
- <!-- 积分值 -->
- <el-form-item label="积分值" prop="scoreAmount">
- <el-input
- v-model="watchRewardForm.scoreAmount"
- placeholder="请输入积分值" style="width: 300px;"
- ></el-input>
- </el-form-item>
- <!-- 最大领取人数 -->
- <el-form-item label="最大领取人数" prop="maxReceivers">
- <el-input
- v-model="watchRewardForm.maxReceivers"
- placeholder="请输入最大领取人数" style="width: 300px;"
- ></el-input>
- </el-form-item>
- </template>
- </div>
- <!-- 其他设置 -->
- <div >
- <div class="section-title">其他设置</div>
- <template v-if="watchRewardForm.action === '1'">
- <!-- 客服引导 1跟进企业微信 2不设置 -->
- <el-form-item label="客服引导" prop="showGuide">
- <el-radio-group v-model="watchRewardForm.showGuide">
- <el-radio label="1">跟进企业微信</el-radio>
- <el-radio label="2">不设置</el-radio>
- </el-radio-group>
- </el-form-item>
- <!-- 客服引导语 -->
- <el-form-item label="客服引导语" prop="guideText">
- <el-input
- v-model="watchRewardForm.guideText"
- placeholder="请输入客服引导语" style="width: 300px;"
- ></el-input>
- </el-form-item>
- </template>
- <template v-else>
- <!-- 积分使用引导语 -->
- <el-form-item label="积分使用引导语" prop="scoreGuideText">
- <el-input
- v-model="watchRewardForm.scoreGuideText"
- placeholder="请输入积分使用引导语" style="width: 300px;"
- ></el-input>
- </el-form-item>
- <!-- 积分使用引导链接 -->
- <el-form-item label="积分使用引导链接" prop="scoreGuideLink">
- <el-input
- v-model="watchRewardForm.scoreGuideLink"
- placeholder="请输入积分使用引导链接" style="width: 300px;"
- ></el-input>
- </el-form-item>
- <!-- 引导语 -->
- <el-form-item label="引导语" prop="guideText">
- <el-input
- v-model="watchRewardForm.guideText"
- placeholder="请输入引导语" style="width: 300px;"
- ></el-input>
- </el-form-item>
- </template>
- </div>
- <!-- 保存按钮 -->
- <div class="form-actions">
- <el-button type="primary" @click="saveWatchReward">保存</el-button>
- </div>
- </el-form>
- </div>
- </div>
- </template>
- <!-- 答题 start -->
- <div v-if="marketItem.name == 'answer'">
- <div class="tip-box">
- 选择用于本节直播课程的题库试题,试题可用于直播间内发送
- <el-link
- type="primary"
- style="margin-left: 5px;"
- @click="handleToQuestionBank"
- >配置题库试题 >></el-link>
- </div>
- <el-button type="primary" icon="el-icon-plus" style="margin: 20px 0;" @click="handleAddQuestion">添加试题</el-button>
- <!-- 试题列表表格 -->
- <el-table
- :data="questionLiveList"
- style="width: 100%"
- v-loading="loading"
- >
- <!-- 题干列:显示试题的主要内容 -->
- <el-table-column
- prop="title"
- label="题干"
- show-overflow-tooltip
- ></el-table-column>
- <!-- 题型列:显示是单选还是多选 -->
- <el-table-column
- prop="type"
- label="题型"
- >
- <template slot-scope="scope">
- {{ scope.row.type === 1 ? '单选题' : '多选题' }}
- </template>
- </el-table-column>
- <!-- 创建时间列:显示试题创建的时间 -->
- <el-table-column
- prop="createTime"
- label="创建时间"
- ></el-table-column>
- <!-- 操作列:包含编辑和删除按钮 -->
- <el-table-column
- label="操作"
- width="180"
- fixed="right"
- >
- <template slot-scope="scope">
- <!-- 删除按钮:用于移除试题 -->
- <el-button
- type="text"
- size="small"
- style="color: #F56C6C;"
- @click="handleDelete(scope.row)"
- >删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <!-- 分页组件:用于分页展示试题列表 -->
- <pagination
- v-show="questionTotal > 0"
- :total="questionTotal"
- :page.sync="questionParams.pageNum"
- :limit.sync="questionParams.pageSize"
- @pagination="getLiveQuestionLiveList"
- style="margin-top: 20px;"
- />
- <!-- 添加试题弹窗 -->
- <el-dialog
- title="添加试题"
- :visible.sync="questionDialogVisible"
- width="800px"
- :close-on-click-modal="false"
- :close-on-press-escape="false"
- >
- <div class="dialog-content">
- <div style="text-align: right; margin-bottom: 20px;">
- <el-input
- v-model="searchTitle"
- placeholder="请输入搜索内容"
- style="width: 300px;"
- @input="handleQuestionSearch"
- ></el-input>
- </div>
- <el-table
- ref="questionTable"
- :data="questionList"
- style="width: 100%"
- v-loading="questionLoading"
- @selection-change="handleSelectionChange"
- @row-click="handleRowClick"
- row-key="id"
- >
- <!-- 复选框列:用于多选试题 -->
- <el-table-column
- type="selection"
- width="55"
- >
- </el-table-column>
- <!-- 题干列:显示试题的主要内容 -->
- <el-table-column
- prop="title"
- label="题干"
- class-name="clickable-column"
- ></el-table-column>
- <!-- 题型列:显示单选或多选 -->
- <el-table-column
- prop="type"
- label="题型"
- class-name="clickable-column"
- >
- <template slot-scope="scope">
- {{ scope.row.type === 1 ? '单选题' : '多选题' }}
- </template>
- </el-table-column>
- <!-- 创建人列 -->
- <el-table-column
- prop="createBy"
- label="创建人"
- class-name="clickable-column"
- ></el-table-column>
- <!-- 创建时间列 -->
- <el-table-column
- prop="createTime"
- label="创建时间"
- width="150"
- class-name="clickable-column"
- ></el-table-column>
- </el-table>
- <pagination
- v-show="total > 0"
- :total="total"
- :page.sync="queryParams.pageNum"
- :limit.sync="queryParams.pageSize"
- @pagination="getQuestionList"
- style="margin-top: 20px;"
- />
- </div>
- <div slot="footer" class="dialog-footer">
- <div style="display: flex; justify-content: space-between; align-items: center;">
- <span class="selected-count">当前已选择 <span style="color: #00BFFF; font-style: italic;">{{ selectedQuestions.length }}</span> 题</span>
- <div>
- <el-button @click="questionDialogVisible = false">取 消</el-button>
- <el-button type="primary" @click="confirmAddQuestion">确 定</el-button>
- </div>
- </div>
- </div>
- </el-dialog>
- </div>
- <!-- 答题 end -->
- <!-- 直播商品start -->
- <div v-if="marketItem.name == 'goods'">
- <el-button type="primary" icon="el-icon-plus" style="margin: 20px 0;" @click="handleAddLiveGoods">添加商品</el-button>
- <!-- 试题列表表格 -->
- <el-table
- :data="goodsLiveList"
- style="width: 100%"
- v-loading="loading"
- >
- <!-- 题干列:显示试题的主要内容 -->
- <el-table-column
- prop="goodsId"
- label="商品id"
- show-overflow-tooltip
- ></el-table-column>
- <!-- 题型列:显示是单选还是多选 -->
- <el-table-column
- prop="storeId"
- label="店铺id"
- >
- </el-table-column>
- <!-- 创建时间列:显示试题创建的时间 -->
- <el-table-column
- prop="productId"
- label="商品id"
- ></el-table-column>
- <!-- 操作列:包含编辑和删除按钮 -->
- <el-table-column
- label="操作"
- width="180"
- fixed="right"
- >
- <template slot-scope="scope">
- <!-- 删除按钮:用于移除试题 -->
- <el-button
- type="text"
- size="small"
- style="color: #F56C6C;"
- @click="handleGoodDelete(scope.row)"
- >删除</el-button>
- </template>
- </el-table-column>
- </el-table>
- <!-- 分页组件:用于分页展示试题列表 -->
- <pagination
- v-show="goodsTotal > 0"
- :total="goodsTotal"
- :page.sync="goodsParams.pageNum"
- :limit.sync="goodsParams.pageSize"
- @pagination="getLiveGoodsList"
- style="margin-top: 20px;"
- />
- <!-- 添加商品弹窗 -->
- <el-dialog
- title="添加商品"
- :visible.sync="goodsDialogVisible"
- width="800px"
- :close-on-click-modal="false"
- :close-on-press-escape="false"
- >
- <div class="dialog-content">
- <div style="text-align: right; margin-bottom: 20px;">
- <el-input
- v-model="searchTitle"
- placeholder="请输入搜索内容"
- style="width: 300px;"
- @input="handleGoodsSearch"
- ></el-input>
- </div>
- <el-table
- ref="goodsTable"
- :data="goodsList"
- style="width: 100%"
- v-loading="goodsLoading"
- @selection-change="handleGoodsChange"
- @row-click="handleGoodsRowClick"
- row-key="id"
- >
- <!-- 复选框列:用于多选试题 -->
- <el-table-column
- type="selection"
- width="55"
- >
- </el-table-column>
- <!-- 题干列:显示试题的主要内容 -->
- <el-table-column
- prop="storeName"
- label="商铺名称"
- class-name="clickable-column"
- ></el-table-column>
- <el-table-column
- prop="productName"
- label="产品"
- class-name="clickable-column"
- ></el-table-column>
- <el-table-column
- prop="price"
- label="价格"
- class-name="clickable-column"
- ></el-table-column>
- <el-table-column
- prop="stock"
- label="库存"
- class-name="clickable-column"
- ></el-table-column>
- </el-table>
- <pagination
- v-show="total > 0"
- :total="total"
- :page.sync="queryParams.pageNum"
- :limit.sync="queryParams.pageSize"
- @pagination="getStoreProductLists"
- style="margin-top: 20px;"
- />
- </div>
- <div slot="footer" class="dialog-footer">
- <div style="display: flex; justify-content: space-between; align-items: center;">
- <span class="selected-count">当前已选择 <span style="color: #00BFFF; font-style: italic;">{{ selectedGoods.length }}</span> 商品</span>
- <div>
- <el-button @click="goodsDialogVisible = false">取 消</el-button>
- <el-button type="primary" @click="confirmAddGoods">确 定</el-button>
- </div>
- </div>
- </div>
- </el-dialog>
- </div>
- <!-- 直播商品end -->
- </el-tab-pane>
- </el-tabs>
- <!-- 营销内容 end -->
- </el-tab-pane>
- </el-tabs>
- <!-- 根tabs end -->
- </div>
- </template>
- <script>
- import {
- listLiveQuestionLive,
- listLiveQuestionOptionList,
- addLiveQuestionLive,
- deleteLiveQuestionLive,
- getConfig,
- addConfig,
- updateConfig
- } from '@/api/live/liveQuestionLive'
- import {listLiveGoods, delLiveGoods, listStoreProduct} from '@/api/live/liveGoods'
- export default {
- name: 'LiveConfig',
- data() {
- return {
- liveId: null,
- loading: true,
- rootActiveName: 'market',
- rootTabs: [
- {
- label: '营销内容',
- name: 'market'
- }
- ],
- marketActiveName: 'watchReward',
- marketTabs: [
- {
- label: '观看奖励',
- name: 'watchReward'
- },
- {
- label: '答题红包',
- name: 'answerRedPacket'
- },
- {
- label: '答题',
- name: 'answer'
- },
- {
- label: '直播商品',
- name: 'goods'
- },
- {
- label: '观看积分 ',
- name: 'watchScore'
- }
- ],
- questionDialogVisible: false,
- goodsDialogVisible: false,
- questionLoading: false,
- goodsLoading: false,
- searchTitle: '',
- questionList: [],
- selectedQuestions: [],
- selectedGoods: [],
- total: 0,
- queryParams: {
- pageNum: 1,
- pageSize: 10,
- title: null,
- liveId: null
- },
- questionTotal: 0,
- questionParams: {
- pageNum: 1,
- pageSize: 10,
- liveId: null
- },
- goodsList: [],
- goodsTotal: 0,
- questionLiveList: [],
- goodsLiveList: [],
- goodsLiveTotal: 0,
- goodsParams: {
- pageNum: 1,
- pageSize: 10,
- liveId: null
- },
- queryGoodParams: {
- pageNum: 1,
- pageSize: 10,
- title: null,
- liveId: null
- },
- rules:{
- participateCondition:[
- { required: true, message: '请选择参与条件', trigger: 'blur'}
- ],
- watchDuration:[
- { required: true, message: '请输入观看时长', trigger: 'blur'}
- ],
- action:[
- { required: true, message: '请选择实施动作', trigger: 'blur'}
- ],
- receivePrompt:[
- { required: true, message: '请输入领取提示语', trigger: 'blur'}
- ],
- redPacketType:[
- { required: true, message: '请选择红包发放方式', trigger: 'blur'}
- ],
- redPacketAmount:[
- { required: true, message: '请输入红包金额', trigger: 'blur'}
- ],
- receiveMethod:[
- { required: true, message: '请选择红包领取方式', trigger: 'blur'}
- ],
- guideText:[
- { required: true, message: '请输入客服引导语', trigger: 'blur'}
- ],
- showGuide:[
- { required: true, message: '请选择是否显示客服引导', trigger: 'blur'}
- ]
- },
- watchRewardForm: {
- id: null,
- liveId: null,
- // 是否启用观看奖励
- enabled: false,
- // 参与条件
- participateCondition: '1',
- // 观看时长
- watchDuration: '',
- // 实施动作
- action: '1',
- // 领取提示语
- receivePrompt: '',
- // 红包发放方式(固定金额/随机金额)
- redPacketType: '1',
- // 红包金额
- redPacketAmount: '',
- // 红包发放数量
- redPacketCount: '',
- // 红包领取方式
- receiveMethod: '1',
- // 是否显示客服引导
- showGuide: '1',
- // 客服引导语
- guideText: '',
- // 积分值
- scoreAmount: '',
- // 最大领取人数
- maxReceivers: '',
- // 积分使用引导语
- scoreGuideText: '',
- // 积分使用引导链接
- scoreGuideLink: ''
- },
- // 添加实施动作选项
- actionOptions: [
- {
- label: '现金红包',
- value: '1'
- },
- {
- label: '积分红包',
- value: '2'
- }
- ]
- }
- },
- created() {
- this.liveId = this.$route.params.liveId
- this.queryParams.liveId = this.liveId
- this.goodsParams.liveId = this.liveId
- this.questionParams.liveId = this.liveId
- this.watchRewardForm.liveId = this.liveId
- // this.getLiveQuestionLiveList()
- this.getLiveConfig();
- },
- methods: {
- getLiveConfig(){
- getConfig(this.liveId).then(response => {
- if(response.code === 200){
- this.watchRewardForm = JSON.parse(response.data)
- }
- })
- },
- handleClick(tab, event) {
- console.info(tab, event)
- },
- handleToQuestionBank() {
- this.$router.push('/live/liveQuestionBank')
- },
- handleTabClick(tab) {
- if(tab.name === 'answer') {
- // this.getLiveQuestionLiveList()
- }
- if(tab.name === 'goods'){
- this.getLiveGoodsList();
- }
- },
- getLiveGoodsList() {
- this.loading = true
- listLiveGoods().then(response => {
- this.goodsLiveList = response.rows
- this.goodsLiveTotal = response.total
- this.loading = false
- })
- },
- getLiveQuestionLiveList() {
- this.loading = true
- listLiveQuestionLive(this.questionParams).then(response => {
- this.questionLiveList = response.rows
- this.questionTotal = response.total
- this.loading = false
- })
- },
- handleAddQuestion() {
- this.questionDialogVisible = true
- this.getQuestionList()
- },
- handleAddLiveGoods(){
- this.goodsDialogVisible = true;
- this.getStoreProductLists()
- },
- getQuestionList() {
- this.questionLoading = true
- listLiveQuestionOptionList(this.queryParams).then(response => {
- this.questionList = response.rows
- this.total = response.total
- this.questionLoading = false
- })
- },
- handleQuestionSearch() {
- this.queryParams.pageNum = 1
- this.queryParams.title = this.searchTitle
- this.getQuestionList()
- },
- handleGoodsSearch(){
- this.queryParams.pageNum = 1
- this.queryParams.title = this.searchTitle
- this.getQuestionList()
- },
- handleSelectionChange(selection) {
- this.selectedQuestions = selection
- },
- handleGoodsChange(goods) {
- this.selectedGoods = goods
- },
- handleCurrentChange() {
- this.getQuestionList()
- },
- confirmAddQuestion() {
- if (this.selectedQuestions.length === 0) {
- this.$message({
- message: '请选择要添加的试题',
- type: 'warning'
- })
- return
- }
- // 调用添加直播间试题接口
- addLiveQuestionLive({
- liveId: this.liveId,
- questionIds: this.selectedQuestions.map(item => item.id).join(',')
- }).then(response => {
- this.questionDialogVisible = false
- this.getLiveQuestionLiveList()
- })
- },
- confirmAddGoods(){
- if (this.selectedGoods.length === 0) {
- this.$message({
- message: '请选择要添加的商品',
- type: 'warning'
- })
- return
- }
- addLiveGoods({
- liveId: this.liveId,
- goodsIds: this.selectedGoods.map(item => item.goodsId).join(',')
- }).then(response => {
- this.goodsDialogVisible = false
- this.getLiveGoodsList()
- })
- },
- handleDelete(row) {
- // 调用删除直播间试题接口
- deleteLiveQuestionLive({
- liveId: this.liveId,
- ids: row.id
- }).then(response => {
- this.getLiveQuestionLiveList()
- })
- },
- handleGoodDelete(row){
- delLiveGoods(row.goodsId).then(response => {
- this.getLiveGoodsList()
- })
- },
- /** 处理行点击事件 */
- handleRowClick(row, column) {
- // 如果点击的是复选框列,不进行处理
- if (column.type === 'selection') {
- return
- }
- // 获取表格实例
- const table = this.$refs.questionTable[0]
- if (!table) {
- return
- }
- // 判断当前行是否已经被选中
- const isSelected = this.selectedQuestions.some(item => item.id === row.id)
- // 切换选中状态
- table.toggleRowSelection(row, !isSelected)
- },
- /** 处理行点击事件 */
- handleGoodsRowClick(row, column) {
- // 如果点击的是复选框列,不进行处理
- if (column.type === 'selection') {
- return
- }
- // 获取表格实例
- const table = this.$refs.goodsTable[0]
- if (!table) {
- return
- }
- // 判断当前行是否已经被选中
- const isSelected = this.selectedGoods.some(item => item.id === row.id)
- // 切换选中状态
- table.toggleRowSelection(row, !isSelected)
- },
- saveWatchReward() {
- this.$refs["watchRewardForm"][0].validate(valid => {
- if (valid) {
- if (this.watchRewardForm.id == null) {
- // 调用保存观看奖励接口
- // 实现保存逻辑
- addConfig(this.watchRewardForm).then(res => {
- if (res.code == 200) {
- this.msgSuccess("修改成功");
- }
- })
- } else {
- updateConfig(this.watchRewardForm).then(response => {
- this.msgSuccess("修改成功");
- });
- }
- }
- })
- },
- getStoreProductLists() {
- listStoreProduct().then(response => {
- this.goodsList = response.rows
- this.goodsTotal = response.total
- this.loading = false
- })
- }
- }
- }
- </script>
- <style scoped>
- .live-config-container {
- padding: 10px 20px;
- height: calc(100vh - 84px); /* 减去头部导航的高度 */
- }
- .white-bg-tabs {
- background-color: #fff;
- padding: 10px 20px;
- border-radius: 4px;
- height: 100%;
- }
- .market-tab-pane {
- height: 74vh;
- overflow-y: auto;
- }
- .tip-box {
- padding: 12px 16px;
- background-color: #FFF6F2;
- border-radius: 4px;
- color: #666;
- font-size: 14px;
- }
- /* 修改弹窗相关样式 */
- ::v-deep .el-dialog {
- height: 90%;
- margin: 0 !important;
- width: 900px !important;
- }
- ::v-deep .el-dialog__body {
- padding: 20px;
- height: calc(100% - 110px); /* 减去header和footer的高度 */
- overflow: hidden;
- }
- .dialog-content {
- height: 100%;
- overflow-y: auto;
- }
- ::v-deep .el-dialog__footer {
- position: absolute;
- bottom: 0;
- width: 100%;
- background: #fff;
- z-index: 1;
- border-top: 1px solid #e4e7ed;
- padding: 15px 20px;
- }
- ::v-deep .el-dialog__header {
- padding: 15px 20px;
- border-bottom: 1px solid #e4e7ed;
- }
- .selected-count {
- color: #999;
- font-size: 14px;
- }
- /* 可点击列的样式 */
- ::v-deep .clickable-column {
- cursor: pointer;
- }
- /* 提示信息样式 */
- .tip-message {
- padding: 12px 16px;
- background-color: #FFF6F2;
- border-radius: 4px;
- color: #666;
- font-size: 14px;
- margin-bottom: 20px;
- }
- /* 开关容器样式 */
- .reward-switch {
- margin-left: 200px;
- margin-bottom: 20px;
- padding: 20px;
- background-color: #fff;
- border-radius: 4px;
- display: flex;
- align-items: center;
- }
- /* 开关标签样式 */
- .reward-switch .switch-label {
- margin-right: 10px;
- font-size: 14px;
- color: #333;
- margin-left: 50px;
- }
- /* 表单区块样式 */
- .section-block {
- width: 50%;
- background-color: #fff;
- padding: 20px;
- border-radius: 4px;
- margin-left: 50px;
- margin-bottom: 20px;
- }
- /* 标题样式 */
- .section-block .section-title {
- font-size: 14px;
- color: #333;
- margin-bottom: 20px;
- border-left: 4px solid #409EFF;
- padding-left: 10px;
- line-height: 1;
- }
- /* 表单样式 */
- .reward-form {
- margin-top: 20px;
- }
- /* 表单项样式 */
- .reward-form .el-form-item {
- margin-bottom: 22px;
- padding-left: 50px;
- }
- .reward-form .el-form-item:last-child {
- margin-bottom: 0;
- }
- /* 表单标签样式 */
- .reward-form .el-form-item .el-form-item__label {
- color: #606266;
- }
- /* 输入框统一宽度 */
- .reward-form .el-form-item .el-input {
- width: 300px;
- }
- /* 必填项星号样式 */
- .reward-form .el-form-item.is-required .el-form-item__label:before {
- color: #F56C6C;
- }
- /* 观看时长输入框样式 */
- .reward-form .el-form-item .duration-input {
- width: 300px;
- }
- .reward-form .el-form-item .duration-input .el-input__inner {
- text-align: left;
- }
- /* 保存按钮样式 */
- .form-actions {
- width: 600px;
- text-align: center;
- margin-top: 30px;
- }
- .form-actions .el-button {
- padding: 8px 20px;
- font-size: 13px;
- }
- </style>
|