Giter Club home page Giter Club logo

jishenghua / jsherp Goto Github PK

View Code? Open in Web Editor NEW
2.9K 71.0 1.1K 63.19 MB

华夏ERP基于SpringBoot框架和SaaS模式,立志为中小企业提供开源好用的ERP软件,目前专注进销存+财务功能。主要模块有零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询、系统管理等。支持预付款、收入支出、仓库调拨、组装拆卸、订单等特色功能。拥有库存状况、出入库统计等报表。同时对角色和权限进行了细致全面控制,精确到每个按钮和菜单。

Home Page: http://www.huaxiaerp.com

License: GNU General Public License v3.0

Shell 0.06% Batchfile 0.01% Java 94.65% Less 5.29% SCSS 0.01%
erp

jsherp's Introduction

项目总述

  • 很多人说华夏ERP(英文名:jshERP)是目前人气领先的国产ERP系统
  • 虽然目前只有进销存+财务+生产的功能,但后面将会推出ERP的全部功能,有兴趣请帮点一下 Star
  • 官网地址:http://www.huaxiaerp.com 商务或技术交流,请联系QQ:752718920 微信:shenhua861584

网络版介绍

输入图片说明 输入图片说明 输入图片说明

定制和插件

开发初衷

  • 华夏ERP立志为中小企业提供开源好用的ERP软件,降低企业的信息化成本
  • 个人开发者也可以使用华夏ERP进行二次开发,加快完成开发任务
  • 初学JAVA的小伙伴可以下载源代码来进行学习交流

技术框架

  • 核心框架:SpringBoot 2.0.0
  • 持久层框架:Mybatis 1.3.2
  • 日志管理:SLF4J 1.7
  • 前端框架:Vue 2.6.10
  • UI框架: Ant-Design-Vue 1.5.2
  • 模板框架: Jeecg-Boot 2.2.0
  • 项目管理框架: Maven 3.2.3

开发环境

建议开发者使用以下环境,可以避免版本带来的问题

  • IDE: IntelliJ IDEA 2019.2+和JetBrains WebStorm 2019.3+
  • DB: Mysql 5.7.33
  • JDK: JDK 1.8
  • Node: Node 16.16.0
  • Maven: Maven 3.2.3+
  • Redis: 6.2.1
  • Nginx: 1.12.2

服务器环境

  • 数据库:Mysql5.7.33
  • JAVA平台:JRE1.8
  • Redis库:redis6.2.1
  • Nginx代理:nginx1.12.2
  • 操作系统:Windows、Linux等

配套资料

开源说明

  • 本系统100%开源,遵守GPL-3.0协议

系统美图

  • 首页 输入图片说明
  • 零售管理 输入图片说明
  • 采购管理 输入图片说明
  • 销售管理 输入图片说明
  • 仓库管理 输入图片说明
  • 财务管理 输入图片说明
  • 报表查询 输入图片说明
  • 商品管理 输入图片说明
  • 基本资料 输入图片说明
  • 系统管理 输入图片说明

如何支持

  • 开源不易,坚持更难!如果您觉得华夏ERP不错,不用请作者喝咖啡。
  • 您可以将我们的云平台地址:https://cloud.huaxiaerp.com 发给您的家人或朋友,只要是开店的、办厂的、做批发的都可以用得上。
  • 您可以到我们自营的拼多多商城进行支持:https://mobile.pinduoduo.com/mall_page.html?mall_id=375313371
  • 以上将是对我们开源最大的支持!在此表示感谢!

jsherp's People

Contributors

768903061 avatar f4nniu avatar fx-blog avatar guwan avatar jishenghua avatar mikedream89 avatar ousinka avatar qiankunpingtai avatar sunzq071 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jsherp's Issues

无法登录

使用现成打包好的项目,启动项目后日志输出如下错误信息

