最新版公众号前端
28
.gitignore
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
/dist
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
# Cordova
|
||||
/vue_app_test/platforms
|
||||
/vue_app_test/plugins
|
||||
/public/cordova.js
|
||||
37
README.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# 九聚-h5挂号-前端
|
||||
|
||||
#### 介绍
|
||||
九聚-h5挂号-前端
|
||||
|
||||
#### 软件架构
|
||||
软件架构说明
|
||||
|
||||
|
||||
#### 安装教程
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### 使用说明
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### 参与贡献
|
||||
|
||||
1. Fork 本仓库
|
||||
2. 新建 Feat_xxx 分支
|
||||
3. 提交代码
|
||||
4. 新建 Pull Request
|
||||
|
||||
|
||||
#### 特技
|
||||
|
||||
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
|
||||
2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
|
||||
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
|
||||
4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
|
||||
5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
|
||||
6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||
39
analyze-png.js
Normal file
@@ -0,0 +1,39 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// 读取src/assets目录
|
||||
const assetsDir = path.join(__dirname, 'src', 'assets');
|
||||
|
||||
fs.readdir(assetsDir, (err, files) => {
|
||||
if (err) {
|
||||
console.error('读取目录失败:', err);
|
||||
return;
|
||||
}
|
||||
|
||||
// 过滤出PNG图片
|
||||
const pngFiles = files.filter(file => file.endsWith('.png'));
|
||||
|
||||
// 获取每个文件的大小
|
||||
const fileInfo = pngFiles.map(file => {
|
||||
const filePath = path.join(assetsDir, file);
|
||||
const stats = fs.statSync(filePath);
|
||||
return {
|
||||
name: file,
|
||||
size: stats.size,
|
||||
sizeKB: (stats.size / 1024).toFixed(2)
|
||||
};
|
||||
});
|
||||
|
||||
// 按大小排序(从大到小)
|
||||
fileInfo.sort((a, b) => b.size - a.size);
|
||||
|
||||
// 输出结果
|
||||
console.log('src/assets目录下PNG图片大小分析(从大到小):');
|
||||
console.log('文件名'.padEnd(25), '大小(字节)'.padEnd(15), '大小(KB)');
|
||||
console.log('-' .repeat(60));
|
||||
fileInfo.forEach(file => {
|
||||
console.log(file.name.padEnd(25), file.size.toString().padEnd(15), file.sizeKB);
|
||||
});
|
||||
console.log('-' .repeat(60));
|
||||
console.log(`总计: ${pngFiles.length} 个PNG图片`);
|
||||
});
|
||||
6
babel.config.js
Normal file
@@ -0,0 +1,6 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset'
|
||||
]
|
||||
|
||||
}
|
||||
BIN
idcard.psd
Normal file
49
optimize-png.js
Normal file
@@ -0,0 +1,49 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const imagemin = require('imagemin');
|
||||
const imageminPngquant = require('imagemin-pngquant');
|
||||
|
||||
// 源目录和目标目录
|
||||
const srcDir = path.join(__dirname, 'src', 'assets');
|
||||
const destDir = path.join(__dirname, 'src', 'assets'); // 直接覆盖原文件
|
||||
|
||||
// 优化PNG图片的函数
|
||||
async function optimizePng() {
|
||||
try {
|
||||
console.log('开始优化PNG图片...');
|
||||
|
||||
// 读取源目录下的所有PNG图片
|
||||
const files = await imagemin([`${srcDir}/*.png`], {
|
||||
destination: destDir,
|
||||
plugins: [
|
||||
imageminPngquant({
|
||||
quality: [0.6, 0.8] // 质量范围
|
||||
})
|
||||
]
|
||||
});
|
||||
|
||||
console.log('PNG图片优化完成!');
|
||||
console.log('优化的文件:');
|
||||
|
||||
// 计算并显示优化前后的文件大小对比
|
||||
for (const file of files) {
|
||||
const srcPath = path.join(srcDir, path.basename(file.sourcePath));
|
||||
const destPath = file.destinationPath;
|
||||
|
||||
const srcStats = fs.statSync(srcPath);
|
||||
const destStats = fs.statSync(destPath);
|
||||
|
||||
const srcSize = srcStats.size;
|
||||
const destSize = destStats.size;
|
||||
const reduction = ((srcSize - destSize) / srcSize * 100).toFixed(2);
|
||||
|
||||
console.log(`${path.basename(file.sourcePath)}: ${(srcSize / 1024).toFixed(2)}KB → ${(destSize / 1024).toFixed(2)}KB (减少${reduction}%)`);
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.error('优化PNG图片时出错:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 执行优化
|
||||
optimizePng();
|
||||
14932
package-lock.json
generated
Normal file
53
package.json
Normal file
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"name": "jojubanking",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@vant/area-data": "^1.1.1",
|
||||
"caniuse-lite": "^1.0.30001546",
|
||||
"canvas": "^2.11.2",
|
||||
"core-js": "^3.45.1",
|
||||
"dommatrix": "^1.0.3",
|
||||
"echarts": "^6.0.0",
|
||||
"pdfh5": "^1.4.7",
|
||||
"pinyin-pro": "^3.27.0",
|
||||
"qs": "^6.14.0",
|
||||
"quill": "^1.3.6",
|
||||
"smoothscroll-polyfill": "^0.4.4",
|
||||
"vant": "^2.12.48",
|
||||
"vconsole": "^3.15.1",
|
||||
"vue": "^2.6.11",
|
||||
"vue-amap": "^0.5.10",
|
||||
"vue-barcode": "^1.3.0",
|
||||
"vue-pdf": "^4.3.0",
|
||||
"vue-qr": "^2.5.0",
|
||||
"vue-resource": "^1.5.1",
|
||||
"vue-router": "^3.2.0",
|
||||
"vue-wechat-title": "^2.0.7",
|
||||
"vuex": "^3.4.0",
|
||||
"web-streams-polyfill": "^3.2.1",
|
||||
"weixin-js-sdk": "^1.6.0",
|
||||
"x2js": "^3.4.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "~4.4.0",
|
||||
"@vue/cli-plugin-router": "~4.4.0",
|
||||
"@vue/cli-plugin-vuex": "~4.4.0",
|
||||
"@vue/cli-service": "~4.4.0",
|
||||
"axios": "^0.21.1",
|
||||
"compression-webpack-plugin": "^6.1.1",
|
||||
"eslint": "^6.7.2",
|
||||
"image-webpack-loader": "^8.1.0",
|
||||
"lib-flexible": "^0.3.2",
|
||||
"postcss-pxtorem": "^5.1.1",
|
||||
"sass": "^1.26.5",
|
||||
"sass-loader": "^8.0.2",
|
||||
"vue-template-compiler": "^2.6.11",
|
||||
"webpack-bundle-analyzer": "^5.1.0"
|
||||
}
|
||||
}
|
||||
13
postcss.config.js
Normal file
@@ -0,0 +1,13 @@
|
||||
module.exports = {
|
||||
plugins: {
|
||||
// autoprefixer: {
|
||||
// browsers: ['Android >= 4.0', 'iOS >= 8'],
|
||||
// },
|
||||
'postcss-pxtorem': {
|
||||
rootValue({ file }) {
|
||||
return file.indexOf('vant') !== -1 ? 37.5 : 75;
|
||||
},
|
||||
propList: ['*'],
|
||||
},
|
||||
},
|
||||
};
|
||||
BIN
public/favicon.ico
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
25
public/index.html
Normal file
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, viewport-fit=cover" />
|
||||
<meta name="format-detection" content="telephone=yes" />
|
||||
<!-- 开启 safe-area-inset-bottom 属性 -->
|
||||
<van-number-keyboard safe-area-inset-bottom />
|
||||
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
</head>
|
||||
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
|
||||
Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
|
||||
</html>
|
||||
144
src/App.vue
Normal file
@@ -0,0 +1,144 @@
|
||||
<template>
|
||||
<div id="app">
|
||||
<!-- 被 keep-alive 缓存的页面 -->
|
||||
<keep-alive>
|
||||
<router-view v-if="$route.meta.keepAlive" />
|
||||
</keep-alive>
|
||||
|
||||
<!-- 普通页面(不缓存) -->
|
||||
<router-view v-if="!$route.meta.keepAlive" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<style lang="scss">
|
||||
body{
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: #333;
|
||||
transition: all 0.5s ease 0s;
|
||||
}
|
||||
|
||||
a:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: none;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
li {
|
||||
vertical-align: bottom;
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0px;
|
||||
}
|
||||
|
||||
select {
|
||||
font-family: "pingfang SC", "Microsoft YaHei", "黑体";
|
||||
color: #666;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
textarea {
|
||||
font-family: "pingfang SC", "Microsoft YaHei", "黑体";
|
||||
color: #666;
|
||||
font-size: 12px;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0px;
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
input {
|
||||
vertical-align: middle;
|
||||
outline: none;
|
||||
font-size: 28px;
|
||||
font-family: "pingfang SC", "Microsoft YaHei", "黑体";
|
||||
}
|
||||
|
||||
.clearfix:before,
|
||||
.clearfix:after {
|
||||
content: " ";
|
||||
display: block;
|
||||
height: 0;
|
||||
visibility: hidden;
|
||||
clear: both;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.clearfix {
|
||||
zoom: 1;
|
||||
}
|
||||
|
||||
.clearfix:after {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-weight: normal;
|
||||
font-size: inherit;
|
||||
margin: 0px;
|
||||
font-family: "pingfang SC", "Microsoft YaHei", "黑体";
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0px;
|
||||
font-family: "pingfang SC", "Microsoft YaHei", "黑体";
|
||||
}
|
||||
|
||||
em,
|
||||
i {
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.fl {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fr {
|
||||
float: right;
|
||||
}
|
||||
|
||||
input[type="button"],
|
||||
input[type="submit"],
|
||||
input[type="reset"] {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
#app {
|
||||
margin: 0px auto;
|
||||
font-family: "pingfang SC", "Microsoft YaHei", "黑体";
|
||||
color: #666;
|
||||
font-size: 24px;
|
||||
}
|
||||
.container{
|
||||
padding: 0px 30px;
|
||||
}
|
||||
|
||||
</style>
|
||||
BIN
src/assets/4就诊记录.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/assets/4挂号记录.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
src/assets/Hospital_xbj.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
src/assets/Hospital_xbj1.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
src/assets/Hospital_xbj2.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
src/assets/LOGO.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
src/assets/add.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
src/assets/addpatient.png
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
src/assets/back.webp
Normal file
|
After Width: | Height: | Size: 183 KiB |
BIN
src/assets/banner.png
Normal file
|
After Width: | Height: | Size: 166 KiB |
BIN
src/assets/baogao.png
Normal file
|
After Width: | Height: | Size: 726 B |
BIN
src/assets/bayj.webp
Normal file
|
After Width: | Height: | Size: 1.0 MiB |
BIN
src/assets/bingli.png
Normal file
|
After Width: | Height: | Size: 590 B |
BIN
src/assets/bodymf.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
src/assets/bodymz.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
src/assets/bodywf.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
src/assets/bodywz.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
src/assets/bottom_nav_icon.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
src/assets/bottom_nav_icon1.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/bottom_nav_icon1_on.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
src/assets/bottom_nav_icon2.png
Normal file
|
After Width: | Height: | Size: 1016 B |
BIN
src/assets/bottom_nav_icon2_on.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
src/assets/bottom_nav_icon3.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
src/assets/bottom_nav_icon3_on.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
src/assets/bottom_nav_icon_on.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/assets/calendar.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
src/assets/cf.png
Normal file
|
After Width: | Height: | Size: 542 B |
BIN
src/assets/chenggong.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
src/assets/default.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
src/assets/dingwei.png
Normal file
|
After Width: | Height: | Size: 710 B |
BIN
src/assets/dz.png
Normal file
|
After Width: | Height: | Size: 666 B |
BIN
src/assets/gg.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
src/assets/gg.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
src/assets/ghjl.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
src/assets/guke.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
src/assets/gz.png
Normal file
|
After Width: | Height: | Size: 455 B |
BIN
src/assets/hesuan.png
Normal file
|
After Width: | Height: | Size: 572 KiB |
BIN
src/assets/huanzhe.jpeg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/assets/huli.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
src/assets/idcard.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
src/assets/in_bgbj.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
src/assets/in_box.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
src/assets/in_box1.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
src/assets/in_box1_pic.png
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
src/assets/in_box1_pic1.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
src/assets/in_box1_pic2.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
src/assets/in_box1_pic3.png
Normal file
|
After Width: | Height: | Size: 9.3 KiB |
BIN
src/assets/in_box1_pic4.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
BIN
src/assets/in_box1_pic5.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
src/assets/in_box1_pic6.png
Normal file
|
After Width: | Height: | Size: 9.5 KiB |
BIN
src/assets/in_box1_pic7.png
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
src/assets/in_box2.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
src/assets/in_box3.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
src/assets/index1.png
Normal file
|
After Width: | Height: | Size: 174 KiB |
BIN
src/assets/info_succ.jpg
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
src/assets/label.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/assets/loading@2x.gif
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
src/assets/lxrbj.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
src/assets/manyidu.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
src/assets/member_tx.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/assets/memberbj.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
src/assets/myd.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
src/assets/nxwjlogo.webp
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/assets/patient.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/pb.png
Normal file
|
After Width: | Height: | Size: 908 B |
BIN
src/assets/pdjh.png
Normal file
|
After Width: | Height: | Size: 537 B |
BIN
src/assets/pfk.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
src/assets/pic1.png
Normal file
|
After Width: | Height: | Size: 609 B |
BIN
src/assets/pic2.png
Normal file
|
After Width: | Height: | Size: 609 B |
BIN
src/assets/pic3.png
Normal file
|
After Width: | Height: | Size: 294 B |
BIN
src/assets/search.png
Normal file
|
After Width: | Height: | Size: 752 B |
BIN
src/assets/search1.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
src/assets/sjnk.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
src/assets/tcdl.png
Normal file
|
After Width: | Height: | Size: 923 B |
BIN
src/assets/tel.png
Normal file
|
After Width: | Height: | Size: 552 B |
BIN
src/assets/tijian.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
src/assets/tj_banner.png
Normal file
|
After Width: | Height: | Size: 199 KiB |
BIN
src/assets/tjjzr.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
src/assets/tjjzr1.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
src/assets/tuikuan.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
src/assets/wjcx.png
Normal file
|
After Width: | Height: | Size: 741 B |
BIN
src/assets/wxicon.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
src/assets/xhnk.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
src/assets/xuanzhuan.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
src/assets/yisheng.jpg
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
src/assets/yw.png
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
src/assets/yyxq_manbj.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/assets/zhangd.png
Normal file
|
After Width: | Height: | Size: 619 B |