Browse Source

代码合并

huangx 7 years ago
parent
commit
2bdaf407f5
19 changed files with 1542 additions and 0 deletions
  1. 56 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/JasperResult.java
  2. 182 0
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/SysPrintSet.java
  3. 43 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/JasperReportController.java
  4. 26 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/SysprintsetMapper.java
  5. 13 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/JasperReportService.java
  6. 103 0
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/JasperReportServiceImpl.java
  7. 248 0
      applications/commons/commons-server/src/main/resources/mapper/SysprintsetMapper.xml
  8. 62 0
      frontend/saas-web/app/view/core/dbfind/types/BankInfoDbfindTrigger.js
  9. 58 0
      frontend/saas-web/app/view/core/dbfind/types/BomDbfindTrigger.js
  10. 89 0
      frontend/saas-web/app/view/core/dbfind/types/CustomerDbfindTrigger.js
  11. 89 0
      frontend/saas-web/app/view/core/dbfind/types/CustomerDbfindTrigger.js~2496f4a5e0d652d0a04afaa39f7ce066459fbea1
  12. 58 0
      frontend/saas-web/app/view/core/dbfind/types/EmployeeDbfindTrigger.js
  13. 110 0
      frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js
  14. 110 0
      frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js~2496f4a5e0d652d0a04afaa39f7ce066459fbea1
  15. 143 0
      frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js
  16. 79 0
      frontend/saas-web/app/view/core/dbfind/types/VendorDbfindTrigger.js
  17. 54 0
      frontend/saas-web/app/view/core/dbfind/types/WarehouseDbfindTrigger.js
  18. 19 0
      frontend/saas-web/app/view/home/charts/MonthSale.scss
  19. BIN
      frontend/saas-web/resources/images/default/basePhoto.png

+ 56 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/JasperResult.java

