修改了对应优惠券的页面和服务页面和设备页面

This commit is contained in:
chendaze 2024-03-09 15:48:19 +08:00
parent cb3747ad0f
commit 39ba02bed8
8 changed files with 389 additions and 136 deletions

View File

@ -12,6 +12,15 @@ export function getTicketList (parameter) {
})
}
export function getTicketByCompany () {
return axios({
url: api.ticket + '/getTicketByCompany',
method: 'get',
})
}
export function saveTicket (parameter) {
return axios({
url: api.ticket + (parameter.id > 0 ? '/update' : '/save'),

View File

@ -14,8 +14,8 @@
</a-form-item>
</a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='设备图片'>
<a-input placeholder='请输入设备图片' v-model='queryParam.pic' />
<a-form-item label='设备类型'>
<a-input placeholder='请输入设备类型' v-model='queryParam.type' />
</a-form-item>
</a-col>
<a-col :md='8' :sm='24'>
@ -83,30 +83,30 @@ export default {
//
columns: [
{
title: '设备分类',
dataIndex: 'type'
title: '设备编码',
dataIndex: 'equipmentNum'
},
{
title: '设备名称',
dataIndex: 'equipmentName'
},
{
title: '设备状态 0在线 1损坏 2离线',
title: '设备类型',
dataIndex: 'type'
},
{
title: '设备ip',
dataIndex: 'ip'
},
{
title: '存放地点',
dataIndex: 'roomName'
},
{
title: '设备状态',
dataIndex: 'status'
},
{
title: '创建时间',
dataIndex: 'createDate',
sorter: true
},
{
title: '设备编号',
dataIndex: 'equipmentNum'
},
{
title: '设备图片',
dataIndex: 'pic'
},
{
title: '操作',
width: '200px',

View File

@ -9,8 +9,11 @@
</a-form-item>
</a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='服务时间30分钟起步'>
<a-input placeholder='请输入服务时间30分钟起步' v-model='queryParam.serveTime' />
<a-form-item label='服务类型'>
<a-select placeholder="服务类型" v-model='queryParam.serveType'>
<a-select-option :value="'1'">免费服务</a-select-option>
<a-select-option :value="'2'">增值服务</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md='8' :sm='24'>
@ -93,8 +96,8 @@ export default {
scopedSlots: { customRender: 'serveType' }
},
{
title: '服务时间30分钟起步',
dataIndex: 'serveTime'
title: '金额描述',
dataIndex: 'money'
},
{
title: '备注',

View File

@ -8,31 +8,6 @@
<a-input placeholder='请输入名称' v-model='queryParam.title' />
</a-form-item>
</a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='描述'>
<a-input placeholder='请输入描述' v-model='queryParam.content' />
</a-form-item>
</a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='金额'>
<a-input placeholder='请输入金额' v-model='queryParam.money' />
</a-form-item>
</a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='地址'>
<a-input placeholder='请输入地址' v-model='queryParam.address' />
</a-form-item>
</a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='是否需要核销'>
<a-input placeholder='请输入是否需要核销' v-model='queryParam.isVerification' />
</a-form-item>
</a-col>
<a-col :md='5' :sm='15'>
<a-form-item label='是否需要展示'>
<a-input placeholder='请输入是否需要展示' v-model='queryParam.isShow' />
</a-form-item>
</a-col>
<a-col :md='8' :sm='24'>
<span class='table-page-search-submitButtons'>
<a-button type='primary' @click='$refs.table.refresh(true)'>查询</a-button>
@ -56,6 +31,13 @@
:columns='columns'
:data='loadData'
>
<span slot='type' slot-scope='text,record'>
<span v-if="text == 1"><a-tag color="green">抵用劵</a-tag></span>
<span v-else><a-tag color="cyan">优惠劵</a-tag></span>
</span>
<span slot='isShow' slot-scope='text,record'>
<a-switch :checked="record.isShow === 0 ? true : false" @change="onChange(record,$event)" />
</span>
<span slot='action' slot-scope='text, record'>
<a v-if='editEnabel' @click='handleEdit(record)'>编辑</a>
<a-divider type='vertical' />
@ -69,7 +51,7 @@
<script>
import { STable } from '@/components'
import { delTicket, getTicketList } from '@/api/admin/meeting/ticket'
import { delTicket, getTicketList,saveTicket } from '@/api/admin/meeting/ticket'
import TicketModal from './modules/TicketModal.vue'
import { checkPermission } from '@/utils/permissions'
@ -93,6 +75,7 @@ export default {
mdl: {},
// /
advanced: false,
checked:true,
//
queryParam: {},
//
@ -101,29 +84,14 @@ export default {
title: '名称',
dataIndex: 'title'
},
{
title: '描述',
dataIndex: 'content'
},
{
title: '类型',
dataIndex: 'type'
dataIndex: 'type',
scopedSlots: { customRender: 'type' }
},
{
title: '金额',
dataIndex: 'money'
},
{
title: '地址',
dataIndex: 'address'
},
{
title: '是否需要核销',
dataIndex: 'isVerification'
},
{
title: '是否需要展示',
dataIndex: 'isShow'
title: '优惠方式',
dataIndex: 'content'
},
{
title: '开始时间',
@ -136,12 +104,9 @@ export default {
sorter: true
},
{
title: '备注',
dataIndex: 'remark'
},
{
title: '是否默认',
dataIndex: 'isDefault'
title: '是否需要展示',
dataIndex: 'isShow',
scopedSlots: { customRender: 'isShow' }
},
{
title: '操作',
@ -165,6 +130,13 @@ export default {
created () {
},
methods: {
onChange(record,selected,selectedRows,event){
record.isShow = selected ?0:1
saveTicket(record).then((res)=>{
console.log(res)
})
},
onSelectChange (selectedRowKeys, selectedRows) {
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows

View File

@ -14,20 +14,57 @@
<a-form-item style="display:none">
<a-input v-decorator="['version']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备名称">
<a-input placeholder="设备名称" v-decorator="['equipmentName']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备编号">
<a-input placeholder="设备编号" v-decorator="['equipmentNum', {rules: [{required: true, message: '请输入设备编号'}]}]"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备名称">
<a-input placeholder="设备名称" v-decorator="['equipmentName',{rules: [{required: true, message: '请输入设备名称'}]}]"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备类型">
<a-select v-decorator="['type',{rules: [{ required: true, message: '请选择设备类型'}]}]" placeholder="请选择设备类型">
<a-select-option value="0">
门禁
</a-select-option>
<a-select-option value="1">
开门控制器
</a-select-option>
</a-select>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备ip">
<a-input placeholder="设备ip" v-decorator="['ip',{rules: [{required: true, message: '请输入设备ip'}]}]"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="所属楼层">
<a-select v-decorator="['buildId',{rules: [{ required: true, message: '请选择所属楼层' }]}]" placeholder="所属楼层" @change='getRoomList' >
<a-select-option v-for="item in floorList" :key="item.id" :value="item.id" >
{{ item.floorName }}
</a-select-option>
</a-select>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="存放地点">
<a-select v-decorator="['roomId',{rules: [{ required: true, message: '选择存放地点' }]}]" placeholder="所属房间" @change='getArea' >
<a-select-option v-for="item in roomList" :key="item.id" :value="item.id" >
{{ item.name }}
</a-select-option>
</a-select>
</a-form-item>
<!-- <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="存放地点">-->
<!-- <a-input placeholder="存放地点" v-decorator="['roomId',{rules: [{required: true, message: '请输入存放地点'}]}]"/>-->
<!-- </a-form-item>-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备状态">
<a-select v-decorator="['status',{rules: [{ required: true, message: '请选择设备状态'}]}]" placeholder="请选择设备状态">
<a-select-option value="0">
开启
</a-select-option>
<a-select-option value="1">
损坏
</a-select-option>
<a-select-option value="2">
离线
</a-select-option>
</a-select>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="设备图片">
<a-input placeholder="设备图片" v-decorator="['pic']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="创建者">
<a-input placeholder="创建者" v-decorator="['createBy']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="更新者">
<a-input placeholder="更新者" v-decorator="['updateBy']"/>
<a-input placeholder="设备图片" v-decorator="['pic',{rules: [{required: true, message: '请输入设备图片'}]}]"/>
</a-form-item>
</a-form>
</a-modal>
@ -35,6 +72,7 @@
<script>
import {saveEquipment} from '@/api/admin/meeting/equipment'
import pick from 'lodash.pick'
import { getFloorList,getRoomListByFloorId } from '@/api/admin/meeting/roomContent'
export default {
name: 'EquipmentModal',
@ -55,14 +93,31 @@
},
confirmLoading: false,
mdl: {},
form: this.$form.createForm(this)
form: this.$form.createForm(this),
floorList:[],
roomList:[]
}
},
beforeCreate () {
},
created () {
this.getFloorList()
},
methods: {
getFloorList(){
getFloorList().then((res) =>{
this.floorList = res.data
})
},
getRoomList(value){
let param={
"buildingDetailId":value
}
getRoomListByFloorId(param).then((res) =>{
this.roomList = res.data
})
},
add () {
this.form.resetFields()
this.edit({ id: 0 })

View File

@ -268,7 +268,7 @@ export default {
visible: false,
labelCol: {
xs: { span: 24 },
sm: { span: 8 },
sm: { span: 5 },
},
uploadUrl: process.env.VUE_APP_API_BASE_URL + '/dfs/upload',
imageUrl: '',
@ -280,7 +280,7 @@ export default {
roomList:[],
wrapperCol: {
xs: { span: 16 },
xs: { span: 24 },
sm: { span: 16 },
},
confirmLoading: false,

View File

@ -15,18 +15,18 @@
<a-input v-decorator="['version']"/>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="服务名称">
<a-input placeholder="服务名称" v-decorator="['serveName']"/>
<a-input placeholder="服务名称" v-decorator="['serveName',{rules:[{required: true, message: '请输入服务名称' }]}]" />
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="服务类型">
<a-select placeholder="服务类型" v-decorator="['serveType', {rules: [{ message: '请选择服务类型' }]}]">
<a-select placeholder="服务类型" @change='changeServeType' v-decorator="['serveType', {rules: [{required: true, message: '请选择服务类型' }]}]">
<a-select-option :value="'1'">免费服务</a-select-option>
<a-select-option :value="'2'">增值服务</a-select-option>
</a-select>
</a-form-item>
<!-- <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="服务时间30分钟起步">-->
<!-- <a-input placeholder="服务时间30分钟起步" v-decorator="['serveTime']"/>-->
<!-- </a-form-item>-->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="服务图标">
<a-form-item v-if="form.type == 2" :labelCol="labelCol" :wrapperCol="wrapperCol" label="金额描述">
<a-input placeholder="金额描述" v-decorator="['money',{rules:[{required: true, message: '请输入金额描述' }]}]" />
</a-form-item>
<a-form-item v-if="form.type == 1" :labelCol="labelCol" :wrapperCol="wrapperCol" label="服务图标">
<!-- <a-input placeholder="室内图片url" v-decorator="['indoorPicUrl']" />-->
<a-upload
v-decorator="['pic']"
@ -45,6 +45,10 @@
</div>
</a-upload>
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="备注">
<a-input placeholder="备注" v-decorator="['remake']" />
</a-form-item>
</a-form>
</a-modal>
</template>
@ -86,6 +90,12 @@ export default {
created () {
},
methods: {
changeServeType(value){
this.form.type = value
console.log(this.form.type)
},
beforeUpload (file) {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png'
if (!isJpgOrPng) {

View File

@ -2,7 +2,7 @@
<a-modal
title='操作'
style='top: 20px;'
:width='800'
:width='1000'
v-model='visible'
:confirmLoading='confirmLoading'
@ok='handleSubmit'
@ -14,74 +14,291 @@
<a-form-item style='display:none'>
<a-input v-decorator="['version']" />
</a-form-item>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='名称'>
<a-input placeholder='名称' v-decorator="['title']" />
</a-form-item>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='描述'>
<a-input placeholder='描述' v-decorator="['content']" />
</a-form-item>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='金额'>
<a-input placeholder='金额' v-decorator="['money']" />
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="开始时间">
<a-date-picker @change="onChange" v-decorator="['startTime']" placeholder="开始时间" />
</a-form-item>
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="结束日期">
<a-date-picker @change="onChange" v-decorator="['endDate']" placeholder="结束日期" />
</a-form-item>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='是否需要核销'>
<a-input placeholder='是否需要核销' v-decorator="['isVerification']" />
</a-form-item>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='是否需要展示'>
<a-input placeholder='是否需要展示' v-decorator="['isShow']" />
</a-form-item>
<div style='display: flex;margin-bottom: 20px'>
<span style='width: 20px;display: block;font-size: 25px;color: #1890ff;font-weight: bold;'>|</span>
<span style='display: block;margin-top: 11px;font-size: 15px'>新增优惠卷</span>
</div>
<a-row>
<a-col :span='11'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='优惠卷名称'>
<a-input placeholder='优惠卷名称' v-decorator="['title',{rules: [{ required: true, message: '优惠卷名称'}]}]" />
</a-form-item>
</a-col>
<a-col :span='11'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='优惠卷类型'>
<a-select
placeholder='请选择类型' v-decorator="['type',{rules: [{ required: true, message: '优惠卷类型'}]}]"
@change='getType'
>
<a-select-option value='1'>抵用卷</a-select-option>
<a-select-option value='2'>优惠卷</a-select-option>
</a-select>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span='11'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='优惠方式'>
<a-input placeholder='优惠方式' v-decorator="['content',{rules: [{ required: true, message: '优惠方式'}]}]" />
</a-form-item>
</a-col>
<a-col :span='11'>
<a-form-item v-if="form.type === '1' " :labelCol='labelCol' :wrapperCol='wrapperCol' label='时长'>
<a-input placeholder='时长' v-decorator="['duration',{rules: [{ required: true, message: '时长'}]}]" />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span='11'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='开始时间'>
<a-date-picker @change='onChange' v-decorator="['startTime',{rules: [{ required: true, message: '开始时间'}]}]"
placeholder='开始时间' />
</a-form-item>
</a-col>
<a-col :span='11'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='结束日期'>
<a-date-picker @change='onChange' v-decorator="['endDate',{rules: [{ required: true, message: '结束日期'}]}]"
placeholder='结束日期' />
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span='11'>
<a-form-item :labelCol='labelCol' :wrapperCol='wrapperCol' label='发送数量' style='margin-top: 20px;'>
<a-radio-group v-model='value' @change='onNumChange'>
<a-radio :value='1'>
无限制
</a-radio>
<a-radio :value='2'>
有限制
</a-radio>
<div>
<a-input-number v-if='value === 2' placeholder='发送数量'
v-decorator="['num',{rules: [{ required: true, message: '结束日期'}]}]"
style='margin-top: 20px;width: 200px' />
</div>
</a-radio-group>
</a-form-item>
</a-col>
</a-row>
<div style='display: flex;margin-bottom: 20px'>
<span style='width: 20px;display: block;font-size: 25px;color: #1890ff;font-weight: bold;'>|</span>
<span style='display: block;margin-top: 11px;font-size: 15px'>使用企业</span>
</div>
<div style='display: flex;justify-content: space-between;align-items: center;margin-bottom: 20px'>
<div style='margin-left: 50px'>
<a @click='getCustomer'>选择企业</a>
</div>
<a-form layout='inline'>
<a-form-item label='关键词' style='margin-right: 135px'>
<a-input placeholder='请输入关键词' v-model='queryParam.title' />
</a-form-item>
</a-form>
</div>
<a-table :columns='columns'
size='default'
ref='table'
style='width: 800px;margin-left: 20px'
:data-source='loadData'
rowKey='id'
:rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}'>
<a slot='name' slot-scope='text'>{{ text }}</a>
<span slot='action' slot-scope='text, record'>
<a @click='deleteRecord(record)' >删除</a>
<a-divider type='vertical' />
<a @click='couponTicket(record)'>多发优惠劵</a>
</span>
</a-table>
</a-form>
<a-modal v-model='customerVisible' title='会议设备' width='800px' @ok='itemHandleOk()'>
<div class='table-page-search-wrapper'>
<a-form layout='inline'>
<a-form-item label='关键词' style='width: 300px'>
<a-input placeholder='请输入关键词' v-model='customerQueryParam.itemName' />
</a-form-item>
</a-form>
</div>
<div class='table-operator'>
</div>
<a-table
size='default'
ref='table'
rowKey='id'
:rowSelection='{ selectedRowKeys: selectedCustomerRowKeys, onChange: onCustomerSelectChange }'
:columns='customerColumns'
:data-source='data'
>
</a-table>
</a-modal>
<a-modal
title='发放优惠券'
style='top: 20px;'
:width='500'
v-model='numVisible'
:confirmLoading='confirmLoading'
@ok='handleNumSubmit'
>
<a-form layout='inline'>
<a-form-item label='发放数量' >
<a-input-number placeholder='请输入发放数量' v-model='ticketNum' style='width: 200px' />
</a-form-item>
</a-form>
</a-modal>
</a-modal>
</template>
<script>
import { saveTicket } from '@/api/admin/meeting/ticket'
import { saveTicket, getTicketByCompany } from '@/api/admin/meeting/ticket'
import pick from 'lodash.pick'
import { STable } from '@/components'
export default {
name: 'TicketModal',
props: {},
components: {},
components: {
STable
},
data() {
return {
visible: false,
customerVisible: false,
customerQueryParam: {},
labelCol: {
xs: { span: 24 },
sm: { span: 5 }
sm: { span: 6 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 }
},
ticketNum:0,
selectedRowKeys: [],
selectedRows: [],
selectedCustomerRowKeys: [],
selectedCustomerRows: [],
columns: [
{
title: '企业名称',
dataIndex: 'name'
},
{
title: '企业负责人',
dataIndex: 'user.nickname',
key: 'age'
},
{
title: '联系电话',
dataIndex: 'user.mobile'
},
{
title: '优惠劵数量',
dataIndex: 'num'
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
}
],
customerColumns: [
{
title: '企业名称',
dataIndex: 'name'
},
{
title: '企业负责人',
dataIndex: 'user.nickname',
key: 'age'
},
{
title: '联系电话',
dataIndex: 'user.mobile'
},
{
title: '操作',
dataIndex: 'action',
scopedSlots: { customRender: 'action' }
}
],
CompanyList: [],
data: [],
loadData: [],
// loadData: parameter => {
// return getTicketByCompany(Object.assign(parameter, this.queryParam))
// },
value: 1,
numVisible:false,
confirmLoading: false,
mdl: {},
queryParam: {},
form: this.$form.createForm(this)
}
},
beforeCreate () {
beforeCreate() {
},
created () {
created() {
},
methods: {
onChange (date, dateString) {
//
couponTicket(){
this.numVisible =true
},
handleNumSubmit(){
},
deleteRecord(record) {
this.loadData = this.loadData.filter(item => item.id != record.id)
this.data.push(record)
},
onSelectChange(selectedRowKeys, selectedRows) {
console.log(selectedRowKeys, selectedRows)
this.selectedRowKeys = selectedRowKeys
this.selectedRows = selectedRows
},
onCustomerSelectChange(selectedRowKeys, selectedRows) {
this.selectedCustomerRowKeys = selectedRowKeys
this.selectedCustomerRows = selectedRows
},
getCustomer() {
this.customerVisible = true
},
onNumChange(e) {
this.value = e.target.value
},
getType(value) {
this.form.type = value
},
onChange(date, dateString) {
this.form.startTime = dateString[0]
this.form.endDate = dateString[1]
console.log(this.form.startTime)
},
add() {
this.form.resetFields()
this.selectedCustomerRowKeys = []
this.edit({ id: 0 })
},
edit(record) {
this.mdl = Object.assign(record)
this.visible = true
getTicketByCompany().then(res => {
this.loadData = res.rows
})
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.mdl, 'id', 'title', 'content', 'type', 'money', 'address', 'isVerification', 'isShow', 'startTime', 'endDate', 'remark', 'isDefault', 'version', 'deleteFlag', 'createBy', 'createTime', 'updateBy', 'updateTime'))
this.form.setFieldsValue(pick(this.mdl, 'id', 'title', 'content', 'duration', 'type', 'money', 'address', 'isVerification', 'isShow', 'startTime', 'endDate', 'remark', 'isDefault', 'version', 'deleteFlag', 'createBy', 'createTime', 'updateBy', 'updateTime'))
})
},
handleSubmit(e) {
@ -107,19 +324,6 @@ export default {
})
}
},
watch: {
/*
'selectedRows': function (selectedRows) {
this.needTotalList = this.needTotalList.map(item => {
return {
...item,
total: selectedRows.reduce( (sum, val) => {
return sum + val[item.dataIndex]
}, 0)
}
})
}
*/
}
watch: {}
}
</script>