yingp 7 years ago
parent
commit
514fe289b5
26 changed files with 744 additions and 356 deletions
  1. 4 2
      applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java
  2. 10 5
      applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java
  3. 66 0
      applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Vendorkind.java
  4. 39 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/VendorkindController.java
  5. 19 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendorkindMapper.java
  6. 11 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/VendorkindService.java
  7. 28 0
      applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorkindServiceImpl.java
  8. 128 0
      applications/document/document-server/src/main/resources/mapper/VendorkindMapper.xml
  9. 3 1
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java
  10. 27 23
      applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java
  11. 1 1
      applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml
  12. 20 0
      frontend/saas-web/app/util/FormUtil.js
  13. 0 2
      frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js
  14. 131 12
      frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js
  15. 0 232
      frontend/saas-web/app/view/core/dbfind/DbfindTrigger2.js
  16. 92 40
      frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js
  17. 128 7
      frontend/saas-web/app/view/core/dbfind/MultiDbfindTrigger.js
  18. 1 2
      frontend/saas-web/app/view/core/form/FormPanelController.js
  19. 0 7
      frontend/saas-web/app/view/core/form/field/DetailGridField.js
  20. 0 1
      frontend/saas-web/app/view/core/query/QueryGridPanel.js
  21. 2 2
      frontend/saas-web/app/view/document/kind/ChildForm.js
  22. 2 4
      frontend/saas-web/app/view/document/kind/Kind.js
  23. 5 5
      frontend/saas-web/app/view/main/MainModel.js
  24. 0 1
      frontend/saas-web/app/view/test/myform/FormPanelController.js
  25. 25 9
      frontend/saas-web/app/view/test/order/FormController.js
  26. 2 0
      frontend/saas-web/app/view/test/order/FormPanel.js

+ 4 - 2
applications/commons/commons-dto/src/main/java/com/usoftchina/saas/commons/exception/BizExceptionCode.java

