huangxw преди 10 месеца
родител
ревизия
ec27a8d44f

+ 52 - 0
src/api/price/station/index.ts

@@ -0,0 +1,52 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+
+/**
+ * 查询产地监测点列表
+ * @param query
+ * @returns {*}
+ */
+
+export const originCpyList = (query?: any): any => {
+    return request({
+        url: '/dgtmedicine/originCpy/list',
+        method: 'get',
+        params: query
+    });
+};
+/**
+ * 检测点统计
+ * @param query
+ * @returns {*}
+ */
+export const queryOriginCpyCount = (query?: any): any => {
+    return request({
+        url: '/dgtmedicine/originCpy/queryOriginCpyCount',
+        method: 'get',
+        params: query
+    });
+};
+/**
+ * 添加监测点企业信息
+ * @param query
+ * @returns {*}
+ */
+export const listByPage = (query?: any): any => {
+    return request({
+        url: '/company/listByPage',
+        method: 'get',
+        params: query
+    });
+};
+/**
+ * 添加监测点
+ * @param query
+ * @returns {*}
+ */
+export const addOriginCpy = (query?: any): any => {
+    return request({
+        url: '/dgtmedicine/originCpy/addOriginCpy',
+        method: 'post',
+        data: query
+    });
+};

+ 5 - 5
src/views/cdt/models/menuInfo.vue

@@ -10,11 +10,11 @@
                 <el-descriptions-item v-if="form?.permitType === '2'" label="适用企业:">{{ form?.permitCpyNames.toString()|| '-' }}</el-descriptions-item>
                 <el-descriptions-item label="检测周期:">{{ form?.period || '-' }}工作日</el-descriptions-item>
                 <el-descriptions-item label="上架数量:">{{ form?.totalCount || '-' }}</el-descriptions-item>
-                <el-descriptions-item ></el-descriptions-item>
-                <el-descriptions-item ></el-descriptions-item>
-                <el-descriptions-item  label="执行标准:" :span="2">{{ form?.standard || '-' }}</el-descriptions-item>
-                <el-descriptions-item   label="送样信息:" :span="2">{{ form?.description || '-' }}</el-descriptions-item>
-                <el-descriptions-item   label="购买须知:" :span="2">{{ form?.purchaseNotes || '-' }}</el-descriptions-item>
+                <el-descriptions-item></el-descriptions-item>
+                <el-descriptions-item></el-descriptions-item>
+                <el-descriptions-item label="执行标准:" :span="2">{{ form?.standard || '-' }}</el-descriptions-item>
+                <el-descriptions-item label="送样信息:" :span="2">{{ form?.description || '-' }}</el-descriptions-item>
+                <el-descriptions-item label="购买须知:" :span="2">{{ form?.purchaseNotes || '-' }}</el-descriptions-item>
                 <el-descriptions-item label="创建人:">{{ form?.createName || '-' }}</el-descriptions-item>
                 <el-descriptions-item label="创建时间:">{{ form?.createTime || '-' }}</el-descriptions-item>
             </el-descriptions>

+ 1 - 1
src/views/cdt/models/rowItems.vue

@@ -18,7 +18,7 @@
         </template>
     </vxe-modal>
 </template>
-<script setup name="Pay-log" lang="ts">
+<script setup name="rowItems" lang="ts">
 import { getTestPackageItems } from '@/api/cdt/menus';
 import { colNoData } from '@/utils/noData';
 import { propTypes } from '@/utils/propTypes';

+ 133 - 0
src/views/price/models/addStation.vue

