javascript    2020-11-12 16:56:30    119    0    0

 2.ICP备案管理(VUE+ Thinkphp+mysql)线上项目:http://icp.liumianti.top/

  账户:张三   密码:123456

 

  1. 设计的初衷:备案资质多达20个项目,有时查看信息时,要翻阅资料,时间浪费很多,因此 制作一个可视化 备案中心页面
  2. 开源项目:http://caijt.com/it/#/
  3. 前端:
  4.  1. 采用的是vue-cli3.0脚手架开发
  5.  2. elementui UI框架
  6.  3. 引入 normalize.css -- 解决不同浏览器 样式的一致性
  7.  4. 引入 NProgress -- 页面打开 进度条提醒
  8. 后端:
  9.  数据处理: Thinkphp(增删改查) 难点:联表查询 输出不同表里的指定字段
  10.  数据库:MYSQL
  11. 难点:vue-cli3.0 打包后,js多达几十个 怎么解决?
  12. 解决方案: 安装 webpack压缩插件-----compression-webpack-plugin,并在vue.config.js 配置
  13. 特色:
  14.  1.添加了 微信公众号测试号 扫码登陆功能
  15.  2.对涉及身份证、手机号、邮箱 采用了掩码处理
  16.  3.备案首页--采用城市拼音首字母规则 排序


 

 

javascript    2020-11-09 22:27:50    89    0    0

原文转载:javascript设计模式系列 : https://www.cnblogs.com/webFrontDev/p/3553402.html

2020-11-06 11:55:43    80    0    0

question1: el-table 中 根据数据不同 动态添加 class

 要注意的是: scope.row.变量   ,不是  scope.变量 ,  多了 一个 row

  1. <el-table>
  2.         <el-table-column
  3.           prop="subject_state"
  4.           label="备案状态"
  5.           align="center"
  6.           width="180"
  7.         >
  8.           <template slot-scope="scope">
  9.             <span
  10.               :class="[
  11.                 scope.row.subject_state == '未核实' ? 'orange' : '',
  12.                 scope.row.subject_state == '进行中' ? 'blue' : '',
  13.                 scope.row.subject_state == '已完成' ? 'green' : '',
  14.                 scope.row.subject_state == '未整改' ? 'red' : '',
  15.                 scope.row.subject_state == '已注销' ? 'pink' : '',
  16.               ]"
  17.             >
  18.               {{ scope.row.subject_state }}
  19.             </span>
  20.           </template>
  21.         </el-table-column>
  22. </el-table>

 


webpack    2020-11-06 11:44:20    165    0    0

参考链接:

webpack Vue前端项目打包后生成的chunk-vendors文件过大,导致加载太慢,生成的js文件过多,http请求太频繁问题解决

https://blog.csdn.net/sunshu123456/article/details/108255608


解决!!前端项目打包后生成的chunk-vendors文件过大,导致加载太慢

https://blog.csdn.net/weixin_43850586/article/details/103915473


 

使用compression-webpack-plugin版本问题报错,查阅资料才知道是因为在执行npm install时安装了最新的版本,

只需要 安装低版本就行

  1. npm install --save-dev compression-webpack-plugin@1.1.12​

 

网址    2020-11-06 11:32:46    110    0    0

图标库


Iconfont-阿里巴巴矢量图标库: https://www.iconfont.cn/

Font Awesome图标:http://www.fontawesome.com.cn/faicons/

javascript    2020-11-05 17:57:47    113    0    0

两种形式:一种Json数据:{}, 一种Array数据:[]

1) Array篇

  1. export function citysfil (citys) {
  2. const FristPin = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
  3. const cityArray = []
  4. const cityJson = {}
  5. for (let i = 0; i < FristPin.length; i++) {
  6. cityJson[FristPin[i]] = citys.filter(function (value) {
  7. return value.firstletter === FristPin[i]
  8. })
  9. cityArray[i] = {
  10. pinyin: FristPin[i],
  11. item: cityJson[FristPin[i]]
  12. }
  13. }
  14.  
  15. return cityArray
  16. }

 

2) Json篇

  1. export function citysfil (citys) {
  2. const FristPin = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
  3. const cityArray = []
  4. const cityJson = {}
  5. for (let i = 0; i < FristPin.length; i++) {
  6. cityJson[FristPin[i]] = citys.filter(function (value) {
  7. return value.firstletter === FristPin[i]
  8. })
  9. cityArray[i] = {
  10. pinyin: FristPin[i],
  11. item: cityJson[FristPin[i]]
  12. }
  13. }
  14. return cityArray
  15. }
javascript    2020-11-04 12:44:49    93    0    0
  1. var str = str.replace(/@@/g,"\n");​​

其中“@@”为要替换的字符

css    2020-11-04 12:41:30    77    0    0

添加样式  

  1.  white-space: pre-wrap;​

 

vue    2020-11-04 12:39:13    97    0    0


  1. .el-drawer.rtl {
  2.   overflow: scroll;
  3. }

原文转载: https://blog.csdn.net/qq_33189961/article/details/107167139

微信    2020-11-03 21:18:21    50    0    0

优点:

1.节省了输入步骤,采用一个微信号绑定一个账号的方式

2. 防止他人登陆窃取数据

具体的步骤可分为以下:

1.前端点击微信扫码 => 向后端请求二维码 => 后端向微信公众号发送 请求 (获取二维码【带参数 “key” ----后端随机自定义的变量】)

2. 后端返回给前端 带参数的二维码, 前端展现二维码 => 开始轮询(向后端发送请求,验证是否扫码成功【账户的密钥‘key’】)

3. 手机扫描二维码 => 触发微信 扫码事件=>  向数据库 账户添加密钥‘key’

4. 前端轮询 发现 账户存在 密钥'key'   => 验证扫码成功 =>登陆成功

 

参考链接:微信扫码关注公众号并登录网站