@@ -6,8 +6,10 @@ public enum BizExceptionCode implements BaseExceptionCode {
 
 
     // 业务异常
-    MAX_NUM_OUTOF_BOUNDS(52000, "流水号长度大于最大设定的长度");
-
+    MAX_NUM_OUTOF_BOUNDS(52000, "流水号长度大于最大设定的长度"),
+    NULL_CODE(53000, "单据编号为空"),
+    NULL_CODERULE(54000, "单据规则不存在,请先确定单据生成规则"),
+    CODE_EXISTS(55000, "单据编号已存在");
 
     private int code;
     private String message;

+ 10 - 5
applications/commons/commons-server/src/main/java/com/usoftchina/saas/commons/service/impl/MaxnumberServiceImpl.java

@@ -99,9 +99,6 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
     */
     @Override
     public String pushMaxnubmer(Integer count, String code, String caller) {
-        if (count > 0) {
-            return getMaxnumner(caller, true);
-        }
         //单号
         String maxcode =  code;
         //公司Id
@@ -115,13 +112,21 @@ public class MaxnumberServiceImpl extends CommonBaseServiceImpl<MaxnumbersMapper
         //查询编号规则
         Maxnumbers maxnumbers = getMaxnumbers(caller);
         if (null == maxnumbers) {
-            return maxcode;
+            throw new BizException(BizExceptionCode.NULL_CODERULE);
         }
         rulecode = getRulecode(maxnumbers);
-        //编号与前缀+日期不匹配,直接返回
+        //编号与前缀+日期不匹配,不跟据规格的编号
         if (maxcode.indexOf(rulecode) != 0) {
+            if (count > 0) {
+                throw new BizException(BizExceptionCode.CODE_EXISTS);
+            }
             return maxcode;
         }
+        //与规则匹配的编号
+        if (count > 0) {
+            return getMaxnumner(caller, true);
+        }
+
         //查询从表是否存在该规则数据
         Maxnumbersdetail detail = getMaxDetail(caller, rulecode);
         if (null != detail) {

+ 66 - 0
applications/document/document-dto/src/main/java/com/usoftchina/saas/document/entities/Vendorkind.java

@@ -0,0 +1,66 @@
+package com.usoftchina.saas.document.entities;
+
+import com.usoftchina.saas.base.entity.CommonBaseEntity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 供应商类型
+ * @author chenwei
+ * @date 2018/20/19
+ */
+public class Vendorkind extends CommonBaseEntity implements Serializable {
+
+    /**
+     * 类型名
+     */
+    private String vk_name;
+
+    /**
+     * 录入人ID
+     */
+    private Integer vk_recordid;
+
+    /**
+     * 录入人
+     */
+    private String vk_recorder;
+
+    /**
+     * 录入日期
+     */
+    private Date vk_date;
+
+    public String getVk_name() {
+        return vk_name;
+    }
+
+    public void setVk_name(String vk_name) {
+        this.vk_name = vk_name == null ? null : vk_name.trim();
+    }
+
+    public Integer getVk_recordid() {
+        return vk_recordid;
+    }
+
+    public void setVk_recordid(Integer vk_recordid) {
+        this.vk_recordid = vk_recordid;
+    }
+
+    public String getVk_recorder() {
+        return vk_recorder;
+    }
+
+    public void setVk_recorder(String vk_recorder) {
+        this.vk_recorder = vk_recorder == null ? null : vk_recorder.trim();
+    }
+
+    public Date getVk_date() {
+        return vk_date;
+    }
+
+    public void setVk_date(Date vk_date) {
+        this.vk_date = vk_date;
+    }
+}

+ 39 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/controller/VendorkindController.java

@@ -0,0 +1,39 @@
+package com.usoftchina.saas.document.controller;
+
+import com.usoftchina.saas.base.Result;
+import com.usoftchina.saas.document.entities.Vendorkind;
+import com.usoftchina.saas.document.service.VendorkindService;
+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;
+
+@RestController
+@RequestMapping("/vendorkind")
+public class VendorkindController {
+
+    @Autowired
+    private VendorkindService vendorkindService;
+
+    @PostMapping("/save")
+    public Result save(Vendorkind vendorkind){
+        vendorkindService.save(vendorkind);
+        return Result.success();
+    }
+
+    @PostMapping("/delete/{id}")
+    public Result delete(long id){
+        vendorkindService.removeByPrimaryKey(id);
+        return Result.success();
+    }
+
+    @GetMapping
+    public Result<Vendorkind> getAll(){
+        List<Vendorkind> vendorkindList = vendorkindService.findAll();
+        return Result.success(vendorkindList);
+    }
+
+}

+ 19 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/mapper/VendorkindMapper.java

@@ -0,0 +1,19 @@
+package com.usoftchina.saas.document.mapper;
+
+import com.usoftchina.saas.base.mapper.CommonBaseMapper;
+import com.usoftchina.saas.document.entities.Vendorkind;
+
+public interface VendorkindMapper extends CommonBaseMapper<Vendorkind> {
+
+    int deleteByPrimaryKey(Integer vk_id);
+
+    int insert(Vendorkind record);
+
+    int insertSelective(Vendorkind record);
+
+    Vendorkind selectByPrimaryKey(Long vk_id);
+
+    int updateByPrimaryKeySelective(Vendorkind record);
+
+    int updateByPrimaryKey(Vendorkind record);
+}

+ 11 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/VendorkindService.java

@@ -0,0 +1,11 @@
+package com.usoftchina.saas.document.service;
+
+import com.usoftchina.saas.base.service.CommonBaseService;
+import com.usoftchina.saas.document.entities.Vendorkind;
+import com.usoftchina.saas.document.mapper.VendorkindMapper;
+
+public interface VendorkindService extends CommonBaseService<VendorkindMapper, Vendorkind> {
+
+
+
+}

+ 28 - 0
applications/document/document-server/src/main/java/com/usoftchina/saas/document/service/impl/VendorkindServiceImpl.java

@@ -0,0 +1,28 @@
+package com.usoftchina.saas.document.service.impl;
+
+import com.usoftchina.saas.base.service.CommonBaseServiceImpl;
+import com.usoftchina.saas.document.entities.Vendorkind;
+import com.usoftchina.saas.document.mapper.VendorkindMapper;
+import com.usoftchina.saas.document.service.VendorkindService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class VendorkindServiceImpl extends CommonBaseServiceImpl<VendorkindMapper, Vendorkind> implements VendorkindService {
+
+    @Autowired
+    private VendorkindMapper vendorkindMapper;
+
+    @Override
+    public boolean save(Vendorkind vendorkind){
+        vendorkindMapper.insertSelective(vendorkind);
+        return true;
+    }
+
+    @Override
+    public boolean removeByPrimaryKey(Long id){
+        vendorkindMapper.deleteByPrimaryKey(id);
+        return true;
+    }
+
+}

+ 128 - 0
applications/document/document-server/src/main/resources/mapper/VendorkindMapper.xml

@@ -0,0 +1,128 @@
+<?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.document.mapper.VendorkindMapper">
+  <resultMap id="BaseResultMap" type="com.usoftchina.saas.document.entities.Vendorkind">
+    <id column="vk_id" jdbcType="INTEGER" property="id" />
+    <result column="vk_name" jdbcType="VARCHAR" property="vk_name" />
+    <result column="vk_recordid" jdbcType="INTEGER" property="vk_recordid" />
+    <result column="vk_recorder" jdbcType="VARCHAR" property="vk_recorder" />
+    <result column="vk_date" jdbcType="TIMESTAMP" property="vk_date" />
+    <result column="companyId" jdbcType="INTEGER" property="companyId" />
+    <result column="updaterId" jdbcType="INTEGER" property="updaterId" />
+    <result column="updateTime" jdbcType="TIMESTAMP" property="updateTime" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    vk_id, vk_name, vk_recordid, vk_recorder, vk_date, companyId, updaterId, updateTime
+  </sql>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List" />
+    from vendorkind
+    where vk_id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+    delete from vendorkind
+    where vk_id = #{id,jdbcType=INTEGER}
+  </delete>
+  <insert id="insert" parameterType="com.usoftchina.saas.document.entities.Vendorkind">
+    insert into vendorkind (vk_id, vk_name, vk_recordid,
+    vk_recorder, vk_date, companyId,
+    updaterId, updateTime)
+    values (#{id,jdbcType=INTEGER}, #{vk_name,jdbcType=VARCHAR}, #{vk_recordid,jdbcType=INTEGER},
+    #{vk_recorder,jdbcType=VARCHAR}, #{vk_date,jdbcType=TIMESTAMP}, #{companyId,jdbcType=INTEGER},
+    #{updaterId,jdbcType=INTEGER}, #{updateTime,jdbcType=TIMESTAMP})
+  </insert>
+  <insert id="insertSelective" parameterType="com.usoftchina.saas.document.entities.Vendorkind">
+    insert into vendorkind
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        vk_id,
+      </if>
+      <if test="vk_name != null">
+        vk_name,
+      </if>
+      <if test="vk_recordid != null">
+        vk_recordid,
+      </if>
+      <if test="vk_recorder != null">
+        vk_recorder,
+      </if>
+      <if test="vk_date != null">
+        vk_date,
+      </if>
+      <if test="companyId != null">
+        companyId,
+      </if>
+      <if test="updaterId != null">
+        updaterId,
+      </if>
+      <if test="updateTime != null">
+        updateTime,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=INTEGER},
+      </if>
+      <if test="vk_name != null">
+        #{vk_name,jdbcType=VARCHAR},
+      </if>
+      <if test="vk_recordid != null">
+        #{vk_recordid,jdbcType=INTEGER},
+      </if>
+      <if test="vk_recorder != null">
+        #{vk_recorder,jdbcType=VARCHAR},
+      </if>
+      <if test="vk_date != null">
+        #{vk_date,jdbcType=TIMESTAMP},
+      </if>
+      <if test="companyId != null">
+        #{companyId,jdbcType=INTEGER},
+      </if>
+      <if test="updaterId != null">
+        #{updaterId,jdbcType=INTEGER},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKeySelective" parameterType="com.usoftchina.saas.document.entities.Vendorkind">
+    update vendorkind
+    <set>
+      <if test="vk_name != null">
+        vk_name = #{vk_name,jdbcType=VARCHAR},
+      </if>
+      <if test="vk_recordid != null">
+        vk_recordid = #{vk_recordid,jdbcType=INTEGER},
+      </if>
+      <if test="vk_recorder != null">
+        vk_recorder = #{vk_recorder,jdbcType=VARCHAR},
+      </if>
+      <if test="vk_date != null">
+        vk_date = #{vk_date,jdbcType=TIMESTAMP},
+      </if>
+      <if test="companyId != null">
+        companyId = #{companyId,jdbcType=INTEGER},
+      </if>
+      <if test="updaterId != null">
+        updaterId = #{updaterId,jdbcType=INTEGER},
+      </if>
+      <if test="updateTime != null">
+        updateTime = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    where vk_id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.usoftchina.saas.document.entities.Vendorkind">
+    update vendorkind
+    set vk_name = #{vk_name,jdbcType=VARCHAR},
+    vk_recordid = #{vk_recordid,jdbcType=INTEGER},
+    vk_recorder = #{vk_recorder,jdbcType=VARCHAR},
+    vk_date = #{vk_date,jdbcType=TIMESTAMP},
+    companyId = #{companyId,jdbcType=INTEGER},
+    updaterId = #{updaterId,jdbcType=INTEGER},
+    updateTime = #{updateTime,jdbcType=TIMESTAMP}
+    where vk_id = #{id,jdbcType=INTEGER}
+  </update>
+</mapper>

+ 3 - 1
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/mapper/PurchaseMapper.java

@@ -4,6 +4,8 @@ import com.usoftchina.saas.base.mapper.CommonBaseMapper;
 
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.purchase.po.Purchase;
+import org.apache.ibatis.annotations.Param;
+
 import java.util.List;
 
 public interface PurchaseMapper extends CommonBaseMapper<Purchase>{
@@ -23,5 +25,5 @@ public interface PurchaseMapper extends CommonBaseMapper<Purchase>{
 
     Integer validateCodeWhenInsert(String code);
 
-    Integer validateCodeWhenUpdate(String code, Long id);
+    Integer validateCodeWhenUpdate(@Param("code") String code,@Param("id") Long id);
 }

+ 27 - 23
applications/purchase/purchase-server/src/main/java/com/usoftchina/saas/purchase/service/impl/PurchaseServiceImpl.java

@@ -10,6 +10,7 @@ import com.usoftchina.saas.commons.api.MaxnumberService;
 import com.usoftchina.saas.commons.dto.BatchDealBaseDTO;
 import com.usoftchina.saas.commons.dto.DocBaseDTO;
 import com.usoftchina.saas.commons.dto.DocSavedDTO;
+import com.usoftchina.saas.commons.exception.BizExceptionCode;
 import com.usoftchina.saas.context.BaseContextHolder;
 import com.usoftchina.saas.document.api.ProductApi;
 import com.usoftchina.saas.exception.BizException;
@@ -43,8 +44,8 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     private PurchasedetailMapper purchasedetailMapper;
     @Autowired
     private PurchaseListMapper purchaseListMapper;
-    @Autowired
-    private ProductApi productApi;
+   /* @Autowired
+    private ProductApi productApi;*/
     @Autowired
     private MaxnumberService maxnumberService;
     @Autowired
@@ -112,48 +113,48 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         purchase.setPu_code(pu_code);
         saveDTO.setCode(pu_code);
         //判断更新与保存动作
-        if (!StringUtils.isEmpty(pu_id)) {
-            //更新主表
-            purchaseMapper.updateByPrimaryKeySelective(purchase);
+        if (StringUtils.isEmpty(pu_id) || "0".equals(pu_id.toString())) {
+            //插入操作
+            purchaseMapper.insertSelective(purchase);
+            pu_id = purchase.getId();
             //添加从表传输对象
             for (PurchaseDetailDTO item : items) {
                 PurchaseDetail detail = BeanMapper.map(item, PurchaseDetail.class);
                 detail.setPd_puid(pu_id);
                 detail.setPd_code(pu_code);
-                if (!StringUtils.isEmpty(detail.getId())) {
-                    updateDetails.add(detail);
-                } else {
-                    insertDetails.add(detail);
-                }
+                insertDetails.add(detail);
             }
             //插入从表
             if (insertDetails.size() > 0) {
                 purchasedetailMapper.batchInsert(insertDetails);
             }
-            //更新从表
-            if (updateDetails.size() > 0) {
-                purchasedetailMapper.batchUpdate(updateDetails);
-            }
             saveDTO.setId(pu_id);
             return saveDTO;
         }
-
-        //插入操作
-        purchaseMapper.insertSelective(purchase);
-        pu_id = purchase.getId();
+        //更新操作
+        purchaseMapper.updateByPrimaryKeySelective(purchase);
         //添加从表传输对象
         for (PurchaseDetailDTO item : items) {
             PurchaseDetail detail = BeanMapper.map(item, PurchaseDetail.class);
             detail.setPd_puid(pu_id);
             detail.setPd_code(pu_code);
-            insertDetails.add(detail);
+            if (StringUtils.isEmpty(detail.getId()) || "0".equals(detail.getId().toString())) {
+                insertDetails.add(detail);
+            } else {
+                updateDetails.add(detail);
+            }
         }
         //插入从表
         if (insertDetails.size() > 0) {
             purchasedetailMapper.batchInsert(insertDetails);
         }
+        //更新从表
+        if (updateDetails.size() > 0) {
+            purchasedetailMapper.batchUpdate(updateDetails);
+        }
         saveDTO.setId(pu_id);
         return saveDTO;
+
     }
 
     @Override
@@ -172,7 +173,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         DocSavedDTO savedDTO = new DocSavedDTO();
         if (null != formData) {
             id = formData.getMain().getId();
-            if (StringUtils.isEmpty(id)) {
+            if (StringUtils.isEmpty(id) || "0".equals(String.valueOf(id))) {
                 DocSavedDTO saveDTO = saveFormData(formData);
                 id = saveDTO.getId();
             }
@@ -374,7 +375,7 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
         //更新存在字段
         purchaseMapper.updateByPrimaryKeySelective(purchase);
         //更新最新采购单价
-        productApi.updateLatestPurchasePrice(id);
+        //productApi.updateLatestPurchasePrice(id);
     }
 
     private void singleUnAudit(Long id) {
@@ -416,8 +417,11 @@ public class PurchaseServiceImpl extends CommonBaseServiceImpl<PurchaseMapper, P
     * @Date: 2018/10/19
     */
     private String pushMaxnubmer(String code, Long id) {
-        Integer count = id != null ?  purchaseMapper.validateCodeWhenUpdate(code, id) :
-                purchaseMapper.validateCodeWhenInsert(code);
+        if (null == code) {
+            throw new BizException(BizExceptionCode.NULL_CODE);
+        }
+        Integer count = "0".equals(String.valueOf(id)) ? purchaseMapper.validateCodeWhenInsert(code) :
+                purchaseMapper.validateCodeWhenUpdate(code, id);
         return maxnumberService.pushMaxnubmer(count, code, "Purchase");
     }
 }

+ 1 - 1
applications/purchase/purchase-server/src/main/resources/mapper/PurchaseMapper.xml

@@ -417,6 +417,6 @@
     select count(1) from purchase where pu_code = #{code}
   </select>
   <select id="validateCodeWhenUpdate" resultType="int" >
-    select count(1) from purchase where pu_code = #{0} and pu_id != #{1}
+    select count(1) from purchase where pu_code = #{code} and pu_id != #{id}
   </select>
 </mapper>

+ 20 - 0
frontend/saas-web/app/util/FormUtil.js

@@ -124,6 +124,23 @@ Ext.define('saas.util.FormUtil', {
                 console.error(response);
             });
         }else{
+            //取后台编号
+            var code;
+            Ext.Ajax.request({
+                url: 'http://192.168.253.58:8900/number/getMaxnumber',
+                params: {
+                    caller:form.caller
+                },
+                async:false,
+                method: 'POST',
+                success: function(response, opts) {
+                    var res = Ext.decode(response.responseText);
+                    if(res.success){
+                        code = res.data.code
+                    }
+                },
+                failure: function(response, opts) {}
+            }); 
             var viewModel = form.getViewModel();
             var detailStore = viewModel.get('_detailStore');
             var detno = 0,datas=[];
@@ -134,6 +151,9 @@ Ext.define('saas.util.FormUtil', {
                 datas.push(data);
             })
             detailStore.loadData(datas);
+            if(code){
+                viewModel.set(form._codeField,code);
+            }
         }
     }
 });

+ 0 - 2
frontend/saas-web/app/view/core/dbfind/DbfindGridPanel.js

@@ -59,7 +59,6 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
                                 var c = grid.getCondition(field,f.conditionExpression);
                                 grid.condition+=c;
                             });
