yeguodong 1 week ago
parent
commit
a0510fbc61

+ 24 - 1
src/api/lc/sterile.js

@@ -1,10 +1,33 @@
 import request from "../../utils/request";
 
-//模糊分页查询项目列表
 export function insertSterile(data) {
     return request({
         url: '/Sterile/insertSterile',
         method: 'post',
         data,
     })
+}
+
+export function getSterileList(data) {
+    return request({
+        url: '/Sterile/getSterileList',
+        method: 'post',
+        data,
+    })
+}
+
+export function insertWarehousingSterile(data) {
+    return request({
+        url: '/WarehousingSterile/insertWarehousingSterile',
+        method: 'post',
+        data,
+    })
+}
+
+export function getWarehousingSterileList(data) {
+    return request({
+        url: '/WarehousingSterile/getWarehousingSterileList',
+        method: 'post',
+        data,
+    })
 }

+ 1 - 1
src/utils/request.js

@@ -9,7 +9,7 @@ import { stringify } from "qs";
 import env from "@/utils/setting";
 
 const service = axios.create({
-  baseURL: env.VITE_BASE_URL,
+  baseURL: "http://130.150.161.57:8706",
   withCredentials: true,
   timeout: 0,
   showLoading: true,

+ 12 - 49
src/views/sterile/base/sterile/index.vue

@@ -10,15 +10,13 @@
             </div>
             <el-table :data="tableData" border style="width: 100%" height="100%" stripe highlight-current-row
                 class="ypClassTable normal-size">
-                <el-table-column prop="projectCode" label="项目编码">
+                <el-table-column prop="sterileCode" label="项目编码">
                 </el-table-column>
-                <el-table-column prop="projectName" label="项目名称">
+                <el-table-column prop="sterileName" label="项目名称">
                 </el-table-column>
                 <el-table-column prop="projectSpecifications" label="规格">
                 </el-table-column>
-                <el-table-column prop="projectUnit" label="单位">
-                </el-table-column>
-                <el-table-column prop="priceCode" label="物价码">
+                <el-table-column prop="sterileUnit" label="单位">
                 </el-table-column>
                 <el-table-column prop="projectType" label="项目类型">
                     <template v-slot="scope">
@@ -57,10 +55,11 @@
         <info :currentEditId="currentEditId" @handleDialogClose="handleDialogClose" @init="init"></info>
     </el-dialog>
 </template>
-<script setup name="YpDict">
+<script setup name="sterile">
 import { ref, onMounted, nextTick } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
-import { getLcProjectList, insertLcProject, getAllLcProjectTypes } from '@/api/lc/project.js'
+import { getAllLcProjectTypes } from '@/api/lc/project.js'
+import { insertSterile, getSterileList } from '@/api/lc/sterile.js';
 import searchArea from '@/components/searchArea/index.vue';
 import info from '@/views/sterile/base/sterile/info.vue';
 import { getLabelByValue } from '@/utils/common.js'
@@ -68,43 +67,12 @@ import { getLabelByValue } from '@/utils/common.js'
 const delFlagOption = [{ value: '0', label: '启用' }, { value: '1', label: '停用' }]
 
 const searchData = ref([
-    {
-        label: '项目编码',
-        key: 'projectCode',
-        type: 'input',
-        value: '',
-        clearable: true,
-    },
     {
         label: '项目名称',
-        key: 'projectName',
+        key: 'sterileName',
         type: 'input',
         value: '',
-    },
-    {
-        label: '项目类型',
-        key: 'projectType',
-        type: 'select',
-        value: '',
-        optionsData: [
-        ],
-    },
-    {
-        label: '是否停用',
-        key: 'delFlag',
-        type: 'select',
-        value: '',
-        optionsData: [
-            {
-                label: '启用',
-                value: '0',
-            },
-            {
-                label: '停用',
-                value: '1',
-            },
-        ],
-    },
+    }
 ])
 const pageSize = ref(10)
 const pageNumber = ref(1)
@@ -132,11 +100,9 @@ const init = (params) => {
         pageSize: pageSize.value,
         pageNumber: pageNumber.value
     }
-    getLcProjectList(params).then((res) => {
-        console.log("getLcProjectList", res)
+    getSterileList(params).then((res) => {
         total.value = res.total
         tableData.value = res.records
-        console.log("tableData", tableData.value)
     }).catch((err) => {
         ElMessage.error(err)
     })
@@ -148,16 +114,13 @@ const initOptions = () => {
 
 const getProjectTypeOption = () => {
     getAllLcProjectTypes().then((res) => {
-        console.log("getAllLcProjectTypes", res)
-        projectTypeOption = res
-        console.log("projectTypeOption", projectTypeOption)
+        projectTypeOption = res;
         searchData.value[2].optionsData = projectTypeOption.map(item => {
             return {
                 label: item.typeName,
                 value: item.id
             }
-        })
-        console.log("searchData.value[2]", searchData.value[3].optionsData)
+        });
     }).catch((err) => {
         console.log("getAllLcProjectTypes", err)
         ElMessage.error(err)
@@ -204,7 +167,7 @@ const changeDelFlag = (row) => {
         dangerouslyUseHTMLString: true
     }).then(() => {
         let params = { id: row.id, delFlag: row.delFlag == '0' ? '1' : '0' }
-        insertLcProject(params).then(res => {
+        insertSterile(params).then(res => {
             ElMessage.success(row.delFlag == '0' ? '停用成功' : '启用成功')
             init()
         }).catch(err => {

+ 180 - 0
src/views/sterile/warehousing/index.vue

@@ -0,0 +1,180 @@
+<template>
+    <div class="layout_display_flex_y">
+        <div class="obviousBox" style="margin-bottom: 6px;">
+            <searchArea :searchData="searchData" @submit="searchByForm"></searchArea>
+        </div>
+
+        <div class="layout_display_flex_y" style="height: 85%">
+            <div style="background-color: #fff;padding: 8px">
+                <el-button type="primary" icon="Plus" @click="onAddItem" style="margin-left: 5px">新增</el-button>
+            </div>
+            <el-table :data="tableData" border style="width: 100%" height="100%" stripe highlight-current-row
+                class="ypClassTable normal-size">
+                <el-table-column prop="warehousingSterileCode" label="入库单号">
+                </el-table-column>
+                <el-table-column prop="createTime" label="制单时间">
+                </el-table-column>
+                <el-table-column prop="userName" label="制单人员">
+                </el-table-column>
+                <el-table-column prop="approvalName" label="审核人">
+                </el-table-column>
+                <el-table-column prop="status" label="状态">
+                    <template v-slot="scope">
+                        <span>{{ scope.row.status == '-1' ? '草稿' : (scope.row.status == '0' ? "未审核" : "已审核") }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" align="center">
+                    <template #default="scope">
+                        <el-button type="primary" size="small" @click="onEditItem(scope.row)">编辑</el-button>
+                        <el-button :type="'success'" size="small"
+                            @click.prevent="approval(scope.row)">
+                            审核通过
+                        </el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+        <div>
+            <el-pagination :current-page="pageNumber" :page-size="pageSize" :page-sizes="[10, 15, 20, 25]"
+                :total="total" layout="total, sizes, prev, pager, next, jumper" style="margin-top: 5px"
+                @size-change="handleSizeChange" @current-change="handleCurrentChange">
+            </el-pagination>
+        </div>
+    </div>
+    <el-dialog v-model="showDialog" :close-on-click-modal="false" :close-on-press-escape="false"
+        :title="(currentEditId ? '编辑' : '新增') + '项目'" width="100%" destroy-on-close fullscreen
+        @close="handleDialogClose">
+        <!-- <YpPrintName :ypPrintNameDetail="ypPrintNameDetail" @closeYpPrintNameEditFor="closeYpPrintName" /> -->
+        <info :currentEditId="currentEditId" @handleDialogClose="handleDialogClose" @init="init"></info>
+    </el-dialog>
+</template>
+<script setup name="warehousing">
+import { ref, onMounted, nextTick } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { insertWarehousingSterile, getWarehousingSterileList } from '@/api/lc/sterile.js';
+import searchArea from '@/components/searchArea/index.vue';
+import info from '@/views/sterile/warehousing/info.vue';
+
+const searchData = ref([
+    {
+        label: '入库单号',
+        key: 'warehousingSterileCode',
+        type: 'input',
+        value: '',
+    }
+])
+const pageSize = ref(10)
+const pageNumber = ref(1)
+const total = ref(0)
+const currentEditId = ref('')
+
+const tableData = ref([])
+const handleSizeChange = (val) => {
+    pageSize.value = val
+    init()
+}
+const handleCurrentChange = (val) => {
+    pageNumber.value = val
+    init()
+}
+
+let showDialog = ref(false)
+
+const init = (params) => {
+    params = {
+        ...params,
+        ...searchForm.value,
+        pageSize: pageSize.value,
+        pageNumber: pageNumber.value
+    }
+    getWarehousingSterileList(params).then((res) => {
+        total.value = res.total
+        tableData.value = res.records
+    }).catch((err) => {
+        ElMessage.error(err)
+    })
+}
+
+onMounted(() => {
+    nextTick(() => {
+        init()
+    })
+})
+
+const searchForm = ref({})
+//搜索表单方法
+const searchByForm = (form) => {
+    console.log("search", form)
+    searchForm.value = form
+    init()
+}
+
+const onEditItem = (row) => {
+    currentEditId.value = row.id
+    showDialog.value = true
+}
+
+const handleDialogClose = () => {
+    currentEditId.value = ""
+    showDialog.value = false
+}
+
+const approval = (row) => {
+    ElMessageBox.confirm("是否确认审核通过", {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+    }).then(() => {
+        let params = { id: row.id, status: '1' }
+        insertWarehousingSterile(params).then(res => {
+            ElMessage.success('审核成功')
+            init()
+        }).catch(err => {
+            // ElMessage.error(err.message)
+        })
+    }).catch((action) => {
+        if (action === 'cancel') {
+        }
+    })
+}
+
+</script>
+<style lang="scss" deep>
+.el-dialog__body {
+    // padding: 0 16px;
+    // height: calc(100% - 25px);
+}
+
+.el-tabs {
+    height: calc(100% - 27px);
+
+    .el-tabs__content {
+        padding: 5px;
+        height: calc(100% - 27px);
+    }
+
+    .el-tab-pane {
+        height: calc(100% - 27px);
+        overflow: auto;
+    }
+
+    .el-table__inner-wrapper {
+        height: calc(100% - 10px) !important;
+    }
+
+}
+
+.el-table .warning-row {
+    --el-table-tr-bg-color: #dd7694;
+}
+
+.search-select-pre {
+    padding: 0 12px;
+    color: var(--el-text-color-regular);
+    background: var(--el-fill-color-light);
+    border-right: 1px solid var(--el-border-color);
+    --el-select-input-padding-left: '0'
+}
+</style>

+ 257 - 0
src/views/sterile/warehousing/info.vue

@@ -0,0 +1,257 @@
+<template>
+    <div class="container">
+        <el-form ref="formRef" :model="form" class="form" label-width="127px" size="default" :rules="formRules">
+            <el-row :gutter="20">
+                <el-col :span="8">
+                    <div>
+                        新增入库申请</div>
+                </el-col>
+            </el-row>
+            <el-divider />
+            <el-row :gutter="20">
+                <el-col :span="8">
+                    <el-form-item label="入库部门" prop="sterileName">
+                        <el-input v-model="dept" disabled>
+                        </el-input>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+        </el-form>
+
+         <el-divider />
+
+        <el-form label-width="127px" size="default">
+            <el-row :gutter="20">
+                <el-col :span="5">
+                    <el-form-item label="项目名称" prop="remark">
+                        <el-select
+                            v-model="selectDisinfectProject"
+                            clearable
+                            collapse-tags
+                            filterable
+                            placeholder="Select"
+                            popper-class="custom-header"
+                            :max-collapse-tags="1"
+                            style="width: 240px"
+                        >
+                            <el-option
+                                v-for="item in disinfectProjects"
+                                :key="item.id"
+                                :label="item.sterileName"
+                                :value="item.id"
+                            />
+                        </el-select>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="5">
+                    <el-form-item label="批号" prop="sterileName">
+                        <el-input v-model="batchNum">
+                        </el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="5">
+                    <el-form-item label="数量" prop="sterileName">
+                        <el-input v-model="count">
+                        </el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="2">
+                    <el-button type="primary" @click="add">新增</el-button>
+                </el-col>
+            </el-row>
+
+        </el-form>
+
+        <el-table :data="tableData" style="width: 100%" height="500" size="default">
+            <el-table-column prop="sterileCode" label="项目编号" width="80" />
+            <el-table-column prop="sterileName" label="项目名称" />
+            <el-table-column prop="projectSpecifications" label="规格" />
+            <el-table-column prop="count" label="数量" />
+            <el-table-column prop="batchNum" label="批号" />
+            <el-table-column fixed="right" label="操作" width="150">
+                <template #default="scope">
+                    <el-button type="danger" size="small" @click="deleteAlias(scope.$index)">
+                        删 除
+                    </el-button>
+                    <!-- <el-button link type="primary" size="small">Edit</el-button> -->
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="confirm-area flex-center-row" style="margin: 20px ;">
+            <el-button type="primary" @click="confirm" size="default">确定</el-button>
+            <el-button @click="cancel" size="default">取消</el-button>
+        </div>
+    </div>
+
+</template>
+<script setup name="WarehousingInfo">
+import { nextTick, onMounted, ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { getLcProjectById,getAllLcProjectTypes } from '@/api/lc/project.js';
+import { getSterileList,insertWarehousingSterile } from "@/api/lc/sterile.js";
+
+const props = defineProps({
+    //子组件接收父组件传递过来的值
+    currentEditId: String,
+})
+//使用父组件传递过来的值
+const { currentEditId } = toRefs(props)
+//父组件的方法
+const emit = defineEmits(["handleDialogClose", "init"])
+onMounted(() => {
+    nextTick(() => {
+        getDisinfectProjects();
+        getProjectTypes()
+        if (currentEditId.value) {
+            init()
+        }
+    })
+});
+
+const dept = ref("供应室");
+
+const form = ref({
+    delFlag: "0",
+    lcProjectAliasList: [
+
+    ]
+})
+
+const formRef = ref(null)
+const formRules = {
+    projectType: [
+        { required: true, message: "请选择项目分类", trigger: "change" },
+    ],
+    projectName: [
+        { required: true, message: "请输入项目名称", trigger: "blur" },
+    ]
+}
+
+const batchNum = ref();
+const count = ref();
+
+const selectDisinfectProject = ref();
+
+const disinfectProjects = ref([]);
+
+let tableData = ref([]);
+const add = () => {
+    for(let j = 0;j<disinfectProjects.value.length;j++) {
+        if(selectDisinfectProject.value == disinfectProjects.value[j].id) {
+            disinfectProjects.value[j].batchNum = batchNum.value;
+            disinfectProjects.value[j].count = count.value;
+            tableData.value.push(disinfectProjects.value[j]);
+        }
+    }
+    console.log("tableData.value", tableData.value)
+
+};
+
+const getDisinfectProjects = () => {
+    let params = {
+        projectType: "2"
+    }
+    getSterileList(params).then(res => {
+        disinfectProjects.value = res;
+    }).catch(err => {
+
+    })
+};
+
+
+
+const projectTypeOption = ref([])
+
+const init = () => {
+    getLcProjectById(currentEditId.value).then(res => {
+        form.value = res.data
+        tableData.value = res.data.lcProjectAliasList
+    }).catch(err => {
+
+    })
+}
+
+const confirm = () => {
+    formRef.value.validate(valid => {
+        if (valid) {
+            let params = { ...form.value };
+            params.warehousingSterileDetailList = tableData.value;
+            params.warehousingDept = "2000900";
+            insertWarehousingSterile(params).then(res => {
+                ElMessage.success(currentEditId.value ? '修改成功' : '新增成功');
+                emit("handleDialogClose");
+                emit("init");
+            }).catch(err => {
+                // ElMessage.error(err.message)
+            })
+        }
+    })
+}
+
+const cancel = () => {
+    emit("handleDialogClose")
+}
+
+
+
+const getProjectTypes = () => {
+    getAllLcProjectTypes().then(res => {
+        projectTypeOption.value = res
+    }).catch(err => {
+
+    })
+}
+
+const deleteAlias = (index) => {
+    ElMessageBox.confirm("是否删除", {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+    }).then(() => {
+        tableData.value.splice(index, 1)
+    }).catch((action) => {
+    })
+}
+
+
+
+</script>
+
+<style lang="scss">
+.container {
+    height: 98%;
+    width: 100%;
+
+    .top-area {
+        height: 8%;
+        border-bottom: 1px solid #727070;
+        font-size: 1.2rem;
+    }
+
+    .title-area {
+        font-size: 1.2rem;
+        font-weight: bold;
+    }
+}
+
+
+
+.el-input__icon {
+    cursor: pointer;
+}
+
+.flex-center-row {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+}
+
+.flex-center-column {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+}
+</style>