@@ -0,0 +1,56 @@
+package com.usoftchina.saas.commons.po;
+
+import java.io.Serializable;
+
+/**
+ * @author: guq
+ * @create: 2018-11-16 18:54
+ **/
+public class JasperResult implements Serializable{
+
+    private String printurl;
+    private String reportName;
+    private String title;
+    private String whereCondition;
+    private String printtype;
+
+    public String getPrinttype() {
+        return printtype;
+    }
+
+    public void setPrinttype(String printtype) {
+        this.printtype = printtype;
+    }
+
+    public String getPrinturl() {
+        return printurl;
+    }
+
+    public void setPrinturl(String printurl) {
+        this.printurl = printurl;
+    }
+
+    public String getReportName() {
+        return reportName;
+    }
+
+    public void setReportName(String reportName) {
+        this.reportName = reportName;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getWhereCondition() {
+        return whereCondition;
+    }
+
+    public void setWhereCondition(String whereCondition) {
+        this.whereCondition = whereCondition;
+    }
+}

+ 182 - 0
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/po/SysPrintSet.java

@@ -0,0 +1,182 @@
+package com.usoftchina.saas.commons.po;
+
+import java.io.Serializable;
+
+/**
+ * @author: guq
+ * @create: 2018-11-16 18:16
+ **/
+public class SysPrintSet implements Serializable{
+
+    private String caller;
+    private String reportname;
+    private String title;
+    private Integer isdefault;//默认
+    private Integer needaudit;//已审核才能打印
+    private Integer nopost;//已过帐不允许打印
+    private Integer needenoughstock;//库存不足不允许打印
+    private String  countfield;//打印次数字段
+    private String  statusfield;//状态字段
+    private String  statuscodefield;//状态码字段
+    private Integer allowmultiple;//允许多次打印
+    private String defaultcondition;//默认条件
+    private String handlermethod; //打印前执行逻辑方法名
+    private Integer id;
+    private String printtype; //输出类型
+    private String procedureName;//存储过程
+    private Integer ignorepage;
+    private Long companyId;
+    private String keyfield;
+
+    public String getKeyfield() {
+        return keyfield;
+    }
+
+    public void setKeyfield(String keyfield) {
+        this.keyfield = keyfield;
+    }
+    public Long getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(Long companyId) {
+        this.companyId = companyId;
+    }
+
+    public Integer getIgnorepage() {
+        return ignorepage;
+    }
+
+    public void setIgnorepage(Integer ignorepage) {
+        this.ignorepage = ignorepage;
+    }
+
+    public String getCaller() {
+        return caller;
+    }
+
+    public void setCaller(String caller) {
+        this.caller = caller;
+    }
+
+    public String getReportname() {
+        return reportname;
+    }
+
+    public void setReportname(String reportname) {
+        this.reportname = reportname;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public Integer getIsdefault() {
+        return isdefault;
+    }
+
+    public void setIsdefault(Integer isdefault) {
+        this.isdefault = isdefault;
+    }
+
+    public Integer getNeedaudit() {
+        return needaudit;
+    }
+
+    public void setNeedaudit(Integer needaudit) {
+        this.needaudit = needaudit;
+    }
+
+    public Integer getNopost() {
+        return nopost;
+    }
+
+    public void setNopost(Integer nopost) {
+        this.nopost = nopost;
+    }
+
+    public Integer getNeedenoughstock() {
+        return needenoughstock;
+    }
+
+    public void setNeedenoughstock(Integer needenoughstock) {
+        this.needenoughstock = needenoughstock;
+    }
+
+    public String getCountfield() {
+        return countfield;
+    }
+
+    public void setCountfield(String countfield) {
+        this.countfield = countfield;
+    }
+
+    public String getStatusfield() {
+        return statusfield;
+    }
+
+    public void setStatusfield(String statusfield) {
+        this.statusfield = statusfield;
+    }
+
+    public String getStatuscodefield() {
+        return statuscodefield;
+    }
+
+    public void setStatuscodefield(String statuscodefield) {
+        this.statuscodefield = statuscodefield;
+    }
+
+    public Integer getAllowmultiple() {
+        return allowmultiple;
+    }
+
+    public void setAllowmultiple(Integer allowmultiple) {
+        this.allowmultiple = allowmultiple;
+    }
+
+    public String getDefaultcondition() {
+        return defaultcondition;
+    }
+
+    public void setDefaultcondition(String defaultcondition) {
+        this.defaultcondition = defaultcondition;
+    }
+
+    public String getHandlermethod() {
+        return handlermethod;
+    }
+
+    public void setHandlermethod(String handlermethod) {
+        this.handlermethod = handlermethod;
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getPrinttype() {
+        return printtype;
+    }
+
+    public void setPrinttype(String printtype) {
+        this.printtype = printtype;
+    }
+
+    public String getProcedureName() {
+        return procedureName;
+    }
+
+    public void setProcedureName(String procedureName) {
+        this.procedureName = procedureName;
+    }
+
+}

+ 43 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/controller/JasperReportController.java

@@ -0,0 +1,43 @@
+package com.usoftchina.saas.commons.controller;
+
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.commons.po.JasperResult;
+import com.usoftchina.saas.commons.po.SysPrintSet;
+import com.usoftchina.saas.commons.service.JasperReportService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author: guq
+ * @create: 2018-11-16 17:18
+ **/
+@RestController
+@RequestMapping("/jasperReport")
+public class JasperReportController {
+
+    @Autowired
+    private JasperReportService jasperReportService;
+
+    @GetMapping("/getPrintSet")
+    public Result getPrintSet(String caller) {
+        List<SysPrintSet> jasperSet = jasperReportService.getPrintSet(caller);
+        return Result.success(jasperSet);
+    }
+
+    @PostMapping("/print")
+    public Result print(String caller, String reportName, Integer id, boolean isProdIO) {
+        JasperResult print = jasperReportService.print(caller, reportName, id, isProdIO, false);
+        return Result.success(print);
+    }
+
+    @PostMapping("/printByDefault")
+    public Result printByDefault(String caller, String reportName, Integer id, boolean isProdIO) {
+        JasperResult print = jasperReportService.print(caller, reportName, id, isProdIO, true);
+        return Result.success(print);
+    }
+}

+ 26 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/mapper/SysprintsetMapper.java

@@ -0,0 +1,26 @@
+package com.usoftchina.saas.commons.mapper;
+
+import com.usoftchina.saas.commons.po.SysPrintSet;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface SysprintsetMapper {
+    int deleteByPrimaryKey(Integer ID);
+
+    int insert(SysPrintSet record);
+
+    int insertSelective(SysPrintSet record);
+
+    SysPrintSet selectByPrimaryKey(Integer ID);
+
+    int updateByPrimaryKeySelective(SysPrintSet record);
+
+    int updateByPrimaryKey(SysPrintSet record);
+
+    List<SysPrintSet> selectSetByCaller(@Param("caller") String caller, @Param("companyId") Long companyId);
+
+    SysPrintSet selectSetByReportName(@Param("caller") String caller, @Param("reportName") String reportName, @Param("companyId") Long companyId);
+
+    SysPrintSet selectDefaultSetBycaller(@Param("caller") String caller, @Param("companyId") Long companyId);
+}

+ 13 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/JasperReportService.java

@@ -0,0 +1,13 @@
+package com.usoftchina.saas.commons.service;
+
+import com.usoftchina.saas.commons.po.JasperResult;
+import com.usoftchina.saas.commons.po.SysPrintSet;
+
+import java.util.List;
+
+public interface JasperReportService {
+
+    List<SysPrintSet> getPrintSet(String caller);
+
+    JasperResult print(String caller, String reportName, Integer id, boolean isProdIO, boolean isDefault);
+}

+ 103 - 0
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/JasperReportServiceImpl.java

@@ -0,0 +1,103 @@
+package com.usoftchina.saas.commons.service.impl;
+
+import com.usoftchina.saas.commons.mapper.SysprintsetMapper;
+import com.usoftchina.saas.commons.po.Configs;
+import com.usoftchina.saas.commons.po.JasperResult;
+import com.usoftchina.saas.commons.po.SysPrintSet;
+import com.usoftchina.saas.commons.service.ConfigsService;
+import com.usoftchina.saas.commons.service.JasperReportService;
+import com.usoftchina.saas.context.BaseContextHolder;
+import com.usoftchina.saas.context.SpringContextHolder;
+import com.usoftchina.saas.exception.BizException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.lang.reflect.Method;
+import java.util.List;
+
+/**
+ * @author: guq
+ * @create: 2018-11-16 18:38
+ **/
+@Service
+public class JasperReportServiceImpl implements JasperReportService{
+
+    private static final String PRINTURLCODE = "printUrl";
+
+    @Autowired
+    private SysprintsetMapper sysprintsetMapper;
+    @Autowired
+    private ConfigsService configsService;
+
+    @Override
+    public List<SysPrintSet> getPrintSet(String caller) {
+        if (StringUtils.isEmpty(caller)) {
+            return null;
+        }
+        Long comanyId = BaseContextHolder.getCompanyId();
+        return sysprintsetMapper.selectSetByCaller(caller, comanyId);
+    }
+
+    @Override
+    public JasperResult print(String caller, String reportName, Integer id, boolean isProdIO, boolean isDefault) {
+        Long companyId = BaseContextHolder.getCompanyId();
+        JasperResult result = new JasperResult();
+        SysPrintSet printSet = null;
+
+        if (isDefault) {
+            printSet = sysprintsetMapper.selectDefaultSetBycaller(caller, companyId);
+        } else {
+            printSet = sysprintsetMapper.selectSetByReportName(caller, reportName, companyId);
+        }
+        if (StringUtils.isEmpty(printSet)) {
+            return null;
+        }
+        //取打印地址
+        Configs config = configsService.getConfigByCode(PRINTURLCODE);
+        String printUrl = null != config ? config.getData() : "";
+        //打印限制 TODO
+        //打印前执行方法
+        if (!StringUtils.isEmpty(printSet.getHandlermethod())) {
+            executor(printSet.getHandlermethod(), new Object[] {id, caller});
+        }
+        //打印前执行过程
+        if (!StringUtils.isEmpty(printSet.getProcedureName())) {
+            //TODO
+        }
+        //拼打印条件
+        String condition = " where " + (StringUtils.isEmpty(printSet.getKeyfield()) ? "1=1" :
+                printSet.getKeyfield() + "=" + id);
+        if (!StringUtils.isEmpty(printSet.getDefaultcondition())) {
+            condition += " and " + printSet.getDefaultcondition();
+        }
+
+        result.setReportName(printSet.getReportname());
+        result.setTitle(printSet.getTitle());
+        result.setPrinturl(printUrl);
+        result.setWhereCondition(condition);
+        result.setPrinttype(StringUtils.isEmpty(printSet.getPrinttype()) ? "" : printSet.getPrinttype());
+        return result;
+
+    }
+
+    private void executor(String handlermethod, Object...args) {
+        Class[] argsClass = new Class[args.length];
+        for (int i = 0, j = args.length; i < j; i++) {
+            argsClass[i] = args[i].getClass();
+        }
+
+        try {
+            Object jasperReportServiceImpl = SpringContextHolder.getBean("jasperReportServiceImpl");
+            Method method = jasperReportServiceImpl.getClass().getMethod(handlermethod, argsClass);
+            method.invoke(jasperReportServiceImpl, args);
+        } catch (Exception e) {
+            if (e.getCause() != null) {
+                String exName = e.getCause().getClass().getSimpleName();
+                if (exName.equals("RuntimeException") || exName.equals("SystemException"))
+                    throw new BizException(3432434, e.getCause().getMessage());
+            }
+            e.printStackTrace();
+        }
+    }
+}

+ 248 - 0
applications/commons/commons-server/src/main/resources/mapper/SysprintsetMapper.xml

@@ -0,0 +1,248 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.usoftchina.saas.commons.mapper.SysprintsetMapper" >
+  <resultMap id="BaseResultMap" type="com.usoftchina.saas.commons.po.SysPrintSet" >
+    <id column="ID" property="id" jdbcType="INTEGER" />
+    <result column="CALLER" property="caller" jdbcType="VARCHAR" />
+    <result column="REPORTNAME" property="reportname" jdbcType="VARCHAR" />
+    <result column="TITLE" property="title" jdbcType="VARCHAR" />
+    <result column="ISDEFAULT" property="isdefault" jdbcType="INTEGER" />
+    <result column="NEEDAUDIT" property="needaudit" jdbcType="INTEGER" />
+    <result column="NOPOST" property="nopost" jdbcType="INTEGER" />
+    <result column="NEEDENOUGHSTOCK" property="needenoughstock" jdbcType="INTEGER" />
+    <result column="COUNTFIELD" property="countfield" jdbcType="VARCHAR" />
+    <result column="STATUSFIELD" property="statusfield" jdbcType="VARCHAR" />
+    <result column="STATUSCODEFIELD" property="statuscodefield" jdbcType="VARCHAR" />
+    <result column="ALLOWMULTIPLE" property="allowmultiple" jdbcType="INTEGER" />
+    <result column="HANDLERMETHOD" property="handlermethod" jdbcType="VARCHAR" />
+    <result column="DEFAULTCONDITION" property="defaultcondition" jdbcType="VARCHAR" />
+    <result column="PRINTTYPE" property="printtype" jdbcType="VARCHAR" />
+    <result column="PROCEDURENAME" property="procedureName" jdbcType="VARCHAR" />
+    <result column="IGNOREPAGE" property="ignorepage" jdbcType="INTEGER" />
+    <result column="companyid" property="companyId" jdbcType="INTEGER" />
+    <result column="keyfield" property="keyfield" jdbcType="VARCHAR" />
+  </resultMap>
+  <sql id="Base_Column_List" >
+    ID, CALLER, REPORTNAME, TITLE, ISDEFAULT, NEEDAUDIT, NOPOST, NEEDENOUGHSTOCK, COUNTFIELD, 
+    STATUSFIELD, STATUSCODEFIELD, ALLOWMULTIPLE, HANDLERMETHOD, DEFAULTCONDITION, PRINTTYPE, 
+    PROCEDURENAME, IGNOREPAGE
+  </sql>
+  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
+    select 
+    <include refid="Base_Column_List" />
+    from sysprintset
+    where ID = #{ID,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
+    delete from sysprintset
+    where ID = #{ID,jdbcType=INTEGER}
+  </delete>
+  <insert id="insert" parameterType="com.usoftchina.saas.commons.po.SysPrintSet" >
+    insert into sysprintset (ID, CALLER, REPORTNAME, 
+      TITLE, ISDEFAULT, NEEDAUDIT, 
+      NOPOST, NEEDENOUGHSTOCK, COUNTFIELD, 
+      STATUSFIELD, STATUSCODEFIELD, ALLOWMULTIPLE, 
+      HANDLERMETHOD, DEFAULTCONDITION, PRINTTYPE, 
+      PROCEDURENAME, IGNOREPAGE)
+    values (#{ID,jdbcType=INTEGER}, #{CALLER,jdbcType=VARCHAR}, #{REPORTNAME,jdbcType=VARCHAR}, 
+      #{TITLE,jdbcType=VARCHAR}, #{ISDEFAULT,jdbcType=INTEGER}, #{NEEDAUDIT,jdbcType=INTEGER}, 
+      #{NOPOST,jdbcType=INTEGER}, #{NEEDENOUGHSTOCK,jdbcType=INTEGER}, #{COUNTFIELD,jdbcType=VARCHAR}, 
+      #{STATUSFIELD,jdbcType=VARCHAR}, #{STATUSCODEFIELD,jdbcType=VARCHAR}, #{ALLOWMULTIPLE,jdbcType=INTEGER}, 
+      #{HANDLERMETHOD,jdbcType=VARCHAR}, #{DEFAULTCONDITION,jdbcType=VARCHAR}, #{PRINTTYPE,jdbcType=VARCHAR}, 
+      #{PROCEDURENAME,jdbcType=VARCHAR}, #{IGNOREPAGE,jdbcType=INTEGER})
+  </insert>
+  <insert id="insertSelective" parameterType="com.usoftchina.saas.commons.po.SysPrintSet" >
+    insert into sysprintset
+    <trim prefix="(" suffix=")" suffixOverrides="," >
+      <if test="ID != null" >
+        ID,
+      </if>
+      <if test="CALLER != null" >
+        CALLER,
+      </if>
+      <if test="REPORTNAME != null" >
+        REPORTNAME,
+      </if>
+      <if test="TITLE != null" >
+        TITLE,
+      </if>
+      <if test="ISDEFAULT != null" >
+        ISDEFAULT,
+      </if>
+      <if test="NEEDAUDIT != null" >
+        NEEDAUDIT,
+      </if>
+      <if test="NOPOST != null" >
+        NOPOST,
+      </if>
+      <if test="NEEDENOUGHSTOCK != null" >
+        NEEDENOUGHSTOCK,
+      </if>
+      <if test="COUNTFIELD != null" >
+        COUNTFIELD,
+      </if>
+      <if test="STATUSFIELD != null" >
+        STATUSFIELD,
+      </if>
+      <if test="STATUSCODEFIELD != null" >
+        STATUSCODEFIELD,
+      </if>
+      <if test="ALLOWMULTIPLE != null" >
+        ALLOWMULTIPLE,
+      </if>
+      <if test="HANDLERMETHOD != null" >
+        HANDLERMETHOD,
+      </if>
+      <if test="DEFAULTCONDITION != null" >
+        DEFAULTCONDITION,
+      </if>
+      <if test="PRINTTYPE != null" >
+        PRINTTYPE,
+      </if>
+      <if test="PROCEDURENAME != null" >
+        PROCEDURENAME,
+      </if>
+      <if test="IGNOREPAGE != null" >
+        IGNOREPAGE,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides="," >
+      <if test="ID != null" >
+        #{ID,jdbcType=INTEGER},
+      </if>
+      <if test="CALLER != null" >
+        #{CALLER,jdbcType=VARCHAR},
+      </if>
+      <if test="REPORTNAME != null" >
+        #{REPORTNAME,jdbcType=VARCHAR},
+      </if>
+      <if test="TITLE != null" >
+        #{TITLE,jdbcType=VARCHAR},
+      </if>
+      <if test="ISDEFAULT != null" >
+        #{ISDEFAULT,jdbcType=INTEGER},
+      </if>
+      <if test="NEEDAUDIT != null" >
+        #{NEEDAUDIT,jdbcType=INTEGER},
+      </if>
+      <if test="NOPOST != null" >
+        #{NOPOST,jdbcType=INTEGER},
+      </if>
+      <if test="NEEDENOUGHSTOCK != null" >
+        #{NEEDENOUGHSTOCK,jdbcType=INTEGER},
+      </if>
+      <if test="COUNTFIELD != null" >
+        #{COUNTFIELD,jdbcType=VARCHAR},
+      </if>
+      <if test="STATUSFIELD != null" >
+        #{STATUSFIELD,jdbcType=VARCHAR},
+      </if>
+      <if test="STATUSCODEFIELD != null" >
+        #{STATUSCODEFIELD,jdbcType=VARCHAR},
+      </if>
+      <if test="ALLOWMULTIPLE != null" >
+        #{ALLOWMULTIPLE,jdbcType=INTEGER},
+      </if>
+      <if test="HANDLERMETHOD != null" >
+        #{HANDLERMETHOD,jdbcType=VARCHAR},
+      </if>
+      <if test="DEFAULTCONDITION != null" >
+        #{DEFAULTCONDITION,jdbcType=VARCHAR},
+      </if>
+      <if test="PRINTTYPE != null" >
+        #{PRINTTYPE,jdbcType=VARCHAR},
+      </if>
+      <if test="PROCEDURENAME != null" >
+        #{PROCEDURENAME,jdbcType=VARCHAR},
+      </if>
+      <if test="IGNOREPAGE != null" >
+        #{IGNOREPAGE,jdbcType=INTEGER},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.commons.po.SysPrintSet" >
+    update sysprintset
+    <set >
+      <if test="CALLER != null" >
+        CALLER = #{CALLER,jdbcType=VARCHAR},
+      </if>
+      <if test="REPORTNAME != null" >
+        REPORTNAME = #{REPORTNAME,jdbcType=VARCHAR},
+      </if>
+      <if test="TITLE != null" >
+        TITLE = #{TITLE,jdbcType=VARCHAR},
+      </if>
+      <if test="ISDEFAULT != null" >
+        ISDEFAULT = #{ISDEFAULT,jdbcType=INTEGER},
+      </if>
+      <if test="NEEDAUDIT != null" >
+        NEEDAUDIT = #{NEEDAUDIT,jdbcType=INTEGER},
+      </if>
+      <if test="NOPOST != null" >
+        NOPOST = #{NOPOST,jdbcType=INTEGER},
+      </if>
+      <if test="NEEDENOUGHSTOCK != null" >
+        NEEDENOUGHSTOCK = #{NEEDENOUGHSTOCK,jdbcType=INTEGER},
+      </if>
+      <if test="COUNTFIELD != null" >
+        COUNTFIELD = #{COUNTFIELD,jdbcType=VARCHAR},
+      </if>
+      <if test="STATUSFIELD != null" >
+        STATUSFIELD = #{STATUSFIELD,jdbcType=VARCHAR},
+      </if>
+      <if test="STATUSCODEFIELD != null" >
+        STATUSCODEFIELD = #{STATUSCODEFIELD,jdbcType=VARCHAR},
+      </if>
+      <if test="ALLOWMULTIPLE != null" >
+        ALLOWMULTIPLE = #{ALLOWMULTIPLE,jdbcType=INTEGER},
+      </if>
+      <if test="HANDLERMETHOD != null" >
+        HANDLERMETHOD = #{HANDLERMETHOD,jdbcType=VARCHAR},
+      </if>
+      <if test="DEFAULTCONDITION != null" >
+        DEFAULTCONDITION = #{DEFAULTCONDITION,jdbcType=VARCHAR},
+      </if>
+      <if test="PRINTTYPE != null" >
+        PRINTTYPE = #{PRINTTYPE,jdbcType=VARCHAR},
+      </if>
+      <if test="PROCEDURENAME != null" >
+        PROCEDURENAME = #{PROCEDURENAME,jdbcType=VARCHAR},
+      </if>
+      <if test="IGNOREPAGE != null" >
+        IGNOREPAGE = #{IGNOREPAGE,jdbcType=INTEGER},
+      </if>
+    </set>
+    where ID = #{ID,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.commons.po.SysPrintSet" >
+    update sysprintset
+    set CALLER = #{CALLER,jdbcType=VARCHAR},
+      REPORTNAME = #{REPORTNAME,jdbcType=VARCHAR},
+      TITLE = #{TITLE,jdbcType=VARCHAR},
+      ISDEFAULT = #{ISDEFAULT,jdbcType=INTEGER},
+      NEEDAUDIT = #{NEEDAUDIT,jdbcType=INTEGER},
+      NOPOST = #{NOPOST,jdbcType=INTEGER},
+      NEEDENOUGHSTOCK = #{NEEDENOUGHSTOCK,jdbcType=INTEGER},
+      COUNTFIELD = #{COUNTFIELD,jdbcType=VARCHAR},
+      STATUSFIELD = #{STATUSFIELD,jdbcType=VARCHAR},
+      STATUSCODEFIELD = #{STATUSCODEFIELD,jdbcType=VARCHAR},
+      ALLOWMULTIPLE = #{ALLOWMULTIPLE,jdbcType=INTEGER},
+      HANDLERMETHOD = #{HANDLERMETHOD,jdbcType=VARCHAR},
+      DEFAULTCONDITION = #{DEFAULTCONDITION,jdbcType=VARCHAR},
+      PRINTTYPE = #{PRINTTYPE,jdbcType=VARCHAR},
+      PROCEDURENAME = #{PROCEDURENAME,jdbcType=VARCHAR},
+      IGNOREPAGE = #{IGNOREPAGE,jdbcType=INTEGER}
+    where ID = #{ID,jdbcType=INTEGER}
+  </update>
+  <select id="selectSetByCaller" resultType="com.usoftchina.saas.commons.po.SysPrintSet">
+    select * from sysprintset where caller=#{caller} and companyId=#{companyId}
+  </select>
+
+  <select id="selectSetByReportName" resultType="com.usoftchina.saas.commons.po.SysPrintSet">
+    select * from sysprintset where caller=#{caller} and reportName=#{reportName} and companyId=#{companyId}
+  </select>
+
+  <select id="selectDefaultSetBycaller" resultType="com.usoftchina.saas.commons.po.SysPrintSet">
+    select * from sysprintset where caller=#{caller} and ISDEFAULT=1 and companyId=#{companyId}
+  </select>
+</mapper>

+ 62 - 0
frontend/saas-web/app/view/core/dbfind/types/BankInfoDbfindTrigger.js

@@ -0,0 +1,62 @@
+Ext.define('saas.view.core.dbfind.types.BankInfoDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.DbfindTrigger',
+    xtype: 'bandinfoDbfindTrigger',
+
+    dataUrl: '/api/document/bankinformation/list',
+    addXtype: 'other-bankinformation',
+    addTitle: '资金账户',
+    dbtpls: [{
+        field: 'bk_bankcode',
+        width: 100
+    }, {
+        field: 'bk_bankname',
+        width: 100
+    }],
+    dbSearchFields: [{
+        emptyText: '查找资金账户',
+        xtype: "textfield",
+        name: "search",
+        getCondition: function (v) {
+            return "(upper(bk_bankcode) like '%" + v.toUpperCase() + "%' or upper(bk_bankname) like '%" + v.toUpperCase() + "%')";
+        },
+        allowBlank: true,
+        columnWidth: 0.25
+    }],
+    dbColumns: [{
+        text: "账户ID",
+        flex: 0,
+        dataIndex: "id",
+        width: 0,
+        xtype: ""
+    }, {
+        text: "资金账户",
+        flex: 1,
+        dataIndex: "bk_bankcode",
+        width: 120,
+        xtype: ""
+    }, {
+        text: "账户名称",
+        flex: 1,
+        dataIndex: "bk_bankname",
+        width: 150,
+        xtype: ""
+    }, {
+        text: "账户类别",
+        flex: 1,
+        dataIndex: "bk_type",
+        width: 120,
+        xtype: ""
+    }, {
+        text: "账户余额",
+        flex: 1,
+        dataIndex: "bk_thisamount",
+        width: 120,
+        xtype: 'numbercolumn',
+    }, {
+        text: "建帐日期",
+        flex: 1,
+        dataIndex: "bk_date",
+        width: 120,
+        xtype: "datecolumn"
+    }]
+});

+ 58 - 0
frontend/saas-web/app/view/core/dbfind/types/BomDbfindTrigger.js

@@ -0,0 +1,58 @@
+/**
+ * 客户资料放大镜
+ */
+Ext.define('saas.view.core.dbfind.types.BomDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.DbfindTrigger',
+    xtype: 'bomDbfindTrigger',
+
+    //数据接口
+    dataUrl: '/api/document/bom/list',
+    addXtype: 'document-bom-formpanel',
+    addTitle: 'BOM资料',
+    //联想设置
+    dbtpls: [{
+        field: 'bo_mothercode',
+        width: 100
+    }, {
+        field: 'bo_mothername',
+        width: 100
+    }],
+    
+    defaultCondition: "bo_statuscode='OPEN'",
+    //窗口字段设置
+    dbSearchFields: [{
+        emptyText: '输入BOM编号或名称',
+        xtype: "textfield",
+        name: "search",
+        width: 200,
+        getCondition: function (v) {
+            return "(upper(bo_mothercode) like '%" + v.toUpperCase() + "%' or upper(bo_mothername) like '%" + v.toUpperCase() + "%')";
+        },
+        allowBlank: true,
+        columnWidth: 0.25
+    }],
+    //窗口列设置
+    dbColumns: [{
+        text: "物料ID",
+        hidden: true,
+        dataIndex: "id",
+    }, {
+        text: "产品编号",
+        dataIndex: "bo_mothercode",
+        width: 200,
+    }, {
+        text: "产品名称",
+        width: 200,
+        dataIndex: "bo_mothername",
+    }, {
+        text: "产品规格",
+        width: 200,
+        dataIndex: "pr_spec",
+    }, {
+        text: "版本",
+        width: 200,
+        dataIndex: "bo_version",
+        flex: 1
+    }]
+
+});

+ 89 - 0
frontend/saas-web/app/view/core/dbfind/types/CustomerDbfindTrigger.js

@@ -0,0 +1,89 @@
+/**
+ * 客户资料放大镜
+ */
+Ext.define('saas.view.core.dbfind.types.CustomerDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.DbfindTrigger',
+    xtype: 'customerDbfindTrigger',
+
+    dataUrl: '/api/document/customer/dbfind',
+    addXtype: 'document-customer-formpanel',
+    addTitle: '客户资料',
+    defaultCondition: "cu_statuscode='OPEN'",
+    
+    dbtpls: [{
+        field: 'cu_code',
+        width: 100
+    }, {
+        field: 'cu_name',
+        width: 100
+    }],
+    dbSearchFields: [{
+        emptyText: '输入客户编号或客户名称',
+        xtype: "textfield",
+        name: "search",
+        getCondition: function (v) {
+            return "(upper(cu_code) like '%" + v.toUpperCase() + "%' or upper(cu_name) like '%" + v.toUpperCase() + "%')";
+        },
+        allowBlank: true,
+        columnWidth: 0.25
+    }],
+    dbColumns: [{
+        conditionCode: 'id',
+        text: "客户ID",
+        dataIndex: "id",
+        width: 0,
+        xtype: "",
+    }, {
+        conditionCode: 'cu_code',
+        text: "客户编号",
+        dataIndex: "cu_code",
+        width: 150,
+        xtype: "",
+    }, {
+        conditionCode: 'cu_name',
+        text: "客户名称",
+        dataIndex: "cu_name",
+        width: 180,
+        xtype: "",
+    }, {
+        conditionCode: 'cu_type',
+        text: "客户类型",
+        dataIndex: "cu_type",
+        width: 150,
+        xtype: "",
+    }, {
+        text: "业务员编号",
+        dataIndex: "cu_sellercode",
+        width:150
+    }, {
+        text: "业务员",
+        dataIndex: "cu_sellername",
+        width:180
+    }, {
+        text: "税率",
+        dataIndex: "cu_taxrate",
+        xtype: 'numbercolumn',
+        width:80,
+        renderer: function (v) {
+            return Ext.util.Format.number(v, '0');
+        }
+    }, {
+        text: "承付天数",
+        dataIndex: "cu_promisedays",
+        width:100,
+        xtype: 'numbercolumn',
+        renderer: function (v) {
+            return Ext.util.Format.number(v, '0');
+        }
+    }, {
+        text: "额度",
+        dataIndex: "cu_credit",
+        width:100,
+        xtype: 'numbercolumn',
+    }, {
+        text: "客户地址",
+        dataIndex: "ca_address",
+        width: 250
+    }]
+
+});

+ 89 - 0
frontend/saas-web/app/view/core/dbfind/types/CustomerDbfindTrigger.js~2496f4a5e0d652d0a04afaa39f7ce066459fbea1

@@ -0,0 +1,89 @@
+/**
+ * 客户资料放大镜
+ */
+Ext.define('saas.view.core.dbfind.types.CustomerDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.DbfindTrigger',
+    xtype: 'customerDbfindTrigger',
+
+    dataUrl: '/api/document/customer/dbfind',
+    addXtype: 'document-customer-formpanel',
+    addTitle: '客户资料',
+    defaultCondition: "cu_statuscode='OPEN'",
+    
+    dbtpls: [{
+        field: 'cu_code',
+        width: 100
+    }, {
+        field: 'cu_name',
+        width: 100
+    }],
+    dbSearchFields: [{
+        emptyText: '输入客户编号或客户名称',
+        xtype: "textfield",
+        name: "search",
+        getCondition: function (v) {
+            return "(upper(cu_code) like '%" + v.toUpperCase() + "%' or upper(cu_name) like '%" + v.toUpperCase() + "%')";
+        },
+        allowBlank: true,
+        columnWidth: 0.25
+    }],
+    dbColumns: [{
+        conditionCode: 'id',
+        text: "客户ID",
+        dataIndex: "id",
+        width: 0,
+        xtype: "",
+    }, {
+        conditionCode: 'cu_code',
+        text: "客户编号",
+        dataIndex: "cu_code",
+        width: 150,
+        xtype: "",
+    }, {
+        conditionCode: 'cu_name',
+        text: "客户名称",
+        dataIndex: "cu_name",
+        width: 180,
+        xtype: "",
+    }, {
+        conditionCode: 'cu_type',
+        text: "客户类型",
+        dataIndex: "cu_type",
+        width: 150,
+        xtype: "",
+    }, {
+        text: "业务员编号",
+        dataIndex: "cu_sellercode",
+        width:150
+    }, {
+        text: "业务员",
+        dataIndex: "cu_sellername",
+        width:180
+    }, {
+        text: "税率",
+        dataIndex: "cu_taxrate",
+        xtype: 'numbercolumn',
+        width:80,
+        renderer: function (v) {
+            return Ext.util.Format.number(v, '0');
+        }
+    }, {
+        text: "承付天数",
+        dataIndex: "cu_promisedays",
+        width:100,
+        xtype: 'numbercolumn',
+        renderer: function (v) {
+            return Ext.util.Format.number(v, '0');
+        }
+    }, {
+        text: "额度",
+        dataIndex: "cu_credit",
+        width:100,
+        xtype: 'numbercolumn',
+    }, {
+        text: "客户地址",
+        dataIndex: "ca_address",
+        width: 250
+    }]
+
+});