2022/10/22-18:47:23 DEBUG [http-nio-9999-exec-10] com.jsh.erp.datasource.mappers.RoleMapperEx.getRoleWithoutTenant - <==      Total: 0
java.lang.NullPointerException
        at com.jsh.erp.service.redis.RedisService.storageObjectBySession(RedisService.java:77)
        at com.jsh.erp.controller.UserController.login(UserController.java:147)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:870)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:776)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:881)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at com.jsh.erp.filter.LogCostFilter.doFilter(LogCostFilter.java:64)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Unknown Source)
2022/10/22-18:47:23 ERROR [http-nio-9999-exec-10] com.jsh.erp.controller.UserController - null

登陆失败

后台报错
2021/08/17-10:56:56 ERROR [http-nio-9999-exec-4] com.jsh.erp.controller.UserController - Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisDataException: ERR AUTH called without any password configured for the default user. Are you sure your configuration is correct

单据编辑的其他费用可以在多行选择相同的费用项目,此时如果输入了不同的金额,保存再打开就变成相同的金额

所有有优惠金额编辑选项的单据编辑界面的其他费用可以在多行选择相同的费用项目。
此时如果输入了不同的金额,保存再打开就变成相同的金额。
然后再将其他费用逐一取消,将所有条目取消之后最后合计不为零,可能是正数也可能是负数。
编辑前:

编辑后:

然后逐一取消:

好评

亲测好用,跟外面的那些妖艳贱货完全不一样,直接部署启动,根据个人环境部署,

请问下ERP的Dockerfile在哪里能找到,谢谢

2.2.1
容器化部署 MariaDB
编写 Dockerfile 文件构建 mysql 镜像,要求基于 centos 完成 MariaDB 数据库的
安装和配置,并设置服务开机自启。
2.2.2
容器化部署 Redis
编写 Dockerfile 文件构建 redis 镜像,要求基于 centos 完成 Redis 服务的安装和
配置,并设置服务开机自启。
2.2.3
容器化部署 Nginx
编写 Dockerfile 文件构建 nginx 镜像,要求基于 centos 完成 Nginx 服务的安装
和配置,并设置服务开机自启。
2.2.4
容器化部署 ERP
编写 Dockerfile 文件构建 erp 镜像,要求基于 centos 完成 JDK 环境和 ERP 服务
的安装与配置,并设置服务开机自启。
2.2.5
编排部署 ERP 管理系统
编写 docker-compose.yaml 文件,要求使用镜像 mysql、redis、nginx 和 erp 完成
ERP 管理系统的编排部署。

商品信息查询报错

SQL: SELECT m.*, u.name unitName, mc.name categoryName, me.bar_code, me.purchase_decimal, me.commodity_decimal, me.wholesale_decimal, me.low_decimal, me.sku FROM jsh_material m LEFT JOIN jsh_material_extend me ON me.tenant_id = 63 AND m.id = me.material_id AND ifnull(me.delete_Flag, '0') != '1' LEFT JOIN jsh_unit u ON u.tenant_id = 63 AND m.unit_id = u.id AND ifnull(u.delete_Flag, '0') != '1' LEFT JOIN jsh_material_category mc ON mc.tenant_id = 63 AND m.category_id = mc.id AND ifnull(mc.delete_Flag, '0') != '1' WHERE m.tenant_id = 63 AND 1 = 1 AND (me.bar_code LIKE ? OR m.name LIKE ? OR m.standard LIKE ? OR m.model LIKE ?) AND ifnull(m.delete_flag, '0') != '1' GROUP BY m.id ORDER BY m.id DESC LIMIT ?, ?
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #24 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'erp.me.bar_code' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #24 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'erp.me.bar_code' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

应该是对应sql(MaterialMapperEx.xml -> selectByConditionMaterial)中group by的列名不全GROUP BY m.id后面加上u.name, mc.name, me.bar_code, me.purchase_decimal, me.commodity_decimal, me.wholesale_decimal, me.low_decimal, me.sku就好了

前端启动报错

ERROR Failed to compile with 1 errors 09:22:26

error in ./src/components/NumberInfo/NumberInfo.vue?vue&type=style&index=0&id=4370c5af&lang=less&scoped=true&

