dev
This commit is contained in:
parent
e1ead5394f
commit
570a0962f8
|
|
@ -1,6 +1,5 @@
|
|||
<template>
|
||||
<div class="edit-panel" v-loading="isLoading" element-loading-text="正在保存......">
|
||||
|
||||
<div class="top">
|
||||
<el-form :model="inventory_order_data" :rules="formRules" ref="orderForm">
|
||||
<el-descriptions title="采购订单" border>
|
||||
|
|
@ -26,28 +25,28 @@
|
|||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="发票号">
|
||||
<el-form-item prop="invoiceCode" >
|
||||
<el-form-item prop="invoiceCode">
|
||||
<el-input v-model="inventory_order_data.invoiceCode"></el-input>
|
||||
</el-form-item>
|
||||
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="供应商">
|
||||
<el-form-item prop="supplierId" :label="''" :rules="formRules.supplierId">
|
||||
<el-select v-model="inventory_order_data.supplierId" placeholder="请选择供应商" style="width:300px">
|
||||
<el-option
|
||||
v-for="item in supplier_list"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
<el-select v-model="inventory_order_data.supplierId" placeholder="请选择供应商" style="width:300px">
|
||||
<el-option
|
||||
v-for="item in supplier_list"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="备注">
|
||||
<el-input v-model="inventory_order_data.remark"/>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-form>
|
||||
</el-form>
|
||||
</div>
|
||||
<GoodsSearch @selectCallBack="goodsSelectCallBack"></GoodsSearch>
|
||||
<div class="table_content">
|
||||
|
|
@ -84,37 +83,37 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="生产批号" width="150">
|
||||
<template #default="scope">
|
||||
<el-input
|
||||
v-model="scope.row.productionBatchCode"
|
||||
placeholder="生产批号"
|
||||
style="width: 100px"
|
||||
size="small"/>
|
||||
<el-input
|
||||
v-model="scope.row.productionBatchCode"
|
||||
placeholder="生产批号"
|
||||
style="width: 100px"
|
||||
size="small"/>
|
||||
</template>
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column label="生产日期" width="140">
|
||||
<template #default="scope">
|
||||
<el-date-picker
|
||||
:editable="false"
|
||||
v-model="scope.row.productionDate"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="生产日期"
|
||||
size="small"
|
||||
@change="checkProductionDate(scope.row)"
|
||||
style="width: 100px;"/>
|
||||
<el-date-picker
|
||||
:editable="false"
|
||||
v-model="scope.row.productionDate"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="生产日期"
|
||||
size="small"
|
||||
@change="checkProductionDate(scope.row)"
|
||||
style="width: 100px;"/>
|
||||
</template>
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column label="有效日期" width="140">
|
||||
<template #default="scope">
|
||||
<el-date-picker
|
||||
:editable="false"
|
||||
v-model="scope.row.expiryDate"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="有效日期"
|
||||
size="small" style="width: 100px;"/>
|
||||
<el-date-picker
|
||||
:editable="false"
|
||||
v-model="scope.row.expiryDate"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="有效日期"
|
||||
size="small" style="width: 100px;"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="100">
|
||||
|
|
@ -135,9 +134,9 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<Mask :is-show="is_add" :top="100">
|
||||
<Edit ref="editRef" @close="is_add = false;"/>
|
||||
</Mask>
|
||||
<Mask :is-show="is_add" :top="100">
|
||||
<Edit ref="editRef" @close="is_add = false;"/>
|
||||
</Mask>
|
||||
|
||||
</template>
|
||||
|
||||
|
|
@ -149,6 +148,7 @@ import Mask from "@/components/common/Mask.vue";
|
|||
import {ElMessage} from "element-plus";
|
||||
import GoodsSearch from "@/components/inventory/GoodsSearch.vue";
|
||||
import CloseBtn from "@/components/CloseBtn.vue";
|
||||
|
||||
const orderForm = ref()
|
||||
const formRules = ref({
|
||||
shippingCode: [{required: true, message: '请输入货单号', trigger: 'blur'}],
|
||||
|
|
@ -171,20 +171,22 @@ let inventory_order_data = ref({
|
|||
const checkProductionDate = (row: any) => {
|
||||
if (!row.productionDate) {
|
||||
ElMessage.error('生产日期不能为空');
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
const productionDate = new Date(row.productionDate);
|
||||
const currentDate = new Date();
|
||||
if (productionDate > currentDate) {
|
||||
ElMessage.error('生产日期不能晚于当前日期');
|
||||
row.productionDate = null; // 清空无效的生产日期
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
const checkExpiryDate = (row: any) => {
|
||||
if (!row.expiryDate) {
|
||||
ElMessage.error('有效期不能为空');
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
const productionDate = new Date(row.productionDate);
|
||||
const expiryDate = new Date(row.expiryDate);
|
||||
|
|
@ -193,10 +195,13 @@ const checkExpiryDate = (row: any) => {
|
|||
if (expiryDate <= currentDate) {
|
||||
ElMessage.error('有效期不能早于当前日期');
|
||||
row.expiryDate = null; // 清空无效的有效期
|
||||
return false;
|
||||
} else if (expiryDate <= productionDate) {
|
||||
ElMessage.error('有效期必须晚于生产日期');
|
||||
row.expiryDate = null; // 清空无效的有效期
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
const isLoading = ref(false)
|
||||
|
|
@ -239,19 +244,22 @@ let confirm = async () => {
|
|||
}
|
||||
|
||||
// 检查每个药品的有效期
|
||||
table_list.value.forEach((item: any) => {
|
||||
checkProductionDate(item)
|
||||
checkExpiryDate(item);
|
||||
});
|
||||
|
||||
for (let i = 0; i < table_list.value.length; i++) {
|
||||
if (!checkProductionDate(table_list.value[i])) {
|
||||
return
|
||||
}
|
||||
if (!checkExpiryDate(table_list.value[i])) {
|
||||
return
|
||||
}
|
||||
}
|
||||
let data = {
|
||||
inventoryOrder: JSON.parse(JSON.stringify(inventory_order_data.value)),
|
||||
inventoryOrderGoodsList: JSON.parse(JSON.stringify(table_list.value))
|
||||
}
|
||||
|
||||
isLoading.value = true
|
||||
post("inventory/order/create", data).then((res: any) => {
|
||||
exit()
|
||||
isLoading.value = true
|
||||
})
|
||||
|
||||
} catch (error) {
|
||||
|
|
@ -287,7 +295,7 @@ const getSupplierList = () => {
|
|||
const query = {
|
||||
turn: 1
|
||||
}
|
||||
post("inventory/supplier/list", {query:query}).then((res: any) => {
|
||||
post("inventory/supplier/list", {query: query}).then((res: any) => {
|
||||
supplier_list.value = res.list
|
||||
supplier_list.value = res.list
|
||||
})
|
||||
|
|
@ -375,7 +383,8 @@ onMounted(() => {
|
|||
right: 10px;
|
||||
bottom: 10px;
|
||||
}
|
||||
.error{
|
||||
|
||||
.error {
|
||||
background-color: #F00;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -9,69 +9,56 @@
|
|||
show-word-limit
|
||||
:autosize="{ minRows: 8, maxRows: 20 }"
|
||||
type="textarea"
|
||||
@input="parsing"
|
||||
/>
|
||||
<div class="btn">
|
||||
<el-button type="primary" @click="save">保存</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
<el-descriptions title="解析后的数据" size="small" :column="2" border v-if="flag">
|
||||
<el-descriptions-item
|
||||
align="center"
|
||||
label="定点机构编码"
|
||||
:span="2"
|
||||
>
|
||||
{{ decryptedText.fixmedinsCode }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions title="解析后的数据" size="small" :column="2" border>
|
||||
<!-- <el-descriptions-item-->
|
||||
<!-- align="center"-->
|
||||
<!-- label="定点机构编码"-->
|
||||
<!-- :span="2"-->
|
||||
<!-- >-->
|
||||
<!-- {{ decryptedText.fixmedinsCode }}-->
|
||||
<!-- </el-descriptions-item>-->
|
||||
<el-descriptions-item
|
||||
align="center"
|
||||
label="证书创建时间"
|
||||
>
|
||||
{{ decryptedText.createDate }}
|
||||
{{ formatDate(decryptedText.createDate) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item
|
||||
align="center"
|
||||
label="证书过期时间"
|
||||
>
|
||||
{{ decryptedText.expiryDate }}
|
||||
{{ formatDate(decryptedText.expiryDate) }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {post} from "@/utils/request.ts";
|
||||
import {onMounted, onUnmounted, ref} from "vue";
|
||||
import {onMounted, ref} from "vue";
|
||||
import {ElMessage} from "element-plus";
|
||||
import {formatDate} from "@/utils/dateUtils.ts";
|
||||
|
||||
const decryptedText = ref<any>({})
|
||||
const ciphertext = ref<string>('')
|
||||
const flag = ref<any>(false)
|
||||
|
||||
const parsing = () => {
|
||||
if (ciphertext.value) {
|
||||
post("common/config/parsing", {ciphertext: ciphertext.value}).then((res: any) => {
|
||||
decryptedText.value = res;
|
||||
flag.value = true;
|
||||
})
|
||||
} else {
|
||||
flag.value = false;
|
||||
}
|
||||
}
|
||||
const ciphertext = ref<any>('')
|
||||
const save = () => {
|
||||
if (ciphertext.value) {
|
||||
post("common/config/setcert", {encryptedText: ciphertext.value}).then((res: any) => {
|
||||
post("common/auth/set", {ciphertext: ciphertext.value}).then(() => {
|
||||
ElMessage.success("保存成功")
|
||||
init()
|
||||
})
|
||||
}
|
||||
}
|
||||
const get = () => {
|
||||
|
||||
const init = async () => {
|
||||
ciphertext.value=await post("common/auth/get");
|
||||
decryptedText.value=await post("common/auth/check");
|
||||
}
|
||||
onMounted(async () => {
|
||||
post("common/config/get", {key: 'common_cert'}).then((res: any) => {
|
||||
ciphertext.value = res.val;
|
||||
parsing()
|
||||
})
|
||||
await init()
|
||||
})
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ const showAuth = () => {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :is-show="isShowAuth" @close="isShowAuth=false" :width="600" :height="600" title="授权">
|
||||
<Mask :is-show="isShowAuth" @close="isShowAuth=false" :width="600" :height="450" title="授权">
|
||||
<Auth></Auth>
|
||||
</Mask>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -32,10 +32,10 @@
|
|||
</div>
|
||||
</div>
|
||||
<Mask :width="1200" :height="500" :is-show="showAdd" :top="100" @close="showAdd = false">
|
||||
<Add @close="showAdd = false"/>
|
||||
<Add @close="showAdd = false;getCheck()"/>
|
||||
</Mask>
|
||||
<Mask :width="1200" :height="500" :is-show="showDetail" :top="100" @close="showDetail = false">
|
||||
<Detail :id="id" @close="showDetail = false"/>
|
||||
<Detail :id="id" @close="showDetail = false;getCheck()"/>
|
||||
</Mask>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<template>
|
||||
<div class="container-wrapper">
|
||||
<div class="top">
|
||||
<el-dropdown>
|
||||
<el-button type="primary" :icon="Plus" @click="open_add(null)">新增采购</el-button>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<div class="container-wrapper">
|
||||
<div class="top">
|
||||
<el-dropdown>
|
||||
<el-button type="primary" :icon="Plus" @click="open_add(null)">新增采购</el-button>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<div class="content_list">
|
||||
<el-table :data="tableData" style="width: 100%" @row-click="open_add">
|
||||
<el-table-column fixed label="进货单号" width="250" show-overflow-tooltip>
|
||||
|
|
@ -33,24 +33,25 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="page_btn_list">
|
||||
<el-pagination
|
||||
background
|
||||
layout="prev, pager, next"
|
||||
:page-size="pageSize"
|
||||
:current-page="page"
|
||||
:total="total"
|
||||
@current-change="changePage"
|
||||
/>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="page_btn_list">
|
||||
<el-pagination
|
||||
background
|
||||
layout="prev, pager, next"
|
||||
:page-size="pageSize"
|
||||
:current-page="page"
|
||||
:total="total"
|
||||
@current-change="changePage"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :width="1200" :top="100" :is-show="is_add" @close="is_add=false"
|
||||
:title="open_code?'编辑':'新增'">
|
||||
<AddOrder v-if="!open_code" @close="closeAddOrder"/>
|
||||
<EditOrder v-else :code="open_code" @close="is_add=false" @updateOrderDetail="init"/>
|
||||
</Mask>
|
||||
</div>
|
||||
<Mask :width="1200" :height="700" :top="100" :is-show="is_add" @close="is_add=false" :title="open_code?'编辑':'新增'">
|
||||
<AddOrder v-if="!open_code" @close="closeAddOrder"/>
|
||||
<EditOrder v-else :code="open_code" @close="is_add=false" @updateOrderDetail="init"/>
|
||||
</Mask>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
|
|
@ -70,8 +71,12 @@ onMounted(() => {
|
|||
init()
|
||||
})
|
||||
let open_add = (row: any) => {
|
||||
open_code.value = row.code
|
||||
is_add.value = true
|
||||
if (row!=null) {
|
||||
open_code.value = row.code
|
||||
}else{
|
||||
open_code.value = null
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -112,6 +117,7 @@ const formatDate = (isoStr: any) => {
|
|||
</script>
|
||||
<style scoped lang="scss">
|
||||
@use "@/assets/scss/base.scss";
|
||||
|
||||
.container-wrapper {
|
||||
box-sizing: border-box;
|
||||
padding: 24px;
|
||||
|
|
@ -119,12 +125,14 @@ const formatDate = (isoStr: any) => {
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
|
||||
.content_list {
|
||||
width: 100%;
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
margin-top: base.$margin-base;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
|
|
@ -138,6 +146,7 @@ const formatDate = (isoStr: any) => {
|
|||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.full_screen {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue