作者 曾海沥

autoadd

  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{220:function(t,v,_){"use strict";_.r(v);var r=_(0),e=Object(r.a)({},function(){var t=this,v=t.$createElement,_=t._self._c||v;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"前端-frontend"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#前端-frontend","aria-hidden":"true"}},[t._v("#")]),t._v(" 前端 Frontend")]),t._v(" "),_("h2",{attrs:{id:"能力输出"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#能力输出","aria-hidden":"true"}},[t._v("#")]),t._v(" 能力输出")]),t._v(" "),_("ul",[_("li",[_("p",[t._v("微信小程序")])]),t._v(" "),_("li",[_("p",[t._v("支持全平台("),_("strong",[t._v("Windows")]),t._v("、"),_("strong",[t._v("Mac")]),t._v("、"),_("strong",[t._v("Linux")]),t._v(")的桌面客户端,以 "),_("code",[t._v("Windows")]),t._v(" 环境为例,客户端程序以 "),_("code",[t._v("exe")]),t._v(" 格式的可执行文件形式存在,不需要依赖浏览器运行,例如 QQ、Microsoft Office 等一系列可直接运行的桌面客户端")])]),t._v(" "),_("li",[_("p",[t._v("各类型网站,包含但不限于以下类型")]),t._v(" "),_("ul",[_("li",[t._v("管理平台")]),t._v(" "),_("li",[t._v("CMS 站点")]),t._v(" "),_("li",[t._v("企业门户综合网站")]),t._v(" "),_("li",[t._v("服务类型网站")]),t._v(" "),_("li",[t._v("设备嵌入网页")])]),t._v(" "),_("p",[t._v("网站可根据需求针对 "),_("code",[t._v("desktop")]),t._v("、"),_("code",[t._v("tablet")]),t._v("、"),_("code",[t._v("mobile")]),t._v(" 等不同尺寸设备进行适配")])])]),t._v(" "),_("h2",{attrs:{id:"项目构建说明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#项目构建说明","aria-hidden":"true"}},[t._v("#")]),t._v(" 项目构建说明")]),t._v(" "),_("h3",{attrs:{id:"构建网站"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#构建网站","aria-hidden":"true"}},[t._v("#")]),t._v(" 构建网站")]),t._v(" "),_("p",[t._v("各类型网站、设备嵌入式网页等")]),t._v(" "),_("p",[_("strong",[t._v("生产环境")])]),t._v(" "),_("p",[t._v("生产环境内容更新须严格按照计划安排执行")]),t._v(" "),_("p",[t._v("执行构建流程")]),t._v(" "),_("ol",[_("li",[t._v("测试小组确认当前版本已通过测试")]),t._v(" "),_("li",[t._v("项目负责人根据计划决定更新时间")]),t._v(" "),_("li",[t._v("执行构建前自动化测试\n"),_("ul",{staticClass:"contains-task-list"},[_("li",{staticClass:"task-list-item"},[_("input",{staticClass:"task-list-item-checkbox",attrs:{checked:"",disabled:"",type:"checkbox"}}),t._v(" ESLint 语法检查扫描")]),t._v(" "),_("li",{staticClass:"task-list-item"},[_("input",{staticClass:"task-list-item-checkbox",attrs:{disabled:"",type:"checkbox"}}),t._v(" 单元测试")]),t._v(" "),_("li",{staticClass:"task-list-item"},[_("input",{staticClass:"task-list-item-checkbox",attrs:{disabled:"",type:"checkbox"}}),t._v(" 端对端测试")])])]),t._v(" "),_("li",[t._v("执行项目构建")]),t._v(" "),_("li",[t._v("提交构建结果于运维人员并正式更新至生产环境")])]),t._v(" "),_("p",[_("strong",[t._v("测试环境")])]),t._v(" "),_("p",[t._v("持续集成平台根据配置自动进行构建,用于测试小组测试功能完成情况")]),t._v(" "),_("div",{staticClass:"custom-block tip"},[_("p",{staticClass:"custom-block-title"},[t._v("构建频率")]),t._v(" "),_("p",[t._v("在所有使用自动持续集成的项目中,构建频率均为每天中午及凌晨两个时段")]),t._v(" "),_("ul",[_("li",[t._v("中午自动构建保证下午可以测试新的内容")]),t._v(" "),_("li",[t._v("凌晨自动构建保证第二天早晨可以测试新的内容")])])]),t._v(" "),_("h4",{attrs:{id:"开发环境"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#开发环境","aria-hidden":"true"}},[t._v("#")]),t._v(" 开发环境")]),t._v(" "),_("p",[t._v("开发环境使用本地环境进行构建及运行项目")]),t._v(" "),_("h3",{attrs:{id:"构建微信小程序"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#构建微信小程序","aria-hidden":"true"}},[t._v("#")]),t._v(" 构建微信小程序")]),t._v(" "),_("p",[t._v("微信小程序各版本发布流程说明")]),t._v(" "),_("p",[_("strong",[t._v("线上版")])]),t._v(" "),_("ol",[_("li",[t._v("测试小组确认当前版本已通过测试")]),t._v(" "),_("li",[t._v("项目负责人根据计划决定更新时间")]),t._v(" "),_("li",[t._v("设置环境参数为线上版")]),t._v(" "),_("li",[t._v("上传代码至微信小程序平台")]),t._v(" "),_("li",[t._v("进入微信公众平台,在版本管理中将当前 "),_("strong",[t._v("体验版")]),t._v(" 提交为 "),_("strong",[t._v("线上版")])]),t._v(" "),_("li",[t._v("等待微信平台审核")]),t._v(" "),_("li",[t._v("微信平台审核通过,并会在微信中通知相关人员")]),t._v(" "),_("li",[t._v("进入微信公众平台,将审核通过的版本,发布为 "),_("strong",[t._v("线上版")])])]),t._v(" "),_("p",[_("strong",[t._v("预览版")])]),t._v(" "),_("ol",[_("li",[t._v("设置环境参数为开发版")]),t._v(" "),_("li",[t._v("将开发完成的代码上传至微信小程序平台")]),t._v(" "),_("li",[t._v("通过扫描预览版二维码进行试用")])]),t._v(" "),_("h2",{attrs:{id:"项目环境要求"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#项目环境要求","aria-hidden":"true"}},[t._v("#")]),t._v(" 项目环境要求")]),t._v(" "),_("p",[_("strong",[t._v("浏览器及版本要求")])]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[_("img",{attrs:{src:"/frontend/browser/edge.png",alt:"IE / Edge",width:"48",height:"48"}}),_("br"),t._v("IE / Edge")]),t._v(" "),_("th",[_("img",{attrs:{src:"/frontend/browser/firefox.png",alt:"Firefox",width:"48",height:"48"}}),_("br"),t._v("Firefox")]),t._v(" "),_("th",[_("img",{attrs:{src:"/frontend/browser/chrome.png",alt:"Chrome",width:"48",height:"48"}}),_("br"),t._v("Chrome")]),t._v(" "),_("th",[_("img",{attrs:{src:"/frontend/browser/safari.png",alt:"Safari",width:"48",height:"48"}}),_("br"),t._v("Safari")]),t._v(" "),_("th",[_("img",{attrs:{src:"/frontend/browser/opera.png",alt:"Opera",width:"48",height:"48"}}),_("br"),t._v("Opera")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("IE10, IE11, Edge")]),t._v(" "),_("td",[t._v("Firefox 18+")]),t._v(" "),_("td",[t._v("Chrome 49+")]),t._v(" "),_("td",[t._v("Safari 10+")]),t._v(" "),_("td",[t._v("Opera 36+")])])])]),t._v(" "),_("blockquote",[_("p",[t._v("后续的技术版本升级后,仅对 IE11 进行兼容性支持")])]),t._v(" "),_("p",[_("strong",[t._v("屏幕分辨率要求")])]),t._v(" "),_("p",[_("code",[t._v("1366 X 768")]),t._v(" 及以上")]),t._v(" "),_("p",[_("strong",[t._v("项目部署需求")])]),t._v(" "),_("ul",[_("li",[t._v("nginx(gzip)")])]),t._v(" "),_("p",[_("br"),_("br")]),t._v(" "),_("h2",{attrs:{id:"项目技术组成"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#项目技术组成","aria-hidden":"true"}},[t._v("#")]),t._v(" 项目技术组成")]),t._v(" "),_("p",[t._v("管理平台")]),t._v(" "),_("ul",[_("li",[t._v("vue2")]),t._v(" "),_("li",[t._v("vue-router")]),t._v(" "),_("li",[t._v("vuex")]),t._v(" "),_("li",[t._v("axios")]),t._v(" "),_("li",[t._v("element-ui")])]),t._v(" "),_("p",[t._v("网页开放平台(专项提供移动端 WebView 嵌入、独立页提供)")]),t._v(" "),_("ul",[_("li",[t._v("vue2")]),t._v(" "),_("li",[t._v("vue-router")]),t._v(" "),_("li",[t._v("axios")]),t._v(" "),_("li",[t._v("bootstrap 4(仅 CSS)")])]),t._v(" "),_("p",[t._v("单元测试")]),t._v(" "),_("ul",[_("li",[t._v("vue-test-utils")]),t._v(" "),_("li",[t._v("mocha")]),t._v(" "),_("li",[t._v("cypress")]),t._v(" "),_("li",[t._v("chai")])]),t._v(" "),_("p",[t._v("小程序")]),t._v(" "),_("ul",[_("li",[t._v("微信小程序原生方式")])]),t._v(" "),_("p",[_("br"),_("br")]),t._v(" "),_("h2",{attrs:{id:"代码版本控制位置"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#代码版本控制位置","aria-hidden":"true"}},[t._v("#")]),t._v(" 代码版本控制位置")]),t._v(" "),_("p",[t._v("前端团队代码使用位置:"),_("a",{attrs:{href:"http://192.168.100.254:3000/frontend",target:"_blank",rel:"noopener noreferrer"}},[t._v("frontend"),_("OutboundLink")],1)]),t._v(" "),_("p",[t._v("以下为前端团队目前完成的项目")]),t._v(" "),_("h3",{attrs:{id:"网站、管理平台"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#网站、管理平台","aria-hidden":"true"}},[t._v("#")]),t._v(" 网站、管理平台")]),t._v(" "),_("ul",[_("li",[_("a",{attrs:{href:"http://192.168.100.254:3000/zenghaili/vegetarian-plus",target:"_blank",rel:"noopener noreferrer"}},[t._v("素+管理平台"),_("OutboundLink")],1)]),t._v(" "),_("li",[_("a",{attrs:{href:"http://192.168.100.254:3000/zenghaili/admin-platform",target:"_blank",rel:"noopener noreferrer"}},[t._v("系统管理后台"),_("OutboundLink")],1)])]),t._v(" "),_("h3",{attrs:{id:"小程序"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#小程序","aria-hidden":"true"}},[t._v("#")]),t._v(" 小程序")]),t._v(" "),_("ul",[_("li",[_("a",{attrs:{href:"http://192.168.100.254:3000/zenghaili/exam",target:"_blank",rel:"noopener noreferrer"}},[t._v("便捷答题"),_("OutboundLink")],1)]),t._v(" "),_("li",[t._v("票选小助手")]),t._v(" "),_("li",[t._v("海鲜干货人家")]),t._v(" "),_("li",[t._v("我的旺铺")])])])},[],!1,null,null,null);v.default=e.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{213:function(s,t,a){"use strict";a.r(t);var n=a(0),e=Object(n.a)({},function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"系统框架"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#系统框架","aria-hidden":"true"}},[s._v("#")]),s._v(" 系统框架")]),s._v(" "),a("p",[s._v("管理平台项目框架目标使用规范说明及部分系统 API 描述,目前仅适用于 "),a("code",[s._v("素+管理平台")]),s._v(" 项目")]),s._v(" "),a("h2",{attrs:{id:"目录结构描述"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#目录结构描述","aria-hidden":"true"}},[s._v("#")]),s._v(" 目录结构描述")]),s._v(" "),a("p",[s._v("项目结构目录树如下")]),s._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("project/\n│ .browserslistrc 浏览器版本配置\n│ .editorconfig 编辑器配置\n│ .env.development 开发环境下使用的环境变量配置文件\n│ .env.production 生产环境下使用的环境变量配置文件\n│ .env.test 单元测试环境下使用的环境变量配置文件\n│ .eslintrc.js ESLint 配置\n│ .gitignore 设置 git 忽略上传的内容\n│ babel.config.js 项目脚本兼容版本设置\n│ cypress.json cypress 配置文件\n│ Dockerfile docker 配置文件\n│ package.json 项目总体描述及依赖描述\n│ postcss.config.js 预编译样式\n│ vue.config.js vue-cli 脚手架配置及 webpack 配置\n│ \n├─public 静态资源文件目录\n│ favicon.ico 网站图标\n│ index.html 网站实际入口\n│ \n├─src\n│ │ main.js 项目主入口\n│ │ \n│ ├─assets 项目相关资产 / 附件,通常用于存放图片资源\n│ │ \n│ ├─business 业务处理逻辑、框架相关 API\n│ │ \n│ ├─components 自定义业务组件\n│ │ \n│ ├─config 项目相关配置\n│ │ constants.js 常量配置\n│ │ directives.js 自定义指令集配置\n│ │ element-plugins.js element-ui 插件配置\n│ │ menu-path.js 系统菜单及路由匹配关系\n│ │ plugins.js 项目中除 element-ui 外的插件引用配置\n│ │ polyfill.js 自定义脚本兼容\n│ │ velidateData.js 自定义表单校验规则\n│ │ \n│ ├─layouts 整体布局结构\n│ │ \n│ ├─mixins 公共抽象模型\n│ │ \n│ ├─plugins 系统公共插件\n│ │ \n│ ├─router vue-router 路由配置\n│ │ \n│ ├─store Vuex 与本地缓存的相关处理\n│ │ \n│ ├─style 自定义样式文件收纳\n│ │ \n│ ├─utils 工具类\n│ │ \n│ └─views 系统业务功能页面\n│ │ \n│ ├─alonePage 独立页\n│ │ \n│ ├─demo 框架组件、API 实例\n│ │ \n│ └─inner 移动端内嵌页\n│ \n└─tests\n ├─e2e 端对端测试\n │ \n ├─sample 部分数据样例\n │ \n └─unit 单元测试\n .eslintrc.js 针对单元测试的 eslint 配置\n setup.js 单元测试的前置处理\n\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br"),a("span",{staticClass:"line-number"},[s._v("48")]),a("br"),a("span",{staticClass:"line-number"},[s._v("49")]),a("br"),a("span",{staticClass:"line-number"},[s._v("50")]),a("br"),a("span",{staticClass:"line-number"},[s._v("51")]),a("br"),a("span",{staticClass:"line-number"},[s._v("52")]),a("br"),a("span",{staticClass:"line-number"},[s._v("53")]),a("br"),a("span",{staticClass:"line-number"},[s._v("54")]),a("br"),a("span",{staticClass:"line-number"},[s._v("55")]),a("br"),a("span",{staticClass:"line-number"},[s._v("56")]),a("br"),a("span",{staticClass:"line-number"},[s._v("57")]),a("br"),a("span",{staticClass:"line-number"},[s._v("58")]),a("br"),a("span",{staticClass:"line-number"},[s._v("59")]),a("br"),a("span",{staticClass:"line-number"},[s._v("60")]),a("br"),a("span",{staticClass:"line-number"},[s._v("61")]),a("br"),a("span",{staticClass:"line-number"},[s._v("62")]),a("br"),a("span",{staticClass:"line-number"},[s._v("63")]),a("br"),a("span",{staticClass:"line-number"},[s._v("64")]),a("br"),a("span",{staticClass:"line-number"},[s._v("65")]),a("br"),a("span",{staticClass:"line-number"},[s._v("66")]),a("br"),a("span",{staticClass:"line-number"},[s._v("67")]),a("br"),a("span",{staticClass:"line-number"},[s._v("68")]),a("br")])]),a("p",[s._v("以上项目结构将为作为后续所有项目的基础结构")]),s._v(" "),a("h2",{attrs:{id:"api"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api","aria-hidden":"true"}},[s._v("#")]),s._v(" API")]),s._v(" "),a("h3",{attrs:{id:"http-url-data-options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#http-url-data-options","aria-hidden":"true"}},[s._v("#")]),s._v(" $http(url, [data], [options])")]),s._v(" "),a("p",[s._v("http 数据请求统一入口")]),s._v(" "),a("ul",[a("li",[s._v("url")])]),s._v(" "),a("p",[s._v("目标请求地址,地址分为两种类型:"),a("code",[s._v("当前域地址")]),s._v(" 和 "),a("code",[s._v("其他域地址")])]),s._v(" "),a("ul",[a("li",[s._v("data")])]),s._v(" "),a("p",[s._v("提交的数据参数")]),s._v(" "),a("ul",[a("li",[s._v("options")])]),s._v(" "),a("p",[s._v("配置参数,主要用于特殊情况下需要覆盖 "),a("strong",[s._v("axios")]),s._v(" 原生配置的情况,多数情况下不需要进行设置")]),s._v(" "),a("p",[a("strong",[s._v("return")])]),s._v(" "),a("p",[s._v("Promise 接口对象")]),s._v(" "),a("hr"),s._v(" "),a("p",[s._v("常见使用场景")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//访问当前域服务")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("this")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("$http")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/user/list'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" groupId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("then")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("resp")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("catch")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("resp")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//访问其他域服务")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("this")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("$http")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'http://aaa.com/user/list'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" groupId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("then")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("resp")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("catch")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("resp")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br")])]),a("h2",{attrs:{id:"自定义指令集-directive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#自定义指令集-directive","aria-hidden":"true"}},[s._v("#")]),s._v(" 自定义指令集 directive")]),s._v(" "),a("h3",{attrs:{id:"v-date"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v-date","aria-hidden":"true"}},[s._v("#")]),s._v(" v-date")]),s._v(" "),a("p",[s._v("日期格式化,将元素的内容格式化为指定的日期格式")]),s._v(" "),a("h4",{attrs:{id:"参数"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#参数","aria-hidden":"true"}},[s._v("#")]),s._v(" 参数")]),s._v(" "),a("ul",[a("li",[s._v("日期格式 (string)")])]),s._v(" "),a("p",[s._v("指定日期格式,例如:'yyyy-MM-dd hh:mm:ss',若不指定格式则默认使用格式:'yyyy-MM-dd'")]),s._v(" "),a("h4",{attrs:{id:"使用方式"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用方式","aria-hidden":"true"}},[s._v("#")]),s._v(" 使用方式")]),s._v(" "),a("div",{staticClass:"language-vue line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-vue"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 指定自定义格式 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-date")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("'")]),s._v("yyyy-MM-dd hh:mm:ss'"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("1559631857305"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 不指定格式,使用默认格式 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-date")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("1559631857305"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br")])]),a("h4",{attrs:{id:"实例"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#实例","aria-hidden":"true"}},[s._v("#")]),s._v(" 实例")]),s._v(" "),a("div",{staticClass:"language-vue line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-vue"}},[a("code",[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-date")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("'")]),s._v("yyyy-MM-dd hh:mm:ss'"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("1559631857305"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 结果:2019-06-04 15:04:17 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-date")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("Tue Jun 04 2019 15:33:06 GMT+0800 (中国标准时间)"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 结果:2019-06-04 --\x3e")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br")])]),a("h3",{attrs:{id:"v-number"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v-number","aria-hidden":"true"}},[s._v("#")]),s._v(" v-number")]),s._v(" "),a("p",[s._v("数字类型格式化(保留小数点位数),将元素内容格式化为指定位数小数点数字,位数不足则使用 0 补充,推荐用于数据统计,金额计算、展示等场景")]),s._v(" "),a("h4",{attrs:{id:"参数-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#参数-2","aria-hidden":"true"}},[s._v("#")]),s._v(" 参数")]),s._v(" "),a("ul",[a("li",[s._v("保留小数点位数 (number)")])]),s._v(" "),a("p",[s._v("指定数字保留小数点位数,默认为:2")]),s._v(" "),a("h4",{attrs:{id:"使用方式-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用方式-2","aria-hidden":"true"}},[s._v("#")]),s._v(" 使用方式")]),s._v(" "),a("div",{staticClass:"language-vue line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-vue"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 指定自定义保留位数 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-number")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),s._v("4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("3450.20"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 不指定格式,使用默认保留位数 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-number")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("3450"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br")])]),a("h4",{attrs:{id:"实例-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#实例-2","aria-hidden":"true"}},[s._v("#")]),s._v(" 实例")]),s._v(" "),a("div",{staticClass:"language-vue line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-vue"}},[a("code",[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-number")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),s._v("4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("3450.20"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 结果:3450.2000 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-number")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("3450"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 结果:3450.00 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-number")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("3450.1234"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 结果:3450.12 --\x3e")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br")])]),a("h2",{attrs:{id:"表单校验规则"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#表单校验规则","aria-hidden":"true"}},[s._v("#")]),s._v(" 表单校验规则")]),s._v(" "),a("h4",{attrs:{id:"使用方式-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用方式-3","aria-hidden":"true"}},[s._v("#")]),s._v(" 使用方式")]),s._v(" "),a("p",[s._v("Form 组件通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名")]),s._v(" "),a("div",{staticClass:"language-vue line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-vue"}},[a("code",[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("el-form")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v(":rules")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),s._v("rules"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n ...\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("el-form")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("script")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),a("span",{pre:!0,attrs:{class:"token script"}},[a("span",{pre:!0,attrs:{class:"token language-javascript"}},[s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("export")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("default")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("data")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n ruleForm"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("''")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n rules"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n name"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" required"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'请输入活动名称'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" trigger"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'blur'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" min"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" max"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("5")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" message"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'长度在 3 到 5 个字符'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" trigger"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'blur'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("script")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br")])]),a("h4",{attrs:{id:"自定义验证函数"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#自定义验证函数","aria-hidden":"true"}},[s._v("#")]),s._v(" 自定义验证函数")]),s._v(" "),a("ul",[a("li",[a("code",[s._v("checkNumOrLetter")]),s._v(" 验证只能包含数字和字母")]),s._v(" "),a("li",[a("code",[s._v("checkNum")]),s._v(" 验证只能为整数")]),s._v(" "),a("li",[a("code",[s._v("validateNumAndFloat")]),s._v(" 验证必须是整数或小数")]),s._v(" "),a("li",[a("code",[s._v("velidateSpecialNUm")]),s._v(" 验证只能是范围0.0001 ~ 999999999.9999的数字")]),s._v(" "),a("li",[a("code",[s._v("fourDigitsAfter")]),s._v(" 验证只能是小数点后4位的浮点数")]),s._v(" "),a("li",[a("code",[s._v("checkPhoneNum")]),s._v(" 验证只能是电话号码")])])])},[],!1,null,null,null);t.default=e.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{229:function(t,a,e){"use strict";e.r(a);var r=e(0),s=Object(r.a)({},function(){var t=this,a=t.$createElement,e=t._self._c||a;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"质量保证体系"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#质量保证体系","aria-hidden":"true"}},[t._v("#")]),t._v(" 质量保证体系")]),t._v(" "),e("p",[t._v("通过各类型自动化工具及测试用例对代码质量进行检测")]),t._v(" "),e("h2",{attrs:{id:"团队应用现状"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#团队应用现状","aria-hidden":"true"}},[t._v("#")]),t._v(" 团队应用现状")]),t._v(" "),e("ul",{staticClass:"contains-task-list"},[e("li",{staticClass:"task-list-item"},[e("input",{staticClass:"task-list-item-checkbox",attrs:{checked:"",disabled:"",type:"checkbox"}}),t._v(" 语法检查工具")]),t._v(" "),e("li",{staticClass:"task-list-item"},[e("input",{staticClass:"task-list-item-checkbox",attrs:{disabled:"",type:"checkbox"}}),t._v(" 单元测试")]),t._v(" "),e("li",{staticClass:"task-list-item"},[e("input",{staticClass:"task-list-item-checkbox",attrs:{disabled:"",type:"checkbox"}}),t._v(" 端对端测试")])]),t._v(" "),e("p",[t._v("目前所有自动化检查的方式仅为手动运行检测,后续将视情况切换为强制执行方式,检测不通过则不允许编译与发行")]),t._v(" "),e("h2",{attrs:{id:"语法检查"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#语法检查","aria-hidden":"true"}},[t._v("#")]),t._v(" 语法检查")]),t._v(" "),e("p",[t._v("语法检查工具用于检查代码的语法是否正确、风格是否符合要求")]),t._v(" "),e("p",[t._v("JavaScript 是一个动态的弱类型语言,在开发中比较容易出错。因为没有编译程序,为了寻找 JavaScript 代码错误通常需要在执行过程中不断调试。像 ESLint 这样的可以让程序员在编码的过程中发现问题而不是在执行的过程中。")]),t._v(" "),e("h3",{attrs:{id:"使用工具"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#使用工具","aria-hidden":"true"}},[t._v("#")]),t._v(" 使用工具")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://eslint.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("ESLint"),e("OutboundLink")],1)])]),t._v(" "),e("p",[t._v("目前使用规则为宽松模式,后续将逐步增加规则要求级别")]),t._v(" "),e("h3",{attrs:{id:"运行方式"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#运行方式","aria-hidden":"true"}},[t._v("#")]),t._v(" 运行方式")]),t._v(" "),e("div",{staticClass:"language-bash line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" run lint\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])]),e("h3",{attrs:{id:"检查结果要求"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#检查结果要求","aria-hidden":"true"}},[t._v("#")]),t._v(" 检查结果要求")]),t._v(" "),e("p",[t._v("ESlint 命令行输出")]),t._v(" "),e("blockquote",[e("Badge",{attrs:{text:"DONE",vertical:"middle"}}),t._v(" No lint errors found!\n")],1),t._v(" "),e("p",[t._v("代表了语法检查通过")]),t._v(" "),e("h2",{attrs:{id:"单元测试"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#单元测试","aria-hidden":"true"}},[t._v("#")]),t._v(" 单元测试")]),t._v(" "),e("p",[t._v("单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作,可以理解为 "),e("strong",[t._v("白盒测试")]),t._v(" 的行为。")]),t._v(" "),e("h3",{attrs:{id:"为什么要写单元测试?"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#为什么要写单元测试?","aria-hidden":"true"}},[t._v("#")]),t._v(" 为什么要写单元测试?")]),t._v(" "),e("p",[t._v("Web应用程序越来越复杂,这意味着有更多的可能出错。测试是帮助我们提高代码质量、降低错误的最好方法和工具之一")]),t._v(" "),e("ul",[e("li",[t._v("测试可以确保得到预期结果")]),t._v(" "),e("li",[t._v("加快开发速度")]),t._v(" "),e("li",[t._v("方便维护")]),t._v(" "),e("li",[t._v("提供用法的文档")])]),t._v(" "),e("p",[t._v("通过测试提供软件的质量,在开始的时候,可能会降低开发速度。但是从长期看,尤其是那种代码需要长期维护、不断开发的情况,测试会大大加快开发速度,减轻维护难度")]),t._v(" "),e("h3",{attrs:{id:"使用功能库"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#使用功能库","aria-hidden":"true"}},[t._v("#")]),t._v(" 使用功能库")]),t._v(" "),e("table",[e("thead",[e("tr",[e("th",[t._v("功能库")]),t._v(" "),e("th",[t._v("作用")])])]),t._v(" "),e("tbody",[e("tr",[e("td",[e("a",{attrs:{href:"https://mochajs.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mocha"),e("OutboundLink")],1)]),t._v(" "),e("td",[t._v("单元测试引擎")])]),t._v(" "),e("tr",[e("td",[e("a",{attrs:{href:"https://www.chaijs.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Chai"),e("OutboundLink")],1)]),t._v(" "),e("td",[t._v("断言库")])]),t._v(" "),e("tr",[e("td",[e("a",{attrs:{href:"https://github.com/jsdom/jsdom",target:"_blank",rel:"noopener noreferrer"}},[t._v("JsDom"),e("OutboundLink")],1)]),t._v(" "),e("td",[t._v("虚拟浏览器容器")])]),t._v(" "),e("tr",[e("td",[e("a",{attrs:{href:"https://vue-test-utils.vuejs.org/zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("@vue/test-utils"),e("OutboundLink")],1)]),t._v(" "),e("td",[t._v("vue 官方提供单元测试工具集")])])])]),t._v(" "),e("h3",{attrs:{id:"运行方式-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#运行方式-2","aria-hidden":"true"}},[t._v("#")]),t._v(" 运行方式")]),t._v(" "),e("div",{staticClass:"language-bash line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" run test:unit\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])]),e("h3",{attrs:{id:"适用范围"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#适用范围","aria-hidden":"true"}},[t._v("#")]),t._v(" 适用范围")]),t._v(" "),e("p",[t._v("很多时候,一些简单的功能场景,例如表单增、删、改、查等并没有编写单元测试的必要,况且编写单元测试需要不少时间成本,建议编写单元测试的场景如下")]),t._v(" "),e("ul",[e("li",[t._v("系统底层 API")]),t._v(" "),e("li",[t._v("功能封装类")]),t._v(" "),e("li",[t._v("功能组件")]),t._v(" "),e("li",[t._v("关联计算")]),t._v(" "),e("li",[t._v("业务集成联动")])]),t._v(" "),e("p",[t._v("对于功能封装函数,更是应该增加多种测试用例进行功能覆盖,对于边界测试更是其中重中之重")]),t._v(" "),e("h2",{attrs:{id:"端对端测试(end-to-end)"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#端对端测试(end-to-end)","aria-hidden":"true"}},[t._v("#")]),t._v(" 端对端测试(End-to-end)")]),t._v(" "),e("p",[t._v("端对端测试,简单地可以理解为站在用户角度的测试。站在用户的角度,他不需要知道软件的内部实现是怎么样的,只是使用即可;那么端对端测试模拟的就是用户的行为,只负责打开软件/浏览器,按序执行测试用例,并检查测试结果是否符合预期,它是 "),e("strong",[t._v("黑盒测试")]),t._v(" 的行为。")]),t._v(" "),e("h3",{attrs:{id:"使用功能库-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#使用功能库-2","aria-hidden":"true"}},[t._v("#")]),t._v(" 使用功能库")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://www.cypress.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("cypress"),e("OutboundLink")],1)])]),t._v(" "),e("h3",{attrs:{id:"运行方式-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#运行方式-3","aria-hidden":"true"}},[t._v("#")]),t._v(" 运行方式")]),t._v(" "),e("div",{staticClass:"language-bash line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" run test:e2e\n")])]),t._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[t._v("1")]),e("br")])])])},[],!1,null,null,null);a.default=s.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{231:function(t,r,a){"use strict";a.r(r);var e=a(0),s=Object(e.a)({},function(){var t=this,r=t.$createElement,a=t._self._c||r;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"陈列柜"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#陈列柜","aria-hidden":"true"}},[t._v("#")]),t._v(" 陈列柜")]),t._v(" "),a("p",[t._v("展示出团队完成的相关产品")]),t._v(" "),a("h2",{attrs:{id:"网站"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#网站","aria-hidden":"true"}},[t._v("#")]),t._v(" 网站")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("名称")]),t._v(" "),a("th",[t._v("生产环境")]),t._v(" "),a("th",[t._v("测试环境")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("买买买公司首页")]),t._v(" "),a("td",[a("a",{attrs:{href:"http://www.szmaimaimai.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)]),t._v(" "),a("td")]),t._v(" "),a("tr",[a("td",[t._v("素+管理平台")]),t._v(" "),a("td",[a("a",{attrs:{href:"http://suplus-front-prd.fjmaimaimai.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"http://suplus-front-dev.fjmaimaimai.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)])]),t._v(" "),a("tr",[a("td",[t._v("管理中心(原素+管理后台)")]),t._v(" "),a("td",[a("a",{attrs:{href:"http://suplus-app-mg-prd.fjmaimaimai.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"http://suplus-app-mg-dev.fjmaimaimai.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)])]),t._v(" "),a("tr",[a("td",[t._v("便捷答题小程序管理平台")]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dati.fjmaimaimai.com/dati_manage/#/login",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://csdati.fjmaimaimai.com/dati_manage/#/login",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)])])])]),t._v(" "),a("h2",{attrs:{id:"微信小程序"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#微信小程序","aria-hidden":"true"}},[t._v("#")]),t._v(" 微信小程序")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("名称")]),t._v(" "),a("th",[t._v("体验版")]),t._v(" "),a("th",[t._v("线上版")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticClass:"nowrap",attrs:{rowspan:"2"}},[t._v("票选小助手")]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/vote/experience.jpg"}})]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/vote/production.jpg"}})])]),t._v(" "),a("tr",[a("td",{attrs:{colspan:"2"}},[t._v("快速简单创建投票,支持图文选项。可支持群投票或指定用户进行投票")])]),t._v(" "),a("tr",[a("td",{staticClass:"nowrap",attrs:{rowspan:"2"}},[t._v("便捷答题")]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/exam/experience.jpg"}})]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/exam/production.jpg"}})])]),t._v(" "),a("tr",[a("td",{attrs:{colspan:"2"}},[t._v("让公司可以便捷地给员工培训考试")])]),t._v(" "),a("tr",[a("td",{staticClass:"nowrap",attrs:{rowspan:"2"}},[t._v("海鲜干货人家")]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/seafood/experience.jpg"}})]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/seafood/production.jpg"}})])]),t._v(" "),a("tr",[a("td",{attrs:{colspan:"2"}},[t._v("专业包点、小食订购平台;自提需标提货时间(至少次日),配送为当天下单,次日配送;周末节假日暂不支持发货")])]),t._v(" "),a("tr",[a("td",{staticClass:"nowrap",attrs:{rowspan:"2"}},[t._v("我的旺铺")]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/hot-shop/experience.jpg"}})]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/hot-shop/production.jpg"}})])]),t._v(" "),a("tr",[a("td",{attrs:{colspan:"2"}},[t._v("店铺管理工具,能快速的管理店铺的分类、商品和海报图册。")])])])]),t._v(" "),a("h2",{attrs:{id:"桌面客户端"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#桌面客户端","aria-hidden":"true"}},[t._v("#")]),t._v(" 桌面客户端")]),t._v(" "),a("p",[t._v("未上线")])])},[],!1,null,null,null);r.default=s.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{224:function(t,s,e){"use strict";e.r(s);var r=e(0),a=Object(r.a)({},function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"测试组"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#测试组","aria-hidden":"true"}},[this._v("#")]),this._v(" 测试组")])])},[],!1,null,null,null);s.default=a.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{222:function(t,r,e){"use strict";e.r(r);var a=e(0),n=Object(a.a)({},function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"协作工具"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#协作工具","aria-hidden":"true"}},[t._v("#")]),t._v(" 协作工具")]),t._v(" "),e("p",[t._v("公司团队协作工具站点")]),t._v(" "),e("h2",{attrs:{id:"项目研发管理"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#项目研发管理","aria-hidden":"true"}},[t._v("#")]),t._v(" 项目研发管理")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://192.168.100.254:8088/zentao/",target:"_blank",rel:"noopener noreferrer"}},[t._v("禅道"),e("OutboundLink")],1),t._v(" Bug 管理平台")]),t._v(" "),e("li",[e("a",{attrs:{href:"https://mp.weixin.qq.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("微信公众平台"),e("OutboundLink")],1),t._v(" 微信小程序、微信公众号开发管理,开发文档中心")])]),t._v(" "),e("h2",{attrs:{id:"api-管理平台"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#api-管理平台","aria-hidden":"true"}},[t._v("#")]),t._v(" API 管理平台")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://115.29.205.99:3000/",target:"_blank",rel:"noopener noreferrer"}},[t._v("YAPI"),e("OutboundLink")],1),t._v(" 服务端提供 API 的描述与快速测试平台")])]),t._v(" "),e("h2",{attrs:{id:"资源管理"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#资源管理","aria-hidden":"true"}},[t._v("#")]),t._v(" 资源管理")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://192.168.100.254:3000/",target:"_blank",rel:"noopener noreferrer"}},[t._v("git"),e("OutboundLink")],1),t._v(" 使用 gogs 搭建的基于 git 的代码版本控制管理平台,现有公司项目代码均维护在此")]),t._v(" "),e("li",[e("a",{attrs:{href:"svn://192.168.100.254/repo/%E9%A1%B9%E7%9B%AE%E6%96%87%E4%BB%B6"}},[t._v("svn")]),t._v(" 设计原型、UI、文档等内容")])]),t._v(" "),e("h2",{attrs:{id:"产品设计"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#产品设计","aria-hidden":"true"}},[t._v("#")]),t._v(" 产品设计")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://lanhuapp.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("蓝湖"),e("OutboundLink")],1),t._v(" UI 预览查看")])])])},[],!1,null,null,null);r.default=n.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{219:function(t,s,e){"use strict";e.r(s);var r=e(0),a=Object(r.a)({},function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"项目管控"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#项目管控","aria-hidden":"true"}},[this._v("#")]),this._v(" 项目管控")])])},[],!1,null,null,null);s.default=a.exports}}]);
此 diff 太大无法显示。