Module build failed (from ./node_modules/vue-loader/lib/loaders/stylePostLoader.js):
TypeError: Cannot set properties of undefined (setting 'parent')
at C:\alan_work\JSH_ERP\jshERP-web\src\components\NumberInfo\NumberInfo.vue:1282:1
at Root.insertAfter (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:13933:21)
at C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:17634:30
at Selector.each (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:14037:17)
at rewriteSelector (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:17566:14)
at C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:17559:13
at Root.each (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:14037:17)
at Processor.func (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:17558:22)
at Processor._runSync (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:17161:27)
at Processor.processSync (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:17256:24)
at processRule (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:17561:8)
at Rule (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\dist\compiler-sfc.js:17503:13)
at LazyResult.visitSync (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\node_modules\postcss\lib\lazy-result.js:308:19)
at LazyResult.walkSync (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\node_modules\postcss\lib\lazy-result.js:297:20)
at C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\node_modules\postcss\lib\lazy-result.js:291:39
at Root.each (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\node_modules\postcss\lib\container.js:41:16)
at LazyResult.walkSync (C:\alan_work\JSH_ERP\jshERP-web\node_modules@vue\compiler-sfc\node_modules\postcss\lib\lazy-result.js:290:16)

@ ./node_modules/vue-style-loader??ref--10-oneOf-1-0!./node_modules/css-loader??ref--10-oneOf-1-1!./node_modules/vue-loader/lib/loaders/stylePostLoad
er.js!./node_modules/postcss-loader/src??ref--10-oneOf-1-2!./node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!./node_modules/cache-loader/dist/
cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/NumberInfo/NumberInfo.vue?vue&type=style&index=0&id=4370c5af&lang=
less&scoped=true& 4:14-483 15:3-20:5 16:22-491
@ ./src/components/NumberInfo/NumberInfo.vue?vue&type=style&index=0&id=4370c5af&lang=less&scoped=true&
@ ./src/components/NumberInfo/NumberInfo.vue
@ ./src lazy ^./components.*$ namespace object
@ ./src/utils/util.js
@ ./src/permission.js
@ ./src/main.js
@ multi (webpack)-dev-server/client?http://172.16.1.100:3000/sockjs-node (webpack)/hot/dev-server.js ./src/main.js

报表查询的商品库存页面接口获取数据失败,且项目已更新至最新

mysql版本为5.7.40
报错为org.springframework.jdbc.BadSqlGrammarException:

Error querying database. Cause: java.sql.SQLSyntaxErrorException: Expression #22 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'jsh_erp.me.commodity_unit' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

The error may exist in file [F:\IdeaProjects\jxc\jshERP\jshERP-boot\target\classes\mapper_xml\MaterialMapperEx.xml]

The error may involve defaultParameterMap

The error occurred while setting parameters

SQL: SELECT m.*, me.commodity_unit unitName, mc.name categoryName, me.bar_code, ifnull(me.purchase_decimal, 0) purchase_decimal, ifnull(sum(mcs.current_number), 0) currentStock, sum(ifnull(me.purchase_decimal, 0) * ifnull(mcs.current_number, 0)) currentStockPrice FROM jsh_material m LEFT JOIN jsh_material_extend me ON me.tenant_id = 63 AND m.id = me.material_id AND ifnull(me.delete_Flag, '0') != '1' LEFT JOIN jsh_material_current_stock mcs ON mcs.tenant_id = 63 AND m.id = mcs.material_id AND ifnull(mcs.delete_flag, '0') != '1' LEFT JOIN jsh_unit u ON u.tenant_id = 63 AND m.unit_id = u.id AND ifnull(u.delete_Flag, '0') != '1' LEFT JOIN jsh_material_category mc ON mc.tenant_id = 63 AND m.category_id = mc.id AND ifnull(mc.delete_Flag, '0') != '1' WHERE m.tenant_id = 63 AND 1 = 1 AND me.default_flag = 1 AND mcs.depot_id IN (?, ?, ?) AND ifnull(m.delete_flag, '0') != '1' GROUP BY m.id ORDER BY m.id DESC LIMIT ?, ?

