huangxw 10 mesiacov pred
rodič
commit
65f4a87a05

+ 22 - 0
src/api/dgtmedicine/member/index.ts

@@ -96,3 +96,25 @@ export const queryMemberApprovalCount = (query?: any): AxiosPromise<any> => {
     params: query
   });
 };
+/**
+ * 修改级别
+ * @param id
+ */
+export const editVipLevel = (data: any): AxiosPromise<any> => {
+  return request({
+    url: '/dgtmedicine/member/editLevel',
+    method: 'post',
+    data: data
+  });
+};
+/**
+ * 修改有效期
+ * @param id
+ */
+export const editValidityDate = (data: any): AxiosPromise<any> => {
+  return request({
+    url: '/dgtmedicine/member/editValidityDate',
+    method: 'post',
+    data: data
+  });
+};

+ 18 - 5
src/views/dgtmedicine/member/index.vue

@@ -66,9 +66,9 @@
               <template #default="{ row }">
                 <el-button text type="primary" @click="memberDetail(row)">详情</el-button>
                 <span></span>
-                <el-button text style="color: #0079fe">修改有效期</el-button>
+                <el-button text style="color: #0079fe" @click="editRowEndDate(row)">修改有效期</el-button>
                 <span></span>
-                <el-button text style="color: #0079fe">修改级别</el-button>
+                <el-button text style="color: #0079fe" @click="editRowlevel(row)">修改级别</el-button>
                 <span></span>
                 <el-button text type="danger" @click="deleteItem(row)">删除</el-button>
               </template>
@@ -80,6 +80,8 @@
       </div>
     </div>
   </div>
+  <EditVipLevel v-if="showViplevel" v-model:show="showViplevel" :info="rowInfo" :dict="{ vip_level }" @success="getList"></EditVipLevel>
+  <EditVipEndDate v-if="showVipEndDate" v-model:show="showVipEndDate" :info="rowInfo"  @success="getList"></EditVipEndDate>
 </template>
 
 <script setup name="Member" lang="ts">
@@ -89,6 +91,7 @@ import { MemberVO, MemberQuery, MemberForm, MemberLevelCountVO } from '@/api/dgt
 import { ApprovalLogQuery, ApprovalLogForm } from '@/api/dgtmedicine/approvalLog/types';
 import { colNoData } from '@/utils/noData';
 import { DateRange, searchTabs } from '@/views/models/index';
+import { EditVipLevel, EditVipEndDate } from '../model/index';
 const router = useRouter();
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { cpy_res_status, vip_level } = toRefs<any>(proxy?.useDict('cpy_res_status', 'vip_level'));
@@ -96,10 +99,11 @@ const memberList = ref<MemberVO[]>([]);
 const memberLevelCountList = ref<MemberLevelCountVO[]>([]);
 const loading = ref(true);
 const showSearch = ref(true);
-const ids = ref<Array<string | number>>([]);
+const showViplevel = ref(false);
+const showVipEndDate = ref(false);
 const total = ref(0);
 const queryFormRef = ref<ElFormInstance>();
-
+const rowInfo = ref<any>({});
 const initFormData: MemberForm = {
   id: undefined,
   cpyName: '',
@@ -139,7 +143,16 @@ const data = reactive<any>({
   },
   rules: {}
 });
