From 410e3ad7994919ebfd1f57f7809897f7d5188e0e Mon Sep 17 00:00:00 2001 From: panliang <1163816051@qq.com> Date: Thu, 31 Aug 2023 14:00:46 +0800 Subject: [PATCH] patient --- pnpm-lock.yaml | 29 ++-- src/components/select-admin-user.vue | 54 ++++++++ src/enums/gender.js | 16 +++ src/main.js | 7 + src/pages.json | 6 + src/pages/index/index.vue | 13 +- src/pages/patient/form.vue | 197 +++++++++++++++++++++++++++ src/pages/patient/index.vue | 82 +++++++---- src/utils/ajax.js | 3 +- src/utils/index.js | 40 ++++++ 10 files changed, 400 insertions(+), 47 deletions(-) create mode 100644 src/components/select-admin-user.vue create mode 100644 src/enums/gender.js create mode 100644 src/pages/patient/form.vue create mode 100644 src/utils/index.js diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 27332c7..8efebc5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -126,7 +126,7 @@ devDependencies: version: 5.0.0(@vue/cli-service@5.0.1)(core-js@3.8.3)(vue@2.6.14) '@vue/cli-service': specifier: ~5.0.0 - version: 5.0.1(sass-loader@10.4.1)(vue-template-compiler@2.6.14)(vue@2.6.14) + version: 5.0.1(sass-loader@10.0.0)(vue-template-compiler@2.6.14)(vue@2.6.14) babel-plugin-import: specifier: ^1.11.0 version: 1.11.0 @@ -144,7 +144,7 @@ devDependencies: version: 1.66.1 sass-loader: specifier: '10' - version: 10.4.1(sass@1.66.1)(webpack@4.46.0) + version: 10.0.0(sass@1.66.1)(webpack@4.46.0) vue-template-compiler: specifier: '>= 2.6.14 < 2.7' version: 2.6.14 @@ -2908,7 +2908,7 @@ packages: dependencies: '@babel/core': 7.22.11 '@vue/babel-preset-app': 5.0.8(@babel/core@7.22.11)(core-js@3.8.3)(vue@2.6.14) - '@vue/cli-service': 5.0.1(sass-loader@10.4.1)(vue-template-compiler@2.6.14)(vue@2.6.14) + '@vue/cli-service': 5.0.1(sass-loader@10.0.0)(vue-template-compiler@2.6.14)(vue@2.6.14) '@vue/cli-shared-utils': 5.0.8 babel-loader: 8.3.0(@babel/core@7.22.11)(webpack@5.88.2) thread-loader: 3.0.4(webpack@5.88.2) @@ -2929,7 +2929,7 @@ packages: peerDependencies: '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 dependencies: - '@vue/cli-service': 5.0.1(sass-loader@10.4.1)(vue-template-compiler@2.6.14)(vue@2.6.14) + '@vue/cli-service': 5.0.1(sass-loader@10.0.0)(vue-template-compiler@2.6.14)(vue@2.6.14) '@vue/cli-shared-utils': 5.0.8 transitivePeerDependencies: - encoding @@ -2940,10 +2940,10 @@ packages: peerDependencies: '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 dependencies: - '@vue/cli-service': 5.0.1(sass-loader@10.4.1)(vue-template-compiler@2.6.14)(vue@2.6.14) + '@vue/cli-service': 5.0.1(sass-loader@10.0.0)(vue-template-compiler@2.6.14)(vue@2.6.14) dev: true - /@vue/cli-service@5.0.1(sass-loader@10.4.1)(vue-template-compiler@2.6.14)(vue@2.6.14): + /@vue/cli-service@5.0.1(sass-loader@10.0.0)(vue-template-compiler@2.6.14)(vue@2.6.14): resolution: {integrity: sha512-lhTW1d8waZv1VaRSvhE5pWWfkdmAgRTRSluDfyxkehZHMAWi//rd7a9zppN3k9Zr4X3oYVii+u7wR/RcTlr9cQ==} engines: {node: ^12.0.0 || >= 14.0.0} hasBin: true @@ -3017,7 +3017,7 @@ packages: postcss: 8.4.29 postcss-loader: 6.2.1(postcss@8.4.29)(webpack@5.88.2) progress-webpack-plugin: 1.0.16(webpack@5.88.2) - sass-loader: 10.4.1(sass@1.66.1)(webpack@4.46.0) + sass-loader: 10.0.0(sass@1.66.1)(webpack@4.46.0) ssri: 8.0.1 terser-webpack-plugin: 5.3.9(webpack@5.88.2) thread-loader: 3.0.4(webpack@5.88.2) @@ -7796,6 +7796,11 @@ packages: engines: {node: '>=6'} dev: true + /klona@1.1.2: + resolution: {integrity: sha512-xf88rTeHiXk+XE2Vhi6yj8Wm3gMZrygGdKjJqN8HkV+PwF/t50/LdAKHoHpPcxFAlmQszTZ1CugrK25S7qDRLA==} + engines: {node: '>= 8'} + dev: true + /klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} @@ -10118,12 +10123,12 @@ packages: - supports-color dev: true - /sass-loader@10.4.1(sass@1.66.1)(webpack@4.46.0): - resolution: {integrity: sha512-aX/iJZTTpNUNx/OSYzo2KsjIUQHqvWsAhhUijFjAPdZTEhstjZI9zTNvkTTwsx+uNUJqUwOw5gacxQMx4hJxGQ==} + /sass-loader@10.0.0(sass@1.66.1)(webpack@4.46.0): + resolution: {integrity: sha512-DEIrVJIXf2P6jtY3fpJu+uWetALCds2PwRA2iwbpzmHvtFmX5j0aX5Uz+YZSeJpjKrpgqWNKngcVxmwVfqxMow==} engines: {node: '>= 10.13.0'} peerDependencies: fibers: '>= 3.1.0' - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + node-sass: ^4.0.0 sass: ^1.3.0 webpack: ^4.36.0 || ^5.0.0 peerDependenciesMeta: @@ -10134,11 +10139,11 @@ packages: sass: optional: true dependencies: - klona: 2.0.6 + klona: 1.1.2 loader-utils: 2.0.4 neo-async: 2.6.2 sass: 1.66.1 - schema-utils: 3.3.0 + schema-utils: 2.7.1 semver: 7.5.4 webpack: 4.46.0 dev: true diff --git a/src/components/select-admin-user.vue b/src/components/select-admin-user.vue new file mode 100644 index 0000000..f51f7f7 --- /dev/null +++ b/src/components/select-admin-user.vue @@ -0,0 +1,54 @@ + + + + diff --git a/src/enums/gender.js b/src/enums/gender.js new file mode 100644 index 0000000..31eadb5 --- /dev/null +++ b/src/enums/gender.js @@ -0,0 +1,16 @@ +const gender = { + none: { value: 0, text: '未知' }, + male: { value: 1, text: '男' }, + female: { value: 2, text: '女' }, +} + +gender.options = [] +gender.map = {} +Object.keys(gender).forEach(key => { + if (gender[key] !== undefined && gender[key].value !== undefined) { + gender.options.push({ name: gender[key].text, value: gender[key].value }) + gender.map[key] = gender[key].value + } +}) + +export default gender diff --git a/src/main.js b/src/main.js index 8f4de3b..4d2c3e7 100644 --- a/src/main.js +++ b/src/main.js @@ -3,12 +3,19 @@ import App from './App' import './uni.promisify.adaptor' import ajax from '@/utils/ajax' import uView from "uview-ui" +import { formatDate } from './utils/index' Vue.config.productionTip = false Vue.prototype.$ajax = ajax Vue.use(uView); +Vue.filter('date', function (value, format) { + if (!format) { + format = 'yyyy-MM-dd HH:mm:ss' + } + return formatDate(value, format) +}) App.mpType = 'app' diff --git a/src/pages.json b/src/pages.json index 50f68a3..ecb8e64 100644 --- a/src/pages.json +++ b/src/pages.json @@ -24,6 +24,12 @@ "style": { "navigationBarTitleText": "病人详细" } + }, + { + "path": "pages/patient/form", + "style": { + "navigationBarTitleText": "病人表单" + } } ], "globalStyle": { diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index 9b5d83d..3be964e 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -2,7 +2,7 @@ - + {{item.name}} @@ -13,8 +13,7 @@ export default { data() { return { - list: [ - ] + list: [] } }, onReady() { @@ -34,8 +33,10 @@ } } - diff --git a/src/pages/patient/form.vue b/src/pages/patient/form.vue new file mode 100644 index 0000000..722cbf8 --- /dev/null +++ b/src/pages/patient/form.vue @@ -0,0 +1,197 @@ + + + + + \ No newline at end of file diff --git a/src/pages/patient/index.vue b/src/pages/patient/index.vue index a53cc78..d1fa743 100644 --- a/src/pages/patient/index.vue +++ b/src/pages/patient/index.vue @@ -1,28 +1,35 @@ @@ -32,12 +39,16 @@ export default { return { list: [], page: 1, - perPage: 10, + perPage: 20, total: 0, - search: '' + search: '', + options: [ + {text: '修改', style: { backgroundColor: '#007aff' }}, + {text: '删除', style: { backgroundColor: '#dd524d' }} + ], } }, - onReady() { + onShow() { this.loadData(true) }, onPullDownRefresh() { @@ -70,12 +81,27 @@ export default { if (!value) { this.loadData(true) } + }, + add() { + uni.navigateTo({ + url: '/pages/patient/form' + }) + }, + swipeAction(e) { + console.log(e) } } } - diff --git a/src/utils/ajax.js b/src/utils/ajax.js index 3105b67..c7259d1 100644 --- a/src/utils/ajax.js +++ b/src/utils/ajax.js @@ -27,7 +27,8 @@ instance.interceptors.response.use( const res = response.data if (res.status != 0 && res.doNotDisplayToast == 0) { uni.showModal({ - title: res.message + title: res.msg, + showCancel: false }) } if (res.code == 401) { diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..a0ef0e8 --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,40 @@ +export function formatDate(dateTime = null, formatStr = 'yyyy-MM-dd HH:mm:ss') { + + if (!dateTime) return '' + let date + // 若传入时间为假值,则取当前时间 + if (!dateTime) { + date = new Date() + } else if (/^\d{10}$/.test(dateTime.toString().trim())) { + date = new Date(dateTime * 1000) + } else if (typeof dateTime === 'string' && /^\d+$/.test(dateTime.trim())) { + date = new Date(Number(dateTime)) + } else { + date = new Date( + typeof dateTime === 'string' ? + dateTime.replace(/-/g, '/') : + dateTime + ) + } + + const timeSource = { + 'y': date.getFullYear().toString(), // 年 + 'M': (date.getMonth() + 1).toString().padStart(2, '0'), // 月 + 'd': date.getDate().toString().padStart(2, '0'), // 日 + 'H': date.getHours().toString().padStart(2, '0'), // 时 + 'm': date.getMinutes().toString().padStart(2, '0'), // 分 + 's': date.getSeconds().toString().padStart(2, '0') // 秒 + + } + + for (const key in timeSource) { + const [ret] = new RegExp(`${key}+`).exec(formatStr) || [] + if (ret) { + const beginIndex = key === 'y' && ret.length === 2 ? 2 : 0 + formatStr = formatStr.replace(ret, timeSource[key].slice(beginIndex)) + } + } + return formatStr + } + +export default {formatDate} \ No newline at end of file