@@ -0,0 +1,133 @@
+<template>
+    <vxe-modal v-model="dialogVisible" :title="title" show-zoom resize show-footer destroy-on-close transfer @hide="close" :width="width">
+        <template #default>
+            <div class="d-flex flex-cln" style="height: 60vh;">
+                <div class="flex1 ov-hd" style="height:50vh">
+                    <vxe-table ref="tableRef" :loading="loading" border :data="list" height="auto" :column-config="{ resizable: true }" :row-config="{keyField: 'id',isCurrent: true, isHover: true}" :checkbox-config="{ highlight: true, range: true, trigger: 'row', reserve: true }">
+                        <vxe-column type="checkbox" width="60"></vxe-column>
+                        <vxe-column type="seq" width="60" title="序号" align="center" />
+                        <!-- 企业名称 -->
+                        <vxe-column title="企业名称" field="cpyName" min-width="100" :formatter="colNoData" />
+                        <!-- 会员级别 -->
+                        <vxe-column title="会员级别" field="vipLevel" min-width="100" :formatter="colNoData" />
+                        <!-- 企业地址 -->
+                        <vxe-column title="企业地址" min-width="100" :formatter="colNoData">
+                            <template #default="{ row }">{{ row.regionCodeName }}{{ row.address }}</template>
+                        </vxe-column>
+                        <!-- 单位负责人 -->
+                        <vxe-column title="单位负责人" field="contactPerson" width="90" />
+                        <!-- 负责人联系电话 -->
+                        <vxe-column title="负责人联系电话" field="tel" width="120" />
+                    </vxe-table>
+                </div>
+                <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
+            </div>
+            <div class="d-flex j-c pd-16">
+                <el-form ref="formRef" :model="form" :rules="rules" label-width="auto" inline>
+                    <el-form-item label="监测点有效期至" prop="endDate">
+                        <el-date-picker v-model="form.endDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择监测点有效期至" clearable />
+                    </el-form-item>
+                </el-form>
+            </div>
+        </template>
+        <template #footer>
+            <el-button @click="close">取消</el-button>
+            <el-button type="primary" @click="submitForm">确认提交</el-button>
+        </template>
+    </vxe-modal>
+</template>
+<script setup name="addStation" lang="ts">
+import { addOriginCpy, listByPage } from '@/api/price/station';
+import { colNoData } from '@/utils/noData';
+import { propTypes } from '@/utils/propTypes';
+const emit = defineEmits(['update:show', 'close', 'sueccess']);
+const props = defineProps({
+    title: propTypes.string.def('添加监测点'),
+    width: propTypes.number.def(1200),
+    show: propTypes.bool.def(false)
+})
+const dialogVisible = ref(false);
+const { query }: any = useRoute()
+const router = useRouter();
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const list = ref<any[]>([]);
+const loading = ref(true);
+const total = ref(0);
+const queryFormRef = ref<ElFormInstance>();
+const data = reactive<any>({
+    form: {
+        endDate: ''
+    },
+    rules: {
+        endDate: [
+            { required: true, message: '请选择监测点有效期至', trigger: 'blur' }
+        ]
+    },
+    queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        status: '1'
+    }
+});
+const formRef = ref<ElFormInstance>();
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询会员信息列表 */
+const getList = async () => {
+    loading.value = true;
+    const res = await listByPage({ ...queryParams.value, packageId: props?.packageId });
+    list.value = res.rows;
+    total.value = res.total;
+    loading.value = false;
+};
+
+/** 搜索按钮操作 */
+const handleQuery = (level?: any) => {
+    queryParams.value.pageNum = 1;
+    getList();
+};
+
+/** 重置按钮操作 */
+const resetQuery = () => {
+    queryFormRef.value?.resetFields();
+    queryParams.value.startDate = '';
+    queryParams.value.endDate = '';
+    handleQuery();
+};
+
+const close = () => {
+    // formRef.value?.resetFields();
+    emit('update:show', false);
+    emit('close', false);
+};
+const tableRef = ref<any>();
+const submitForm = async () => {
+    const ids = tableRef.value?.getCheckboxReserveRecords(true).concat(tableRef.value?.getCheckboxRecords());
+    if (!ids.length) {
+        proxy?.$modal.msgWarning('请选择企业');
+        return;
+    }
+    // 表单校验
+    const valid = await formRef.value?.validate();
+    if (!valid) return;
+    const cpyIds = ids.map((item: any) => item.id);
+    proxy?.$modal.loading('提交中...');
+    const res = await addOriginCpy({ cpyIds, endDate: form.value?.endDate }).finally(() => {
+        proxy?.$modal.closeLoading();
+    });
+    if (!res || res.code !== 200) return
+    proxy?.$modal.msgSuccess('提交成功');
+    emit('sueccess', true);
+    close();
+};
+watch(
+    () => props.show,
+    (val) => {
+        dialogVisible.value = val;
+    },
+    { immediate: true }
+);
+onMounted(() => {
+    getList();
+});
+</script>

+ 1 - 0
src/views/price/models/index.ts

@@ -0,0 +1 @@
+export { default as addStation } from './addStation.vue'; // 添加监测点

+ 108 - 0
src/views/price/station/index.vue

