neo-cmp-cli 1.10.18 → 1.10.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index2.js +1 -1
- package/dist/main2.js +1 -1
- package/dist/neo/pullCmp.js +1 -1
- package/dist/package.json.js +1 -1
- package/package.json +1 -1
- package/template/antd-custom-cmp-template/package.json +2 -2
- package/template/echarts-custom-cmp-template/package.json +2 -2
- package/template/empty-custom-cmp-template/package.json +1 -1
- package/template/neo-bi-cmps/package.json +2 -2
- package/template/neo-bi-cmps/src/components/targetNumber__c/customStyleConfig/index.tsx +1 -1
- package/template/neo-bi-cmps/src/components/targetNumber__c/index.tsx +6 -1
- package/template/neo-bi-cmps/src/components/targetNumber__c/model.ts +10 -7
- package/template/neo-bi-cmps/src/components/targetNumber__c/style.scss +5 -4
- package/template/neo-custom-cmp-template/package.json +2 -2
- package/template/neo-h5-cmps/package.json +2 -2
- package/template/neo-h5-cmps/src/components/entityList__c/model.ts +1 -2
- package/template/neo-h5-cmps/src/components/entityTabs__c/index.tsx +108 -0
- package/template/neo-h5-cmps/src/components/entityTabs__c/model.ts +172 -0
- package/template/neo-h5-cmps/src/components/entityTabs__c/style.scss +130 -0
- package/template/neo-order-cmps/package.json +2 -2
- package/template/react-custom-cmp-template/package.json +2 -2
- package/template/react-ts-custom-cmp-template/package.json +2 -2
- package/template/vue2-custom-cmp-template/package.json +2 -2
package/dist/index2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./_virtual/index.js"),s=require("figlet"),o=require("yargs"),n=require("chalk"),a=require("inquirer"),t=require("ora"),i=require("./main2.js"),p=require("./neo/env.js"),c=require("./package.json.js");var m;exports.__require=function(){if(m)return e.__exports;m=1;const r=s,l=o,u=n,d=a,g=t,{neoInit:h,neoInitByCopy:y,inspect:b,neoConfigInit:v,validateProjectName:C,getCmpTypeByDir:f,NeoService:x,NeoLoginService:$,hasNeoProject:T,consoleTag:U,errorLog:j,successLog:_}=i.__require(),w=i.__require(),{getNeoCrmAPI:N}=p.__require(),q=c.default,M=r.textSync("neo",{font:"Lean"}),S=w.projectConfig,D=function(e){return u.green(u.bold(e))},R={"config init":"初始化配置文件",dev:"开启本地调试模式",build:"构建生产环境代码",build2lib:"构建 UMD 模块",build2esm:"构建 ESM 模块",publish2oss:"发布到 OSS",inspect:"输出配置文件",open:"打开项目"},k={...R,init:"初始化自定义组件项目",login:"登录 NeoCRM 平台",logout:"登出 NeoCRM 平台","create project":"创建自定义组件项目","create cmp":"创建自定义组件",linkDebug:"开启外链调试模式","pull cmp":"拉取线上自定义组件","delete cmp":"删除线上自定义组件",preview:"预览自定义组件","push cmp":"发布自定义组件到平台"};return l.middleware(function(e){if(e.help||e.version)return;const s=function(e){if(!e._||0===e._.length)return"";const s=e._.join(" ");if(k[s])return s;const o=e._[0];return k[o]?o:s||o}(e);if(!s)return;const o=k[s]||s;R[s]&&(console.log(u.green(M)),console.log(u.green(`当前版本:v${q.version}.\n`))),console.log(""),console.log(u.cyan(`执行命令: ${o}`)),console.log("")}).command("init [options]","根据模板创建一个自定义组件",e=>{e.reset().usage(D("Usage")+": $0 init [options]").option("type",{alias:"t",describe:"自定义组件类型(react ts 技术栈/ vue2.0 技术栈/ react 技术栈)"}).option("name",{alias:"n",describe:"自定义组件项目名称"}).alias("h","help")},e=>{if(e.type&&e.name)T()&&(j(`${U}创建自定义组件失败,当前目录(${process.cwd()})已经是一个自定义组件项目,请勿重复创建。`),process.exit(1)),"github"===e.mode?h(e.type,e.name):y(e.type,e.name);else{const s=[],o=[{name:"react&ts 自定义组件",value:"react-ts",short:"react-ts"},{name:"Neo 自定义业务组件",value:"neo",short:"neo"},{name:"Neo H5 自定义业务组件",value:"neo-h5-cmps",short:"neo-h5-cmps"},{name:"antd 自定义组件",value:"antd",short:"antd"},{name:"echarts 自定义组件",value:"echarts",short:"echarts"},{name:"vue2 自定义组件",value:"vue2",short:"vue2"}];e.type||s.push({name:"type",type:"list",message:"请选择您要创建的自定义组件类型: ",default:"react-ts",choices:o}),e.name||s.push({name:"name",type:"input",message:"请设置自定义组件项目名称(默认 neoCustomCmp):",default:"neoCustomCmp"}),d.prompt(s).then(s=>{const{isValid:o,errors:n}=C(s.name);o||(j(n.join("\n")),process.exit(1)),"github"===e.mode?h(s.type,s.name):y(s.type,s.name)})}}).command("config init","创建 neo.config.js 配置文件",e=>{e.reset().usage(D("Usage")+": $0 config init").alias("h","help")},()=>{v("neo.config.js")}).command("login","登录 NeoCRM 平台(OAuth2 授权)",e=>{e.reset().usage(D("Usage")+": $0 login").alias("h","help")},()=>{const e=[{name:"env",type:"list",message:"请选择您要登录的环境:",default:"cd",choices:[{name:"线上生产环境(crm.xiaoshouyi.com)",value:"production"},{name:"灰度环境(crm-gray.xiaoshouyi.com)",value:"gray"},{name:"沙盒环境(crm-sandbox.xiaoshouyi.com)",value:"sandbox"},{name:"开发环境(crm-cd.xiaoshouyi.com)",value:"cd"},{name:"自定义环境(在neo.config.js / neoConfig 中自行配置)",value:"custom"}]}];d.prompt(e).then(async e=>{const s=N(e.env,S.neoConfig);try{const e=new $(s);await e.login(),process.exit(0)}catch(e){j(`\n登录失败: ${e.message||e.msg}`),process.exit(1)}})}).command("logout","登出 NeoCRM 平台",e=>{e.reset().usage(D("Usage")+": $0 logout").alias("h","help")},async()=>{try{const e=new $;await e.logout(),process.exit(0)}catch(e){j(`\n登出失败: ${e.message||e.msg}`),process.exit(1)}}).command("create","创建项目或者组件",e=>e.command("project [options]","创建自定义组件项目(含工程代码)",e=>{e.reset().usage(D("Usage")+": $0 project [options]").option("name",{alias:"n",describe:"自定义组件项目名称"}).alias("h","help")},e=>{if(e.name)w.createCmpProjectByTemplate(e.name);else{const e=[{name:"name",type:"input",message:"请设置自定义组件项目名称:"}];d.prompt(e).then(e=>{const{isValid:s,errors:o}=C(e.name);s||(j(o.join("\n")),process.exit(1)),e.name?w.createCmpProjectByTemplate(e.name):(j("自定义组件项目名称不能为空。"),process.exit(1))})}}).command("cmp [options]","创建自定义组件",e=>{e.reset().usage(D("Usage")+": $0 cmp [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},e=>{if(e.name)w.createCmpByTemplate(e.name);else{const e=[{name:"name",type:"input",message:"请设置自定义组件名称:"}];d.prompt(e).then(e=>{e.name?w.createCmpByTemplate(e.name):(j("自定义组件名称不能为空。"),process.exit(1))})}})).command("pull cmp [options]","拉取线上自定义组件",e=>{e.reset().usage(D("Usage")+": $0 pull cmp [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},async e=>{if(e.name)w.pullCmp(e.name);else{const e=new x,s=g("正在拉取线上自定义组件列表...").start(),o=await e.getCustomCmpList();0===o.length&&(j("当前租户暂无任何自定义组件。"),process.exit(1)),s.stop("线上自定义组件列表拉取成功。");const n=[{name:"cmpType",type:"list",message:"请选择要拉取的自定义组件:",choices:o.map(e=>({name:`${e.label}(${e.cmpType})`,value:e.cmpType}))}];d.prompt(n).then(s=>{s.cmpType?w.pullCmp(s.cmpType,e):(j("自定义组件名称不能为空。"),process.exit(1))})}}).command("delete cmp [options]","删除线上自定义组件",e=>{e.reset().usage(D("Usage")+": $0 delete cmp [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},async e=>{if(e.name)w.deleteCmp(e.name);else{const e=new x,s=g("正在获取线上自定义组件列表...").start(),o=await e.getCustomCmpList();0===o.length&&(j("当前租户暂无任何自定义组件。"),process.exit(1)),s.stop("线上自定义组件列表获取成功。");const n=[{name:"cmpType",type:"list",message:"请选择要删除的自定义组件:",choices:o.map(e=>({name:`${e.label}(${e.cmpType})`,value:e.cmpType}))}];d.prompt(n).then(s=>{s.cmpType?w.deleteCmp(s.cmpType,e):(j("自定义组件名称不能为空。"),process.exit(1))})}}).command("preview [options]","预览指定自定义组件(仅预览组件本身内容)",e=>{e.reset().usage(D("Usage")+": $0 preview [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},e=>{if(e.name)w.previewCmp(e.name);else{const e=f(S.componentsDir);0===e.length&&(j("当前自定义组件目录中未找到自定义组件。(./src/components 目录下)"),process.exit(1));const s=[{name:"cmpType",type:"list",message:"请选择要预览的自定义组件:",choices:e.map(e=>({name:e,value:e}))}];d.prompt(s).then(e=>{e.cmpType||(j("未选择要预览的自定义组件。"),process.exit(1)),w.previewCmp(e.cmpType)})}}).command("dev","开启本地调试模式",e=>{e.reset().usage(D("Usage")+": $0 dev").alias("h","help")},()=>{w.dev()}).command("linkDebug","开启外链调试模式(在线上页面设计器端调试)",e=>{e.reset().usage(D("Usage")+": $0 linkDebug").alias("h","help")},e=>{w.linkDebug()}).command("build","构建生产环境代码",e=>{e.reset().usage(D("Usage")+": $0 build").alias("h","help")},e=>{w.build()}).command("build2lib","构建 UMD 模块",e=>{e.reset().usage(D("Usage")+": $0 build2lib").alias("h","help")},e=>{w.build2lib()}).command("publish2oss [options]","发布到oss",e=>{e.reset().usage(D("Usage")+": $0 publish2oss [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},e=>{if(e.name)w.publish2oss(e.name);else{const e=f(S.componentsDir);0===e.length&&(j("当前自定义组件目录中未找到自定义组件。(./src/components 目录下)"),process.exit(1));const s=[{name:"cmpType",type:"list",message:"请选择要发布的自定义组件:",choices:e.map(e=>({name:e,value:e}))}];d.prompt(s).then(e=>{e.cmpType||(j("未选择要发布的自定义组件。"),process.exit(1)),w.publish2oss(e.cmpType)})}}).command("push cmp [options]","构建并发布自定义组件到 NeoCRM 平台",e=>{e.reset().usage(D("Usage")+": $0 push cmp [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},e=>{if(e.name)w.pushCmp(e.name);else{const e=f(S.componentsDir);0===e.length&&(j("当前自定义组件目录中未找到自定义组件。(./src/components 目录下)"),process.exit(1));const s=[{name:"cmpType",type:"list",message:"请选择要发布的自定义组件:",choices:e.map(e=>({name:e,value:e}))}];d.prompt(s).then(e=>{e.cmpType||(j("未选择要发布的自定义组件。"),process.exit(1)),w.pushCmp(e.cmpType)})}}).command("build2esm","构建 ESM 模块",e=>{e.reset().usage(D("Usage")+": $0 build2esm").alias("h","help")},()=>{w.build2esm()}).command("inspect","输出当前配置文件",e=>{e.reset().usage(D("Usage")+": $0 inspect").option("type",{alias:"t",describe:"环境类型(本地调试环境/生产环境/library构建环境)",default:"build"}).alias("h","help")},e=>{b(e.type)}).command("open [options]","使用 Cursor 或 VSCode 打开项目",e=>{e.reset().usage(D("Usage")+": $0 open [options]").option("editor",{alias:"e",describe:"编辑器类型(cursor/vscode/auto),默认为 auto(自动检测)",default:"auto",choices:["cursor","vscode","code","auto"]}).option("name",{alias:"n",describe:"要打开的项目名称,默认为当前目录"}).alias("h","help")},e=>{w.openEditor(e.editor,e.name)}).alias("h","help").alias("v","version").strict().fail((e,s,o)=>{j(`\n运行命令时发生错误: ${e}。\n`),console.log(D("当前可用命令列表:")),console.log("");[{cmd:"init [options]",desc:"根据模板创建一个自定义组件"},{cmd:"create project [options]",desc:"创建自定义组件项目(含工程代码)"},{cmd:"create cmp [options]",desc:"创建自定义组件"},{cmd:"preview [options]",desc:"预览指定自定义组件(仅预览组件本身内容)"},{cmd:"linkDebug",desc:"开启外链调试模式(在线上页面设计器端调试)"},{cmd:"login",desc:"登录 NeoCRM 平台(OAuth2 授权)"},{cmd:"logout",desc:"登出 NeoCRM 平台"},{cmd:"pull cmp [options]",desc:"拉取线上自定义组件"},{cmd:"delete cmp [options]",desc:"删除线上自定义组件"},{cmd:"push cmp [options]",desc:"构建并发布自定义组件到 NeoCRM 平台"},{cmd:"open [options]",desc:"使用 Cursor 或 VSCode 打开项目"}].forEach(({cmd:e,desc:s})=>{console.log(` ${u.cyan(e.padEnd(25))} ${s}`)}),console.log(""),console.log(`使用 ${u.cyan("neo <command> --help")} 查看具体命令的帮助信息。`),console.log(""),process.exit(1)}).help().updateStrings({"Usage:":D("Usage:"),"Commands:":D("Commands:"),"Options:":D("Options:")}).argv,e.__exports};
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./_virtual/index.js"),o=require("figlet"),s=require("yargs"),n=require("chalk"),a=require("inquirer"),t=require("ora"),p=require("./main2.js"),c=require("./neo/env.js"),i=require("./package.json.js");var m;exports.__require=function(){if(m)return e.__exports;m=1;const l=o,r=s,u=n,g=a,d=t,{neoInit:h,neoInitByCopy:y,inspect:b,neoConfigInit:v,validateProjectName:C,getCmpTypeByDir:f,NeoService:$,NeoLoginService:x,hasNeoProject:T,consoleTag:w,errorLog:U,successLog:j}=p.__require(),L=p.__require(),{getNeoCrmAPI:N}=c.__require(),_=i.default,M=l.textSync("neo",{font:"Lean"}),q=L.projectConfig,S=function(e){return u.green(u.bold(e))},D={"config init":"初始化配置文件",dev:"开启本地调试模式",build:"构建生产环境代码",build2lib:"构建 UMD 模块",build2esm:"构建 ESM 模块",publish2oss:"发布到 OSS",inspect:"输出配置文件",open:"打开项目"},R={...D,init:"初始化自定义组件项目",login:"登录 NeoCRM 平台",logout:"登出 NeoCRM 平台","create project":"创建自定义组件项目","create cmp":"创建自定义组件",linkDebug:"开启外链调试模式","pull cmp":"拉取线上自定义组件","delete cmp":"删除线上自定义组件",preview:"预览自定义组件","push cmp":"发布自定义组件到平台"};return r.middleware(function(e){if(e.help||e.version)return;const o=function(e){if(!e._||0===e._.length)return"";const o=e._.join(" ");if(R[o])return o;const s=e._[0];return R[s]?s:o||s}(e);if(!o)return;const s=R[o]||o;D[o]&&(console.log(u.green(M)),console.log(u.green(`当前版本:v${_.version}.\n`))),console.log(""),console.log(u.cyan(`执行命令: ${s}`)),console.log("")}).command("init [options]","根据模板创建一个自定义组件",e=>{e.reset().usage(S("Usage")+": $0 init [options]").option("type",{alias:"t",describe:"自定义组件类型(react ts 技术栈/ vue2.0 技术栈/ react 技术栈)"}).option("name",{alias:"n",describe:"自定义组件项目名称"}).alias("h","help")},e=>{if(e.type&&e.name)T()&&(U(`${w}创建自定义组件失败,当前目录(${process.cwd()})已经是一个自定义组件项目,请勿重复创建。`),process.exit(1)),"github"===e.mode?h(e.type,e.name):y(e.type,e.name);else{const o=[],s=[{name:"react&ts 自定义组件",value:"react-ts",short:"react-ts"},{name:"Neo 自定义业务组件",value:"neo",short:"neo"},{name:"Neo H5 自定义业务组件",value:"neo-h5-cmps",short:"neo-h5-cmps"},{name:"antd 自定义组件",value:"antd",short:"antd"},{name:"echarts 自定义组件",value:"echarts",short:"echarts"},{name:"vue2 自定义组件",value:"vue2",short:"vue2"}];e.type||o.push({name:"type",type:"list",message:"请选择您要创建的自定义组件类型: ",default:"react-ts",choices:s}),e.name||o.push({name:"name",type:"input",message:"请设置自定义组件项目名称(默认 neoCustomCmp):",default:"neoCustomCmp"}),g.prompt(o).then(o=>{const{isValid:s,errors:n}=C(o.name);s||(U(n.join("\n")),process.exit(1)),"github"===e.mode?h(o.type,o.name):y(o.type,o.name)})}}).command("config init","创建 neo.config.js 配置文件",e=>{e.reset().usage(S("Usage")+": $0 config init").alias("h","help")},()=>{v("neo.config.js")}).command("login","登录 NeoCRM 平台(OAuth2 授权)",e=>{e.reset().usage(S("Usage")+": $0 login").alias("h","help")},()=>{const e=[{name:"env",type:"list",message:"请选择您要登录的环境:",default:"cd",choices:[{name:"线上生产环境(crm.xiaoshouyi.com)",value:"production"},{name:"灰度环境(crm-gray.xiaoshouyi.com)",value:"gray"},{name:"沙盒环境(crm-sandbox.xiaoshouyi.com)",value:"sandbox"},{name:"开发环境(crm-cd.xiaoshouyi.com)",value:"cd"},{name:"自定义环境(在neo.config.js / neoConfig 中自行配置)",value:"custom"}]}];g.prompt(e).then(async e=>{const o=N(e.env,q.neoConfig);try{const e=new x(o);await e.login(),process.exit(0)}catch(e){U(`\n登录失败: ${e.message||e.msg}`),process.exit(1)}})}).command("logout","登出 NeoCRM 平台",e=>{e.reset().usage(S("Usage")+": $0 logout").alias("h","help")},async()=>{try{const e=new x;await e.logout(),process.exit(0)}catch(e){U(`\n登出失败: ${e.message||e.msg}`),process.exit(1)}}).command("create","创建项目或者组件",e=>e.command("project [options]","创建自定义组件项目(含工程代码)",e=>{e.reset().usage(S("Usage")+": $0 project [options]").option("name",{alias:"n",describe:"自定义组件项目名称"}).alias("h","help")},e=>{if(e.name)L.createCmpProjectByTemplate(e.name);else{const e=[{name:"name",type:"input",message:"请设置自定义组件项目名称:"}];g.prompt(e).then(e=>{const{isValid:o,errors:s}=C(e.name);o||(U(s.join("\n")),process.exit(1)),e.name?L.createCmpProjectByTemplate(e.name):(U("自定义组件项目名称不能为空。"),process.exit(1))})}}).command("cmp [options]","创建自定义组件",e=>{e.reset().usage(S("Usage")+": $0 cmp [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},e=>{if(e.name)L.createCmpByTemplate(e.name);else{const e=[{name:"name",type:"input",message:"请设置自定义组件名称:"}];g.prompt(e).then(e=>{e.name?L.createCmpByTemplate(e.name):(U("自定义组件名称不能为空。"),process.exit(1))})}})).command("pull cmp [options]","拉取线上自定义组件",e=>{e.reset().usage(S("Usage")+": $0 pull cmp [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},async e=>{if(e.name)console.log(u.yellow(`[neo pull cmp] 即将拉取自定义组件:${e.name},如本地已存在同名组件目录,将可能被覆盖,请提前备份本地修改。`)),L.pullCmp(e.name);else{const e=new $,o=d("正在拉取线上自定义组件列表...").start(),s=await e.getCustomCmpList();0===s.length&&(U("当前租户暂无任何自定义组件。"),process.exit(1)),o.stop("线上自定义组件列表拉取成功。");const n=[{name:"cmpType",type:"list",message:"请选择要拉取的自定义组件:",choices:[{name:"拉取所有组件(ALL)",value:"ALL"},...s.map(e=>({name:`${e.label}(${e.cmpType})`,value:e.cmpType}))]}];g.prompt(n).then(o=>{o.cmpType?"ALL"===o.cmpType?(console.log(u.yellow(`[neo pull cmp] 即将拉取当前租户下的所有自定义组件(共 ${s.length} 个),如本地存在同名组件目录,将可能被覆盖,请提前备份本地修改。`)),s.forEach(async o=>{await L.pullCmp(o.cmpType,e)}),j("[neo pull cmp]拉取所有组件命令已执行完成。")):(console.log(u.yellow(`[neo pull cmp] 即将拉取自定义组件:${o.cmpType},如本地已存在同名组件目录,将可能被覆盖,请提前备份本地修改。`)),L.pullCmp(o.cmpType,e)):(U("请选择要拉取的自定义组件。"),process.exit(1))})}}).command("delete cmp [options]","删除线上自定义组件",e=>{e.reset().usage(S("Usage")+": $0 delete cmp [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},async e=>{if(e.name)L.deleteCmp(e.name);else{const e=new $,o=d("正在获取线上自定义组件列表...").start(),s=await e.getCustomCmpList();0===s.length&&(U("当前租户暂无任何自定义组件。"),process.exit(1)),o.stop("线上自定义组件列表获取成功。");const n=[{name:"cmpType",type:"list",message:"请选择要删除的自定义组件:",choices:s.map(e=>({name:`${e.label}(${e.cmpType})`,value:e.cmpType}))}];g.prompt(n).then(o=>{o.cmpType?L.deleteCmp(o.cmpType,e):(U("自定义组件名称不能为空。"),process.exit(1))})}}).command("preview [options]","预览指定自定义组件(仅预览组件本身内容)",e=>{e.reset().usage(S("Usage")+": $0 preview [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},e=>{if(e.name)L.previewCmp(e.name);else{const e=f(q.componentsDir);0===e.length&&(U("当前自定义组件目录中未找到自定义组件。(./src/components 目录下)"),process.exit(1));const o=[{name:"cmpType",type:"list",message:"请选择要预览的自定义组件:",choices:e.map(e=>({name:e,value:e}))}];g.prompt(o).then(e=>{e.cmpType||(U("未选择要预览的自定义组件。"),process.exit(1)),L.previewCmp(e.cmpType)})}}).command("dev","开启本地调试模式",e=>{e.reset().usage(S("Usage")+": $0 dev").alias("h","help")},()=>{L.dev()}).command("linkDebug","开启外链调试模式(在线上页面设计器端调试)",e=>{e.reset().usage(S("Usage")+": $0 linkDebug").alias("h","help")},e=>{L.linkDebug()}).command("build","构建生产环境代码",e=>{e.reset().usage(S("Usage")+": $0 build").alias("h","help")},e=>{L.build()}).command("build2lib","构建 UMD 模块",e=>{e.reset().usage(S("Usage")+": $0 build2lib").alias("h","help")},e=>{L.build2lib()}).command("publish2oss [options]","发布到oss",e=>{e.reset().usage(S("Usage")+": $0 publish2oss [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},e=>{if(e.name)L.publish2oss(e.name);else{const e=f(q.componentsDir);0===e.length&&(U("当前自定义组件目录中未找到自定义组件。(./src/components 目录下)"),process.exit(1));const o=[{name:"cmpType",type:"list",message:"请选择要发布的自定义组件:",choices:e.map(e=>({name:e,value:e}))}];g.prompt(o).then(e=>{e.cmpType||(U("未选择要发布的自定义组件。"),process.exit(1)),L.publish2oss(e.cmpType)})}}).command("push cmp [options]","构建并发布自定义组件到 NeoCRM 平台",e=>{e.reset().usage(S("Usage")+": $0 push cmp [options]").option("name",{alias:"n",describe:"自定义组件名称"}).alias("h","help")},e=>{if(e.name)console.log(u.yellow(`[neo push cmp] 即将构建并发布自定义组件:${e.name} 到 NeoCRM 平台,请确保已经通过 neo login 登录到正确的环境。`)),L.pushCmp(e.name);else{const e=f(q.componentsDir);0===e.length&&(U("当前自定义组件目录中未找到自定义组件。(./src/components 目录下)"),process.exit(1));const o=[{name:"cmpType",type:"list",message:"请选择要发布的自定义组件:",choices:[{name:"发布所有组件(ALL)",value:"ALL"},...e.map(e=>({name:e,value:e}))]}];g.prompt(o).then(o=>{o.cmpType||(U("请选择要发布的自定义组件。"),process.exit(1)),"ALL"===o.cmpType?(console.log(u.yellow(`[neo push cmp] 即将构建并发布当前目录下的所有自定义组件(共 ${e.length} 个)到 NeoCRM 平台,请确保已经通过 neo login 登录到正确的环境。`)),e.forEach(async e=>{await L.pushCmp(e)}),j("[neo push cmp]发布所有组件命令已执行完成。")):(console.log(u.yellow(`[neo push cmp] 即将构建并发布自定义组件:${o.cmpType} 到 NeoCRM 平台,请确保已经通过 neo login 登录到正确的环境。`)),L.pushCmp(o.cmpType))})}}).command("build2esm","构建 ESM 模块",e=>{e.reset().usage(S("Usage")+": $0 build2esm").alias("h","help")},()=>{L.build2esm()}).command("inspect","输出当前配置文件",e=>{e.reset().usage(S("Usage")+": $0 inspect").option("type",{alias:"t",describe:"环境类型(本地调试环境/生产环境/library构建环境)",default:"build"}).alias("h","help")},e=>{b(e.type)}).command("open [options]","使用 Cursor 或 VSCode 打开项目",e=>{e.reset().usage(S("Usage")+": $0 open [options]").option("editor",{alias:"e",describe:"编辑器类型(cursor/vscode/auto),默认为 auto(自动检测)",default:"auto",choices:["cursor","vscode","code","auto"]}).option("name",{alias:"n",describe:"要打开的项目名称,默认为当前目录"}).alias("h","help")},e=>{L.openEditor(e.editor,e.name)}).alias("h","help").alias("v","version").strict().fail((e,o,s)=>{U(`\n运行命令时发生错误: ${e}。\n`),console.log(S("当前可用命令列表:")),console.log("");[{cmd:"init [options]",desc:"根据模板创建一个自定义组件"},{cmd:"create project [options]",desc:"创建自定义组件项目(含工程代码)"},{cmd:"create cmp [options]",desc:"创建自定义组件"},{cmd:"preview [options]",desc:"预览指定自定义组件(仅预览组件本身内容)"},{cmd:"linkDebug",desc:"开启外链调试模式(在线上页面设计器端调试)"},{cmd:"login",desc:"登录 NeoCRM 平台(OAuth2 授权)"},{cmd:"logout",desc:"登出 NeoCRM 平台"},{cmd:"pull cmp [options]",desc:"拉取线上自定义组件"},{cmd:"delete cmp [options]",desc:"删除线上自定义组件"},{cmd:"push cmp [options]",desc:"构建并发布自定义组件到 NeoCRM 平台"},{cmd:"open [options]",desc:"使用 Cursor 或 VSCode 打开项目"}].forEach(({cmd:e,desc:o})=>{console.log(` ${u.cyan(e.padEnd(25))} ${o}`)}),console.log(""),console.log(`使用 ${u.cyan("neo <command> --help")} 查看具体命令的帮助信息。`),console.log(""),process.exit(1)}).help().updateStrings({"Usage:":S("Usage:"),"Commands:":S("Commands:"),"Options:":S("Options:")}).argv,e.__exports};
|
package/dist/main2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("akfun");require("lodash");const r=require("./module/neoInit.js"),i=require("./module/neoInitByCopy.js"),s=require("./module/inspect.js"),t=require("./utils/neoConfigInit.js"),o=require("./utils/neoParams.js"),u=require("./config/index.js"),l=require("./oss/publish2oss.js"),p=require("./neo/pushCmp.js"),n=require("./neo/pullCmp.js"),c=require("./neo/deleteCmp.js"),d=require("./utils/cmpUtils/previewCmp.js"),m=require("./utils/generateEntries.js"),b=require("./utils/cmpUtils/createCmpByTemplate.js"),a=require("./utils/projectUtils/createCmpProjectByTemplate.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("akfun");require("lodash");const r=require("./module/neoInit.js"),i=require("./module/neoInitByCopy.js"),s=require("./module/inspect.js"),t=require("./utils/neoConfigInit.js"),o=require("./utils/neoParams.js"),u=require("./config/index.js"),l=require("./oss/publish2oss.js"),p=require("./neo/pushCmp.js"),n=require("./neo/pullCmp.js"),c=require("./neo/deleteCmp.js"),d=require("./utils/cmpUtils/previewCmp.js"),m=require("./utils/generateEntries.js"),b=require("./utils/cmpUtils/createCmpByTemplate.js"),a=require("./utils/projectUtils/createCmpProjectByTemplate.js"),y=require("./utils/projectUtils/openProject.js"),q=require("./utils/configureNeoBuild.js"),_=require("./utils/common.js"),g=require("./utils/projectNameValidator.js"),j=require("./utils/cmpUtils/getCmpTypeByDir.js"),v=require("./neo/neoService.js"),T=require("./neo/neoLogin.js"),f=require("./utils/projectUtils/hasNeoProject.js");var C,x;exports.__require=function(){if(x)return C;x=1;const h=e,w=r.__require(),E=i.__require(),N=s.__require(),D=t.__require(),{consoleTag:B}=o.__require(),P=u.__require(),k=l.__require(),M=p.__require(),I=n.__require(),L=c.__require(),U=d.__require(),O=m.__require(),S=b.__require(),R=a.__require(),A=y.__require(),{configureNeoBuild:V}=q.__require(),{errorLog:z,successLog:F}=_.__require(),{validateProjectName:G}=g.__require(),H=j.__require(),J=v.__require(),K=T.__require(),Q=f.__require();function W(e,r){const{entryType:i,cmpType:s}=r;let t=[],o={};try{const{entries:r,cmpTypes:u,defaultExports:l}=O({configEntry:e.entry,disableAutoRegister:e.disableAutoRegister,componentsDir:P.componentsDir,entryType:i,cmpType:s});r&&Object.keys(r).length>0&&(e.entry=r,t=u,console.info("已自动生成 entry 入口配置:",r)),o=l}catch(e){z(e.message||e.msg),process.exit(1)}return{cmpTypes:t,defaultExports:o}}function X(e){return Object.assign(P.build2lib,e)}return C={neoInit:w,neoInitByCopy:E,inspect:N,neoConfigInit:D,projectConfig:P,consoleTag:B,errorLog:z,successLog:F,validateProjectName:G,getCmpTypeByDir:H,NeoService:J,NeoLoginService:K,hasNeoProject:Q,createCmpProjectByTemplate:R,createCmpByTemplate:S,dev:()=>{P.dev||(z("未找到 dev 相关配置。"),process.exit(1)),h.dev(P,B)},previewCmp:e=>{e||(z("请输入要预览的组件名称。"),process.exit(1)),P.preview||(z("未找到 preview 相关配置。"),process.exit(1)),P.dev=Object.assign(P.dev,P.preview),delete P.preview,U(P,e)},linkDebug:()=>{P.linkDebug||(z("未找到 debug 相关配置。"),process.exit(1)),P.dev=Object.assign(P.dev,P.linkDebug),delete P.linkDebug,delete P.dev.ignoreNodeModules,P.webpack.ignoreNodeModules=!1;const{cmpTypes:e,defaultExports:r}=W(P.dev,{entryType:"linkDebug"});V(P,P.dev,{cmpTypes:e,defaultExports:r,verbose:!0,excludeModel:!1}),h.dev(P,B)},build:()=>h.build("build",P,B),build2lib:()=>{W(P.build2lib,{entryType:"widget"}),P.build2lib.removeNeoCommonModules&&V(P,P.build2lib,{cmpTypes:[],defaultExports:[],verbose:!1,excludeModel:!0}),h.build("lib",P,B)},publish2oss:e=>{const r=P.publish2oss;P.build2lib=X(r);const{cmpTypes:i,defaultExports:s}=W(P.build2lib,{entryType:"widget",cmpType:e});V(P,P.build2lib,{cmpTypes:i,defaultExports:s,verbose:!0,excludeModel:!0}),h.build("lib",P,B,()=>{k(r.ossType,r.ossConfig,r.assetsRoot)})},pushCmp:e=>{const{pushCmp:r}=P;P.build2lib=X(r);const{cmpTypes:i,defaultExports:s}=W(P.build2lib,{entryType:"widget",cmpType:e});return V(P,P.build2lib,{cmpTypes:i,defaultExports:s,verbose:!1,excludeModel:!0}),new Promise((i,s)=>{h.build("lib",P,B,async()=>{try{await M({...r,componentsDir:P.componentsDir},e),i()}catch(e){s(e)}})})},pullCmp:I,deleteCmp:(e,r)=>{L(e,r)},build2esm:()=>h.build2esm(P,B),openEditor:A},C};
|
package/dist/neo/pullCmp.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("lodash");const e=require("akfun"),r=require("ora"),t=require("./neoService.js"),i=require("../utils/common.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),require("lodash");const e=require("akfun"),r=require("ora"),t=require("./neoService.js"),i=require("../utils/common.js"),o=require("../utils/pathUtils.js"),s=require("../utils/cmpUtils/getCmpTypeByDir.js"),n=require("../utils/cmpUtils/createCmpByZip.js"),c=require("../config/index.js");var u,a;exports.__require=function(){if(a)return u;a=1;const{getConfigObj:p}=e,m=r,g=t.__require(),{getFramework:l,warningLog:q,errorLog:f,successLog:_}=i.__require(),{catchCurPackageJson:y}=o.__require(),w=s.__require(),C=n.__require(),j=c.__require(),k=l(p(y()).framework);return u=async(e,r)=>{w(j.componentsDir).indexOf(e)>-1&&q(`当前项目目录中已存在${e}自定义组件。(./src/components 目录下)`);const t=m("正在拉取组件...").start();try{let i=r,o=[],s={},n=null;r?(o=r.cmpList||[],s=r.cmpInfoMap||{}):(i=new g,t.info("正在获取自定义组件列表..."),o=await i.getCustomCmpList(),s=i.cmpInfoMap||{}),0===o.length&&(f("拉取失败,当前租户暂无任何自定义组件。",t),process.exit(1)),n=i.getCmpInfoByCmpType(e),n||(f(`拉取失败,当前租户不存在${e}自定义组件。`,t),process.exit(1)),n.framework&&n.framework!==k&&(f(`拉取失败,${e}自定义组件与当前项目技术栈不一致。`,t),process.exit(1));const c=i.getCodeLibByCmpType(e),u=await i.ensureValidToken();await C(c,{token:u,cmpName:e,componentBaseDir:j.componentsDir})||(f(`拉取失败,${e}自定义组件源码解析失败,请检查源码文件是否正确。`,t),process.exit(1)),_(`已成功拉取${e}自定义组件!\n`,t)}catch(e){throw f(`拉取自定义组件失败: ${e.message||e.msg}`,t),e}},u};
|
package/dist/package.json.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var e="1.10.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var e="1.10.19";const o={version:e};exports.default=o,exports.version=e;
|
package/package.json
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"url": "https://github.com/wibetter/antd-custom-cmp-template/issues"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"neo-register": "^1.1.
|
|
41
|
+
"neo-register": "^1.1.5",
|
|
42
42
|
"antd": "4.9.4",
|
|
43
43
|
"react": "^16.9.0",
|
|
44
44
|
"react-dom": "^16.9.0"
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@commitlint/config-conventional": "^9.1.1",
|
|
49
49
|
"@types/react": "^16.9.11",
|
|
50
50
|
"@types/react-dom": "^16.9.15",
|
|
51
|
-
"neo-cmp-cli": "^1.10.
|
|
51
|
+
"neo-cmp-cli": "^1.10.20",
|
|
52
52
|
"husky": "^4.2.5",
|
|
53
53
|
"lint-staged": "^10.2.9",
|
|
54
54
|
"prettier": "^2.0.5"
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"url": "https://github.com/wibetter/echarts-custom-cmp-template/issues"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"neo-register": "^1.1.
|
|
41
|
+
"neo-register": "^1.1.5",
|
|
42
42
|
"react": "^16.9.0",
|
|
43
43
|
"react-dom": "^16.9.0",
|
|
44
44
|
"echarts": "^5.5.1"
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@commitlint/config-conventional": "^9.1.1",
|
|
49
49
|
"@types/react": "^16.9.11",
|
|
50
50
|
"@types/react-dom": "^16.9.15",
|
|
51
|
-
"neo-cmp-cli": "^1.10.
|
|
51
|
+
"neo-cmp-cli": "^1.10.20",
|
|
52
52
|
"husky": "^4.2.5",
|
|
53
53
|
"lint-staged": "^10.2.9",
|
|
54
54
|
"prettier": "^2.0.5",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
]
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"neo-register": "^1.1.
|
|
36
|
+
"neo-register": "^1.1.5",
|
|
37
37
|
"react": "^16.9.0",
|
|
38
38
|
"react-dom": "^16.9.0",
|
|
39
39
|
"axios": "^0.27.2",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"@types/react": "^16.9.11",
|
|
51
51
|
"@types/react-dom": "^16.9.15",
|
|
52
52
|
"@types/axios": "^0.14.0",
|
|
53
|
-
"neo-cmp-cli": "^1.10.
|
|
53
|
+
"neo-cmp-cli": "^1.10.20",
|
|
54
54
|
"husky": "^4.2.5",
|
|
55
55
|
"lint-staged": "^10.2.9",
|
|
56
56
|
"prettier": "^2.0.5"
|
|
@@ -90,7 +90,7 @@ export default class CustomStyleConfigRenderer extends React.Component<
|
|
|
90
90
|
const { disabled, viewStyle, wideScreen, value } = this.props;
|
|
91
91
|
const { isModalVisible } = this.state;
|
|
92
92
|
console.log('customStyleConfig:', this.props);
|
|
93
|
-
console.log('test1:', this.props.data['__NeoPageInfo'])
|
|
93
|
+
console.log('test1:', this.props.data['__NeoPageInfo']);
|
|
94
94
|
|
|
95
95
|
return (
|
|
96
96
|
<div className="properties-panel-custom-style-config">
|
|
@@ -51,6 +51,7 @@ interface TargetNumberStyle {
|
|
|
51
51
|
fontSize?: number;
|
|
52
52
|
fontWeight?: number;
|
|
53
53
|
color?: string;
|
|
54
|
+
backgroundColor?: string;
|
|
54
55
|
};
|
|
55
56
|
numberStyle?: {
|
|
56
57
|
fontSize?: number;
|
|
@@ -137,7 +138,10 @@ class TargetNumber extends BaseCmp<TargetNumberProps, TargetNumberState> {
|
|
|
137
138
|
// 监听一个广播事件
|
|
138
139
|
console.log('TargetNumber 注册了一个广播事件 SavePageEvent');
|
|
139
140
|
NeoEvent.listen('SavePageEvent', (eventData: any) => {
|
|
140
|
-
console.log(
|
|
141
|
+
console.log(
|
|
142
|
+
'TargetNumber 监听到了一个广播事件 SavePageEvent: ',
|
|
143
|
+
eventData,
|
|
144
|
+
);
|
|
141
145
|
});
|
|
142
146
|
}
|
|
143
147
|
|
|
@@ -353,6 +357,7 @@ class TargetNumber extends BaseCmp<TargetNumberProps, TargetNumberState> {
|
|
|
353
357
|
: '24px',
|
|
354
358
|
fontWeight: titleStyleConfig?.fontWeight ?? 400,
|
|
355
359
|
color: titleStyleConfig?.color || '#000000',
|
|
360
|
+
backgroundColor: titleStyleConfig?.backgroundColor || '#eaf3fc',
|
|
356
361
|
};
|
|
357
362
|
|
|
358
363
|
// 渲染单个数值块
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// 导入自定义配置项(用于对接复杂自定义配置)
|
|
2
|
-
import './customStyleConfig';
|
|
2
|
+
// import './customStyleConfig';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* @file 数值指标组件对接编辑器的描述文件
|
|
@@ -62,11 +62,12 @@ export class TargetNumberModel {
|
|
|
62
62
|
alignClass: 'flex-col',
|
|
63
63
|
},
|
|
64
64
|
titleStyle: {
|
|
65
|
-
show:
|
|
66
|
-
text: '',
|
|
67
|
-
fontSize:
|
|
68
|
-
fontWeight:
|
|
69
|
-
color: '#
|
|
65
|
+
show: true,
|
|
66
|
+
text: '>> 关键数据',
|
|
67
|
+
fontSize: 18,
|
|
68
|
+
fontWeight: 700,
|
|
69
|
+
color: '#333',
|
|
70
|
+
backgroundColor: '#eaf3fc',
|
|
70
71
|
},
|
|
71
72
|
numberStyle: {
|
|
72
73
|
fontSize: 32,
|
|
@@ -112,6 +113,7 @@ export class TargetNumberModel {
|
|
|
112
113
|
label: '绑定字段',
|
|
113
114
|
placeholder: '请至少选择一个要显示的字段',
|
|
114
115
|
},
|
|
116
|
+
/*
|
|
115
117
|
{
|
|
116
118
|
type: 'customStyleConfig',
|
|
117
119
|
name: 'targetNumberStyle',
|
|
@@ -119,7 +121,8 @@ export class TargetNumberModel {
|
|
|
119
121
|
viewStyle: 'tabs', // 'tabs'、'fold'
|
|
120
122
|
wideScreen: false, // 是否开启宽屏展示模式
|
|
121
123
|
},
|
|
124
|
+
*/
|
|
122
125
|
];
|
|
123
126
|
}
|
|
124
127
|
|
|
125
|
-
export default TargetNumberModel;
|
|
128
|
+
export default TargetNumberModel;
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
.targetNumber__c {
|
|
2
2
|
display: flex;
|
|
3
3
|
flex-direction: column;
|
|
4
|
-
padding:
|
|
4
|
+
padding: 0 !important;
|
|
5
5
|
background: #fff;
|
|
6
6
|
border-radius: 8px;
|
|
7
7
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
8
|
+
margin-bottom: 12px;
|
|
8
9
|
|
|
9
10
|
// 组件标题(根据 titleStyle.show 展示)
|
|
10
11
|
.target-number-title {
|
|
11
|
-
margin-bottom: 12px;
|
|
12
12
|
line-height: 1.4;
|
|
13
|
+
background-color: #eaf3fc;
|
|
14
|
+
padding: 8px 12px;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
.target-number-block {
|
|
@@ -17,6 +19,7 @@
|
|
|
17
19
|
align-items: center;
|
|
18
20
|
justify-content: center;
|
|
19
21
|
min-height: 60px;
|
|
22
|
+
padding: 8px;
|
|
20
23
|
|
|
21
24
|
&.flex-col {
|
|
22
25
|
flex-direction: column;
|
|
@@ -168,5 +171,3 @@
|
|
|
168
171
|
.target-number {
|
|
169
172
|
background-color: red;
|
|
170
173
|
}
|
|
171
|
-
|
|
172
|
-
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"url": "https://github.com/wibetter/neo-custom-cmp-template/issues"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"neo-register": "^1.1.
|
|
44
|
+
"neo-register": "^1.1.5",
|
|
45
45
|
"react": "^16.9.0",
|
|
46
46
|
"react-dom": "^16.9.0",
|
|
47
47
|
"axios": "^0.27.2",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@types/react": "^16.9.11",
|
|
56
56
|
"@types/react-dom": "^16.9.15",
|
|
57
57
|
"@types/axios": "^0.14.0",
|
|
58
|
-
"neo-cmp-cli": "^1.10.
|
|
58
|
+
"neo-cmp-cli": "^1.10.20",
|
|
59
59
|
"husky": "^4.2.5",
|
|
60
60
|
"lint-staged": "^10.2.9",
|
|
61
61
|
"prettier": "^2.0.5"
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
]
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"neo-register": "^1.1.
|
|
35
|
+
"neo-register": "^1.1.5",
|
|
36
36
|
"react": "^16.9.0",
|
|
37
37
|
"react-dom": "^16.9.0",
|
|
38
38
|
"axios": "^0.27.2",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"@types/react": "^16.9.11",
|
|
47
47
|
"@types/react-dom": "^16.9.15",
|
|
48
48
|
"@types/axios": "^0.14.0",
|
|
49
|
-
"neo-cmp-cli": "^1.10.
|
|
49
|
+
"neo-cmp-cli": "^1.10.20",
|
|
50
50
|
"husky": "^4.2.5",
|
|
51
51
|
"lint-staged": "^10.2.9",
|
|
52
52
|
"prettier": "^2.0.5"
|
|
@@ -49,7 +49,6 @@ export class EntityListModel {
|
|
|
49
49
|
disabledSort: false,
|
|
50
50
|
disabledFilter: false,
|
|
51
51
|
disabledOperationBtn: false,
|
|
52
|
-
showShortcutBtn: false,
|
|
53
52
|
initialListSize: 3,
|
|
54
53
|
tableType: 'list', // list 列表,lookup 下拉框,dashboardList BI 列表
|
|
55
54
|
isNoRefresh: true, // 禁用下拉刷新和上拉加载
|
|
@@ -94,7 +93,7 @@ export class EntityListModel {
|
|
|
94
93
|
{
|
|
95
94
|
type: 'panelSwitch',
|
|
96
95
|
name: 'isShowTitlePicker',
|
|
97
|
-
label: '
|
|
96
|
+
label: '显示视图切换',
|
|
98
97
|
defaultChecked: false,
|
|
99
98
|
},
|
|
100
99
|
{
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Tabs } from 'antd';
|
|
3
|
+
import './style.scss'; // 组件内容样式
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
import { NeoEntityList } from 'neo-ui-component-h5'; // neo h5 组件库
|
|
6
|
+
|
|
7
|
+
interface EntityListTabsProps {
|
|
8
|
+
entityApiKey?: string;
|
|
9
|
+
disableSearch?: boolean;
|
|
10
|
+
disabledSort?: boolean;
|
|
11
|
+
disabledFilter?: boolean;
|
|
12
|
+
headerTitle?: string;
|
|
13
|
+
showHeader?: boolean;
|
|
14
|
+
showAiChatBtn?: boolean;
|
|
15
|
+
aiQuery?: string;
|
|
16
|
+
agentApiKey?: string;
|
|
17
|
+
aiChatBtnPlaceholder?: string;
|
|
18
|
+
data?: any;
|
|
19
|
+
env?: any;
|
|
20
|
+
className?: string;
|
|
21
|
+
render: (name: string, schema: any) => React.ReactNode;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const TABS = [
|
|
25
|
+
{ key: 'account', tab: '客户', entityApiKey: 'account' },
|
|
26
|
+
{ key: 'contact', tab: '联系人', entityApiKey: 'contact' },
|
|
27
|
+
{ key: 'product', tab: '产品', entityApiKey: 'product' },
|
|
28
|
+
{ key: 'order', tab: '订单', entityApiKey: 'order' },
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
export default class EntityListTabsCmp extends React.PureComponent<EntityListTabsProps> {
|
|
32
|
+
constructor(props: EntityListTabsProps) {
|
|
33
|
+
super(props);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
openChatPage = () => {
|
|
37
|
+
const { env, aiQuery, agentApiKey } = this.props;
|
|
38
|
+
const openAIChat = env?.ctx?.util?.openAIChat;
|
|
39
|
+
if (!openAIChat) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
openAIChat({
|
|
43
|
+
query: aiQuery || '请总结一下本周数据变化',
|
|
44
|
+
agentApiKey: agentApiKey || 'sales_assistant_agent',
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
renderEntityList = (entityApiKey: string) => {
|
|
49
|
+
const { className, ...restProps } = this.props;
|
|
50
|
+
return (
|
|
51
|
+
<NeoEntityList
|
|
52
|
+
key={entityApiKey}
|
|
53
|
+
name={`entityList-${entityApiKey}`}
|
|
54
|
+
style={{
|
|
55
|
+
height: '300px'
|
|
56
|
+
}}
|
|
57
|
+
onItemClickIntercept={(data: any, entity: any) => {
|
|
58
|
+
console.log('点击了列表项', data, entity);
|
|
59
|
+
return false;
|
|
60
|
+
}}
|
|
61
|
+
onSearchDataComplete={(data: any) => {
|
|
62
|
+
console.log('搜索完成', data);
|
|
63
|
+
}}
|
|
64
|
+
getCardFooterSchema={() => ({})}
|
|
65
|
+
{...restProps}
|
|
66
|
+
entityApiKey={entityApiKey}
|
|
67
|
+
/>
|
|
68
|
+
);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
render() {
|
|
72
|
+
const {
|
|
73
|
+
className,
|
|
74
|
+
headerTitle,
|
|
75
|
+
showHeader = true,
|
|
76
|
+
showAiChatBtn = true,
|
|
77
|
+
aiChatBtnPlaceholder = '打开AI对话页',
|
|
78
|
+
} = this.props;
|
|
79
|
+
|
|
80
|
+
return (
|
|
81
|
+
<div className={`entityTabs__c ${className || ''}`}>
|
|
82
|
+
{showHeader && (
|
|
83
|
+
<div className="title-header">
|
|
84
|
+
<span className="title-header-text">{headerTitle || '数据列表'}</span>
|
|
85
|
+
{showAiChatBtn && (
|
|
86
|
+
<button
|
|
87
|
+
className="entityTabs-aiChatBtn"
|
|
88
|
+
onClick={() => this.openChatPage()}
|
|
89
|
+
>
|
|
90
|
+
<span className="entityTabs-aiChatBtn-icon"></span>
|
|
91
|
+
<span className="entityTabs-aiChatBtn-text">
|
|
92
|
+
{aiChatBtnPlaceholder}
|
|
93
|
+
</span>
|
|
94
|
+
</button>
|
|
95
|
+
)}
|
|
96
|
+
</div>
|
|
97
|
+
)}
|
|
98
|
+
<Tabs className="custom-tabs" centered={true}>
|
|
99
|
+
{TABS.map(({ key, tab, entityApiKey }) => (
|
|
100
|
+
<Tabs.TabPane tab={tab} key={key}>
|
|
101
|
+
{this.renderEntityList(entityApiKey)}
|
|
102
|
+
</Tabs.TabPane>
|
|
103
|
+
))}
|
|
104
|
+
</Tabs>
|
|
105
|
+
</div>
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file 自定义组件对接编辑器的描述文件
|
|
3
|
+
*/
|
|
4
|
+
export class EntityListTabsModel {
|
|
5
|
+
/**
|
|
6
|
+
* cmpType 为自定义组件名称,用于标识组件的唯一性
|
|
7
|
+
* 在构建时根据当前组件目录名称自动生成
|
|
8
|
+
*/
|
|
9
|
+
// cmpType: string = 'entityListTabs__c';
|
|
10
|
+
|
|
11
|
+
// 组件名称,用于设置在编辑器左侧组件面板中展示的名称
|
|
12
|
+
label: string = '数据列表Tabs';
|
|
13
|
+
|
|
14
|
+
// 组件描述,用于设置在编辑器左侧组件面板中展示的描述
|
|
15
|
+
description: string = '展示多个数据列表';
|
|
16
|
+
|
|
17
|
+
// 分类标签,用于设置在编辑器左侧组件面板哪个分类中展示
|
|
18
|
+
// tags: string[] = ['自定义组件'];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 用于设置组件支持的页面类型
|
|
22
|
+
*
|
|
23
|
+
* 当前 NeoCRM 平台存在的页面类型:
|
|
24
|
+
* all: 1 全页面
|
|
25
|
+
* entityFormPage: 4 实体表单页
|
|
26
|
+
* customPage: 6 自定义页面
|
|
27
|
+
*/
|
|
28
|
+
// targetPage: string[] = ['all'];
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* 用于设置组件支持的终端类型
|
|
32
|
+
*
|
|
33
|
+
* 当前 NeoCRM 平台存在的终端类型:
|
|
34
|
+
* web: 网页端
|
|
35
|
+
* mobile: 移动端
|
|
36
|
+
*/
|
|
37
|
+
targetDevice: string = 'mobile';
|
|
38
|
+
|
|
39
|
+
// 组件图标,用于设置在编辑器左侧组件面板中展示的图标
|
|
40
|
+
iconUrl: string = 'https://custom-widgets.bj.bcebos.com/table.svg';
|
|
41
|
+
// iconUrl = 'https://neo-widgets.bj.bcebos.com/favicon.png';
|
|
42
|
+
|
|
43
|
+
// 初次插入页面的默认属性数据
|
|
44
|
+
defaultComProps = {
|
|
45
|
+
showHeader: true,
|
|
46
|
+
headerTitle: '>> 待跟进项',
|
|
47
|
+
showAiChatBtn: true,
|
|
48
|
+
aiQuery: '请总结一下本周数据变化',
|
|
49
|
+
agentApiKey: 'sales_assistant_agent',
|
|
50
|
+
aiChatBtnPlaceholder: '周总结',
|
|
51
|
+
disableTitleView: true, // 隐藏头部view(含视图切换)
|
|
52
|
+
isShowTitlePicker: false, // 视图列表选择器
|
|
53
|
+
disableSearch: true,
|
|
54
|
+
disabledSort: true,
|
|
55
|
+
disabledFilter: true,
|
|
56
|
+
disabledOperationBtn: true,
|
|
57
|
+
initialListSize: 3,
|
|
58
|
+
tableType: 'list', // list 列表,lookup 下拉框,dashboardList BI 列表
|
|
59
|
+
isNoRefresh: true, // 禁用下拉刷新和上拉加载
|
|
60
|
+
skipExt: true, // 禁用 Nex 扩展
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/* 当前数据列表支持的配置属性
|
|
64
|
+
| 属性名 | 类型 | 默认值 | 说明 |
|
|
65
|
+
|--------|------|--------|------|
|
|
66
|
+
| `isOnlyList` | `boolean` | `false` | 是否只展示列表(隐藏 smartView、filter、title) |
|
|
67
|
+
| `isComponents` | `boolean` | `false` | 是否是数据列表组件或相关列表组件 |
|
|
68
|
+
| `isNoRefresh` | `boolean` | `false` | 禁用下拉刷新和上拉加载 |
|
|
69
|
+
| `disableTopView` | `boolean` | `false` | 隐藏搜索、排序、筛选 |
|
|
70
|
+
| `disableSortFilterView` | `boolean` | `false` | 隐藏排序、筛选 |
|
|
71
|
+
| `disabledSort` | `boolean` | `false` | 不展示列表排序组件 |
|
|
72
|
+
| `disabledFilter` | `boolean` | `false` | 不展示列表过滤组件 |
|
|
73
|
+
| `disableSearch` | `boolean` | `false` | 禁用搜索功能 |
|
|
74
|
+
| `disableTitleView` | `boolean` | `false` | 隐藏筛选 |
|
|
75
|
+
*/
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* 组件面板配置,用于生成编辑器右侧属性配置面板内容
|
|
79
|
+
*/
|
|
80
|
+
propsSchema = [
|
|
81
|
+
{
|
|
82
|
+
type: 'panelSwitch',
|
|
83
|
+
name: 'showHeader',
|
|
84
|
+
label: '显示 Header',
|
|
85
|
+
defaultChecked: true,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
type: 'panelInput',
|
|
89
|
+
name: 'headerTitle',
|
|
90
|
+
label: 'Header 标题',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: 'panelSwitch',
|
|
94
|
+
name: 'showAiChatBtn',
|
|
95
|
+
label: '显示 AI 对话框按钮',
|
|
96
|
+
defaultChecked: true,
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
type: 'panelInput',
|
|
100
|
+
name: 'aiChatBtnPlaceholder',
|
|
101
|
+
label: 'AI 按钮文本',
|
|
102
|
+
value: '打开AI对话页',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
type: 'panelSelect',
|
|
106
|
+
name: 'agentApiKey',
|
|
107
|
+
label: 'Agent 类型',
|
|
108
|
+
value: 'sales_assistant_agent',
|
|
109
|
+
options: [
|
|
110
|
+
{ label: '销售助理Agent', value: 'sales_assistant_agent' },
|
|
111
|
+
{ label: '营销Agent', value: 'marketing_agent' },
|
|
112
|
+
{ label: '渠道经理Agent', value: 'channel_sales_agent' },
|
|
113
|
+
{ label: '服务工程师Agent', value: 'fscservice_engineer_agent' },
|
|
114
|
+
],
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: 'textarea',
|
|
118
|
+
name: 'aiQuery',
|
|
119
|
+
label: 'AI 提问内容',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: 'panelSwitch',
|
|
123
|
+
name: 'disableTitleView',
|
|
124
|
+
label: '隐藏头部view(含视图切换)',
|
|
125
|
+
defaultChecked: true,
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
type: 'panelSwitch',
|
|
129
|
+
name: 'isShowTitlePicker',
|
|
130
|
+
label: '显示视图切换',
|
|
131
|
+
defaultChecked: false,
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
type: 'panelSwitch',
|
|
135
|
+
name: 'disableSearch',
|
|
136
|
+
label: '隐藏搜索',
|
|
137
|
+
defaultChecked: false,
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
type: 'panelSwitch',
|
|
141
|
+
name: 'disabledSort',
|
|
142
|
+
label: '隐藏排序功能',
|
|
143
|
+
defaultChecked: false,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
type: 'panelSwitch',
|
|
147
|
+
name: 'disabledFilter',
|
|
148
|
+
label: '隐藏过滤功能',
|
|
149
|
+
defaultChecked: false,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
type: 'panelSwitch',
|
|
153
|
+
name: 'disabledOperationBtn',
|
|
154
|
+
label: '隐藏按钮操作区(含新建、批量操作等)',
|
|
155
|
+
defaultChecked: false,
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
type: 'panelSwitch',
|
|
159
|
+
name: 'disabledShortcutBtn',
|
|
160
|
+
label: '隐藏快捷按钮',
|
|
161
|
+
defaultChecked: false,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'panelNumber',
|
|
165
|
+
name: 'initialListSize',
|
|
166
|
+
label: '初始化展示条数',
|
|
167
|
+
value: 3,
|
|
168
|
+
},
|
|
169
|
+
];
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
export default EntityListTabsModel;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--padding-bottom: 12px;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.entityTabs__c {
|
|
6
|
+
position: relative;
|
|
7
|
+
box-sizing: border-box;
|
|
8
|
+
padding: 6px var(--padding-bottom);
|
|
9
|
+
background-color: #fff;
|
|
10
|
+
|
|
11
|
+
// Header 区域 - 字体放大并加粗,标题左侧,AI 按钮右侧
|
|
12
|
+
.title-header {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
justify-content: space-between;
|
|
16
|
+
padding: 8px 12px;
|
|
17
|
+
font-size: 18px;
|
|
18
|
+
font-weight: 700;
|
|
19
|
+
color: #333;
|
|
20
|
+
background-color: #eaf3fc;
|
|
21
|
+
|
|
22
|
+
.title-header-text {
|
|
23
|
+
flex: 1;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.neo-list-container {
|
|
28
|
+
height: 500px !important;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// AI 对话框按钮 - 样式参照 openChatPageBtn
|
|
32
|
+
.entityTabs-aiChatBtn {
|
|
33
|
+
position: relative;
|
|
34
|
+
display: flex;
|
|
35
|
+
align-items: center;
|
|
36
|
+
justify-content: center;
|
|
37
|
+
gap: 6px;
|
|
38
|
+
padding: 2px 8px;
|
|
39
|
+
background: #fff;
|
|
40
|
+
border: 2px solid transparent;
|
|
41
|
+
border-radius: 8px;
|
|
42
|
+
cursor: pointer;
|
|
43
|
+
font-size: 14px;
|
|
44
|
+
font-weight: 500;
|
|
45
|
+
color: #333;
|
|
46
|
+
transition: all 0.3s ease;
|
|
47
|
+
box-sizing: border-box;
|
|
48
|
+
|
|
49
|
+
&::before {
|
|
50
|
+
content: '';
|
|
51
|
+
position: absolute;
|
|
52
|
+
inset: -2px;
|
|
53
|
+
border-radius: 8px;
|
|
54
|
+
padding: 2px;
|
|
55
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%);
|
|
56
|
+
-webkit-mask: linear-gradient(#fff 0 0) content-box,
|
|
57
|
+
linear-gradient(#fff 0 0);
|
|
58
|
+
-webkit-mask-composite: xor;
|
|
59
|
+
mask-composite: exclude;
|
|
60
|
+
pointer-events: none;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&:hover {
|
|
64
|
+
box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
|
|
65
|
+
|
|
66
|
+
&::before {
|
|
67
|
+
background: linear-gradient(
|
|
68
|
+
135deg,
|
|
69
|
+
#7c8ff0 0%,
|
|
70
|
+
#8a5db8 50%,
|
|
71
|
+
#f5a5fc 100%
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.entityTabs-aiChatBtn-icon {
|
|
78
|
+
width: 24px;
|
|
79
|
+
height: 24px;
|
|
80
|
+
flex-shrink: 0;
|
|
81
|
+
background-image: url('../../assets/img/aiLogo.png');
|
|
82
|
+
background-size: contain;
|
|
83
|
+
background-position: center;
|
|
84
|
+
background-repeat: no-repeat;
|
|
85
|
+
display: inline-block;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.entityTabs-aiChatBtn-text {
|
|
89
|
+
white-space: nowrap;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Tabs 头部居中并均匀展示
|
|
93
|
+
.custom-tabs {
|
|
94
|
+
.ant-tabs-nav {
|
|
95
|
+
margin-bottom: 0;
|
|
96
|
+
|
|
97
|
+
&::before {
|
|
98
|
+
border-bottom: 1px solid #f0f0f0;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.ant-tabs-nav-wrap {
|
|
103
|
+
display: flex;
|
|
104
|
+
justify-content: center;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.ant-tabs-nav-list {
|
|
108
|
+
display: flex;
|
|
109
|
+
flex: 1;
|
|
110
|
+
margin: 0;
|
|
111
|
+
width: 100%;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// 每个 tab 居中均匀展示,最小宽度 30px
|
|
115
|
+
.ant-tabs-tab {
|
|
116
|
+
display: flex;
|
|
117
|
+
flex: 1;
|
|
118
|
+
min-width: 30px;
|
|
119
|
+
justify-content: center;
|
|
120
|
+
padding: 12px 8px;
|
|
121
|
+
margin: 0 !important;
|
|
122
|
+
font-size: 14px;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.ant-tabs-tab-btn {
|
|
126
|
+
min-width: 30px;
|
|
127
|
+
text-align: center;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
]
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"neo-register": "^1.1.
|
|
36
|
+
"neo-register": "^1.1.5",
|
|
37
37
|
"react": "^16.9.0",
|
|
38
38
|
"react-dom": "^16.9.0",
|
|
39
39
|
"axios": "^0.27.2",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@types/react": "^16.9.11",
|
|
48
48
|
"@types/react-dom": "^16.9.15",
|
|
49
49
|
"@types/axios": "^0.14.0",
|
|
50
|
-
"neo-cmp-cli": "^1.10.
|
|
50
|
+
"neo-cmp-cli": "^1.10.20",
|
|
51
51
|
"husky": "^4.2.5",
|
|
52
52
|
"lint-staged": "^10.2.9",
|
|
53
53
|
"prettier": "^2.0.5"
|
|
@@ -38,14 +38,14 @@
|
|
|
38
38
|
"url": "https://github.com/wibetter/react-custom-cmp-template/issues"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"neo-register": "^1.1.
|
|
41
|
+
"neo-register": "^1.1.5",
|
|
42
42
|
"react": "^16.9.0",
|
|
43
43
|
"react-dom": "^16.9.0"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@commitlint/cli": "^8.3.5",
|
|
47
47
|
"@commitlint/config-conventional": "^9.1.1",
|
|
48
|
-
"neo-cmp-cli": "^1.10.
|
|
48
|
+
"neo-cmp-cli": "^1.10.20",
|
|
49
49
|
"husky": "^4.2.5",
|
|
50
50
|
"lint-staged": "^10.2.9",
|
|
51
51
|
"prettier": "^2.0.5"
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"url": "https://github.com/wibetter/react-ts-custom-cmp-template/issues"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"neo-register": "^1.1.
|
|
41
|
+
"neo-register": "^1.1.5",
|
|
42
42
|
"react": "^16.9.0",
|
|
43
43
|
"react-dom": "^16.9.0"
|
|
44
44
|
},
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@commitlint/config-conventional": "^9.1.1",
|
|
48
48
|
"@types/react": "^16.9.11",
|
|
49
49
|
"@types/react-dom": "^16.9.15",
|
|
50
|
-
"neo-cmp-cli": "^1.10.
|
|
50
|
+
"neo-cmp-cli": "^1.10.20",
|
|
51
51
|
"husky": "^4.2.5",
|
|
52
52
|
"lint-staged": "^10.2.9",
|
|
53
53
|
"prettier": "^2.0.5"
|
|
@@ -38,14 +38,14 @@
|
|
|
38
38
|
"url": "https://github.com/wibetter/vue2-custom-cmp-template/issues"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"neo-register": "^1.1.
|
|
41
|
+
"neo-register": "^1.1.5",
|
|
42
42
|
"vue": "^2.6.14",
|
|
43
43
|
"element-ui": "^2.15.12"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@commitlint/cli": "^8.3.5",
|
|
47
47
|
"@commitlint/config-conventional": "^9.1.1",
|
|
48
|
-
"neo-cmp-cli": "^1.10.
|
|
48
|
+
"neo-cmp-cli": "^1.10.20",
|
|
49
49
|
"husky": "^4.2.5",
|
|
50
50
|
"lint-staged": "^10.2.9",
|
|
51
51
|
"prettier": "^2.0.5",
|