Merge branch 'main' of ssh://git.jizhiweb.cn:2222/clinic-v2/web
This commit is contained in:
commit
dce3fb558d
|
|
@ -20,7 +20,10 @@
|
||||||
"@types/node": "^22.14.0",
|
"@types/node": "^22.14.0",
|
||||||
"@vitejs/plugin-vue": "^5.2.3",
|
"@vitejs/plugin-vue": "^5.2.3",
|
||||||
"@vue/tsconfig": "^0.7.0",
|
"@vue/tsconfig": "^0.7.0",
|
||||||
|
"autoprefixer": "^10.4.21",
|
||||||
"npm-run-all2": "^7.0.2",
|
"npm-run-all2": "^7.0.2",
|
||||||
|
"postcss": "^8.5.3",
|
||||||
|
"postcss-pxtorem": "^6.1.0",
|
||||||
"sass": "^1.86.3",
|
"sass": "^1.86.3",
|
||||||
"typescript": "~5.8.0",
|
"typescript": "~5.8.0",
|
||||||
"vite": "^6.2.4",
|
"vite": "^6.2.4",
|
||||||
|
|
@ -2154,6 +2157,44 @@
|
||||||
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/autoprefixer": {
|
||||||
|
"version": "10.4.21",
|
||||||
|
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz",
|
||||||
|
"integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/postcss/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/autoprefixer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"browserslist": "^4.24.4",
|
||||||
|
"caniuse-lite": "^1.0.30001702",
|
||||||
|
"fraction.js": "^4.3.7",
|
||||||
|
"normalize-range": "^0.1.2",
|
||||||
|
"picocolors": "^1.1.1",
|
||||||
|
"postcss-value-parser": "^4.2.0"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"autoprefixer": "bin/autoprefixer"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || >=14"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"postcss": "^8.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "1.8.4",
|
"version": "1.8.4",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
|
||||||
|
|
@ -2758,6 +2799,20 @@
|
||||||
"node": ">= 6"
|
"node": ">= 6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/fraction.js": {
|
||||||
|
"version": "4.3.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
|
||||||
|
"integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "patreon",
|
||||||
|
"url": "https://github.com/sponsors/rawify"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/fs-extra": {
|
"node_modules/fs-extra": {
|
||||||
"version": "11.3.0",
|
"version": "11.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz",
|
||||||
|
|
@ -3368,6 +3423,16 @@
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/normalize-range": {
|
||||||
|
"version": "0.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
|
||||||
|
"integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/normalize-wheel-es": {
|
"node_modules/normalize-wheel-es": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
|
||||||
|
|
@ -3584,6 +3649,23 @@
|
||||||
"node": "^10 || ^12 || >=14"
|
"node": "^10 || ^12 || >=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/postcss-pxtorem": {
|
||||||
|
"version": "6.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-pxtorem/-/postcss-pxtorem-6.1.0.tgz",
|
||||||
|
"integrity": "sha512-ROODSNci9ADal3zUcPHOF/K83TiCgNSPXQFSbwyPHNV8ioHIE4SaC+FPOufd8jsr5jV2uIz29v1Uqy1c4ov42g==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peerDependencies": {
|
||||||
|
"postcss": "^8.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/postcss-value-parser": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/pretty-ms": {
|
"node_modules/pretty-ms": {
|
||||||
"version": "9.2.0",
|
"version": "9.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz",
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,10 @@
|
||||||
"@types/node": "^22.14.0",
|
"@types/node": "^22.14.0",
|
||||||
"@vitejs/plugin-vue": "^5.2.3",
|
"@vitejs/plugin-vue": "^5.2.3",
|
||||||
"@vue/tsconfig": "^0.7.0",
|
"@vue/tsconfig": "^0.7.0",
|
||||||
|
"autoprefixer": "^10.4.21",
|
||||||
"npm-run-all2": "^7.0.2",
|
"npm-run-all2": "^7.0.2",
|
||||||
|
"postcss": "^8.5.3",
|
||||||
|
"postcss-pxtorem": "^6.1.0",
|
||||||
"sass": "^1.86.3",
|
"sass": "^1.86.3",
|
||||||
"typescript": "~5.8.0",
|
"typescript": "~5.8.0",
|
||||||
"vite": "^6.2.4",
|
"vite": "^6.2.4",
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
export default {
|
||||||
|
plugins: {
|
||||||
|
'postcss-pxtorem': {
|
||||||
|
rootValue: 16, // 根元素字体大小,或根据设计稿来设置
|
||||||
|
propList: ['*'], // 可以从px更改为rem的属性
|
||||||
|
selectorBlackList: ['html', '.no-rem', '.ignore-rem'], // 要忽略的选择器
|
||||||
|
minPixelValue: 2 // 设置要替换的最小像素值
|
||||||
|
},
|
||||||
|
autoprefixer: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -14,16 +14,33 @@ ul, li {
|
||||||
outline: none!important;
|
outline: none!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
html, body {
|
body {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
font-family: PingFangSC, PingFang SC, sans-serif;
|
font-family: PingFangSC, PingFang SC, sans-serif;
|
||||||
font-size: 16px;
|
|
||||||
color: base.$text-primary;
|
color: base.$text-primary;
|
||||||
background-color: base.$background-color-base;
|
background-color: base.$background-color-base;
|
||||||
-webkit-font-smoothing: antialiased;
|
-webkit-font-smoothing: antialiased;
|
||||||
-moz-osx-font-smoothing: grayscale;
|
-moz-osx-font-smoothing: grayscale;
|
||||||
}
|
}
|
||||||
|
html{
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1920px) {
|
||||||
|
html {
|
||||||
|
font-size: 16px; // 适配 1920px 宽度的标准稿
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1600px) {
|
||||||
|
html {
|
||||||
|
font-size: 14px; // 更小的字体以适配较小屏幕
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media screen and (max-width: 1440px) {
|
||||||
|
html {
|
||||||
|
font-size: 12px; // 更小的字体以适配较小屏幕
|
||||||
|
}
|
||||||
|
}
|
||||||
#app {
|
#app {
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,23 @@
|
||||||
<Mask :width="1200" :height="540" :is-show="isShow" @close="exit" title="新增盘点" :show-footer="true">
|
<Mask :width="1200" :height="540" :is-show="isShow" @close="exit" title="新增盘点" :show-footer="true">
|
||||||
<div class="body_wrapper">
|
<div class="body_wrapper">
|
||||||
<div class="top" style="width: 100%">
|
<div class="top" style="width: 100%">
|
||||||
<el-form :model="form" style="width: 100%" label-width="auto" class="demo-ruleForm" label-position="top">
|
<el-form :model="form" :inline=true style="width: 100%" label-width="auto" class="demo-ruleForm" label-position="top">
|
||||||
<el-form-item label="备注" style="width: 100%;margin-right: 0">
|
<el-form-item label="盘点人">
|
||||||
<el-input v-model="form.remark" placeholder="请输入单据编号"></el-input>
|
<el-select
|
||||||
|
v-model="form.checkUserId"
|
||||||
|
placeholder="选择盘点人"
|
||||||
|
style="width: 240px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in managerUserList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="备注" style="width: 50%;margin-right: 0">
|
||||||
|
<el-input v-model="form.remark"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -302,7 +316,7 @@ let addRow = (goodsId: number) => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
let save = () => {
|
let save = () => {
|
||||||
post("inventory/check/save", {list: list.value, remark: form.value.remark}).then((res: any) => {
|
post("inventory/check/save", {list: list.value, remark: form.value.remark,checkUserId: form.value.checkUserId}).then((res: any) => {
|
||||||
ElMessage.success('保存成功')
|
ElMessage.success('保存成功')
|
||||||
exit()
|
exit()
|
||||||
})
|
})
|
||||||
|
|
@ -318,8 +332,24 @@ let exit = () => {
|
||||||
const isShow = ref<any>(false)
|
const isShow = ref<any>(false)
|
||||||
const init = () => {
|
const init = () => {
|
||||||
isShow.value = true
|
isShow.value = true
|
||||||
|
getManagerUserList()
|
||||||
|
getUserInfo()
|
||||||
}
|
}
|
||||||
defineExpose({init})
|
defineExpose({init})
|
||||||
|
|
||||||
|
|
||||||
|
const managerUserList: any = ref([])
|
||||||
|
const getManagerUserList = () => {
|
||||||
|
post("manager/user/list", {}).then((res: any) => {
|
||||||
|
managerUserList.value = res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const getUserInfo = () => {
|
||||||
|
post("manager/user/verify", null).then((res: any) => {
|
||||||
|
form.value.useUserId = res.id;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.body_wrapper {
|
.body_wrapper {
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,15 @@
|
||||||
<div class="search">
|
<div class="search">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<el-form :inline="true" :model="searchModel">
|
<el-form :inline="true" :model="searchModel">
|
||||||
<el-form-item >
|
|
||||||
<el-input v-model="searchModel.code" placeholder="请输入单号" style="width: 180px;height: 42px" :prefix-icon="Search"></el-input>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
|
<el-date-picker
|
||||||
|
v-model="selectedDate"
|
||||||
|
type="daterange"
|
||||||
|
range-separator="-"
|
||||||
|
@change="handleDateChange"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -62,6 +67,7 @@ import {nextTick, onMounted, ref} from "vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import DetailApply from "@/components/inventory/apply/DetailApply.vue";
|
import DetailApply from "@/components/inventory/apply/DetailApply.vue";
|
||||||
import {Refresh,Search} from "@element-plus/icons-vue";
|
import {Refresh,Search} from "@element-plus/icons-vue";
|
||||||
|
import {formatDateArray, getEndOfDay} from "@/utils/dateUtils.ts";
|
||||||
|
|
||||||
const is_add = ref(false)
|
const is_add = ref(false)
|
||||||
const is_detail = ref(false)
|
const is_detail = ref(false)
|
||||||
|
|
@ -70,6 +76,7 @@ const getList = () => {
|
||||||
const query = {
|
const query = {
|
||||||
pageNum: page.value,
|
pageNum: page.value,
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
|
...searchModel.value,
|
||||||
}
|
}
|
||||||
post("inventory/apply/list", {query: query}).then((res: any) => {
|
post("inventory/apply/list", {query: query}).then((res: any) => {
|
||||||
dataList.value = res.list
|
dataList.value = res.list
|
||||||
|
|
@ -111,23 +118,26 @@ const clickApply = () => {
|
||||||
addApplyRef.value?.init()
|
addApplyRef.value?.init()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
const selectedDate = ref<any>([])
|
||||||
|
const handleDateChange = (date: any[]) => {
|
||||||
|
selectedDate.value = formatDateArray(date)
|
||||||
|
if (selectedDate.value[0] == selectedDate.value[1]) {
|
||||||
|
selectedDate.value[1] = getEndOfDay(selectedDate.value[1]); // 输出今天 23:59
|
||||||
|
}
|
||||||
|
searchModel.value.beginTime = selectedDate.value[0]
|
||||||
|
searchModel.value.endTime = selectedDate.value[1]
|
||||||
|
}
|
||||||
|
|
||||||
const searchModel= ref({
|
const searchModel= ref({
|
||||||
code: "",
|
beginTime: null,
|
||||||
supplierIds: [],
|
endTime: null,
|
||||||
managerUserIds: [],
|
|
||||||
startDate: "",
|
|
||||||
endDate: "",
|
|
||||||
})
|
})
|
||||||
const resetSearch= () => {
|
const resetSearch= () => {
|
||||||
searchModel.value = {
|
searchModel.value = {
|
||||||
code: "",
|
beginTime: null,
|
||||||
supplierIds: [],
|
endTime: null,
|
||||||
managerUserIds: [],
|
|
||||||
startDate: "",
|
|
||||||
endDate: "",
|
|
||||||
}
|
}
|
||||||
|
getList()
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,14 @@
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<el-form :inline="true" :model="searchModel">
|
<el-form :inline="true" :model="searchModel">
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="searchModel.code" placeholder="请输入单号" style="width: 180px;height: 42px"
|
<el-date-picker
|
||||||
:prefix-icon="Search"></el-input>
|
v-model="selectedDate"
|
||||||
</el-form-item>
|
type="daterange"
|
||||||
<el-form-item>
|
range-separator="-"
|
||||||
|
@change="handleDateChange"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -65,12 +69,14 @@ import Mask from "@/components/common/Mask.vue";
|
||||||
import Add from "@/components/inventory/check/Add.vue";
|
import Add from "@/components/inventory/check/Add.vue";
|
||||||
import Detail from "@/components/inventory/check/Detail.vue";
|
import Detail from "@/components/inventory/check/Detail.vue";
|
||||||
import {Plus, Refresh, Search} from "@element-plus/icons-vue";
|
import {Plus, Refresh, Search} from "@element-plus/icons-vue";
|
||||||
|
import {formatDateArray, getEndOfDay} from "@/utils/dateUtils.ts";
|
||||||
|
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
const getCheck = () => {
|
const getCheck = () => {
|
||||||
const query = {
|
const query = {
|
||||||
pageNum: page.value,
|
pageNum: page.value,
|
||||||
pageSize: 20
|
pageSize: 20,
|
||||||
|
...searchModel.value,
|
||||||
}
|
}
|
||||||
post("inventory/check/list", {query: query}).then(
|
post("inventory/check/list", {query: query}).then(
|
||||||
(res: any) => {
|
(res: any) => {
|
||||||
|
|
@ -112,12 +118,24 @@ const formatDate = (isoStr: any) => {
|
||||||
const date = new Date(isoStr);
|
const date = new Date(isoStr);
|
||||||
return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
|
return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
|
||||||
}
|
}
|
||||||
|
const selectedDate = ref<any>([])
|
||||||
|
const handleDateChange = (date: any[]) => {
|
||||||
|
selectedDate.value = formatDateArray(date)
|
||||||
|
if (selectedDate.value[0] == selectedDate.value[1]) {
|
||||||
|
selectedDate.value[1] = getEndOfDay(selectedDate.value[1]); // 输出今天 23:59
|
||||||
|
}
|
||||||
|
searchModel.value.beginTime = selectedDate.value[0]
|
||||||
|
searchModel.value.endTime = selectedDate.value[1]
|
||||||
|
}
|
||||||
|
|
||||||
const searchModel = ref({
|
const searchModel = ref({
|
||||||
code: ''
|
beginTime: null,
|
||||||
|
endTime: null,
|
||||||
})
|
})
|
||||||
const resetSearch = () => {
|
const resetSearch = () => {
|
||||||
searchModel.value = {
|
searchModel.value = {
|
||||||
code: ''
|
beginTime: null,
|
||||||
|
endTime: null,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,9 @@ export default defineConfig({
|
||||||
vue(),
|
vue(),
|
||||||
vueDevTools(),
|
vueDevTools(),
|
||||||
],
|
],
|
||||||
|
css: {
|
||||||
|
postcss: './postcss.config.js' // 指向你的PostCSS配置文件
|
||||||
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
'@': fileURLToPath(new URL('./src', import.meta.url))
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue