优惠卷列表

This commit is contained in:
zoujiandong 2024-06-04 18:51:39 +08:00
parent bce4651dfd
commit 0f6f973192
5 changed files with 165 additions and 113 deletions

View File

@ -47,5 +47,9 @@ export function getCouponDetail(id){
data data
}) })
} }
export function getProduct(){//系统-发放系统优惠卷
return request({
url:'admin/product/list',
method: 'post'
})
}

View File

@ -1,11 +1,11 @@
import request from '../../utils/request' import request from '../../utils/request'
const url = '/admin/inquiry/config/doctor'; const url = '/admin/inquiry/doctor';
export function getInquiryconfigList(params){ export function getInquiryconfigList(params){
return request({ return request({
url:'/admin/inquiry/config/doctor', url:'/admin/inquiry/doctor',
method: 'get', method: 'get',
params params
}) })
@ -13,21 +13,21 @@ export function getInquiryconfigList(params){
export function addInquiryconfig(data){//添加配置 export function addInquiryconfig(data){//添加配置
return request({ return request({
url:'/admin/inquiry/config/doctor', url:'/admin/inquiry/doctor',
method: 'post', method: 'post',
data data
}) })
} }
export function editInquiryconfig(data,id){//添加配置 export function editInquiryconfig(data,id){//添加配置
return request({ return request({
url:'/admin/inquiry/config/doctor/'+id, url:'/admin/inquiry/doctor/'+id,
method: 'put', method: 'put',
data data
}) })
} }
export function getInquiryconfigDetail(id){ export function getInquiryconfigDetail(id){
return request({ return request({
url:'/admin/inquiry/config/doctor/'+id, url:'/admin/inquiry/doctor/'+id,
method: 'get' method: 'get'
}) })
} }

View File

@ -1,11 +1,11 @@
import request from '../../utils/request' import request from '../../utils/request'
const url = '/admin/inquiry/config/system'; const url = '/admin/inquiry/system';
export function getSysconfigList(params){ export function getSysconfigList(params){
return request({ return request({
url:'/admin/inquiry/config/system', url:'/admin/inquiry/system',
method: 'get', method: 'get',
params params
}) })
@ -13,21 +13,21 @@ export function getSysconfigList(params){
export function addSysconfig(data){//添加配置 export function addSysconfig(data){//添加配置
return request({ return request({
url:'/admin/inquiry/config/system', url:'/admin/inquiry/system',
method: 'post', method: 'post',
data data
}) })
} }
export function editSysconfig(data,id){//添加配置 export function editSysconfig(data,id){//添加配置
return request({ return request({
url:'/admin/inquiry/config/system/'+id, url:'/admin/inquiry/system/'+id,
method: 'put', method: 'put',
data data
}) })
} }
export function getSysconfigDetail(id){ export function getSysconfigDetail(id){
return request({ return request({
url:'/admin/inquiry/config/system/'+id, url:'/admin/inquiry/system/'+id,
method: 'get' method: 'get'
}) })
} }

View File

@ -13,10 +13,10 @@
<div class="bar"></div> <div class="bar"></div>
<div class="name">优惠卷信息</div> <div class="name">优惠卷信息</div>
</div> </div>
<a-form :model="modalForm" ref="modalFormRef" :auto-label-width="true"> <a-form :model="modalForm" ref="modalFormRef" :auto-label-width="true" :rules="rules">
<a-row :gutter="24" style="margin-top: 35px"> <a-row :gutter="24" style="margin-top: 35px">
<a-col :span="12"> <a-col :span="12">
<a-form-item field="inquiry_no" label="优惠卷名称:"> <a-form-item field="coupon_name" label="优惠卷名称:">
<a-input <a-input
placeholder="请输入优惠卷名称" placeholder="请输入优惠卷名称"
v-model="modalForm.coupon_name" v-model="modalForm.coupon_name"
@ -24,7 +24,7 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
<a-form-item field="inquiry_no" label="使用平台:"> <a-form-item field="coupon_client" label="使用平台:">
<a-select <a-select
placeholder="请选择使用平台" placeholder="请选择使用平台"
v-model="modalForm.coupon_client" v-model="modalForm.coupon_client"
@ -117,7 +117,6 @@
:style="{ width: '320px' }" :style="{ width: '320px' }"
placeholder="请选择问诊类型" placeholder="请选择问诊类型"
v-model="modalForm.inquiry_type" v-model="modalForm.inquiry_type"
> >
<!-- 1:'专家问诊', 2:'快速问诊', 3:'公益问诊', 4:'问诊购药',5:'糖组检测' --> <!-- 1:'专家问诊', 2:'快速问诊', 3:'公益问诊', 4:'问诊购药',5:'糖组检测' -->
<a-option key="1" value="1" label="专家问诊">专家问诊</a-option> <a-option key="1" value="1" label="专家问诊">专家问诊</a-option>
@ -129,9 +128,35 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24">
<a-col a-col :span="24">
<a-form-item field="coupon_count" label="发放数量:">
<a-input-number
v-model="modalForm.coupon_count"
:style="{ width: '320px' }"
placeholder="请输入发放数量"
class="input-demo"
:min="1"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col a-col :span="24">
<a-form-item field="coupon_price" label="优惠卷金额:">
<a-input-number
v-model="modalForm.coupon_price"
:style="{ width: '320px' }"
placeholder="请输入优惠卷金额"
class="input-demo"
:min="0"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24" v-if="showTimeRange"> <a-row :gutter="24" v-if="showTimeRange">
<a-col :span="12"> <a-col :span="12">
<a-form-item field="inquiry_type" label="有效时间:"> <a-form-item field="valid_start_time" label="有效时间:" :rules="[{required: true,message:'请选择有效时间'}]">
<a-range-picker <a-range-picker
style="width: 360px; margin: 0 24px 24px 0" style="width: 360px; margin: 0 24px 24px 0"
show-time show-time
@ -145,7 +170,7 @@
</a-row> </a-row>
<a-row :gutter="24" v-if="showValidDay"> <a-row :gutter="24" v-if="showValidDay">
<a-col a-col :span="24"> <a-col a-col :span="24">
<a-form-item field="valid_days" label="领取之日起有效天数:"> <a-form-item field="valid_days" label="领取之日起有效天数:" :rules="[{required: true,message:'请输入领取之日起有效天数'}]">
<a-input-number <a-input-number
v-model="modalForm.valid_days" v-model="modalForm.valid_days"
:style="{ width: '320px' }" :style="{ width: '320px' }"
@ -156,22 +181,9 @@
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<!-- <a-row :gutter="24">
<a-col a-col :span="24">
<a-form-item field="inquiry_type" label="发放个数:">
<a-input-number
v-model="value"
:style="{ width: '320px' }"
placeholder="请输入发放个数"
class="input-demo"
:min="1"
/>
</a-form-item>
</a-col>
</a-row> -->
<a-row :gutter="24" v-if="showManjian"> <a-row :gutter="24" v-if="showManjian">
<a-col a-col :span="24"> <a-col a-col :span="24">
<a-form-item field="with_amount" label="满减金额(元):"> <a-form-item field="with_amount" label="满减金额(元):" :rules="[{required: true,message:'请输入满减金额'}]">
<a-input-number <a-input-number
v-model="modalForm.with_amount" v-model="modalForm.with_amount"
:style="{ width: '320px' }" :style="{ width: '320px' }"
@ -184,7 +196,7 @@
</a-row> </a-row>
<a-row :gutter="24"> <a-row :gutter="24">
<a-col a-col :span="24"> <a-col a-col :span="24">
<a-form-item field="min_usable_number" label="单商品最小可使用数量:"> <a-form-item field="min_usable_number" label="单商品最小可使用数量:" :rules="[{required: true,message:'请输入单商品最小可使用数量'}]">
<a-input-number <a-input-number
v-model="modalForm.min_usable_number" v-model="modalForm.min_usable_number"
:style="{ width: '320px' }" :style="{ width: '320px' }"
@ -216,15 +228,13 @@
</a-col> </a-col>
</a-row> --> </a-row> -->
<a-row :gutter="24" v-if="showProduct"> <a-row :gutter="24" v-if="showProduct">
<a-col a-col :span="24"> <a-col a-col :span="12">
<a-form-item field="product_id" label="关联商品:"> <a-form-item field="product_id" label="关联商品:" :rules="[{required: true,message:'请选择关联商品'}]">
<a-input-number <a-select multiple v-model="modalForm.product_id" placeholder="请选择关联商品">
v-model="modalForm.product_id" <a-option v-for="item in productList" :key="item.product_platform_id" :value="item.product_platform_id" :label="item.product_name">
:style="{ width: '320px' }" {{ item.product_name }}
placeholder="请选择关联商品" </a-option>
class="input-demo" </a-select>
:min="1"
/>
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
@ -321,9 +331,10 @@
</a-modal> </a-modal>
</template> </template>
<script setup> <script setup>
import { ref, toRefs, reactive, watch} from 'vue'; import { ref, toRefs, watch,getCurrentInstance} from 'vue';
import { addCoupon,updateCoupon } from '@/api/coupon/list'; import { addCoupon,updateCoupon,getProduct } from '@/api/coupon/list';
import { Message } from '@arco-design/web-vue'; import { Message } from '@arco-design/web-vue';
const { proxy } = getCurrentInstance();
const emits = defineEmits(['closeChange']); const emits = defineEmits(['closeChange']);
const props = defineProps({ const props = defineProps({
// //
@ -395,7 +406,11 @@ watch(
changeType(props.modalForm.coupon_type); changeType(props.modalForm.coupon_type);
changeScope(props.modalForm.application_scope); changeScope(props.modalForm.application_scope);
changeObject(props.modalForm.distribution_object); changeObject(props.modalForm.distribution_object);
changeValidType(props.modalForm.valid_type) changeValidType(props.modalForm.valid_type);
if(props.modalForm.valid_start_time && props.modalForm.valid_end_time){
defaultValue.value=[props.modalForm.valid_start_time,props.modalForm.valid_end_time]
};
} }
}, },
{ immediate: true, deep: true } { immediate: true, deep: true }
@ -403,42 +418,113 @@ watch(
const onOk = (dateString, date) => { const onOk = (dateString, date) => {
[valid_start_time.value, valid_end_time.value] = dateString; [valid_start_time.value, valid_end_time.value] = dateString;
}; };
const productList=ref([])
const handleGetProduct=async()=>{
const {code,data}=await getProduct();
if(code==200){
productList.value=data;
}
}
const handleClose = () => { const handleClose = () => {
emits('closeChange', (modalVisible.value = false)); emits('closeChange', (modalVisible.value = false));
}; };
const disabledDate = (time) => { const disabledDate = (time) => {
return time.getTime() < Date.now() - 8.64e7; return time.getTime() < Date.now() - 8.64e7;
}; };
const handleAddCoupon=async()=>{ const handleAddCoupon=()=>{
proxy.$refs.modalFormRef.validate(async(valid) => {
if (!valid) {
let {coupon_name,coupon_client,coupon_type,distribution_object,application_scope,
inquiry_type,is_mutex,is_display,distribution_with_day,min_usable_number,coupon_count,coupon_price,with_amount,valid_type,valid_days,valid_start_time,valid_end_time,product_id,reissue_interval_days,is_reissuable_after_expire,is_popup,coupon_desc}=props.modalForm;
let product_id_arr=[];
if(product_id){
product_id_arr=product_id.split(',');
}
const {code}=await addCoupon({ const {code}=await addCoupon({
coupon_name,
coupon_client,
coupon_type,
distribution_object,
application_scope,
inquiry_type,
is_mutex,
is_display,
distribution_with_day,
min_usable_number,
coupon_count,
coupon_price,
with_amount,
valid_type,
valid_days,
valid_start_time,
valid_end_time,
product_id,
reissue_interval_days,
is_reissuable_after_expire,
is_popup,
coupon_desc
}) })
if(code==200){ if(code==200){
Message.success("添加成功"); Message.success("添加成功");
handleClose(); handleClose();
}else{
proxy.$notification.error(response.message);
} }
}
})
}; };
const handleUpdateCoupon=async()=>{ const handleUpdateCoupon=async()=>{
const {code}=await updateCoupon({ proxy.$refs.modalFormRef.validate(async(valid) => {
if (!valid) {
let {coupon_id,coupon_name,coupon_client,coupon_type,distribution_object,application_scope,
inquiry_type,is_mutex,is_display,distribution_with_day,min_usable_number,coupon_count,coupon_price,with_amount,valid_type,valid_days,valid_start_time,valid_end_time,product_id,reissue_interval_days,is_reissuable_after_expire,is_popup,coupon_desc}=props.modalForm;
let product_id_arr=[];
if(product_id){
product_id_arr=product_id.split(',');
}
const {code}=await updateCoupon(coupon_id,{
coupon_name,
coupon_client,
coupon_type,
distribution_object,
application_scope,
inquiry_type,
is_mutex,
is_display,
distribution_with_day,
min_usable_number,
coupon_count,
coupon_price,
with_amount,
valid_type,
valid_days,
valid_start_time,
valid_end_time,
product_id:product_id_arr,
reissue_interval_days,
is_reissuable_after_expire,
is_popup,
coupon_desc
}) })
if(code==200){ if(code==200){
Message.success("修改成功"); Message.success("修改成功");
handleClose() handleClose();
}else{
proxy.$notification.error(response.message);
} }
}
})
}; };
const rules = { const rules = {
coupon_name: [{ required: true, message: '请输入优惠卷名称' }], coupon_name: [{ required: true, message: '请输入优惠卷名称' }],
department_custom_id: [{ required: true, message: '请选择所在科室' }], coupon_client:[{ required: true, message: '请选择使用平台' }],
application_scope: [{ required: true, message: '请选择使用范围' }],
coupon_type:[{ required: true, message: '请选择发放类型' }],
distribution_object:[{ required: true, message: '请选择发放对象' }],
valid_type:[{ required: true, message: '请选择有效类型' }],
}; };
</script> </script>
<style scoped> <style scoped>
.infobox {
display: flex;
flex-direction: column;
justify-content: space-between;
}
</style> </style>

View File

@ -100,11 +100,10 @@
</a-table> </a-table>
<!-- Modal --> <!-- Modal -->
<couponDetail :modalVisible="modalVisible" :modalForm="modalForm" @closeChange="()=>{modalVisible=false;}"></couponDetail> <couponDetail :modalVisible="modalVisible" :modalForm="modalForm" @closeChange="closeCouponDetail"></couponDetail>
<!-- 就诊人详情 -->
<familyModal :modalVisible="familyVisible" :modalForm="familyForm" @familyVisibleChange="()=>{familyVisible=false}"></familyModal>
<!-- Akiraka 20230223 删除与批量删除 结束 --> <!-- Akiraka 20230223 删除与批量删除 结束 -->
<a-modal v-model:visible="okVisible" :modal-style="{width:'420px'}" body-class="okmodal" <a-modal v-model:visible="okVisible" :modal-style="{width:'420px'}" body-class="okmodal"
@cancel="cancelOk" @ok="handleOk"> @cancel="cancelOk" @ok="handleOk">
@ -273,6 +272,7 @@ const isVisible=ref(false);
} }
}) })
} }
// //
const closeChangeOk = () => { const closeChangeOk = () => {
isVisible.value = false; isVisible.value = false;
@ -286,47 +286,6 @@ const showCoupon=(value,record)=>{
isVisible.value=true; isVisible.value=true;
cur_coupon_id.value=record.coupon_id; cur_coupon_id.value=record.coupon_id;
}; };
//
const handleChangeStatus=async(status)=>{
if(status==0){
cur_coupon_id.value=modalForm.coupon_id;
//okVisible.value=true;
isVisible.value=true
}else{
//okVisible.value=true;
isVisible.value=true
// switchStatus(modalForm.coupon_id,{
// status:1
// })
}
// await updateCouponStatus(cur_coupon_id,{
// coupon_status:!status?1:2
// })
// if(record.status==0){
// okVisible.value=true;
// }else{
// switchStatus(record.coupon_id,{
// status:1
// })
}
//
const familyVisible=ref(false);
const familyForm=reactive({
user:{},
avatar: 'https://img.applets.igandanyiyuan.com/basic/file/patient_avatar.png',
});
const handleFamilyDetail = async (family_id) => {
const { code, data} = await getFamilyDetail(family_id);
if (code == 200) {
Object.assign(familyForm, data);
familyVisible.value = true;
}
};
/** /**
* 分页改变 * 分页改变
* @param {Number} [page] * @param {Number} [page]
@ -373,7 +332,10 @@ const handleChangeStatus=async(status)=>{
proxy.$refs.queryFormRef.resetFields(); proxy.$refs.queryFormRef.resetFields();
getInfo(queryForm); getInfo(queryForm);
} }
const closeCouponDetail=()=>{
modalVisible.value=false;
getInfo({ ...pager, ...queryForm });
}
onMounted(() => { onMounted(() => {
getInfo(pager); getInfo(pager);
}); });