+ 58 - 0
frontend/saas-web/app/view/core/dbfind/types/EmployeeDbfindTrigger.js

@@ -0,0 +1,58 @@
+/**
+ * 人员资料放大镜
+ */
+Ext.define('saas.view.core.dbfind.types.EmployeeDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.DbfindTrigger',
+    xtype: 'employeeDbfindTrigger',
+
+    //数据接口
+    dataUrl:'/api/document/employee/list',
+    addXtype: 'document-vendor-formpanel',
+    addTitle: '供应商资料',
+    //联想设置
+    dbtpls:[{
+        field:'em_code',width:100
+    },{
+        field:'em_name',width:100
+    }],
+    defaultCondition: "em_class='正式'",
+    dbSearchFields:[{
+        emptyText:'输入人员编号或名称',
+        xtype : "textfield", 
+        name : "search", 
+        getCondition: function(v) {
+            return "(upper(em_code) like '%"+v.toUpperCase()+"%' or upper(em_name) like '%"+v.toUpperCase()+"%')";
+        },
+        allowBlank : true, 
+        columnWidth : 0.25
+    }],
+    //放大镜窗口列表
+    dbColumns:[{
+        text: "人员ID",
+        hidden: true,
+        dataIndex: "id",
+        width: 0,
+        xtype: "numbercolumn"
+    },{
+        text: "人员编号",
+        dataIndex: "em_code",
+        width: 200
+    }, {
+        text: "人员名称",
+        dataIndex: "em_name",
+        width: 200
+    }, {
+        text: "类型",
+        dataIndex: "em_class",
+        width: 180,
+    }, {
+        text: "手机",
+        dataIndex: "em_mobile",
+        width: 180,
+    }, {
+        text: "邮箱",
+        dataIndex: "em_email",
+        width: 180,
+    }]
+
+});