-
+// 修改级别
+const editRowlevel = (row: any) => {
+  rowInfo.value = { ...row };
+  showViplevel.value = true;
+};
+// 修改有效期时间
+const editRowEndDate = (row: any) => {
+  rowInfo.value = { ...row };
+  showVipEndDate.value = true;
+};
 const { queryParams, form } = toRefs(data);
 /** 查询会员信息列表 */
 const getList = async () => {

+ 64 - 0
src/views/dgtmedicine/model/EditVipEndDate.vue

@@ -0,0 +1,64 @@
+<template>
+    <vxe-modal v-model="dialogVisible" :title="title" show-zoom resize show-footer destroy-on-close transfer @hide="close" :width="width" :z-index="100">
+        <template #default>
+            <el-form ref="formRef" :model="form" :rules="rules" label-width="auto">
+                <div class="mb-10 f-s-14 c-333 f-w-5">修改企业:<span class="c-primary">{{ info?.cpyName }}</span></div>
+                <el-form-item label="有效期至:" prop="endDate">
+                    <el-date-picker v-model="form.endDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择有效期" clearable style="width: 100%"></el-date-picker>
+                </el-form-item>
+            </el-form>
+        </template>
+        <template #footer>
+            <el-button @click="close">取消</el-button>
+            <el-button type="primary" @click="submitForm">确认修改</el-button>
+        </template>
+    </vxe-modal>
+</template>
+
+<script setup name="EditVipEndDate" lang="ts">
+import { editValidityDate } from '@/api/dgtmedicine/member/index';
+import { propTypes } from '@/utils/propTypes';
+import { FormInstance } from 'element-plus';
+const emit = defineEmits(['update:show', 'close', 'success']);
+const props = defineProps({
+    show: propTypes.bool.def(false),
+    title: propTypes.string.def('修改有效期'),
+    width: propTypes.number.def(560),
+    info: propTypes.any.def(null),
+    dict: propTypes.object.def({}),
+});
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const dialogVisible = ref(false);
+const form = ref<any>({
+    endDate: ''
+});
+const rules = reactive({
+    endDate: [{ required: true, message: '请选择有效期', trigger: 'change' }],
+})
+const formRef = ref<FormInstance>();
+const close = () => {
+    formRef.value?.resetFields();
+    emit('update:show', false);
+    emit('close', false);
+};
+const submitForm = async () => {
+    try {
+        await formRef.value?.validate();
+        const res = await editValidityDate({ ...form.value, id: props.info?.id });
+        if (res) {
+            close();
+            emit('success', true);
+        }
+    } catch (error) {
+        console.error(error);
+    }
+};
+
+watch(
+    () => props.show,
+    (val) => {
+        dialogVisible.value = val;
+    },
+    { immediate: true }
+);
+</script>

+ 66 - 0
src/views/dgtmedicine/model/EditVipLevel.vue

@@ -0,0 +1,66 @@
+<template>
+    <vxe-modal v-model="dialogVisible" :title="title" show-zoom resize show-footer destroy-on-close transfer @hide="close" :width="width" :z-index="100">
+        <template #default>
+            <el-form ref="formRef" :model="form" :rules="rules" label-width="auto">
+                <div class="mb-10 f-s-14 c-333 f-w-5">修改企业:<span class="c-primary">{{ info?.cpyName }}</span></div>
+                <el-form-item label="选择会员级别:" prop="vipLevel">
+                    <el-select v-model="form.vipLevel" placeholder="请选择会员级别" clearable style="width: 100%">
+                        <el-option v-for="item in dict.vip_level" :key="item.value" :label="item.label" :value="item.value" />
+                    </el-select>
+                </el-form-item>
+            </el-form>
+        </template>
+        <template #footer>
+            <el-button @click="close">取消</el-button>
+            <el-button type="primary" @click="submitForm">确定</el-button>
+        </template>
+    </vxe-modal>
+</template>
+
+<script setup name="EditVipLevel" lang="ts">
+import { editVipLevel } from '@/api/dgtmedicine/member/index';
+import { propTypes } from '@/utils/propTypes';
+import { FormInstance } from 'element-plus';
+const emit = defineEmits(['update:show', 'close', 'success']);
+const props = defineProps({
+    show: propTypes.bool.def(false),
+    title: propTypes.string.def('修改级别'),
+    width: propTypes.number.def(560),
+    info: propTypes.any.def(null),
+    dict: propTypes.object.def({}),
+});
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const dialogVisible = ref(false);
+const form = ref<any>({
+    vipLevel: ''
+});
+const rules = reactive({
+    vipLevel: [{ required: true, message: '请选择会员级别', trigger: 'change' }],
+})
+const formRef = ref<FormInstance>();
+const close = () => {
+    formRef.value?.resetFields();
+    emit('update:show', false);
+    emit('close', false);
+};
+const submitForm = async () => {
+    try {
+        await formRef.value?.validate();
+        const res = await editVipLevel({ ...form.value, id: props.info?.id });
+        if (res) {
+            close();
+            emit('success', true);
+        }
+    } catch (error) {
+        console.error(error);
+    }
+};
+
+watch(
+    () => props.show,
+    (val) => {
+        dialogVisible.value = val;
+    },
+    { immediate: true }
+);
+</script>

+ 3 - 1
src/views/dgtmedicine/model/index.ts

@@ -3,4 +3,6 @@ export { default as uploadInvoiceForm } from './uploadInvoiceForm.vue'; // 上
 export { default as CheckPass } from './CheckPass.vue'; // 审核为通过弹框
 export { default as CheckNoPass } from './CheckNoPass.vue'; // 审核为不通过弹框
 export { default as MemberInfo } from './MemberInfo.vue'; // 会员信息
-export { default as MemberPayLog } from './MemberPayLog.vue'; // 会员缴费记录
+export { default as MemberPayLog } from './MemberPayLog.vue'; // 会员缴费记录
+export { default as EditVipLevel } from './EditVipLevel.vue'; // 修改级别
+export { default as EditVipEndDate } from './EditVipEndDate.vue'; // 修改会员有效期时间