@@ -0,0 +1,108 @@
+<template>
+    <div class="p-3">
+        <div class="bg-fff flex1 ov-hd d-flex flex-cln">
+            <div class="pd-16 border-bottom">
+                <div class="f-s-20 c-333 f-w-7 mb-20">监测点管理</div>
+                <div class="d-flex j-sb">
+                    <el-button type="primary" @click="showStation = true">添加监测点</el-button>
+                    <div class="d-flex pl-20">
+                        <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="auto">
+                            <el-form-item label="企业名称">
+                                <el-input v-model="queryParams.cpyName" placeholder="请输入企业名称" clearable />
+                            </el-form-item>
+                            <el-form-item>
+                                <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+                                <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+                            </el-form-item>
+                        </el-form>
+                    </div>
+                </div>
+            </div>
+            <div class="flex1 ov-hd pd-16 d-flex flex-cln">
+                <div class="d-flex j-sb mb-16">
+                    <div><searchTabs v-model="queryParams.isValid" @change="handleQuery" :list="tabs" key-label="name" key-value="type" key-count="num"></searchTabs></div>
+                    <div>
+                        <el-button type="primary">批量修改有效期</el-button>
+                        <el-button type="danger">批量删除</el-button>
+                    </div>
+                </div>
+                <div class="flex1 ov-hd">
+                    <vxe-table :loading="loading" border :data="list" min-height="0" max-height="100%">
+                        <!-- 序号 -->
+                        <vxe-column type="seq" width="60" title="序号" align="center" />
+                        <!-- 企业名称 -->
+                        <vxe-column title="企业名称" field="cpyName" min-width="100" />
+                        <!-- 企业地址 -->
+                        <vxe-column title="企业地址" min-width="100" :formatter="colNoData">
+                            <template #default="{ row }">{{ row.regionCodeName }}{{ row.address }}</template>
+                        </vxe-column>
+                        <!-- 单位负责人 -->
+                        <vxe-column title="单位负责人" field="contactPerson" width="90" />
+                        <!-- 负责人联系电话 -->
+                        <vxe-column title="负责人联系电话" field="tel" width="120" />
+                        <vxe-column title="有效期状态" width="90">
+                            <template #default="{ row }">
+                                <el-tag v-if="+row.isValid" type="success">有效</el-tag>
+                                <el-tag v-else type="danger">已过期</el-tag>
+                            </template>
+                        </vxe-column>
+                        <vxe-column title="有效期至" field="endDate" min-width="100" width="110" />
+                        <vxe-column title="操作人" field="createByName" min-width="100" :formatter="colNoData" />
+                        <vxe-column title="操作时间" field="createTime" min-width="100" :formatter="colNoData" />
+                        <vxe-column title="操作" align="center" field="right" width="220">
+                            <template #default="{ row }"></template>
+                        </vxe-column>
+                    </vxe-table>
+                </div>
+            </div>
+            <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
+            <div class="pd-5"></div>
+        </div>
+    </div>
+    <addStation v-model:show="showStation" @sueccess="handleQuery"></addStation>
+</template>
+<script setup name="price-station" lang="ts">
+import { originCpyList, queryOriginCpyCount } from '@/api/price/station';
+import { colNoData } from '@/utils/noData';
+import { searchTabs } from '@/views/models';
+
+import NP from 'number-precision';
+import { addStation } from '../models';
+const queryParams = ref<any>({
+    pageNum: 1,
+    pageSize: 10,
+    isValid: '1'
+});
+const showStation = ref(false);
+const loading = ref(false);
+const total = ref(0);
+const list = ref<any>([]);
+const getList = async () => {
+    loading.value = true;
+    const res = await originCpyList(queryParams.value);
+    if (!res || res.code !== 200) return;
+    list.value = res.rows;
+    total.value = res.total;
+    loading.value = false;
+};
+const handleQuery = () => {
+    queryParams.value.pageNum = 1;
+    getList();
+};
+const queryFormRef = ref<any>();
+const resetQuery = () => {
+    queryFormRef.value?.resetFields();
+    handleQuery();
+};
+// tabs count获取
+const tabs = ref<any>([]);
+const getTabs = async () => {
+    const res = await queryOriginCpyCount();
+    if (!res || res.code !== 200) return;
+    tabs.value = res.data
+};
+onMounted(() => {
+    getTabs();
+    handleQuery();
+});
+</script>