+ 110 - 0
frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js

@@ -0,0 +1,110 @@
+/**
+ * 物料资料放大镜(单选)
+ */
+Ext.define('saas.view.core.dbfind.types.ProductDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.DbfindTrigger',
+    xtype: 'productDbfindTrigger',
+
+    dataUrl:'/api/document/product/list',
+    addXtype: 'document-product-formpanel',
+    addTitle: '物料资料',
+    dbtpls:[{
+        field:'pr_code',width:100
+    },{
+        field:'pr_detail',width:100
+    }],
+    defaultCondition: "pr_statuscode='OPEN'",
+    dbSearchFields:[{
+        emptyText:'输入物料编号、名称或规格',
+        xtype : "textfield", 
+        name : "search", 
+        width: 200,
+        getCondition: function(v) {
+            return "(upper(pr_spec) like '%" + v.toUpperCase()+"%' or upper(pr_code) like '%"+v.toUpperCase()+"%' or upper(pr_detail) like '%"+v.toUpperCase()+"%')";
+        },
+        allowBlank : true, 
+        columnWidth : 0.25
+    }],
+    dbColumns:[{
+        text: "物料ID",
+        hidden: true,
+        dataIndex: "id",
+    }, {
+        text: "物料编号",       
+        dataIndex: "pr_code",
+        width: 200,
+    }, {
+        text: "物料名称",
+        width: 200,
+        dataIndex: "pr_detail",
+    }, {
+        text: "规格",
+        dataIndex: "pr_spec",
+        width: 100,
+    }, {
+        text: "单位",
+        dataIndex: "pr_spec",
+        width: 100,
+    },{
+        text: "仓库id",
+        dataIndex: "pr_whid",
+        hidden: true,
+    },{
+        text: "仓库编号",
+        dataIndex: "pr_whcode",
+        hidden: true,
+    },{
+        text: "仓库",
+        dataIndex: "pr_whname",
+        width: 200,
+        hidden: true
+    },{
+        text: "总库存数",
+        dataIndex: "po_onhand",
+        width: 100,
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },                            
+        align:'end'
+    },{
+        text: "类型",
+        dataIndex: "pr_kind",
+        width: 100,
+    },{
+        text: "型号",
+        dataIndex: "pr_orispeccode",
+        width: 100,
+    },{
+        text: "品牌",
+        dataIndex: "pr_brand",
+        width: 100,
+    },{
+        text: "供应商",
+        dataIndex: "pr_vendname",
+        width: 100,
+    },{
+        text: "最小包装",
+        dataIndex: "pr_zxbzs",
+        width: 100,
+        xtype: 'numbercolumn',
+        align: 'end',
+        renderer : function(v) {
+            if(!v) {
+                return 0;
+            }
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
+    },{
+        text: "L/T",
+        dataIndex: "pr_leadtime",
+        width: 100,
+    }]
+
+});