Cause: java.sql.SQLSyntaxErrorException: Expression #22 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'jsh_erp.me.commodity_unit' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Expression #22 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'jsh_erp.me.commodity_unit' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

给角色分配供应商按钮无效

测试步骤:
1,新增角色
2,给角色分配菜单
3,给角色分配供应商按钮
4,给用户分配橘色
5,登录该用户,查看对应的按钮
6,测试结果:没有分配按钮,但是依然显示

gitee版本

这里这个和gitee上的华夏ERP是同一个把?为什么两边的版本号不太一致?

changeBillStatus有问题吧

   <if test="_parameter != null">
      <include refid="Update_By_Example_Where_Clause" />
    </if>

mapper xml里面的_parameter是在哪赋值的?

Security concern

Hello 👋

I run a security community that finds and fixes vulnerabilities in OSS. A researcher (@xulei1112) has found a potential issue, which I would be eager to share with you.

Could you add a SECURITY.md file with an e-mail address for me to send further details to? GitHub recommends a security policy to ensure issues are responsibly disclosed, and it would help direct researchers in the future.

Looking forward to hearing from you 👍

(cc @huntr-helper)

采购退货不减库存BUG

采购退货绑定的是采购入库单,但并没有生成出库记录,没有减库存,大佬帮看看?

docker 发布问题

mavne install 生成jar包后
使用docker发布项目无法正常访问
作者是否也遇到过此现象?

过滤器有绕过

老哥你这filter用contains来判断的话,这个容易出大事啊

个人环境运行出现问题

您好,我是根据个人环境部署运行的,在执行完登陆操作后,进入index.html,但是这个文件是空的呀!什么也看不到。谢谢解答。

DepotHeadService查询BUG

DepotHeadService中的方法

public DepotHead getDepotHead(String number)throws Exception {
        DepotHead depotHead = new DepotHead();
        try{
            DepotHeadExample example = new DepotHeadExample();
            example.createCriteria().andNumberEqualTo(number).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
            List<DepotHead> list = depotHeadMapper.selectByExample(example);
            if(null!=list && list.size()>0) {
                depotHead = list.get(0);
            }
        }catch(Exception e){
            JshException.readFail(logger, e);
        }
        return depotHead;
}

DepotHead depotHead = new DepotHead();意味着这个方法永远不会返回空,我观察到有几处调用应该都产生了潜在的BUG:在没有查询到数据时,也走了正常的处理流程。

按钮权限问题

部署服务后,使用jsh账号访问,只有查看数据的权限,各种新增修改按钮都没有,数据库jsh_user_business表的btn_str都是空的,使用注册功能新注册的号也是只有查看权限,这个权限要在哪里配置啊,看了后端的注册接口registerUser,插入表数据时也没有看到设置btnStr

image
image

产品建议

有些界面iframe的建议输入的数据和页面缓存,不然页面内多tab也是枉然

公司财务给提的问题,看看这个功能在哪。

没有直接再财务处理的界面,都是单据结转
不会是财务模块最主要的需要收费吧,我看模块还是比较全,但是财务处理最主要的东西缺少,相当于做了前期工作,后面的财务一个没体现,没有处理没有管理,查询

we

库存更新为什么要查所有订单,就是为了保证数据准确性吗

一个简单的账户流水, 为什么不建一个流水表来记录, 非要 jsh_depot_head 和 jsh_account_head
**
image
**
image
不理解为什么这么写代码, 不在sql 里面, 真是 不良代码规范

建议作者弄个docker版本

还要按照你的要求配环境,运行时又发现好多问题。使用docker多好,保证与作者运行效果一致

库存统计没有区分sku多属性

商品库存统计没有支持sku多属性商品,例如商品A有两个颜色(白色、黑色),白色库存为0,黑色库存为1,这是个即使是关闭负库存,新增单据用白色商品也会成功,这里是否新增sku逻辑

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.