huangxw 10 hónapja
szülő
commit
7e6ec60774

+ 13 - 1
src/api/cdt/menus/index.ts

@@ -33,8 +33,20 @@ export const testPackageListCount = (query?: any): any => {
  */
 export const getEnterpriseList = (query?: any): any => {
     return request({
-        url: '/company/listByPage',
+        url: '/dgtmedicine/member/list',
         method: 'get',
         params: query
     });
 };
+/**
+ * 新增检测套餐
+ * @param id
+ * @returns {*}
+ */
+export const addTestPackage = (data?: any): any => {
+    return request({
+        url: '/dgtmedicine/testPackage/add',
+        method: 'post',
+        data
+    });
+};

+ 35 - 13
src/views/cdt/menus/form/index.vue

@@ -13,7 +13,7 @@
             <div class="flex1 over-auto">
                 <el-form ref="formRef" label-width="auto" label-position="top" :model="form" :rules="rules">
                     <div class="pd-16 border-bottom">
-                        <el-form-item>
+                        <el-form-item prop="items">
                             <div class="flex1">
                                 <template v-if="!form.items.length">
                                     <add-btn @click="showSelectItems = true" content="选择检测项目"></add-btn>
@@ -81,7 +81,7 @@
                             <template v-if="form.permitType === '2'">
                                 <el-col :span="8">
                                     <el-form-item label="适用企业" prop="permitCpy">
-                                        <SearchSelect v-model="form.permitCpy"></SearchSelect>
+                                        <SearchSelect v-model="form.permitCpy" :params="{ reviewStatus: '1' }" @changeItem="changeItemCpy"></SearchSelect>
                                     </el-form-item>
                                 </el-col>
                             </template>
@@ -128,7 +128,9 @@
                         <div class="info-title mb-10">套餐价格确认</div>
                         <vxe-table ref="tableRightRef" border :data="form.priceDetail" :column-config="{ resizable: true }">
                             <vxe-column type="seq" width="60" title="序号" align="center" />
-                            <vxe-column v-if="form.permitType === '2'" title="企业名称" align="center" field="name" min-width="100" :formatter="colNoData" />
+                            <vxe-column v-if="form.permitType === '2'" title="企业名称" align="center" min-width="100" :formatter="colNoData">
+                                <template #default>{{ form.permitCpyName }}</template>
+                            </vxe-column>
                             <vxe-column title="适用类型" align="center" field="name" min-width="100" :formatter="colNoData" />
                             <vxe-column title="折扣标准" align="center" min-width="100">
                                 <template #default="{ row }">{{ NP.times(row?.discount, 10) }}折</template>
@@ -149,9 +151,8 @@
             </div>
             <div class="d-flex a-c j-c pd-16">
                 <el-button @click="router.go(-1)">取消</el-button>
-                <el-button @click="save" color="#0079fe">暂存</el-button>
-                <el-button @click="save" type="primary">提交</el-button>
-                <el-button @click="submitForm" type="warning">立即上架</el-button>
+                <el-button @click="save" color="#0079fe">保存</el-button>
+                <el-button @click="submitGround" type="warning">立即上架</el-button>
             </div>
         </div>
     </div>
@@ -164,6 +165,8 @@ import { TransferItems } from '../../models';
 import NP from 'number-precision';
 import { colNoData } from '@/utils/noData';
 import { vipDiscountList } from '@/api/cdt/discount';
+import { debounce } from 'lodash';
+import { addTestPackage } from '@/api/cdt/menus';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { dm_package_type, dm_permit_type, vip_level } = toRefs<any>(proxy?.useDict('dm_package_type', 'dm_permit_type', 'vip_level'));
 // 字典
@@ -176,7 +179,7 @@ const form = ref<any>({
 });
 const rules = reactive({
     items: [
-        { required: true, message: '请选择检测项目', trigger: 'change' },
+        { required: true,  type: 'array', message: '请选择检测项目', trigger: 'change' },
     ],
     name: [
         { required: true, message: '请输入套餐名称', trigger: 'blur' }
@@ -215,11 +218,24 @@ const rules = reactive({
         { required: true, message: '请上传产品图', trigger: 'blur' }
     ]
 });
-const save = () => {
-    console.log('暂存');
-};
-const submitForm = () => {
-    console.log('立即上架');
+const formRef = ref<any>();
+const save = debounce(() => {
+   submitSever()
+}, 500)
+const submitGround = debounce(async () => {
+   await formRef.value.validate()
+   submitSever()
+}, 500)
+const submitSever = async () => {
+   proxy.$modal.loading('提交中...');
+   const params = {
+         ...form.value
+   }
+   const res = await addTestPackage(params).finally(() => {
+       proxy.$modal.closeLoading();
+   });
+   if (!res || res.code !== 200) return;
+    proxy.$modal.msgSuccess('提交成功!')
 };
 // 合计价格
 const totalCountPrice = computed(() => {
@@ -231,6 +247,13 @@ const changeItems = (val: any) => {
     form.value.items = val;
     changePermitType();
 };
+const changeItemCpy = (val: any) => {
+    console.log(val);
+    const { vipLevel, cpyName } = val;
+    form.value.permit = [vipLevel || '0']
+    form.value.permitCpyName = cpyName;
+    changePermit([vipLevel || '0']);
+};
 // 继续添加方法
 const addItems = () => {
     // 保留之前选中
@@ -255,7 +278,6 @@ const getDiscount = async () => {
     discounts.value = res.rows;
 };
 const changePermit = (val: string[]) => {
-    console.log(val);
     form.value.priceDetail = discounts.value.filter(({ level }) => val.includes(level + '')).map(item => {
         return {
             ...item,

+ 9 - 3
src/views/models/SearchSelect.vue

@@ -13,9 +13,13 @@ const props = defineProps({
     modelValue: {
         type: String,
         default: ''
+    },
+    params: {
+        type: Object,
+        default: () => ({})
     }
 })
-const emit = defineEmits(['change', 'update:modelValue'])
+const emit = defineEmits(['change', 'update:modelValue', 'changeItem'])
 const value = ref('')
 const options = ref([])
 const total = ref(0)
@@ -23,14 +27,14 @@ const selectDropRef = ref(null)
 const queryParams = ref({
     pageSize: 10,
     pageNum: 1,
-    cpyName: ''
+    cpyName: '',
 })
 const getList = async (hasRx = true) => {
     if (hasRx) {
         queryParams.value.pageNum = 1
         options.value = []
     }
-    const res = await getEnterpriseList(queryParams.value)
+    const res = await getEnterpriseList({ ...queryParams.value, ...props.params })
     total.value = res.total;
     if (hasRx) {
         options.value = res.rows
@@ -51,8 +55,10 @@ const load = () => {
     }
 }
 const changeSelect = (val: string) => {
+    const itemInfo = options.value.find(item => item.id === val)
     emit('update:modelValue', val)
     emit('change', val)
+    emit('changeItem', itemInfo)
 }
 const selectSearch = debounce(() => {
     getList()

+ 2 - 2
vite.config.ts

@@ -26,8 +26,8 @@ export default defineConfig(({ mode, command }: ConfigEnv): UserConfig => {
             proxy: {
                 [env.VITE_APP_BASE_API]: {
                     // target: 'http://dm.yujin.shuziyunyao.com/api',
-                    // target: 'http://dm.yujin.shuziyunyao.com/api',
-                    target: 'http://192.168.1.68:8080',
+                    target: 'http://dm.yujin.shuziyunyao.com/api',
+                    // target: 'http://192.168.1.68:8080',
                     changeOrigin: true,
                     ws: true,
                     rewrite: (path) => path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')