+ 110 - 0
frontend/saas-web/app/view/core/dbfind/types/ProductDbfindTrigger.js~2496f4a5e0d652d0a04afaa39f7ce066459fbea1

@@ -0,0 +1,110 @@
+/**
+ * 物料资料放大镜(单选)
+ */
+Ext.define('saas.view.core.dbfind.types.ProductDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.DbfindTrigger',
+    xtype: 'productDbfindTrigger',
+
+    dataUrl:'/api/document/product/list',
+    addXtype: 'document-product-formpanel',
+    addTitle: '物料资料',
+    dbtpls:[{
+        field:'pr_code',width:100
+    },{
+        field:'pr_detail',width:100
+    }],
+    defaultCondition: "pr_statuscode='OPEN'",
+    dbSearchFields:[{
+        emptyText:'输入物料编号、名称或规格',
+        xtype : "textfield", 
+        name : "search", 
+        width: 200,
+        getCondition: function(v) {
+            return "(upper(pr_spec) like '%" + v.toUpperCase()+"%' or upper(pr_code) like '%"+v.toUpperCase()+"%' or upper(pr_detail) like '%"+v.toUpperCase()+"%')";
+        },
+        allowBlank : true, 
+        columnWidth : 0.25
+    }],
+    dbColumns:[{
+        text: "物料ID",
+        hidden: true,
+        dataIndex: "id",
+    }, {
+        text: "物料编号",       
+        dataIndex: "pr_code",
+        width: 200,
+    }, {
+        text: "物料名称",
+        width: 200,
+        dataIndex: "pr_detail",
+    }, {
+        text: "规格",
+        dataIndex: "pr_spec",
+        width: 100,
+    }, {
+        text: "单位",
+        dataIndex: "pr_spec",
+        width: 100,
+    },{
+        text: "仓库id",
+        dataIndex: "pr_whid",
+        hidden: true,
+    },{
+        text: "仓库编号",
+        dataIndex: "pr_whcode",
+        hidden: true,
+    },{
+        text: "仓库",
+        dataIndex: "pr_whname",
+        width: 200,
+        hidden: true
+    },{
+        text: "总库存数",
+        dataIndex: "po_onhand",
+        width: 100,
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },                            
+        align:'end'
+    },{
+        text: "类型",
+        dataIndex: "pr_kind",
+        width: 100,
+    },{
+        text: "型号",
+        dataIndex: "pr_orispeccode",
+        width: 100,
+    },{
+        text: "品牌",
+        dataIndex: "pr_brand",
+        width: 100,
+    },{
+        text: "供应商",
+        dataIndex: "pr_vendname",
+        width: 100,
+    },{
+        text: "最小包装",
+        dataIndex: "pr_zxbzs",
+        width: 100,
+        xtype: 'numbercolumn',
+        align: 'end',
+        renderer : function(v) {
+            if(!v) {
+                return 0;
+            }
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        }
+    },{
+        text: "L/T",
+        dataIndex: "pr_leadtime",
+        width: 100,
+    }]
+
+});