-                            debugger
                             if(grid.condition.length>0){
                                 grid.condition = grid.condition.substring(0,grid.condition.length-5);
                             }
@@ -139,7 +138,6 @@ Ext.define('saas.view.core.dbfind.DbfindGridPanel', {
     },
 
     getCondition: function(f,conditionExpression){
-        debugger
         var condition = '';
         if((f.xtype == 'checkbox' || f.xtype == 'radio')&&f.logic){
             

+ 131 - 12
frontend/saas-web/app/view/core/dbfind/DbfindTrigger.js

@@ -1,22 +1,106 @@
 Ext.define('saas.view.core.dbfind.DbfindTrigger', {
-    extend: 'Ext.form.field.Trigger',
+    extend: 'Ext.form.ComboBox',
     xtype: 'dbfindtrigger',
     triggerCls: 'x-form-search-trigger',
-
+    queryMode: 'local',
+    displayField: 'dispaly',
+    valueField: 'value',
+    triggerCls: 'x-form-search-trigger',
     GridUtil: Ext.create('saas.util.GridUtil'),
     BaseUtil: Ext.create('saas.util.BaseUtil'),
-
     minChars:1, // 设置用户输入字符多少时触发查询
     tpl: '',
     enableKeyEvents:true,
     initComponent:function() {
         var me = this;
-        this.callParent(arguments);
+        me.store=Ext.create('Ext.data.Store', {
+            fields: ['display','value'],
+            data : [{
+                'display':me.value,
+                'value':me.value
+            }]
+        });
+        this.callParent();
+    },
+    //输入值之后进行模糊查询
+    doQuery: function(queryString, forceAll, rawQuery) {
+    	queryString = queryString || '';
+    	var me = this;
+    	if(me.lastQueryValue!=queryString){
+    		me.judge(me);
+    		var field=[];
+    		var sfield='';
+            var dbfinds=me.dbfinds;
+            var dbtpls=me.dbtpls;
+            var dbCondition = me.dbCondition.replace(new RegExp("\\{0}","g"), queryString);
+    		me.lastQueryValue=queryString;
+            if(queryString.trim()==''){
+                me.collapse( );
+            }else{
+                if(!dbfinds||!dbtpls){
+                    me.collapse( );
+                }else{                   
+                    //加载tpl模板
+                    if(dbtpls.length>0){
+                        var span="";
+                        var width=0;
+                        for(var i=0;i<dbtpls.length;i++){
+                            if(i==0){
+                                span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;">{'+dbtpls[i].field+'}</span>';//display:block;
+                            }else{
+                                span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;">{'+dbtpls[i].field+'}</span>';
+                            }
+                            if(dbtpls[i].dbField=="true"){
+                                me.searchFieldArray=dbtpls[i].field;
+                            }
+                            width=width+dbtpls[i].width+20;
+                            field.push(dbtpls[i].field);
+                            sfield=sfield+dbtpls[i].field+',';
+                        }
+                        me.defaultListConfig.minWidth=width+10;
+                        me.defaultListConfig.maxHeight=210;
+                        me.defaultListConfig.autoScroll=true;
+                        me.searchField=sfield.substring(0,sfield.length-1);
+                        me.tpl=Ext.create('Ext.XTemplate',
+                                '<ul style="padding-left: 0px;"><tpl for=".">',
+                                '<li role="option" class="x-boundlist-item" style="list-style:none;">' ,
+                                '<div style="height:30px;">',
+                                ''+span+'',
+                                '</li>',
+                            '</tpl></ul>'
+                        );
+                        me.store.setFields(field);
+                    }
+                }
+                //加载数据
+                var data;
+                Ext.Ajax.request({
+                    url: me.dataUrl,
+                    params: {
+                        keyword:dbCondition
+                    },
+                    success: function(response, opts) {
+                        data = Ext.decode(response.responseText);
+                        data = data.data.list;
+                        if(data!=null && data.length>0 && me.store && field.length>0){
+                            me.store.loadData(data,false);
+                            me.expand();
+                        }else{
+                            me.collapse( );
+                        }
+                    },
+                    failure: function(response, opts) {}
+                });                
+            }
+            return true;
+    	}else{
+    		return false;
+    	}
     },
     onTriggerClick:function(f){
         //判断dbfindtrigger归属
-        var belong = f.judge(f);
-        var win = Ext.create('Ext.window.Window', {   
+        var form = f.judge(f);//form
+        var win = form.getController().getView().add(Ext.create('Ext.window.Window', {   
             trigger:f,
             belong:f.ownerCt,  
             modal:true,
@@ -38,25 +122,60 @@ Ext.define('saas.view.core.dbfind.DbfindTrigger', {
                 dbSearchFields:f.dbSearchFields?f.dbSearchFields:[],
                 dbfindtrigger:f
             }]
-        });
+        }));
         win.show();
     },
 
     judge:function(f){
         if(f.ownerCt.xtype.trim().toUpperCase().indexOf('FORMPANEL')>-1){
             f.belong = 'form';
-            return 'form'
+            return f.ownerCt
         }
         else if(f.column){
             f.belong = 'grid';
-            return 'grid'
+            return f.column.ownerCt.ownerCt.ownerCt
         }
     },
 
     listeners: {
-        focus: function(f) {
-            return true;
-		}
+        select:function(combo,record,eOpts){
+            var me = combo;
+            var dbfinds = me.dbfinds;
+            if(dbfinds&&dbfinds.length>0){
+                if(me.belong=='grid'){
+                    for (let index = 0; index < dbfinds.length; index++) {
+                        var item = dbfinds[index];
+                        var rec = me.column.ownerCt.ownerCt.selModel.getLastSelected();
+                        var nowRec = me.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
+                        nowRec.set(item.to,record.get(item.from));
+                        if(me.name==item.to){
+                            me.column.getEditor().setValue(record.get(item.from));
+                        }
+                    }
+                }else if(me.belong=='form'){
+                    for (let index = 0; index < dbfinds.length; index++) {
+                        var item = dbfinds[index];
+                        var field = me.ownerCt.down('[name='+item.to+']');
+                        if(field){
+                            var val = record.get(item.from);
+                            if(field.xtype=='dbfindtrigger'){
+                                field.setRawValue(val);
+                                field.value = val;
+                                field.lastTriggerValue=val;
+                            }else{
+                                field.setValue(val);
+                            }    
+                        }
+                    }
+                }
+            }
+        }
+    },
+
+    getValue: function(f) {
+        var me = this,val = me.rawToValue(me.processRawValue(me.getRawValue()));
+        me.value = val;
+        return val;
     },
 
     autoSetValue: function(data, dbfinds) {

+ 0 - 232
frontend/saas-web/app/view/core/dbfind/DbfindTrigger2.js

@@ -1,232 +0,0 @@
-Ext.define('saas.view.core.dbfind.DbfindTrigger2', {
-    extend: 'Ext.form.ComboBox',
-    xtype: 'dbfindtrigger2',
-    queryMode: 'local',
-    displayField: 'dispaly',
-    valueField: 'value',
-    triggerCls: 'x-form-search-trigger',
-    GridUtil: Ext.create('saas.util.GridUtil'),
-    BaseUtil: Ext.create('saas.util.BaseUtil'),
-    minChars:1, // 设置用户输入字符多少时触发查询
-    tpl: '',
-    enableKeyEvents:true,
-    initComponent:function() {
-        var me = this;
-        me.store=Ext.create('Ext.data.Store', {
-            fields: ['display','value'],
-            data : [{
-                'display':me.value,
-                'value':me.value
-            }]
-        });
-        this.callParent();
-    },
-    //输入值之后进行模糊查询
-    doQuery: function(queryString, forceAll, rawQuery) {
-    	queryString = queryString || '';
-    	var me = this;
-    	if(me.lastQueryValue!=queryString){
-    		var judge=me.judge(me);
-    		var field=[];
-    		var sfield='';
-            var dbfinds=me.dbfinds;
-            var dbtpls=me.dbtpls;
-    		var name=me.name;
-    		me.lastQueryValue=queryString;
-            if(queryString.trim()==''){
-                me.collapse( );
-            }else{
-                if(!dbfinds||!dbtpls){
-                    me.collapse( );
-                }else{                   
-                    //加载tpl模板
-                    if(dbtpls.length>0){
-                        var span="";
-                        var width=0;
-                        for(var i=0;i<dbtpls.length;i++){
-                            if(i==0){
-                                span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;">{'+dbtpls[i].field+'}</span>';//display:block;
-                            }else{
-                                span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;margin-left:10px;">{'+dbtpls[i].field+'}</span>';
-                            }
-                            if(dbtpls[i].dbField=="true"){
-                                me.searchFieldArray=dbtpls[i].field;
-                            }
-                            width=width+dbtpls[i].width+20;
-                            field.push(dbtpls[i].field);
-                            sfield=sfield+dbtpls[i].field+',';
-                        }
-                        me.defaultListConfig.minWidth=width+10;
-                        me.defaultListConfig.maxHeight=210;
-                        me.defaultListConfig.autoScroll=true;
-                        me.searchField=sfield.substring(0,sfield.length-1);
-                        me.tpl=Ext.create('Ext.XTemplate',
-                                '<ul style="padding-left: 0px;"><tpl for=".">',
-                                '<li role="option" class="x-boundlist-item" style="list-style:none;">' ,
-                                '<div style="height:30px;">',
-                                ''+span+'',
-                                '</li>',
-                            '</tpl></ul>'
-                        );
-                        me.store.setFields(field);
-                    }
-                }
-                //加载数据
-                var data;
-                Ext.Ajax.request({
-                    url: me.dataUrl,
-                    params: '',
-                    success: function(response, opts) {
-                        data = Ext.decode(response.responseText);
-                        data = data.data;
-                        if(data!=null && data.length>0 && me.store && field.length>0){
-                            me.store.loadData(data,false);
-                            me.expand();
-                        }else{
-                            me.collapse( );
-                        }
-                    },
-                    failure: function(response, opts) {
-                        console.log('server-side failure with status code ' + response.status);
-                        return reject(response);
-                    }
-                });                
-            }
-            return true;
-    	}else{
-    		return false;
-    	}
-    },
-    onTriggerClick:function(f){
-        //判断dbfindtrigger归属
-        var belong = f.judge(f);
-        var win = Ext.create('Ext.window.Window', {   
-            trigger:f,
-            belong:f.ownerCt,  
-            modal:true,
-            height: '80%',
-            width: '80%',
-            title: '查找',
-            scrollable: true,
-            bodyPadding: 10,
-            constrain: true,
-            closable: true,
-            layout:'fit',
-            renderTo:Ext.getCmp('main-tab-panel').getActiveTab().getEl(),
-            items:[{
-                xtype:'dbfindgridpanel',
-                columns: f.dbColumns,
-                dataUrl: f.dataUrl,
-                dbfinds: f.dbfinds
-            }]
-        });
-        win.show();
-    },
-
-    judge:function(f){
-        if(f.ownerCt.xtype.trim().toUpperCase().indexOf('FORMPANEL')>-1){
-            f.belong = 'form';
-            return 'form'
-        }
-        else if(f.column){
-            f.belong = 'grid';
-            return 'grid'
-        }
-    },
-
-    listeners: {
-        focus: function(f) {
-            return true;
-		},
-		select:function(combo,record,eOpts){
-            var me = combo;
-            var dbfinds = me.dbfinds;
-            if(dbfinds&&dbfinds.length>0){
-                if(me.belong=='grid'){
-                    for (let index = 0; index < dbfinds.length; index++) {
-                        var item = dbfinds[index];
-                        debugger
-                        var field = me.ownerCt.down('[name='+item.to+']');
-                        if(field){
-                            var val = record.get(item.from);
-                            if(field.xtype=='dbfindtrigger'){
-                                field.setRawValue(val);
-                                field.value = val;
-                                field.lastTriggerValue=val;
-                            }else{
-                                field.setValue(val);
-                            }    
-                        }
-                    }
-                }else if(me.belong=='form'){
-                    for (let index = 0; index < dbfinds.length; index++) {
-                        var item = dbfinds[index];
-                        var field = me.ownerCt.down('[name='+item.to+']');
-                        if(field){
-                            var val = record.get(item.from);
-                            if(field.xtype=='dbfindtrigger'){
-                                field.setRawValue(val);
-                                field.value = val;
-                                field.lastTriggerValue=val;
-                            }else{
-                                field.setValue(val);
-                            }    
-                        }
-                    }
-                }
-            }
-        }
-    },
-
-    getValue: function(f) {
-        var me = this,val = me.rawToValue(me.processRawValue(me.getRawValue()));
-        me.value = val;
-        return val;
-    },
-
-    autoSetValue: function(data, dbfinds) {
-		var trigger = this;
-		var triggerV = null;
-		if (!trigger.ownerCt || trigger.column) { //如果是grid的dbfind
-			var grid = trigger.owner;
-			var record = grid.lastSelectedRecord || trigger.record || grid.getSelectionModel().selected.items[0] || grid.selModel.lastSelected; //detailgrid里面selected
-			Ext.Array.each(Ext.Object.getKeys(data),
-					function(k) {
-				Ext.Array.each(dbfinds,
-						function(ds) {
-					if (ds.trigger == trigger.name || Ext.isEmpty(ds.trigger)) {
-						if (Ext.Array.contains(ds.dbGridField.split(';'), k)) { //k == ds.dbGridField//支持多dbgrid的字段对应grid同一字段
-							if (ds.field == trigger.name) {
-								triggerV = data[k]; //trigger所在位置赋值
-							}
-							record.set(ds.field, data[k]);
-						}
-					}
-				});
-			});
-		} else {
-			var ff;
-			Ext.Array.each(Ext.Object.getKeys(data),
-					function(k) {
-				Ext.Array.each(dbfinds,
-						function(ds) {
-					if (k == ds.dbGridField) {
-							if (trigger.name == ds.field||trigger.name.substring(0,trigger.name.indexOf('-new'))==ds.field) {
-								triggerV = data[k];
-							} else {
-								ff = Ext.getCmp(ds.field);
-								if (ff && ff.setValue) ff.setValue(data[k]);
-							}
-					}
-				});
-			});
-		}
-		trigger.setValue(triggerV);
-		data.data = data;
-		trigger.lastTriggerValue='';
-		trigger.fireEvent('aftertrigger', trigger, data);
-		trigger.lastTriggerId = null;
-		trigger.lastQueryValue='';
-	}
-
-});

+ 92 - 40
frontend/saas-web/app/view/core/dbfind/MultiDbfindGridPanel.js

@@ -14,37 +14,29 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
         ignoreRightMouseSelection : false,
         listeners:{
             select:function(selModel,record,c,d){
-                var selectRecordArr = selModel.view.ownerCt.selectRecordArr;
-                selectRecordArr.push(record);
+                if(!selModel.noChange){
+                    var selectRecordArr = selModel.view.ownerCt.selectRecordArr;
+                    selectRecordArr.push(record);
+                }
             },
             deselect:function(selModel,record){
-                var selectRecordArr = selModel.view.ownerCt.selectRecordArr;
-                var index = -1;
-                index = selectRecordArr.findIndex(function(f){
-                    return f.id==record.id
-                });
-                if(index>-1){
-                    selectRecordArr.splice(index,1);
+                if(!selModel.noChange){
+                    var selectRecordArr = selModel.view.ownerCt.selectRecordArr;
+                    var index = -1;
+                    index = selectRecordArr.findIndex(function(f){
+                        return f.id==record.id
+                    });
+                    if(index>-1){
+                        selectRecordArr.splice(index,1);
+                    }
                 }
             }
-        },
-	    onHeaderClick: function(headerCt, header, e) {
-            console.log('header click');
-	        if (header.isCheckerHd) {
-	            e.stopEvent();
-	            var isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');
-	            if (isChecked && this.getSelection().length > 0) {//先全选,再筛选后再全选时,无法响应的bug
-	                this.deselectAll(true);
-	            } else {
-	                this.selectAll(true);
-	                this.view.ownerCt.selectall = true;
-	            }
-            }
-	    }
+         }
 	},
 
     initComponent: function() {
         var me = this;
+        me.selectRecordArr = [];
         if(me.columns){
             var fields = me.columns.map(column => column.dataIndex);
             me.store = Ext.create('Ext.data.Store',{
@@ -103,6 +95,31 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                     },'->',{
                         xtype:'button',
                         text:'新增'
+                    },{
+                        xtype:'button',
+                        text:'确定',
+                        cls:'x-formpanel-btn-blue',
+                        handler:function(b){
+                            var grid = me;//grid
+                            var selectRecordArr = grid.selectRecordArr;
+                            var dbfinds = grid.dbfinds;
+                            //点开放大镜的行
+                            var rec = grid.dbfindtrigger.column.ownerCt.ownerCt.selModel.getLastSelected();
+                            var mainGrid = grid.dbfindtrigger.column.ownerCt.ownerCt;
+                            Ext.Array.each(selectRecordArr,function(record,index) {
+                                Ext.Array.each(dbfinds,function(dbfind) {
+                                    if(rec){
+                                        var nowRec = grid.dbfindtrigger.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
+                                        nowRec.set(dbfind.to,record.get(dbfind.from));
+                                    }
+                                });
+                                var index = mainGrid.store.data.items.findIndex(function(f){
+                                    return f.id==rec.id
+                                });
+                                rec = mainGrid.store.data.getAt(index+1);
+                            });
+                            grid.ownerCt.close();
+                        }
                     }])
                 },{
                     xtype: 'pagingtoolbar',
@@ -121,28 +138,46 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                             var grid = me;
                             if(b.checked){
                                 grid.store.loadData(grid.selectRecordArr);
+                                grid.selModel.noChange = true;
+                                grid.selModel.deselectAll();
+                                grid.selModel.select(grid.selectRecordArr);
+                                grid.selModel.noChange = false;
                             }else{
+                                grid.selModel.noChange = true;
+                                grid.selModel.deselectAll();
+                                grid.selModel.select(grid.selectRecordArr);
+                                grid.selModel.noChange = false;
                                 grid.store.loadPage(1);
                             }
                         }
                     }],
                     moveFirst: function() {
-                        //if(Ext.getCmp('showSelectRecord').checked==false){
+                        if(Ext.getCmp('showSelectRecord').checked==false){
                             if (this.fireEvent('beforechange', this, 1) !== false) {
                                 this.store.loadPage(1);
+                                this.ownerCt.selModel.noChange = true;
+                                this.ownerCt.selModel.deselectAll();
+                                this.ownerCt.selModel.select(this.ownerCt.selectRecordArr);
+                                this.ownerCt.selModel.noChange = false;
                                 return true;
                             }
-                        //}
+                        }
                         return false;
                     },
                     movePrevious: function() {
                         var me = this,
                             store = me.store,
                             prev = store.currentPage - 1;
-                        if (prev > 0) {
-                            if (me.fireEvent('beforechange', me, prev) !== false) {
-                                store.previousPage();
-                                return true;
+                        if(Ext.getCmp('showSelectRecord').checked==false){
+                            if (prev > 0) {
+                                if (me.fireEvent('beforechange', me, prev) !== false) {
+                                    store.previousPage();
+                                    this.ownerCt.selModel.noChange = true;
+                                    this.ownerCt.selModel.deselectAll();
+                                    this.ownerCt.selModel.select(this.ownerCt.selectRecordArr);
+                                    this.ownerCt.selModel.noChange = false;
+                                    return true;
+                                }
                             }
                         }
                         return false;
@@ -152,10 +187,16 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                             store = me.store,
                             total = me.getPageData().pageCount,
                             next = store.currentPage + 1;
-                        if (next <= total) {
-                            if (me.fireEvent('beforechange', me, next) !== false) {
-                                store.nextPage();
-                                return true;
+                        if(Ext.getCmp('showSelectRecord').checked==false){
+                            if (next <= total) {
+                                if (me.fireEvent('beforechange', me, next) !== false) {
+                                    store.nextPage();
+                                    this.ownerCt.selModel.noChange = true;
+                                    this.ownerCt.selModel.deselectAll();
+                                    this.ownerCt.selModel.select(this.ownerCt.selectRecordArr);
+                                    this.ownerCt.selModel.noChange = false;
+                                    return true;
+                                }
                             }
                         }
                         return false;
@@ -163,9 +204,15 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                     moveLast: function() {
                         var me = this,
                             last = me.getPageData().pageCount;
-                        if (me.fireEvent('beforechange', me, last) !== false) {
-                            me.store.loadPage(last);
-                            return true;
+                        if(Ext.getCmp('showSelectRecord').checked==false){
+                            if (me.fireEvent('beforechange', me, last) !== false) {
+                                me.store.loadPage(last);
+                                this.ownerCt.selModel.noChange = true;
+                                this.ownerCt.selModel.deselectAll();
+                                this.ownerCt.selModel.select(this.ownerCt.selectRecordArr);
+                                this.ownerCt.selModel.noChange = false;
+                                return true;
+                            }
                         }
                         return false;
                     },
@@ -173,9 +220,15 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
                         var me = this,
                             store = me.store,
                             current = store.currentPage;
-                        if (me.fireEvent('beforechange', me, current) !== false) {
-                            store.loadPage(current);
-                            return true;
+                        if(Ext.getCmp('showSelectRecord').checked==false){
+                            if (me.fireEvent('beforechange', me, current) !== false) {
+                                store.loadPage(current);
+                                this.ownerCt.selModel.noChange = true;
+                                this.ownerCt.selModel.deselectAll();
+                                this.ownerCt.selModel.select(this.ownerCt.selectRecordArr);
+                                this.ownerCt.selModel.noChange = false;
+                                return true;
+                            }
                         }
                         return false;
                     },
@@ -256,7 +309,6 @@ Ext.define('saas.view.core.dbfind.MultiDbfindGridPanel', {
     },
 
     getCondition: function(f,conditionExpression){
-        debugger
         var condition = '';
         if((f.xtype == 'checkbox' || f.xtype == 'radio')&&f.logic){
             

+ 128 - 7
frontend/saas-web/app/view/core/dbfind/MultiDbfindTrigger.js

@@ -3,9 +3,13 @@
  * 改了下MultiDbfindTrigger的赋值方式,在grid中也会把多选的值用#号连接
  */
 Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
-	extend: 'Ext.form.field.Trigger',
+	extend: 'Ext.form.ComboBox',
 	alias: 'widget.multidbfindtrigger',
 	triggerCls: 'x-form-search-trigger',
+    queryMode: 'local',
+    displayField: 'dispaly',
+    valueField: 'value',
+    triggerCls: 'x-form-search-trigger',
     GridUtil: Ext.create('saas.util.GridUtil'),
     BaseUtil: Ext.create('saas.util.BaseUtil'),
     minChars:1, // 设置用户输入字符多少时触发查询
@@ -13,12 +17,94 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
     enableKeyEvents:true,
     initComponent:function() {
         var me = this;
-        this.callParent(arguments);
+        me.store=Ext.create('Ext.data.Store', {
+            fields: ['display','value'],
+            data : [{
+                'display':me.value,
+                'value':me.value
+            }]
+        });
+        this.callParent();
+    },
+    //输入值之后进行模糊查询
+    doQuery: function(queryString, forceAll, rawQuery) {
+    	queryString = queryString || '';
+    	var me = this;
+    	if(me.lastQueryValue!=queryString){
+    		me.judge(me);
+    		var field=[];
+    		var sfield='';
+            var dbfinds=me.dbfinds;
+            var dbtpls=me.dbtpls;
+            var dbCondition = me.dbCondition.replace(new RegExp("\\{0}","g"), queryString);
+    		me.lastQueryValue=queryString;
+            if(queryString.trim()==''){
+                me.collapse( );
+            }else{
+                if(!dbfinds||!dbtpls){
+                    me.collapse( );
+                }else{                   
+                    //加载tpl模板
+                    if(dbtpls.length>0){
+                        var span="";
+                        var width=0;
+                        for(var i=0;i<dbtpls.length;i++){
+                            if(i==0){
+                                span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;">{'+dbtpls[i].field+'}</span>';//display:block;
+                            }else{
+                                span=span+'<span style="width:'+dbtpls[i].width+'px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;float:left;">{'+dbtpls[i].field+'}</span>';
+                            }
+                            if(dbtpls[i].dbField=="true"){
+                                me.searchFieldArray=dbtpls[i].field;
+                            }
+                            width=width+dbtpls[i].width+20;
+                            field.push(dbtpls[i].field);
+                            sfield=sfield+dbtpls[i].field+',';
+                        }
+                        me.defaultListConfig.minWidth=width+10;
+                        me.defaultListConfig.maxHeight=210;
+                        me.defaultListConfig.autoScroll=true;
+                        me.searchField=sfield.substring(0,sfield.length-1);
+                        me.tpl=Ext.create('Ext.XTemplate',
+                                '<ul style="padding-left: 0px;"><tpl for=".">',
+                                '<li role="option" class="x-boundlist-item" style="list-style:none;">' ,
+                                '<div style="height:30px;">',
+                                ''+span+'',
+                                '</li>',
+                            '</tpl></ul>'
+                        );
+                        me.store.setFields(field);
+                    }
+                }
+                //加载数据
+                var data;
+                Ext.Ajax.request({
+                    url: me.dataUrl,
+                    params: {
+                        keyword:dbCondition
+                    },
+                    success: function(response, opts) {
+                        data = Ext.decode(response.responseText);
+                        data = data.data.list;
+                        if(data!=null && data.length>0 && me.store && field.length>0){
+                            me.store.loadData(data,false);
+                            me.expand();
+                        }else{
+                            me.collapse( );
+                        }
+                    },
+                    failure: function(response, opts) {}
+                });                
+            }
+            return true;
+    	}else{
+    		return false;
+    	}
     },
     onTriggerClick:function(f){
         //判断dbfindtrigger归属
-        var belong = f.judge(f);
-        var win = Ext.create('Ext.window.Window', {   
+        var form = f.judge(f);
+        var win = form.getController().getView().add(Ext.create('Ext.window.Window', {   
             trigger:f,
             belong:f.ownerCt,  
             modal:true,
@@ -40,18 +126,53 @@ Ext.define('saas.view.core.dbfind.MultiDbfindTrigger', {
                 dbSearchFields:f.dbSearchFields?f.dbSearchFields:[],
                 dbfindtrigger:f
             }]
-        });
+        }));
         win.show();
     },
 
+    listeners: {
+        select:function(combo,record,eOpts){
+            var me = combo;
+            var dbfinds = me.dbfinds;
+            if(dbfinds&&dbfinds.length>0){
+                if(me.belong=='grid'){
+                    for (let index = 0; index < dbfinds.length; index++) {
+                        var item = dbfinds[index];
+                        var rec = me.column.ownerCt.ownerCt.selModel.getLastSelected();
+                        var nowRec = me.column.ownerCt.ownerCt.store.getData().getByKey(rec.id);
+                        nowRec.set(item.to,record.get(item.from));
+                        if(me.name==item.to){
+                            me.column.getEditor().setValue(record.get(item.from));
+                        }
+                    }
+                }else if(me.belong=='form'){
+                    for (let index = 0; index < dbfinds.length; index++) {
+                        var item = dbfinds[index];
+                        var field = me.ownerCt.down('[name='+item.to+']');
+                        if(field){
+                            var val = record.get(item.from);
+                            if(field.xtype=='dbfindtrigger'){
+                                field.setRawValue(val);
+                                field.value = val;
+                                field.lastTriggerValue=val;
+                            }else{
+                                field.setValue(val);
+                            }    
+                        }
+                    }
+                }
+            }
+        }
+    },
+
     judge:function(f){
         if(f.ownerCt.xtype.trim().toUpperCase().indexOf('FORMPANEL')>-1){
             f.belong = 'form';
-            return 'form'
+            return f.ownerCt
         }
         else if(f.column){
             f.belong = 'grid';
-            return 'grid'
+            return f.column.ownerCt.ownerCt.ownerCt
         }
     }
 });

+ 1 - 2
frontend/saas-web/app/view/core/form/FormPanelController.js

@@ -36,7 +36,6 @@ Ext.define('saas.view.core.form.FormPanelController', {
     },
     
     delete: function(){
-        debugger;
         var me = this;
         var form = this.getView();
         var id = form.getForm().findField(form._idField);
@@ -137,7 +136,7 @@ Ext.define('saas.view.core.form.FormPanelController', {
             Ext.each(gridData, function(item,index){
                 if(item.dirty){
                     if((typeof item.data.id) != "number" && item.data.id.indexOf('extMode')>-1){
-                        item.data.id = '';
+                        item.data.id = 0;
                     }
                     dirtyGridData.push(item.data)
                 }

+ 0 - 7
frontend/saas-web/app/view/core/form/field/DetailGridField.js

@@ -52,13 +52,6 @@ Ext.define('saas.view.core.form.field.DetailGridField', {
                     handler: function() {
                         me.swapDown();
                     }
-                }, {
-                    text: 'Debugger',
-                    handler: function() {
-                        var detailGrid = me;
-                        var form = detailGrid.up('form');
-                        debugger;
-                    }
                 }]
             }]
         });

+ 0 - 1
frontend/saas-web/app/view/core/query/QueryGridPanel.js

@@ -175,7 +175,6 @@ Ext.define('saas.view.core.query.QueryGridPanel', {
     },
     listeners: {
         itemdblClick: function (tableView, record, item, index, e, eOpts) {
-            debugger
             var grid = tableView.up('grid'),
                 mainTab = Ext.getCmp('main-tab-panel'),
                 idValue = record.get(grid._idField),

+ 2 - 2
frontend/saas-web/app/view/document/kind/ChildForm.js

@@ -13,7 +13,6 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
           if(w.record){
               w.down('form').loadRecord(w.record);
           }
-
       }
     },
     initComponent:function(){
@@ -99,7 +98,8 @@ Ext.define('KitchenSink.view.binding.ChildForm', {
     onCancel:function(){
         alert('cancel');
         this.hide();
-    }
+    },
+
 
 
 });

+ 2 - 4
frontend/saas-web/app/view/document/kind/Kind.js

@@ -9,13 +9,10 @@ Ext.define('saas.view.document.kind.Kind', {
         type: 'document-kind'
     },
     tbar: [{
-        xtype: 'label',
-        text: '类型:',
-        padding: '0 0 0 5'
-    }, {
         xtype: 'segmentedbutton',
         reference: 'dataKind',
         value: 'customerkind',
+        bind:'{segmented}',
         items: [{
             text: '客户',
             value: 'customerkind'
@@ -51,6 +48,7 @@ Ext.define('saas.view.document.kind.Kind', {
         reference: 'document-kind-Grid',
         margin: '10 0 0 0',
         flex: 1,
+        frame:true,
         bind:{
             selection: '{selectedCompany}'
         },

+ 5 - 5
frontend/saas-web/app/view/main/MainModel.js

@@ -459,27 +459,27 @@ Ext.define('saas.view.main.MainModel', {
                                 children: [
                                     {
                                         text: '客户类别',
-                                        viewType: 'mainlist',
+                                        viewType: 'document-kind',
                                         leaf: true
                                     },
                                     {
                                         text: '供应商类别',
-                                        viewType: 'mainlist',
+                                        viewType: 'document-kind',
                                         leaf: true
                                     },
                                     {
                                         text: '商品类别',
-                                        viewType: 'mainlist',
+                                        viewType: 'document-kind',
                                         leaf: true
                                     },
                                     {
                                         text: '支出类别',
-                                        viewType: 'mainlist',
+                                        viewType: 'document-kind',
                                         leaf: true
                                     },
                                     {
                                         text: '收入类别',
-                                        viewType: 'mainlist',
+                                        viewType: 'document-kind',
                                         leaf: true
                                     },
                                     {

+ 0 - 1
frontend/saas-web/app/view/test/myform/FormPanelController.js

@@ -5,7 +5,6 @@ Ext.define('saas.view.test.myform.FormPanelController', {
     control: {
         'form': {
             afterSetItems: function(form) {
-                // debugger;
                 // viewModel.notify();
                 // formPanel.getForm().getFields().each(function(field) {
                 //     field.resetOriginalValue();

+ 25 - 9
frontend/saas-web/app/view/test/order/FormController.js

@@ -11,31 +11,36 @@ Ext.define('saas.view.test.order.FormController', {
 
                 }
             },
-            //放大镜赋值关系 以及 tpl模板
+            //主表单选放大镜模板
             'dbfindtrigger[name=pu_vendcode]':{
                 beforerender:function(f){
                     Ext.apply(f,{
+                        //数据接口
                         dataUrl:'http://192.168.253.41:9480/api/document/vendor/getVendorsByCondition',
+                        //赋值 
                         dbfinds:[{
                             from:'ve_code',to:'pu_vendcode'
                         },{
                             from:'ve_name',to:'pu_vendname'
                         }],
+                        //联想设置
                         dbtpls:[{
                             field:'ve_code',width:100
                         },{
                             field:'ve_name',width:100
                         }],
+                        //联想查询条件
+                        dbCondition:"CONCAT(ve_code, ve_name) like '{0}%'",
+                        //放大镜窗口字段
                         dbSearchFields:[{
                             xtype : "textfield", 
                             name : "ve_name", 
-                            conditionExpression:"ve_name like '{0}%'",
+                            conditionExpression:"ve_name like '{0}%'",//传入后台条件  替换占位符
                             fieldLabel : "供应商名称", 
-                            allowBlank : true, 
                             columnWidth : 0.25
                         }],
+                        //放大镜窗口列表
                         dbColumns:[{
-                            conditionCode:'ve_id',
                             "text": "供应商ID",
                             "flex": 0,
                             "dataIndex": "ve_id",
@@ -43,7 +48,6 @@ Ext.define('saas.view.test.order.FormController', {
                             "xtype": "",
                             "items": null
                         },{
-                            conditionCode:'ve_code',
                             "text": "供应商编号",
                             "flex": 1,
                             "dataIndex": "ve_code",
@@ -51,14 +55,12 @@ Ext.define('saas.view.test.order.FormController', {
                             "xtype": "",
                             "items": null
                         }, {
-                            conditionCode:'ve_name',
                             "text": "供应商名称",
                             "flex": 1,
                             "dataIndex": "ve_name",
                             "xtype": "",
                             "items": null
                         }, {
-                            conditionCode:'ve_type',
                             "text": "供应商类型",
                             "flex": 0,
                             "dataIndex": "ve_type",
@@ -70,21 +72,27 @@ Ext.define('saas.view.test.order.FormController', {
 
                 }
             },
-            //放大镜赋值关系 以及 tpl模板
+            //从表单选放大镜赋值关系 以及 tpl模板
             'dbfindtrigger[name=pd_prodcode]':{
                 beforerender:function(f){
                     Ext.apply(f,{
+                        //数据接口
                         dataUrl:'http://192.168.253.41:9480/api/document/product/getProductsByCondition',
+                        //放大镜赋值设置
                         dbfinds:[{
                             from:'pr_code',to:'pd_prodcode'
                         },{
                             from:'pr_unit',to:'pd_unit'
                         }],
+                        //联想查询条件
+                        dbCondition:"CONCAT(pr_code, pr_detail) like '{0}%'",
+                        //联想设置
                         dbtpls:[{
                             field:'pr_code',width:100
                         },{
                             field:'pr_detail',width:100
                         }],
+                        //窗口字段设置
                         dbSearchFields:[{
                             emptyText:'输入物料编号或物料名称',
                             xtype : "textfield", 
@@ -93,6 +101,7 @@ Ext.define('saas.view.test.order.FormController', {
                             allowBlank : true, 
                             columnWidth : 0.25
                         }],
+                        //窗口列设置
                         dbColumns:[{
                             "text": "物料ID",
                             "flex": 0,
@@ -125,21 +134,27 @@ Ext.define('saas.view.test.order.FormController', {
 
                 }
             },
-            //放大镜赋值关系 以及 tpl模板
+            //从表多选放大镜赋值关系 以及 tpl模板
             'multidbfindtrigger[name=pd_prodcode]':{
                 beforerender:function(f){
                     Ext.apply(f,{
+                        //数据接口
                         dataUrl:'http://192.168.253.41:9480/api/document/product/getProductsByCondition',
+                        //放大镜赋值设置
                         dbfinds:[{
                             from:'pr_code',to:'pd_prodcode'
                         },{
                             from:'pr_unit',to:'pd_unit'
                         }],
+                        //联想查询条件
+                        dbCondition:"CONCAT(pr_code, pr_detail) like '{0}%'",
+                        //联想设置
                         dbtpls:[{
                             field:'pr_code',width:100
                         },{
                             field:'pr_detail',width:100
                         }],
+                        //窗口字段设置
                         dbSearchFields:[{
                             emptyText:'输入物料编号或物料名称',
                             xtype : "textfield", 
@@ -148,6 +163,7 @@ Ext.define('saas.view.test.order.FormController', {
                             allowBlank : true, 
                             columnWidth : 0.25
                         }],
+                        //窗口列设置
                         dbColumns:[{
                             "text": "物料ID",
                             "flex": 0,

+ 2 - 0
frontend/saas-web/app/view/test/order/FormPanel.js

@@ -5,6 +5,8 @@ Ext.define('saas.view.test.order.FormPanel', {
     controller: 'test-order-formcontroller',
     viewModel: 'test-order-formmodel',
     
+    caller:'Purchase',
+
     //字段属性
     _title:'采购单',
     _idField: 'id',