{"_id":"@alvin-cqx/alvin-vue","_rev":"2-58ce1cddcc23ce3fa3c6d3619c53e025","name":"@alvin-cqx/alvin-vue","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@alvin-cqx/alvin-vue","version":"1.0.0","author":{"name":"alvin"},"license":"ISC","_id":"@alvin-cqx/alvin-vue@1.0.0","maintainers":[{"name":"alvin-cqx","email":"alvin9504@163.com"}],"dist":{"shasum":"37bd30cffb1f6b51b78599811ff168c62c3fbc77","tarball":"https://registry.npmjs.org/@alvin-cqx/alvin-vue/-/alvin-vue-1.0.0.tgz","fileCount":97,"integrity":"sha512-LBAmTt3+K13ThoSzXRtFe9VlRPPDvdgsk9aJrbDoSMugEi7IK9YVYS2tu54gSqwqJkkS/1tb0Ngvu0ejvVCvJA==","signatures":[{"sig":"MEUCICZlwB/12UIo3gpjvzLAh6s59P1rjio5ITSLHi12fV53AiEA0Z+ABUM1rsrnEWTjpj5eiMwUVFV7Ekrxahhf9rLkb+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1635473},"main":"index.js","config":{"ghooks":{"commit-msg":"validate-commit-msg","pre-commit":"npm run lint"}},"gitHead":"4c126fb70af06d7900debbb489b980a94992a5d2","scripts":{"dev":"set _ENV=local&& nodemon ./index.js","lint":"eslint --quiet --ext js,vue ."},"_npmUser":{"name":"alvin-cqx","email":"alvin9504@163.com"},"repository":{"url":"https://git.code.tencent.com/alvin_cqx/alvin-vue.git","type":"git"},"_npmVersion":"9.6.7","description":"elpis\r ###企业端项目是个全栈的项目","directories":{},"_nodeVersion":"18.17.1","dependencies":{"ajv":"^6.10.2","koa":"2.7.0","md5":"^2.2.1","vue":"^3.3.4","glob":"^7.1.4","knex":"^0.19.0","less":"^3.8.1","path":"^0.12.7","vuex":"^4.1.0","axios":"^0.19.2","mysql":"^2.18.1","pinia":"^2.1.6","lodash":"^4.17.21","log4js":"^6.9.1","moment":"^2.29.4","echarts":"^5.5.0","express":"^4.18.2","nodemon":"^1.19.2","process":"^0.11.10","webpack":"^5.88.1","consoler":"^0.2.0","happypack":"^5.0.1","koa2-cors":"^2.0.6","css-loader":"^0.23.1","koa-router":"^7.4.0","koa-static":"^5.0.0","superagent":"^8.1.2","url-loader":"^4.1.1","vue-loader":"^17.2.2","vue-router":"^4.2.4","@babel/core":"^7.24.0","file-loader":"^6.2.0","less-loader":"^11.1.3","babel-loader":"^8.0.4","element-plus":"^2.3.7","jsonwebtoken":"^9.0.2","style-loader":"^0.14.1","koa-useragent":"2.0.0","node-schedule":"^2.1.1","thread-loader":"^4.0.4","webpack-merge":"^4.2.1","koa-bodyparser":"^4.2.1","koa-nunjucks-2":"^3.0.2","path-browserify":"^1.0.1","vue-json-viewer":"^3.0.4","vue-style-loader":"^4.1.2","@babel/preset-env":"^7.4.5","generate-password":"^1.7.1","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^0.1.19","terser-webpack-plugin":"^2.3.5","webpack-dev-middleware":"^6.1.1","webpack-hot-middleware":"^2.25.4","mini-css-extract-plugin":"^2.7.6","css-minimizer-webpack-plugin":"^5.0.1","node-polyfill-webpack-plugin":"^4.1.0","directory-named-webpack-plugin":"^4.0.1","@babel/plugin-transform-runtime":"^7.1.0","html-webpack-inject-attributes-plugin":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","assert":"^2.0.0","eslint":"^7.32.0","ghooks":"~1.0.3","supertest":"^4.0.2","babel-eslint":"^10.0.2","eslint-plugin-vue":"^9.17.0","validate-commit-msg":"~2.14.0","eslint-plugin-import":"^2.28.1"},"_npmOperationalInternal":{"tmp":"tmp/alvin-vue_1.0.0_1755925792792_0.7851914494723025","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alvin-cqx/alvin-vue","version":"1.0.1","description":"elpis\r ###企业端项目是个全栈的项目","main":"index.js","scripts":{"lint":"eslint --quiet --ext js,vue .","dev":"set _ENV=local&& nodemon ./index.js"},"repository":{"type":"git","url":"https://git.code.tencent.com/alvin_cqx/alvin-vue.git"},"author":{"name":"alvin"},"license":"ISC","dependencies":{"@babel/core":"^7.24.0","ajv":"^6.10.2","axios":"^0.19.2","echarts":"^5.5.0","element-plus":"^2.3.7","generate-password":"^1.7.1","glob":"^7.1.4","jsonwebtoken":"^9.0.2","knex":"^0.19.0","koa":"2.7.0","koa-bodyparser":"^4.2.1","koa-nunjucks-2":"^3.0.2","koa-router":"^7.4.0","koa-static":"^5.0.0","koa-useragent":"2.0.0","koa2-cors":"^2.0.6","less":"^3.8.1","lodash":"^4.17.21","log4js":"^6.9.1","md5":"^2.2.1","moment":"^2.29.4","mysql":"^2.18.1","node-polyfill-webpack-plugin":"^4.1.0","node-schedule":"^2.1.1","nodemon":"^1.19.2","path":"^0.12.7","path-browserify":"^1.0.1","pinia":"^2.1.6","process":"^0.11.10","superagent":"^8.1.2","vue":"^3.3.4","vue-json-viewer":"^3.0.4","vue-router":"^4.2.4","vuex":"^4.1.0","@babel/plugin-transform-runtime":"^7.1.0","@babel/preset-env":"^7.4.5","babel-loader":"^8.0.4","clean-webpack-plugin":"^0.1.19","consoler":"^0.2.0","css-loader":"^0.23.1","css-minimizer-webpack-plugin":"^5.0.1","directory-named-webpack-plugin":"^4.0.1","express":"^4.18.2","file-loader":"^6.2.0","happypack":"^5.0.1","html-webpack-inject-attributes-plugin":"^1.0.1","html-webpack-plugin":"^5.5.3","less-loader":"^11.1.3","mini-css-extract-plugin":"^2.7.6","style-loader":"^0.14.1","terser-webpack-plugin":"^2.3.5","thread-loader":"^4.0.4","url-loader":"^4.1.1","vue-loader":"^17.2.2","vue-style-loader":"^4.1.2","webpack":"^5.88.1","webpack-dev-middleware":"^6.1.1","webpack-hot-middleware":"^2.25.4","webpack-merge":"^4.2.1"},"devDependencies":{"assert":"^2.0.0","babel-eslint":"^10.0.2","eslint":"^7.32.0","eslint-plugin-import":"^2.28.1","eslint-plugin-vue":"^9.17.0","ghooks":"~1.0.3","mocha":"^6.1.4","supertest":"^4.0.2","validate-commit-msg":"~2.14.0"},"config":{"ghooks":{"commit-msg":"validate-commit-msg","pre-commit":"npm run lint"}},"gitHead":"d7ebe33d9d5969d59dab983f0dc711bb3672991d","_id":"@alvin-cqx/alvin-vue@1.0.1","_nodeVersion":"18.17.1","_npmVersion":"9.6.7","dist":{"integrity":"sha512-eSbT75DGb8s42GuEQTTKxrYdfTQKw3IA8BZdazorx227goKu9T6NcDqJVY3IZKZMI+NLoQpautPYSAurB4z6gQ==","shasum":"63030c261e534373f2da72de4736f8001da10d36","tarball":"https://registry.npmjs.org/@alvin-cqx/alvin-vue/-/alvin-vue-1.0.1.tgz","fileCount":98,"unpackedSize":1637005,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHD0EyFxfGO25LYIfg2J3gATyMDuKvWkjghl8iTz0s5zAiEA+cdaK6q57EFkANS3e8j2IrXTwum/ExSeQBQ32b7T2oo="}]},"_npmUser":{"name":"alvin-cqx","email":"alvin9504@163.com"},"directories":{},"maintainers":[{"name":"alvin-cqx","email":"alvin9504@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/alvin-vue_1.0.1_1756191805102_0.303894405210144"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-23T05:09:52.713Z","modified":"2025-08-26T07:03:25.596Z","1.0.0":"2025-08-23T05:09:53.028Z","1.0.1":"2025-08-26T07:03:25.312Z"},"author":{"name":"alvin"},"license":"ISC","repository":{"type":"git","url":"https://git.code.tencent.com/alvin_cqx/alvin-vue.git"},"description":"elpis\r ###企业端项目是个全栈的项目","maintainers":[{"name":"alvin-cqx","email":"alvin9504@163.com"}],"readme":"# elpis\r\n\r\n## 企业端项目是个全栈的项目\r\n\r\nmodel配置\r\n\r\n```\r\n{\r\n  mode: \"dashboard\"; //模板类型，不同模板类型对应不同的模板数据结构\r\n  name: \"\"; //名字\r\n  desc: \"\"; //描述\r\n  icon: \"\"; //图标\r\n  homePage: \"\"; //首页\r\n  // 头部菜单\r\n  menu: [\r\n    {\r\n      key: \"\", //菜单唯一描述\r\n      name: \"\", //菜单名称\r\n      menuType: \"\", //菜单类型 枚举值 group /module\r\n\r\n      //当menuType==group\r\n      // 可递归\r\n      subMenu: [{}],\r\n\r\n      //当menuType==module\r\n      moduleType: \"\", //枚举值 sider/iframe /custom/schema\r\n\r\n      // moduleType==sider\r\n      siderConfig: {\r\n        menu: [{}],\r\n      },\r\n\r\n      //  moduleType==iframe\r\n      iframeConfig: {\r\n        path: \"\", //iframe路径\r\n      },\r\n\r\n      // moduleType==custom\r\n      customConfig: {\r\n        path: \"\", //自定义路径\r\n      },\r\n\r\n      //moduleType==schema\r\n      schemaConfig: {\r\n        api: \"\", //数据源api,遵循RESTFUL规范\r\n        schema: {\r\n          type: \"object\",\r\n          properties: {\r\n            key: {\r\n              ...schema, //标准schema配置\r\n              type: \"\", //字段类型\r\n              label: \"\", //字段中文名字\r\n              // maxLength: 10, //字段长度限制\r\n              // minLength: 5,\r\n\r\n              // 字段在table中的相关配置\r\n              tableOption: {\r\n                ...elTableColumnConfig, //标准el-table-column基础配置\r\n                toFixed: 2, //保留几位小数\r\n                visible: true, //默认为true(false 或者不配置，不展示在table展示)\r\n              },\r\n              // 字段在search中相关配置\r\n              searchOption: {\r\n                ...eleComponentCofing, //标准 el-componet-column配置\r\n                // 当comType==input时\r\n                comType: \"input\", //类型\r\n                default: \"\", //默认值\r\n\r\n                // 当comType==select时\r\n                // 是否自定义下拉列表对应的\r\n                enumList: [], //下拉列表\r\n                // 自定义key value\r\n                customizeList: {\r\n                  label: \"\",\r\n                  value: \"\",\r\n                },\r\n                // 当comType==dynamicSelect,多一个api请求\r\n                api: \"\",\r\n\r\n                // 当comType==datePicker\r\n                // 时间控件的一些配置\r\n                datePickerOption: {\r\n                  //type: date daterange\r\n                  type: \"date\",\r\n                  placeholder: \"Pick a day\",\r\n                  // 当 type:daterange,他选择时间返回的是个数组，我们要特殊处理\r\n                  dateParams: [\"startTime\", \"endTime\"],\r\n                },\r\n              },\r\n\r\n              // 字段在不同的组件中相关配置,前缀对应componentConfig中的键值\r\n              //如：componetConfig.createForm 这里对应createFormOption\r\n              // 字段在createForm的配置\r\n              createFormOption: {\r\n                ...eleComponentCofing, //标准 el-componet-column配置\r\n                comType: \"input\", //控件类型\r\n                visible: true, //是否展示，默认为true\r\n                disabled: false, //是否禁用，默认为fasle\r\n                default: \"\", //默认值\r\n\r\n                // 当comType==select时\r\n                // 是否自定义下拉列表对应的\r\n                enumList: [], //下拉列表\r\n              },\r\n              editFormOption: {\r\n                ...eleComponentCofing, //标准 el-componet-column配置\r\n                comType: \"input\", //控件类型\r\n                visible: true, //是否展示，默认为true\r\n                disabled: false, //是否禁用，默认为fasle\r\n                default: \"\", //默认值\r\n              },\r\n              detailPanelOption: {},\r\n\r\n              required: [], //必填字段\r\n            },\r\n          },\r\n        },\r\n        //表格配置\r\n        tableConfig: {\r\n          headerButtons: [\r\n            {\r\n              label: \"\", //按钮中文名\r\n              eventKey: \"\", //按钮事件名\r\n              eventOption: {}, //按钮具体配置\r\n              ...elButtonConfig, //el-button 基础配置\r\n            },\r\n          ],\r\n          rowButtons: [\r\n            {\r\n              label: \"\", //按钮中文名\r\n              eventKey: \"\", //按钮事件名\r\n              eventOption: {\r\n                // 举例子\r\n                // 当eventKey==remove\r\n                params: {\r\n                  // key:参数的键\r\n                  // value:参数的值,格式为 schema::tableKey的时候，到table中找对应字段\r\n                  key: value,\r\n                },\r\n\r\n                // 当eventKey==showComponet,就让他弹出组件，组件名字\r\n                compName: \"\",\r\n              }, //按钮具体配置\r\n              ...elButtonConfig, //el-button 基础配置\r\n            },\r\n          ],\r\n        },\r\n        searchConfig: {}, //搜索配置\r\n        //动态组件\r\n        componentConfig: {\r\n          // create-form 表单配置\r\n          createForm: {\r\n            title: \"\", //标题\r\n            saveBtnText: \"\", //保存按钮文字\r\n          },\r\n          // 修改表单配置\r\n          editForm: {\r\n            mainKey: \"id\", //id\r\n            title: \"\", //标题\r\n            saveBtnText: \"\", //保存按钮文字\r\n          },\r\n          // 详情\r\n          detailPanel: {\r\n            mainKey: \"id\", //id\r\n            title: \"\", //标题\r\n          },\r\n\r\n          // 支持用户动态添加\r\n        },\r\n      },\r\n    },\r\n  ];\r\n}\r\n\r\n```\r\n\r\n####  服务端启动\r\n\r\n```\r\nconst { serverStart } = require(\"@alvin-cqx/alvin-vue\");\r\n\r\nserverStart({ name: \"ElpisDemo\", homePath: \"/view/project-list\" });\r\n```\r\n\r\n#### 自定义服务端\r\n\r\n- router-schema\r\n\r\n- router\r\n- controller\r\n- service\r\n- extend\r\n\r\n#### 前端构建\r\n\r\n```\r\nconst { frontendBuild } = require(\"@alvin-cqx/alvin-vue\");\r\n\r\nfrontendBuild(process.env._ENV);\r\n```\r\n\r\n#### 自定义页面拓展\r\n\r\n1.在`app/pages/`目录下写入口 `entry.xxx.js`\r\n\r\n#### dashboard / custom-view 自定义页面拓展\r\n\r\n1.在 `app/pagas/dashboard/xxxx` 下写页面\r\n\r\n#### dashboard  / schema-view / componets 动态组件拓展\r\n\r\n1.在`app/pages/dashboard/compiex-view/schema-view/componets` 下写组件\r\n\r\n2.配置到`app/pages/dashboard/compiex-view/schema-view/componets/component-config.js`中\r\n\r\n#### schema-form 控件拓展\r\n\r\n1.在`app/widgets/schema-form`下写控件\r\n\r\n2.配置到`app/widgets/schema-form/form-item-config.js`\r\n\r\n#### schema-search控件拓展\r\n\r\n1.在`app/widgets/schema-search`下写控件\r\n\r\n2.配置到`app/widgets/schema-search/schema-item-config.js`","readmeFilename":"README.md"}