+ 143 - 0
frontend/saas-web/app/view/core/dbfind/types/ProductMultiDbfindTrigger.js

@@ -0,0 +1,143 @@
+/**
+ * 物料资料放大镜(多选)
+ */
+Ext.define('saas.view.core.dbfind.types.ProductMultiDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.MultiDbfindTrigger',
+    xtype: 'productMultiDbfindTrigger',
+
+    //数据接口
+    // dataUrl:'http://192.168.253.31:9480/product/getProductsByCondition',
+    // dataUrl:'http://localhost:9480/product/list',
+    dataUrl: '/api/document/product/list',
+    addXtype: 'document-product-formpanel',
+    addTitle: '物料资料',
+    //放大镜赋值设置
+    dbfinds: [{
+        from: 'id',
+        to: 'pd_prodid',
+        ignore: true
+    }, {
+        from: 'pr_code',
+        to: 'pd_prodcode'
+    }, {
+        from: 'pr_detail',
+        to: 'pr_detail'
+    }, {
+        from: 'pr_spec',
+        to: 'pr_spec'
+    }, {
+        from: 'pr_purcprice',
+        to: 'pd_price'
+    }, {
+        from: 'pr_zxbzs',
+        to: 'pr_zxbzs'
+    }],
+    //联想设置
+    dbtpls: [{
+        field: 'pr_code',
+        width: 100
+    }, {
+        field: 'pr_detail',
+        width: 100
+    }],
+    defaultCondition: "pr_statuscode='OPEN'",
+    dbSearchFields: [{
+        emptyText: '输入物料编号、名称或规格',
+        width: 200,
+        xtype: "textfield",
+        name: "search",
+        allowBlank: true,
+        columnWidth: 0.25,
+        getCondition: function (v) {
+            return "(upper(pr_code) like '%" + v.toUpperCase() + "%' or upper(pr_detail) like '%" + v.toUpperCase() + "%' or upper(pr_spec) like '%" + v.toUpperCase() + "%')";
+        }
+    }],
+    //窗口列设置
+    dbColumns: [{
+        text: "物料ID",
+        hidden: true,
+        dataIndex: "id",
+    }, {
+        text: "物料编号",
+        dataIndex: "pr_code",
+        width: 200,
+    }, {
+        text: "物料名称",
+        width: 200,
+        dataIndex: "pr_detail",
+    }, {
+        text: "规格",
+        dataIndex: "pr_spec",
+        width: 100,
+    }, {
+        text: "单位",
+        dataIndex: "pr_unit",
+        width: 100,
+    }, {
+        text: "最新采购单价",
+        dataIndex: "pr_purcprice",
+        align: 'end',
+        xtype: 'numbercolumn',
+        width: 0,
+    }, {
+        text: "仓库id",
+        dataIndex: "pr_whid",
+        hidden: true,
+    }, {
+        text: "仓库编号",
+        dataIndex: "pr_whcode",
+        hidden: true,
+    }, {
+        text: "仓库",
+        dataIndex: "pr_whname",
+        width: 200,
+        hidden: true
+    }, {
+        text: "总库存数",
+        dataIndex: "po_onhand",
+        width: 100,
+        xtype: 'numbercolumn',
+        renderer: function (v) {
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length)).fill('0');
+            var format = '0,000.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+        align: 'end'
+    }, {
+        text: "类型",
+        dataIndex: "pr_kind",
+        width: 100,
+    }, {
+        text: "型号",
+        dataIndex: "pr_orispeccode",
+        width: 100,
+    }, {
+        text: "品牌",
+        dataIndex: "pr_brand",
+        width: 100,
+    }, {
+        text: "供应商",
+        dataIndex: "pr_vendname",
+        width: 100,
+    }, {
+        text: "最小包装",
+        dataIndex: "pr_zxbzs",
+        width: 100,
+        xtype: 'numbercolumn',
+        renderer : function(v) {
+            if(!v) {
+                return 0;
+            }
+            var arr = (v + '.').split('.');
+            var xr = (new Array(arr[1].length > 3 ? 3 : arr[1].length)).fill('0');
+            var format = '0.' + xr.join();
+            return Ext.util.Format.number(v, format);
+        },
+    }, {
+        text: "L/T",
+        dataIndex: "pr_leadtime",
+        width: 100,
+    }]
+
+});

+ 79 - 0
frontend/saas-web/app/view/core/dbfind/types/VendorDbfindTrigger.js

@@ -0,0 +1,79 @@
+/**
+ * 供应商资料放大镜
+ */
+Ext.define('saas.view.core.dbfind.types.VendorDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.DbfindTrigger',
+    xtype: 'vendorDbfindTrigger',
+
+    //数据接口
+    dataUrl:'/api/document/vendor/list',
+    addXtype: 'document-vendor-formpanel',
+    addTitle: '供应商资料',
+    defaultCondition:"ve_statuscode='OPEN'",
+
+    //联想设置
+    dbtpls:[{
+        field:'ve_code',width:100
+    },{
+        field:'ve_name',width:100
+    }],
+    defaultCondition: "ve_statuscode='OPEN'",
+    dbSearchFields:[{
+        emptyText:'输入供应商编号或名称',
+        xtype : "textfield", 
+        name : "search", 
+        getCondition: function(v) {
+            return "(upper(ve_code) like '%"+v.toUpperCase()+"%' or upper(ve_name) like '%"+v.toUpperCase()+"%')";
+        },
+        allowBlank : true, 
+        columnWidth : 0.25
+    }],
+    //放大镜窗口列表
+    dbColumns:[{
+        text: "供应商ID",
+        hidden: true,
+        dataIndex: "id",
+        width: 100,
+        xtype: "numbercolumn"
+    },{
+        text: "供应商编号",
+        dataIndex: "ve_code",
+        width: 200
+    }, {
+        text: "供应商名称",
+        dataIndex: "ve_name",
+        width: 200
+    }, {
+        text: "供应商类型",
+        dataIndex: "ve_type",
+        width: 180,
+    }, {
+        text: "税率",
+        dataIndex: "ve_taxrate",
+        width: 100,
+        xtype: 'numbercolumn',
+        align:'end'
+    }, {
+        text: "承付天数",
+        dataIndex: "ve_promisedays",
+        width: 100,
+        xtype: 'numbercolumn',
+        align: 'end', 
+        renderer : function(v) {
+            return Ext.util.Format.number(v, '0');
+        }
+    }, {
+        text: "纳税人识别号",
+        dataIndex: "ve_bankaccount",
+        width: 150
+    }, {
+        text: "开户银行",
+        dataIndex: "ve_bankaccount",
+        width: 150
+    }, {
+        text: "银行账户",
+        dataIndex: "ve_bankcode",
+        flex:1
+    }]
+
+});

+ 54 - 0
frontend/saas-web/app/view/core/dbfind/types/WarehouseDbfindTrigger.js

@@ -0,0 +1,54 @@
+/**
+ * 仓库资料放大镜
+ */
+Ext.define('saas.view.core.dbfind.types.WarehouseDbfindTrigger', {
+    extend: 'saas.view.core.dbfind.DbfindTrigger',
+    xtype: 'warehouseDbfindTrigger',
+
+    dataUrl: '/api/document/warehouse/list',
+    // dataUrl:'http://localhost:9480/warehouse/list',
+    addXtype: 'other-warehouse',
+    addTitle: '仓库资料',
+    defaultCondition: "wh_statuscode='OPEN'",
+    dbtpls: [{
+        field: 'wh_code',
+        width: 100
+    }, {
+        field: 'wh_description',
+        width: 100
+    }],
+    dbSearchFields: [{
+        emptyText: '输入仓库编号或名称',
+        xtype: "textfield",
+        name: "wh_code",
+        allowBlank: true,
+        columnWidth: 0.25,
+        getCondition: function (v) {
+            return "(upper(wh_code) like '%" + v.toUpperCase() + "%' or upper(wh_description) like '%" + v.toUpperCase() + "%')";
+        }
+    }],
+    dbColumns: [{
+        text: "仓库ID",
+        flex: 0,
+        dataIndex: "id",
+        width: 0,
+        xtype: "",
+    }, {
+        text: "仓库编号",
+        flex: 1,
+        dataIndex: "wh_code",
+        width: 100,
+        xtype: "",
+    }, {
+        text: "仓库名称",
+        flex: 1,
+        dataIndex: "wh_description",
+        xtype: "",
+    }, {
+        text: "仓库类型",
+        flex: 1,
+        dataIndex: "wh_type",
+        xtype: "",
+    }]
+
+});

+ 19 - 0
frontend/saas-web/app/view/home/charts/MonthSale.scss

@@ -0,0 +1,19 @@
+.x-pie-legend {
+
+    .x-legend-inner {
+        padding: 0;
+
+        .x-legend-container {
+
+            .x-legend-item {
+                border: none !important;
+                outline: none !important;
+                text-align: left;
+
+                .x-legend-item-marker {
+                    border-radius: 50%;
+                }
+            }
+        }
+    }
+}

BIN
frontend/saas-web/resources/images/default/basePhoto.png