瀏覽代碼

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

Min 1 年之前
父節點
當前提交
6a3370a2c8
共有 81 個文件被更改,包括 68613 次插入272 次删除
  1. 34 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/BusinessOpportunityController.java
  2. 6 2
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/BusinessOpportunity.java
  3. 4 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/mapper/BusinessOpportunityMapper.java
  4. 4 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/BusinessOpportunityService.java
  5. 21 2
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/BusinessOpportunityServiceImpl.java
  6. 2 2
      fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/BusinessItemProductMapper.xml
  7. 11 1
      fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/BusinessOpportunityMapper.xml
  8. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java
  9. 95 232
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  10. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml
  11. 63 27
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  12. 6 3
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  13. 25 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/components/CodeEditor.vue.d.ts
  14. 22 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/components/ComponentGroup.vue.d.ts
  15. 680 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/config/index.d.ts
  16. 79 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/design/DesignForm.vue.d.ts
  17. 16 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/design/FormConfig.vue.d.ts
  18. 20 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/design/WidgetConfig.vue.d.ts
  19. 22 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/design/WidgetForm.vue.d.ts
  20. 25 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/design/WidgetFormItem.vue.d.ts
  21. 43 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/generate/GenerateForm.vue.d.ts
  22. 26 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/generate/GenerateFormItem.vue.d.ts
  23. 1 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.css
  24. 4 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.d.ts
  25. 31402 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.es.js
  26. 1 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.es.js.map
  27. 21 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@types/web-bluetooth/LICENSE
  28. 16 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@types/web-bluetooth/README.md
  29. 176 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@types/web-bluetooth/index.d.ts
  30. 40 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@types/web-bluetooth/package.json
  31. 21 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/LICENSE
  32. 123 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/README.md
  33. 6075 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/index.cjs
  34. 4305 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/index.d.ts
  35. 6164 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/index.iife.js
  36. 1 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/index.iife.min.js
  37. 5920 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/index.mjs
  38. 1 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/metadata.cjs
  39. 1 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/metadata.d.ts
  40. 1 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/metadata.mjs
  41. 16 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-fix
  42. 17 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-fix.cmd
  43. 28 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-fix.ps1
  44. 16 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-switch
  45. 17 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-switch.cmd
  46. 28 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-switch.ps1
  47. 21 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/LICENSE
  48. 1548 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/index.cjs
  49. 874 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/index.d.ts
  50. 1638 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/index.iife.js
  51. 1 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/index.iife.min.js
  52. 1442 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/index.mjs
  53. 50 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/package.json
  54. 21 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/LICENSE
  55. 228 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/README.md
  56. 3 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/bin/vue-demi-fix.js
  57. 3 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/bin/vue-demi-switch.js
  58. 29 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/index.cjs
  59. 22 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/index.d.ts
  60. 119 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/index.iife.js
  61. 34 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/index.mjs
  62. 60 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2.7/index.cjs
  63. 38 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2.7/index.d.ts
  64. 80 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2.7/index.mjs
  65. 34 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2/index.cjs
  66. 33 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2/index.d.ts
  67. 49 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2/index.mjs
  68. 29 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v3/index.cjs
  69. 22 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v3/index.d.ts
  70. 34 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v3/index.mjs
  71. 47 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/package.json
  72. 19 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/scripts/postinstall.js
  73. 18 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/scripts/switch-cli.js
  74. 62 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/scripts/utils.js
  75. 59 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/package.json
  76. 21 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/LICENSE
  77. 2107 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/index.cjs
  78. 75 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/index.d.ts
  79. 2059 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/index.json
  80. 2093 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/index.mjs
  81. 39 0
      fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/package.json

+ 34 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/BusinessOpportunityController.java

@@ -52,6 +52,40 @@ public class BusinessOpportunityController {
         return bOservice.exportData(bo,request);
     }
 
+    // 批量放入回收站
+    @RequestMapping("delete")
+    public Object delete(BusinessOpportunity bo) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String ids1 = bo.getIds();
+        List<Integer> ids = new ArrayList<>();
+        if (!ids1.isEmpty()) {
+            for (String id : ids1.split(",")) {
+                ids.add(Integer.parseInt(id));
+            }
+            bOservice.isDelete(ids);
+            msg.setMsg("操作成功");
+        } else {
+            msg.setError("请选择线索");
+
+        }
+        return msg;
+    } @RequestMapping("rollBack")
+    public Object rollBack(BusinessOpportunity bo) {
+        HttpRespMsg msg = new HttpRespMsg();
+        String ids1 = bo.getIds();
+        List<Integer> ids = new ArrayList<>();
+        if (!ids1.isEmpty()) {
+            for (String id : ids1.split(",")) {
+                ids.add(Integer.parseInt(id));
+            }
+            bOservice.isRollBack(ids);
+            msg.setMsg("操作成功");
+        } else {
+            msg.setError("请选择线索");
+
+        }
+        return msg;
+    }
     @RequestMapping("insertAndUpdate")
     public HttpRespMsg insertAndUpdate( BusinessOpportunity bo, HttpServletRequest request) {
         User user = userMapper.selectById(request.getHeader("Token"));

+ 6 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/BusinessOpportunity.java

@@ -11,9 +11,11 @@ import java.io.Serializable;
 import java.util.Date;
 import java.util.List;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * <p>
@@ -76,10 +78,12 @@ public class BusinessOpportunity extends Model<BusinessOpportunity> {
      * 预计成交日期
      */
     @TableField("expected_transaction_date")
-    private LocalDateTime expectedTransactionDate;
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date expectedTransactionDate;
 
     /**
-     * 商机阶段 0-验证客户 1-需求分析 2-方案报价 3-赢单
+     * 商机阶段
      */
     @TableField("stage_id")
     private Integer stageId;

+ 4 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/mapper/BusinessOpportunityMapper.java

@@ -25,4 +25,8 @@ public interface BusinessOpportunityMapper extends BaseMapper<BusinessOpportunit
     int getTotal(BusinessOpportunity bo);
     int getTotal1(@Param("bo") BusinessOpportunity bo,@Param("userId") String userId);
     int getTotal2(@Param("bo") BusinessOpportunity bo,@Param("userId") String userId);
+
+    BusinessOpportunity selectByIdToInfo(Integer id);
+
+    void updateBatchById(List<Integer> ids);
 }

+ 4 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/BusinessOpportunityService.java

@@ -48,4 +48,8 @@ public interface BusinessOpportunityService extends IService<BusinessOpportunity
     Object deleteFile(UploadFile file, HttpServletRequest request);
 
     Object reFileName(UploadFile uploadFile, HttpServletRequest request);
+
+    void isDelete(List<Integer> ids);
+
+    void isRollBack(List<Integer> ids);
 }

+ 21 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/BusinessOpportunityServiceImpl.java

@@ -75,7 +75,7 @@ public class BusinessOpportunityServiceImpl extends ServiceImpl<BusinessOpportun
 
     @Override
     public BusinessOpportunity getInfo(BusinessOpportunity bo, User user) {
-        BusinessOpportunity businessOpportunity = bOMapper.selectById(bo.getId());
+        BusinessOpportunity businessOpportunity = bOMapper.selectByIdToInfo(bo.getId());
         businessOpportunity.setActionLogList(actionLogMapper.selectList(new QueryWrapper<ActionLog>().eq("item_id", bo.getId()).eq("code", "business")));
         businessOpportunity.setUploadFilePList(uploadFileMapper.selectByInfoList("business",bo.getId()));
         businessOpportunity.setTaskList(taskMapper.selectList(new QueryWrapper<Task>().eq("business_opportunity_id",bo.getId())));
@@ -93,7 +93,7 @@ public class BusinessOpportunityServiceImpl extends ServiceImpl<BusinessOpportun
                 // 折后价格
                 discountedPrice = discountedPrice.add(price.multiply(divide));
             }
-            BigDecimal divide = discountedPrice.divide(finalPrice);
+            BigDecimal divide = discountedPrice.divide(finalPrice,2,BigDecimal.ROUND_UP);
             // 整单折扣率
             businessOpportunity.setFinalPrice(divide.multiply(new BigDecimal(100)));
         }
@@ -340,6 +340,25 @@ public class BusinessOpportunityServiceImpl extends ServiceImpl<BusinessOpportun
         return uploadFileMapper.update(null, new UpdateWrapper<UploadFile>().eq("id", uploadFile.getId()).set("name", uploadFile.getName()));
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void isDelete(List<Integer> ids) {
+        UpdateWrapper<BusinessOpportunity> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.in("id", ids);
+        BusinessOpportunity bo = new BusinessOpportunity();
+        bo.setIsDelete(1);
+        bOMapper.update(bo, updateWrapper);
+    }
+
+    @Override
+    public void isRollBack(List<Integer> ids) {
+        UpdateWrapper<BusinessOpportunity> updateWrapper = new UpdateWrapper<>();
+        updateWrapper.in("id", ids);
+        BusinessOpportunity bo = new BusinessOpportunity();
+        bo.setIsDelete(0);
+        bOMapper.update(bo, updateWrapper);
+    }
+
     private BusinessOpportunity setNull(BusinessOpportunity bo) {
         if (bo.getPlate1() == "") {
             bo.setPlate1(null);

+ 2 - 2
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/BusinessItemProductMapper.xml

@@ -25,11 +25,11 @@
                p.price price,
                (select `name` from sys_dict where id = p.unit and code = 'ProductUnit') unit,
                (select `name` from sys_dict where id = p.type and code = 'ProductType') productType,
-               p.inventory inventory,
+               p.inventory inventory
         from business_item_product i
                  left join product p on i.product_id = p.id
 --         left join sys_dict d on
-        where business_id = #{id}
+        where i.business_id = #{id}
     </select>
 
 </mapper>

+ 11 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/BusinessOpportunityMapper.xml

@@ -230,7 +230,17 @@
             and id in (select business_id from business_product where product_id = #{productId})
         </if>
     </select>
-
+    <select id="selectByIdToInfo" resultType="com.management.platform.entity.BusinessOpportunity">
+        SELECT *,
+               (select `name` from stage where id = stage_id)          stageValue,
+               (select custom_name from custom where id = customer_id) customerName,
+               (select `name` from contacts where id = contacts_id)    contactsName,
+               (select `name` from `user` where id = contacts_id)      inchargerName,
+               (select `name` from `user` where id = creator_id)       creatorName,
+               (SELECT sum(total) from business_product WHERE business_id = id)
+        from business_opportunity
+        where id = #{id}
+    </select>
 
 
 </mapper>

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -92,12 +92,12 @@ public interface ReportMapper extends BaseMapper<Report> {
     List<Map<String, Object>> getReportNameByDateAndDept(@Param("date") String date,
                                                          @Param("deptIds") List<Integer> deptIds,
                                                          @Param("userId") String userId,
-                                                         @Param("companyId") Integer companyId, Integer pageStart, Integer pageSize);
+                                                         @Param("companyId") Integer companyId, String viewUserId, Integer pageStart, Integer pageSize);
 
     Integer getReportNameByDateAndDeptCount(@Param("date") String date,
                                                          @Param("deptIds") List<Integer> deptIds,
                                                          @Param("userId") String userId,
-                                                         @Param("companyId") Integer companyId);
+                                                         @Param("companyId") Integer companyId, String viewUserId);
     List<Map<String, Object>> getDetailByStateInMyProfession(@Param("state") Integer state,
                                                @Param("companyId") Integer companyId,
                                                @Param("leaderId") String leaderId);

+ 95 - 232
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -237,206 +237,39 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             //首先根据日期获取当天所有提交过日志的人
             String userId = request.getHeader("Token");
             User user = userMapper.selectById(userId);
-            TimeType timeType = timeTypeMapper.selectById(user.getCompanyId());
+            String viewUserId = user.getId();
+            Integer companyId = user.getCompanyId();
+            TimeType timeType = timeTypeMapper.selectById(companyId);
             List<Map<String, Object>> nameList = new ArrayList<>();
             List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全公司工时");
             Integer totalMembCount = 0;
             if (functionList.size() == 0) {
-                String leaderId = user.getId();
-                //不是项目经理,只看自己的报告
                 List<Map<String, Object>> list = new ArrayList<>();
-                //没有指定员工或者指定的就是自己
-                if (targetUid == null || targetUid.equals(user.getId())) {
-                    //查看自己的日报
-                    if (pageIndex != null && pageIndex == 0) {
-                        //仅第一页显示自己的
-                        Map<String, Object> map = new HashMap<>();
-                        map.put("id", user.getId());
-                        map.put("name", user.getName());
-                        List<String> uids = new ArrayList<>();
-                        uids.add(user.getId());
-                        list = reportMapper.getUserReportByDateOrId(date, uids, null);
-                        if (list.size() > 0) {
-                            //个人日报
-                            nameList.add(map);
-                            map.put("data", list);
-                            double reportTime = 0;
-                            BigDecimal total = new BigDecimal(0);
-                            int state = (int)list.get(0).get("state");
-                            boolean hasDeny = false;
-                            boolean hasWaiting = false;
-                            for (Map<String, Object> m : list) {
-                                double t = (double) m.get("time");
-                                reportTime += t;
-                                total = total.add((BigDecimal)m.get("cost"));
-                                int curState = (int)m.get("state");
-                                if (curState == 2) {
-                                    hasDeny = true;
-                                }
-                                if (curState == 0) {
-                                    hasWaiting = true;
-                                }
-                            }
-                            if(hasDeny) {
-                                state = 2;
-                            } else if (hasWaiting) {
-                                state = 0;
-                            }
-                            DecimalFormat df = new DecimalFormat("0.00");
-                            map.put("reportTime", df.format(reportTime));
-                            map.put("cost", total);
-                            map.put("state", state);
-                        }
+                List<Integer> allVisibleDeptIdList = null;
+                if (deptId != null) {
+                    //指定了部门进行查看
+                    allVisibleDeptIdList = new ArrayList<>();
+                    allVisibleDeptIdList.add(deptId);
+                    //找到该部门的所有子部门
+                    List<Department> allDepts = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+                    Optional<Department> first = allDepts.stream().filter(d -> d.getDepartmentId().equals(deptId)).findFirst();
+                    if (first.isPresent()) {
+                        Department department = first.get();
+                        //递归获取全部子部门
+                        List<Department> deptList = getSubDepts(department, allDepts);
+                        deptList.add(department);
+                        List<Integer> ids = deptList.stream().map(Department::getDepartmentId).collect(Collectors.toList());
+                        allVisibleDeptIdList.addAll(ids);
                     }
+                } else {
+                    allVisibleDeptIdList = getAllVisibleDeptIdList(user, null);
                 }
-
-                List<Integer> allVisibleDeptIdList = getAllVisibleDeptIdList(user, null);
                 //需要看可见部门(部门主要负责人和其他负责人以及查看本部门工时权限)所有人员的日报
-                if (allVisibleDeptIdList.size() > 0) {
-                    if (nameList.size() > 0) {
-                        //自己填写的日报
-                        List<Map<String, Object>> deptNameList = reportMapper.getReportNameByDateAndDept(date,
-                                allVisibleDeptIdList, targetUid, null, pageStart, pageSize);
-                        totalMembCount = reportMapper.getReportNameByDateAndDeptCount(date, allVisibleDeptIdList, targetUid, null);
-                        for (Map<String, Object> deptNameItem : deptNameList) {
-                            if (!deptNameItem.get("id").equals(user.getId())) {
-                                nameList.add(deptNameItem);
-                            }
-                        }
-                    } else {
-                        nameList = reportMapper.getReportNameByDateAndDept(date,
-                                allVisibleDeptIdList, targetUid, null, pageStart, pageSize);
-                        totalMembCount = reportMapper.getReportNameByDateAndDeptCount(date, allVisibleDeptIdList, targetUid, null);
-                    }
-                    if (nameList.size() > 0) {
-                        List<String> userIds = new ArrayList<>();
-                        nameList.forEach(n->{
-                            String id = (String) n.get("id");
-                            userIds.add(id);
-                        });
-                        List<Map<String, Object>> reportList = reportMapper.getUserReportByDateOrId(date, userIds, null);
-                        for (Map<String, Object> memb : nameList) {
-                            //再根据人分别获取当天的报告
-                            List<Map<String, Object>> rList = new ArrayList<Map<String, Object>>();
-                            BigDecimal total = new BigDecimal(0);
-                            for (Map<String, Object> report : reportList) {
-                                if (((String)report.get("creatorId")).equals((String)memb.get("id"))) {
-                                    rList.add(report);
-                                    total = total.add((BigDecimal) report.get("cost"));
-                                }
-                            }
-                            memb.put("data", rList);
-                            memb.put("cost", total);
-                            double reportTime = 0;
-                            if (rList.size() > 0) {
-                                int state = 1;
-                                for (Map<String, Object> m : rList) {
-                                    double t = (double) m.get("time");
-                                    reportTime += t;
-
-                                    //取最低的状态
-                                    if (state == 2) {
-                                        continue;
-                                    }
-                                    if (state == 0) {
-                                        if ((int)m.get("state") == 2) {
-                                            state = 2;
-                                        } else {
-                                            continue;
-                                        }
-                                    } else {
-                                        state = (int)m.get("state");
-                                    }
-                                }
-                                memb.put("state", state);
-                            }
-                            DecimalFormat df = new DecimalFormat("0.00");
-                            memb.put("reportTime", df.format(reportTime));
-                        }
-                    }
-                }
-                if(deptId==null&&targetUid==null){
-                    //担任项目经理或者日报审核人,查找相关的人员的日报
-                    List<Map<String, Object>> puserNames = reportMapper.getReportNameByDate(date, user.getCompanyId(), leaderId);
-                    List<Map<String, Object>> inchargeReportList= reportMapper.getInchargeReportByDate(date, leaderId, null);
-
-                    if ((timeType.getReportAuditType() == 5 || timeType.getReportAuditType() == 6)&& timeType.getReportCc() == 1) {
-                        //存在抄送人的设置,需要把抄送人的项目相关日报也加上
-                        List<Map<String, Object>> viewUserNames = reportMapper.getCcReportNameByDate(date, user.getCompanyId(),leaderId);
-                        for (Map<String, Object> viewItem : viewUserNames) {
-                            boolean exists = false;
-                            for (Map<String, Object> u : puserNames) {
-                                if (u.get("id").equals(viewItem.get("id"))) {
-                                    exists = true;
-                                    break;
-                                }
-                            }
-                            if (!exists) {
-                                puserNames.add(viewItem);
-                            }
-                        }
-
-                        List<Map<String, Object>> viewReportList = reportMapper.getCcReportByDate(date, leaderId, null);
-                        for (Map<String, Object> viewItem : viewReportList) {
-                            boolean exists = false;
-                            for (Map<String, Object> u : inchargeReportList) {
-                                if (u.get("id").equals(viewItem.get("id"))) {
-                                    exists = true;
-                                    break;
-                                }
-                            }
-                            if (!exists) {
-                                inchargeReportList.add(viewItem);
-                            }
-                        }
-                    }
-                    for (Map<String, Object> map2 : puserNames) {
-
-                        if (nameList.size() > 0) {
-                            String myUserId = (String)nameList.get(0).get("id");
-                            if (myUserId.equals(map2.get("id"))) {
-                                //自己的报告,之前已经添加过了,排重
-                                continue;
-                            }
-                        }
-                        List<Object> collect = nameList.stream().map(nl -> nl.get("")).collect(Collectors.toList());
-                        if(!collect.contains(map2.get("id"))){
-                            nameList.add(map2);
-                        }
-                        //再根据人分别获取当天的报告
-                        List<Map<String, Object>> list2 =
-                                inchargeReportList.stream().filter(i->i.get("creatorId").equals(map2.get("id"))).collect(Collectors.toList());
-                        map2.put("data", list2);
-
-                        double reportTime = 0;
-                        BigDecimal total = new BigDecimal(0);
-                        int state = 1;
-                        for (Map<String, Object> m : list2) {
-                            double t = (double) m.get("time");
-                            reportTime += t;
-                            total = total.add((BigDecimal)m.get("cost"));
-                            //取最低的状态
-                            if (state == 2) {
-                                continue;
-                            }
-                            if (state == 0) {
-                                if ((int)m.get("state") == 2) {
-                                    state = 2;
-                                } else {
-                                    continue;
-                                }
-                            } else {
-                                state = (int)m.get("state");
-                            }
-                        }
-                        DecimalFormat df = new DecimalFormat("0.00");
-                        map2.put("reportTime", df.format(reportTime));
-                        map2.put("cost", total);
-                        map2.put("state", state);
-                    }
-                }
+                nameList = reportMapper.getReportNameByDateAndDept(date,
+                        allVisibleDeptIdList.size() > 0?allVisibleDeptIdList:null, targetUid, companyId, (deptId == null?viewUserId:null), pageStart, pageSize);
+                totalMembCount = reportMapper.getReportNameByDateAndDeptCount(date, allVisibleDeptIdList.size() > 0?allVisibleDeptIdList:null, targetUid, companyId, (deptId == null?viewUserId:null));
             } else {
-                Integer companyId = userMapper.selectById(request.getHeader("Token")).getCompanyId();
+                //查看全公司的数据
                 List<Integer> ids = null;
                 if (deptId != null) {
                     if (deptId == 0) {
@@ -457,53 +290,53 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                 }
                 nameList = reportMapper.getReportNameByDateAndDept(date,
-                        ids, targetUid, companyId, pageStart, pageSize);
-                totalMembCount = reportMapper.getReportNameByDateAndDeptCount(date, ids, targetUid, companyId);
-                if (nameList.size() > 0) {
-                    List<String> userIds = new ArrayList<>();
-                    nameList.forEach(n->{
-                        String id = (String) n.get("id");
-                        userIds.add(id);
-                    });
-                    List<Map<String, Object>> reportList = reportMapper.getUserReportByDateOrId(date, userIds, null);
-                    for (Map<String, Object> map : nameList) {
-                        //再根据人分别获取当天的报告
-                        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
-                        BigDecimal total = new BigDecimal(0);
-                        for (Map<String, Object> report : reportList) {
-                            if (((String)report.get("creatorId")).equals((String)map.get("id"))) {
-                                list.add(report);
-                                total = total.add((BigDecimal) report.get("cost"));
-                            }
-
+                        ids, targetUid, companyId, null, pageStart, pageSize);
+                totalMembCount = reportMapper.getReportNameByDateAndDeptCount(date, ids, targetUid, companyId, null);
+            }
+            if (nameList.size() > 0) {
+                List<String> userIds = new ArrayList<>();
+                nameList.forEach(n->{
+                    String id = (String) n.get("id");
+                    userIds.add(id);
+                });
+                List<Map<String, Object>> reportList = reportMapper.getUserReportByDateOrId(date, userIds, null);
+                for (Map<String, Object> memb : nameList) {
+                    //再根据人分别获取当天的报告
+                    List<Map<String, Object>> rList = new ArrayList<Map<String, Object>>();
+                    BigDecimal total = new BigDecimal(0);
+                    for (Map<String, Object> report : reportList) {
+                        if (((String)report.get("creatorId")).equals((String)memb.get("id"))) {
+                            rList.add(report);
+                            total = total.add((BigDecimal) report.get("cost"));
                         }
-                        map.put("data", list);
-                        map.put("cost", total);
-                        double reportTime = 0;
-                        if (list.size() > 0) {
-                            int state = 1;
-                            for (Map<String, Object> m : list) {
-                                double t = (double) m.get("time");
-                                reportTime += t;
-                                //取最低的状态
-                                if (state == 2) {
-                                    continue;
-                                }
-                                if (state == 0) {
-                                    if ((int)m.get("state") == 2) {
-                                        state = 2;
-                                    } else {
-                                        continue;
-                                    }
+                    }
+                    memb.put("data", rList);
+                    memb.put("cost", total);
+                    double reportTime = 0;
+                    if (rList.size() > 0) {
+                        int state = 1;
+                        for (Map<String, Object> m : rList) {
+                            double t = (double) m.get("time");
+                            reportTime += t;
+
+                            //取最低的状态
+                            if (state == 2) {
+                                continue;
+                            }
+                            if (state == 0) {
+                                if ((int)m.get("state") == 2) {
+                                    state = 2;
                                 } else {
-                                    state = (int)m.get("state");
+                                    continue;
                                 }
+                            } else {
+                                state = (int)m.get("state");
                             }
-                            map.put("state", state);
                         }
-                        DecimalFormat df = new DecimalFormat("0.00");
-                        map.put("reportTime", df.format(reportTime));
+                        memb.put("state", state);
                     }
+                    DecimalFormat df = new DecimalFormat("0.00");
+                    memb.put("reportTime", df.format(reportTime));
                 }
             }
 
@@ -7067,6 +6900,36 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         if (defaultDegree!=null && "-1".equals(defaultDegree.get("id").toString())){
             defaultDegree = null;
         }
+        //如果该项目已经没有绑定该维度,则取消
+        if (defaultDegree != null) {
+            Integer degreeId = (Integer) defaultDegree.get("id");
+            Integer companyId = user.getCompanyId();
+            TimeType timeType = timeTypeMapper.selectById(companyId);
+            List<ReportExtraDegree> extraDegreeList = reportExtraDegreeMapper.selectList(new QueryWrapper<ReportExtraDegree>().eq("company_id", companyId));
+            String associateDegrees = "";
+            List<String> associateDegreeList = new ArrayList<>();
+            if(timeType.getCustomDegreeWithPro()==0){
+                associateDegrees=extraDegreeList.stream().map(a->String.valueOf(a.getId())).collect(Collectors.joining(","));
+            }else {
+                Project project = projectMapper.selectById(projectId);
+                associateDegrees = project.getAssociateDegrees();
+            }
+            boolean find = false;
+            if (!StringUtils.isEmpty(associateDegrees)) {
+                String[] id = associateDegrees.split("\\,");
+                for (int i=0;i<id.length; i++) {
+                    if (id[i].equals(degreeId.toString())) {
+                        find = true;
+                        break;
+                    }
+                }
+            }
+            if (!find) {
+                //该维度已不存在,或者从项目上解绑了
+                defaultDegree = null;
+            }
+        }
+
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         httpRespMsg.data = defaultDegree;
         return httpRespMsg;

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -15,7 +15,7 @@ spring:
       location: C:/upload/
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://47.101.180.183:17089/man_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
+    url: jdbc:mysql://47.101.180.183:17089/man_hour_manager?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
     username: root
     password: P011430@Huoshi*
 

+ 63 - 27
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -670,22 +670,40 @@
         SELECT DISTINCT b.id, b.name ,a.evaluate as evaluate
         FROM report AS a
         JOIN user AS b ON a.creator_id=b.id
+        left join project on project.id = a.project_id
+        LEFT JOIN project_ccuser ON a.project_id = project_ccuser.project_id
         WHERE 1=1
         <if test="date != null and date != ''">
             AND a.create_date=#{date}
         </if>
-        <if test="deptIds != null">
-            AND b.department_id in
-            <foreach item="item" collection="deptIds" separator="," open="(" close=")" index="">
-                #{item, jdbcType=INTEGER}
-            </foreach>
-        </if>
-        <if test="companyId != null">
-            AND b.company_id = #{companyId}
-        </if>
-        <if test="userId != null">
-            AND b.id=#{userId}
-        </if>
+        <choose>
+            <when test="userId != null">
+                AND b.id=#{userId}
+            </when>
+            <otherwise>
+                <!--自己,担任项目经理,日报审核人,抄送人,或者自己部门的人填的日报 -->
+                <if test="viewUserId != null">
+                    and (a.creator_id = #{viewUserId} or a.project_auditor_id = #{viewUserId} or project.incharger_id = #{viewUserId}
+                    or project_ccuser.`user_id` = #{viewUserId}
+                    <if test="deptIds != null">
+                        or b.department_id in
+                        <foreach item="item" collection="deptIds" separator="," open="(" close=")" index="">
+                            #{item, jdbcType=INTEGER}
+                        </foreach>
+                    </if>
+                    )
+                </if>
+                <if test="viewUserId == null">
+                    <if test="deptIds != null">
+                        and b.department_id in
+                        <foreach item="item" collection="deptIds" separator="," open="(" close=")" index="">
+                            #{item, jdbcType=INTEGER}
+                        </foreach>
+                    </if>
+                </if>
+            </otherwise>
+        </choose>
+        AND b.company_id = #{companyId}
         <if test="pageStart != null">
             limit #{pageStart}, #{pageSize}
         </if>
@@ -695,22 +713,40 @@
         SELECT count(DISTINCT b.id) as count
         FROM report AS a
         JOIN user AS b ON a.creator_id=b.id
+        left join project on project.id = a.project_id
+        LEFT JOIN project_ccuser ON a.project_id = project_ccuser.project_id
         WHERE 1=1
         <if test="date != null and date != ''">
             AND a.create_date=#{date}
         </if>
-        <if test="deptIds != null">
-            AND b.department_id in
-            <foreach item="item" collection="deptIds" separator="," open="(" close=")" index="">
-                #{item, jdbcType=INTEGER}
-            </foreach>
-        </if>
-        <if test="companyId != null">
-            AND b.company_id = #{companyId}
-        </if>
-        <if test="userId != null">
-            AND b.id=#{userId}
-        </if>
+        <choose>
+            <when test="userId != null">
+                AND b.id=#{userId}
+            </when>
+            <otherwise>
+                <!--自己,担任项目经理,日报审核人,抄送人,或者自己部门的人填的日报 -->
+                <if test="viewUserId != null">
+                    and (a.creator_id = #{viewUserId} or a.project_auditor_id = #{viewUserId} or project.incharger_id = #{viewUserId}
+                    or project_ccuser.`user_id` = #{viewUserId}
+                    <if test="deptIds != null">
+                        or b.department_id in
+                        <foreach item="item" collection="deptIds" separator="," open="(" close=")" index="">
+                            #{item, jdbcType=INTEGER}
+                        </foreach>
+                    </if>
+                    )
+                </if>
+                <if test="viewUserId == null">
+                    <if test="deptIds != null">
+                        and b.department_id in
+                        <foreach item="item" collection="deptIds" separator="," open="(" close=")" index="">
+                            #{item, jdbcType=INTEGER}
+                        </foreach>
+                    </if>
+                </if>
+            </otherwise>
+        </choose>
+        AND b.company_id = #{companyId}
     </select>
 
     <!--专业待审核的报告列表-->
@@ -1190,7 +1226,7 @@
         WHERE b.state = 1
         AND b.company_id =#{companyId}
         <if test="startDate!=null and endDate!=null">
-        AND b.create_date BETWEEN #{startDate} AND #{endDate}
+            AND b.create_date BETWEEN #{startDate} AND #{endDate}
         </if>
         GROUP BY b.project_id,b.`create_date`
         HAVING IFNULL(SUM(b.custom_data),0) > 0
@@ -1200,8 +1236,8 @@
         SELECT p.id as projectId, SUM(IFNULL(r.working_time, 0)) AS total_working_time
         FROM report r LEFT JOIN project p ON r.project_id = p.id
         WHERE p.company_id = #{companyId}
-              AND p.status in(1,2)
-              AND (p.finish_date IS NULL OR p.finish_date >= '2023-11-08')
+        AND p.status in(1,2)
+        AND (p.finish_date IS NULL OR p.finish_date >= '2023-11-08')
         <if test="projectId!=null">
             and p.id=#{projectId}
         </if>

+ 6 - 3
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -248,7 +248,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             workingTime = 0.0;
         }
         planProcedureTotal.setTotalFillTime(workingTime);
-        planProcedureTotal.setTotalProgress((int)(workingTime / planProcedureTotal.getTotalWorkingHours()) * 100);
+        planProcedureTotal.setTotalProgress((int)((workingTime / planProcedureTotal.getTotalWorkingHours()) * 100));
+        System.out.println("planProcedureTotal.getId()=="+planProcedureTotal.getId()+"--进度 1 workingTime:"+workingTime+" totalWorkingHours:"+planProcedureTotal.getTotalWorkingHours()+" totalProgress:"+planProcedureTotal.getTotalProgress());
         planProcedureTotalMapper.updateById(planProcedureTotal);
         //检查该计划下的所有工序是否都已经完成
         List<PlanProcedureTotal> planProcedureTotalList = planProcedureTotalMapper.selectList(new QueryWrapper<PlanProcedureTotal>().eq("plan_id", planProcedureTotal.getPlanId()));
@@ -4771,7 +4772,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 workingTime = curReportSumItem.getWorkingTime();
             }
             planProcedureTotal.setTotalFillTime(workingTime);
-            planProcedureTotal.setTotalProgress((int)(workingTime / planProcedureTotal.getTotalWorkingHours()) * 100);
+            planProcedureTotal.setTotalProgress((int)((workingTime / planProcedureTotal.getTotalWorkingHours()) * 100));
+            System.out.println("planProcedureTotal.getId()=="+planProcedureTotal.getId()+"--进度 2 workingTime:"+workingTime+" totalWorkingHours:"+planProcedureTotal.getTotalWorkingHours()+" totalProgress:"+planProcedureTotal.getTotalProgress());
             planProcedureTotalMapper.updateById(planProcedureTotal);
             return new HttpRespMsg();
         }
@@ -4817,7 +4819,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     workingTime = curReportSumItem.getWorkingTime();
                 }
                 planProcedureTotal.setTotalFillTime(workingTime);
-                planProcedureTotal.setTotalProgress((int)(workingTime / planProcedureTotal.getTotalWorkingHours()) * 100);
+                planProcedureTotal.setTotalProgress((int)((workingTime / planProcedureTotal.getTotalWorkingHours()) * 100));
+                System.out.println("planProcedureTotal.getId()=="+planProcedureTotal.getId()+"--进度 3 workingTime:"+workingTime+" totalWorkingHours:"+planProcedureTotal.getTotalWorkingHours()+" totalProgress:"+planProcedureTotal.getTotalProgress());
                 planProcedureTotalMapper.updateById(planProcedureTotal);
             }
         }

+ 25 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/components/CodeEditor.vue.d.ts

@@ -0,0 +1,25 @@
+import 'vue-prism-editor/dist/prismeditor.min.css';
+import 'prismjs/components/prism-clike';
+import 'prismjs/components/prism-json';
+import 'prismjs/themes/prism-tomorrow.css';
+declare const _default: import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<{
+    modelValue: string;
+    language?: string | undefined;
+    readonly?: boolean | undefined;
+}>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
+    modelValue: string;
+    language?: string | undefined;
+    readonly?: boolean | undefined;
+}>>> & {
+    "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
+}, {}>;
+export default _default;
+declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
+declare type __VLS_TypePropsToRuntimeProps<T> = {
+    [K in keyof T]-?: {} extends Pick<T, K> ? {
+        type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
+    } : {
+        type: import('vue').PropType<T[K]>;
+        required: true;
+    };
+};

+ 22 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/components/ComponentGroup.vue.d.ts

@@ -0,0 +1,22 @@
+export declare function cloneWidget(params: any): any;
+declare const _default: import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<{
+    fields: any[];
+    title: string;
+    list: any[];
+    allList: any;
+}>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
+    fields: any[];
+    title: string;
+    list: any[];
+    allList: any;
+}>>>, {}>;
+export default _default;
+declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
+declare type __VLS_TypePropsToRuntimeProps<T> = {
+    [K in keyof T]-?: {} extends Pick<T, K> ? {
+        type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
+    } : {
+        type: import('vue').PropType<T[K]>;
+        required: true;
+    };
+};

+ 680 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/config/index.d.ts

@@ -0,0 +1,680 @@
+export interface Rules {
+    trigger: string;
+    enum: string;
+    len?: number;
+    max?: number;
+    message: string;
+    min?: number;
+    pattern: string;
+    required: boolean;
+    type: string;
+}
+export interface WidgetForm {
+    list: any[];
+    config: {
+        size: '' | 'default' | 'small' | 'large';
+        hideRequiredAsterisk: boolean;
+        labelWidth: number;
+        labelPosition: string;
+    };
+}
+export declare const getWidgetForm: () => WidgetForm;
+export declare const basicComponents: ({
+    label: string;
+    type: "input";
+    options: {
+        width: string;
+        defaultValue: string;
+        placeholder: string;
+        maxlength: null;
+        prefix: string;
+        suffix: string;
+        prepend: string;
+        append: string;
+        disabled: boolean;
+        clearable: boolean;
+        readonly: boolean;
+        rules: Rules;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        min?: undefined;
+        max?: undefined;
+        step?: undefined;
+        inline?: undefined;
+        remote?: undefined;
+        showLabel?: undefined;
+        remoteFunc?: undefined;
+        options?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "password";
+    options: {
+        width: string;
+        defaultValue: string;
+        placeholder: string;
+        maxlength: null;
+        prefix: string;
+        suffix: string;
+        prepend: string;
+        append: string;
+        showPassword: boolean;
+        disabled: boolean;
+        clearable: boolean;
+        readonly: boolean;
+        rules: Rules;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        min?: undefined;
+        max?: undefined;
+        step?: undefined;
+        inline?: undefined;
+        remote?: undefined;
+        showLabel?: undefined;
+        remoteFunc?: undefined;
+        options?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "textarea";
+    options: {
+        width: string;
+        defaultValue: string;
+        placeholder: string;
+        maxlength: null;
+        rows: number;
+        autosize: boolean;
+        showWordLimit: boolean;
+        disabled: boolean;
+        clearable: boolean;
+        readonly: boolean;
+        rules: Rules;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        showPassword?: undefined;
+        min?: undefined;
+        max?: undefined;
+        step?: undefined;
+        inline?: undefined;
+        remote?: undefined;
+        showLabel?: undefined;
+        remoteFunc?: undefined;
+        options?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "number";
+    options: {
+        width: string;
+        defaultValue: number;
+        min: number;
+        max: number;
+        step: number;
+        disabled: boolean;
+        rules: Rules;
+        placeholder?: undefined;
+        maxlength?: undefined;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        clearable?: undefined;
+        readonly?: undefined;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        inline?: undefined;
+        remote?: undefined;
+        showLabel?: undefined;
+        remoteFunc?: undefined;
+        options?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "radio";
+    options: {
+        defaultValue: string;
+        width: string;
+        inline: boolean;
+        remote: boolean;
+        showLabel: boolean;
+        remoteFunc: string;
+        options: {
+            value: string;
+            label: string;
+        }[];
+        remoteOptions: never[];
+        props: {
+            value: string;
+            label: string;
+        };
+        disabled: boolean;
+        rules: Rules;
+        placeholder?: undefined;
+        maxlength?: undefined;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        clearable?: undefined;
+        readonly?: undefined;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        min?: undefined;
+        max?: undefined;
+        step?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "checkbox";
+    options: {
+        defaultValue: never[];
+        width: string;
+        inline: boolean;
+        remote: boolean;
+        showLabel: boolean;
+        remoteFunc: string;
+        options: {
+            label: string;
+            value: string;
+        }[];
+        remoteOptions: never[];
+        props: {
+            value: string;
+            label: string;
+        };
+        disabled: boolean;
+        rules: Rules;
+        placeholder?: undefined;
+        maxlength?: undefined;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        clearable?: undefined;
+        readonly?: undefined;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        min?: undefined;
+        max?: undefined;
+        step?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "time";
+    options: {
+        defaultValue: string;
+        width: string;
+        placeholder: string;
+        format: string;
+        valueFormat: string;
+        readonly: boolean;
+        editable: boolean;
+        clearable: boolean;
+        disabled: boolean;
+        rules: Rules;
+        maxlength?: undefined;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        min?: undefined;
+        max?: undefined;
+        step?: undefined;
+        inline?: undefined;
+        remote?: undefined;
+        showLabel?: undefined;
+        remoteFunc?: undefined;
+        options?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "date";
+    options: {
+        defaultValue: string;
+        width: string;
+        placeholder: string;
+        format: string;
+        readonly: boolean;
+        editable: boolean;
+        clearable: boolean;
+        disabled: boolean;
+        rules: Rules;
+        maxlength?: undefined;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        min?: undefined;
+        max?: undefined;
+        step?: undefined;
+        inline?: undefined;
+        remote?: undefined;
+        showLabel?: undefined;
+        remoteFunc?: undefined;
+        options?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        valueFormat?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "rate";
+    options: {
+        defaultValue: number;
+        max: number;
+        allowHalf: boolean;
+        disabled: boolean;
+        rules: Rules;
+        width?: undefined;
+        placeholder?: undefined;
+        maxlength?: undefined;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        clearable?: undefined;
+        readonly?: undefined;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        min?: undefined;
+        step?: undefined;
+        inline?: undefined;
+        remote?: undefined;
+        showLabel?: undefined;
+        remoteFunc?: undefined;
+        options?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "select";
+    options: {
+        defaultValue: string;
+        width: string;
+        multiple: boolean;
+        placeholder: string;
+        remote: boolean;
+        showLabel: boolean;
+        filterable: boolean;
+        clearable: boolean;
+        disabled: boolean;
+        props: {
+            label: string;
+            value: string;
+        };
+        options: {
+            label: string;
+            value: string;
+        }[];
+        remoteOptions: never[];
+        remoteFunc: string;
+        rules: Rules;
+        maxlength?: undefined;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        readonly?: undefined;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        min?: undefined;
+        max?: undefined;
+        step?: undefined;
+        inline?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        allowHalf?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "switch";
+    options: {
+        defaultValue: boolean;
+        disabled: boolean;
+        activeText: string;
+        inactiveText: string;
+        rules: Rules;
+        width?: undefined;
+        placeholder?: undefined;
+        maxlength?: undefined;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        clearable?: undefined;
+        readonly?: undefined;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        min?: undefined;
+        max?: undefined;
+        step?: undefined;
+        inline?: undefined;
+        remote?: undefined;
+        showLabel?: undefined;
+        remoteFunc?: undefined;
+        options?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        range?: undefined;
+    };
+} | {
+    label: string;
+    type: "slider";
+    options: {
+        defaultValue: number;
+        width: string;
+        min: number;
+        max: number;
+        step: number;
+        disabled: boolean;
+        range: boolean;
+        rules: Rules;
+        placeholder?: undefined;
+        maxlength?: undefined;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        clearable?: undefined;
+        readonly?: undefined;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        inline?: undefined;
+        remote?: undefined;
+        showLabel?: undefined;
+        remoteFunc?: undefined;
+        options?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+    };
+} | {
+    label: string;
+    type: "text";
+    options: {
+        defaultValue: string;
+        width?: undefined;
+        placeholder?: undefined;
+        maxlength?: undefined;
+        prefix?: undefined;
+        suffix?: undefined;
+        prepend?: undefined;
+        append?: undefined;
+        disabled?: undefined;
+        clearable?: undefined;
+        readonly?: undefined;
+        rules?: undefined;
+        showPassword?: undefined;
+        rows?: undefined;
+        autosize?: undefined;
+        showWordLimit?: undefined;
+        min?: undefined;
+        max?: undefined;
+        step?: undefined;
+        inline?: undefined;
+        remote?: undefined;
+        showLabel?: undefined;
+        remoteFunc?: undefined;
+        options?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        format?: undefined;
+        valueFormat?: undefined;
+        editable?: undefined;
+        allowHalf?: undefined;
+        multiple?: undefined;
+        filterable?: undefined;
+        activeText?: undefined;
+        inactiveText?: undefined;
+        range?: undefined;
+    };
+})[];
+export declare const basicFields: ("number" | "input" | "select" | "textarea" | "time" | "switch" | "text" | "password" | "radio" | "checkbox" | "date" | "rate" | "slider")[];
+export declare const advanceComponents: ({
+    label: string;
+    type: "img-upload";
+    options: {
+        defaultValue: never[];
+        name: string;
+        action: string;
+        method: string;
+        listType: string;
+        accept: string;
+        limit: number;
+        multiple: boolean;
+        disabled: boolean;
+        rules: Rules;
+        width?: undefined;
+        placeholder?: undefined;
+        clearable?: undefined;
+        filterable?: undefined;
+        remote?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        remoteFunc?: undefined;
+    };
+    labelWidth?: undefined;
+} | {
+    label: string;
+    type: "download";
+    labelWidth: string;
+    options: {
+        defaultValue: string;
+        name: string;
+        action?: undefined;
+        method?: undefined;
+        listType?: undefined;
+        accept?: undefined;
+        limit?: undefined;
+        multiple?: undefined;
+        disabled?: undefined;
+        rules?: undefined;
+        width?: undefined;
+        placeholder?: undefined;
+        clearable?: undefined;
+        filterable?: undefined;
+        remote?: undefined;
+        remoteOptions?: undefined;
+        props?: undefined;
+        remoteFunc?: undefined;
+    };
+} | {
+    label: string;
+    type: "cascader";
+    options: {
+        defaultValue: never[];
+        width: string;
+        placeholder: string;
+        disabled: boolean;
+        clearable: boolean;
+        filterable: boolean;
+        remote: boolean;
+        remoteOptions: never[];
+        props: {
+            label: string;
+            value: string;
+            children: string;
+        };
+        remoteFunc: string;
+        rules: Rules;
+        name?: undefined;
+        action?: undefined;
+        method?: undefined;
+        listType?: undefined;
+        accept?: undefined;
+        limit?: undefined;
+        multiple?: undefined;
+    };
+    labelWidth?: undefined;
+})[];
+export declare const advanceFields: ("img-upload" | "download" | "cascader")[];
+export declare const layoutComponents: ({
+    label: string;
+    type: string;
+    columns: {
+        span: number;
+        list: never[];
+    }[];
+    options: {
+        gutter: number;
+        align: string;
+        defaultValue?: undefined;
+        disabled?: undefined;
+        size?: undefined;
+    };
+} | {
+    label: string;
+    type: string;
+    columns: {
+        label: string;
+        prop: string;
+    }[];
+    options: {
+        defaultValue: never[];
+        disabled: boolean;
+        size: string;
+        align: string;
+        gutter?: undefined;
+    };
+} | {
+    label: string;
+    type: string;
+    options: {
+        gutter?: undefined;
+        align?: undefined;
+        defaultValue?: undefined;
+        disabled?: undefined;
+        size?: undefined;
+    };
+    columns?: undefined;
+})[];
+export declare const layoutFields: string[];

+ 79 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/design/DesignForm.vue.d.ts

@@ -0,0 +1,79 @@
+import type { PropType } from 'vue';
+import type { WidgetForm } from '@/config';
+declare const _default: import("vue").DefineComponent<{
+    preview: {
+        type: BooleanConstructor;
+        default: boolean;
+    };
+    generateJson: {
+        type: BooleanConstructor;
+        default: boolean;
+    };
+    clearable: {
+        type: BooleanConstructor;
+        default: boolean;
+    };
+    basicFieldsList: {
+        type: PropType<("number" | "input" | "select" | "textarea" | "time" | "switch" | "text" | "password" | "radio" | "checkbox" | "date" | "rate" | "slider")[]>;
+        default: () => ("number" | "input" | "select" | "textarea" | "time" | "switch" | "text" | "password" | "radio" | "checkbox" | "date" | "rate" | "slider")[];
+    };
+    advanceFieldsList: {
+        type: PropType<("img-upload" | "download" | "cascader")[]>;
+        default: () => ("img-upload" | "download" | "cascader")[];
+    };
+    layoutFieldsList: {
+        type: PropType<string[]>;
+        default: () => string[];
+    };
+    request: {
+        type: FunctionConstructor;
+    };
+}, {
+    getJson: () => {
+        list: any[];
+        config: {
+            size: "" | "small" | "default" | "large";
+            hideRequiredAsterisk: boolean;
+            labelWidth: number;
+            labelPosition: string;
+        };
+    };
+    setJson: (json: WidgetForm) => void;
+    clear: () => void;
+}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
+    preview: {
+        type: BooleanConstructor;
+        default: boolean;
+    };
+    generateJson: {
+        type: BooleanConstructor;
+        default: boolean;
+    };
+    clearable: {
+        type: BooleanConstructor;
+        default: boolean;
+    };
+    basicFieldsList: {
+        type: PropType<("number" | "input" | "select" | "textarea" | "time" | "switch" | "text" | "password" | "radio" | "checkbox" | "date" | "rate" | "slider")[]>;
+        default: () => ("number" | "input" | "select" | "textarea" | "time" | "switch" | "text" | "password" | "radio" | "checkbox" | "date" | "rate" | "slider")[];
+    };
+    advanceFieldsList: {
+        type: PropType<("img-upload" | "download" | "cascader")[]>;
+        default: () => ("img-upload" | "download" | "cascader")[];
+    };
+    layoutFieldsList: {
+        type: PropType<string[]>;
+        default: () => string[];
+    };
+    request: {
+        type: FunctionConstructor;
+    };
+}>>, {
+    preview: boolean;
+    generateJson: boolean;
+    clearable: boolean;
+    basicFieldsList: ("number" | "input" | "select" | "textarea" | "time" | "switch" | "text" | "password" | "radio" | "checkbox" | "date" | "rate" | "slider")[];
+    advanceFieldsList: ("img-upload" | "download" | "cascader")[];
+    layoutFieldsList: string[];
+}>;
+export default _default;

+ 16 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/design/FormConfig.vue.d.ts

@@ -0,0 +1,16 @@
+import type { WidgetForm } from '@/config';
+declare const _default: import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<{
+    config: WidgetForm['config'];
+}>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
+    config: WidgetForm['config'];
+}>>>, {}>;
+export default _default;
+declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
+declare type __VLS_TypePropsToRuntimeProps<T> = {
+    [K in keyof T]-?: {} extends Pick<T, K> ? {
+        type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
+    } : {
+        type: import('vue').PropType<T[K]>;
+        required: true;
+    };
+};

+ 20 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/design/WidgetConfig.vue.d.ts

@@ -0,0 +1,20 @@
+declare const _default: import("vue").DefineComponent<{
+    select: {
+        type: ObjectConstructor;
+    };
+}, {
+    data: any;
+    hasKey: (key: string) => boolean;
+    handleInsertColumn: () => void;
+    handleInsertOption: () => void;
+    handleOptionsRemove: (index: number) => void;
+    handleSliderModeChange: (checked: string | number | boolean) => void;
+    handleSelectModeChange: (val: string | number | boolean) => void;
+}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:select"[], "update:select", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
+    select: {
+        type: ObjectConstructor;
+    };
+}>> & {
+    "onUpdate:select"?: ((...args: any[]) => any) | undefined;
+}, {}>;
+export default _default;

+ 22 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/design/WidgetForm.vue.d.ts

@@ -0,0 +1,22 @@
+import type { WidgetForm } from '@/config';
+declare const _default: import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<{
+    list: any;
+    config: WidgetForm['config'];
+    selectWidget: any;
+}>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:selectWidget"[], "update:selectWidget", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
+    list: any;
+    config: WidgetForm['config'];
+    selectWidget: any;
+}>>> & {
+    "onUpdate:selectWidget"?: ((...args: any[]) => any) | undefined;
+}, {}>;
+export default _default;
+declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
+declare type __VLS_TypePropsToRuntimeProps<T> = {
+    [K in keyof T]-?: {} extends Pick<T, K> ? {
+        type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
+    } : {
+        type: import('vue').PropType<T[K]>;
+        required: true;
+    };
+};

+ 25 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/design/WidgetFormItem.vue.d.ts

@@ -0,0 +1,25 @@
+declare const _default: import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<{
+    list: any;
+    element: any;
+    index: number;
+    selectWidget: any;
+}>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("itemClick" | "delete" | "update:selectWidget")[], "itemClick" | "delete" | "update:selectWidget", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
+    list: any;
+    element: any;
+    index: number;
+    selectWidget: any;
+}>>> & {
+    onItemClick?: ((...args: any[]) => any) | undefined;
+    onDelete?: ((...args: any[]) => any) | undefined;
+    "onUpdate:selectWidget"?: ((...args: any[]) => any) | undefined;
+}, {}>;
+export default _default;
+declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
+declare type __VLS_TypePropsToRuntimeProps<T> = {
+    [K in keyof T]-?: {} extends Pick<T, K> ? {
+        type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
+    } : {
+        type: import('vue').PropType<T[K]>;
+        required: true;
+    };
+};

+ 43 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/generate/GenerateForm.vue.d.ts

@@ -0,0 +1,43 @@
+declare const _default: import("vue").DefineComponent<{
+    data: {
+        type: ObjectConstructor;
+        default: import("@/config").WidgetForm;
+    };
+    value: {
+        type: ObjectConstructor;
+    };
+    disabled: {
+        type: BooleanConstructor;
+        default: boolean;
+    };
+    request: {
+        type: FunctionConstructor;
+    };
+}, {
+    getData: () => Promise<unknown>;
+    reset: () => void;
+    generateForm: import("vue").Ref<any>;
+    model: import("vue").Ref<any>;
+    updatedModel: import("vue").Ref<any>;
+    rules: import("vue").Ref<any>;
+    widgetForm: import("vue").Ref<any>;
+}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
+    data: {
+        type: ObjectConstructor;
+        default: import("@/config").WidgetForm;
+    };
+    value: {
+        type: ObjectConstructor;
+    };
+    disabled: {
+        type: BooleanConstructor;
+        default: boolean;
+    };
+    request: {
+        type: FunctionConstructor;
+    };
+}>>, {
+    data: Record<string, any>;
+    disabled: boolean;
+}>;
+export default _default;

+ 26 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/generate/GenerateFormItem.vue.d.ts

@@ -0,0 +1,26 @@
+import type { WidgetForm } from '@/config';
+declare const _default: import("vue").DefineComponent<__VLS_TypePropsToRuntimeProps<{
+    config: WidgetForm['config'];
+    element: any;
+    model: any;
+    updatedModel: any;
+    disabled: boolean;
+    request?: Function | undefined;
+}>, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
+    config: WidgetForm['config'];
+    element: any;
+    model: any;
+    updatedModel: any;
+    disabled: boolean;
+    request?: Function | undefined;
+}>>>, {}>;
+export default _default;
+declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
+declare type __VLS_TypePropsToRuntimeProps<T> = {
+    [K in keyof T]-?: {} extends Pick<T, K> ? {
+        type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
+    } : {
+        type: import('vue').PropType<T[K]>;
+        required: true;
+    };
+};

File diff suppressed because it is too large
+ 1 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.css


+ 4 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.d.ts

@@ -0,0 +1,4 @@
+import 'element-plus/theme-chalk/el-message.css';
+export { basicFields, advanceFields, layoutFields } from './config';
+export { default as DesignForm } from './design/DesignForm.vue';
+export { default as GenerateForm } from './generate/GenerateForm.vue';

File diff suppressed because it is too large
+ 31402 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.es.js


File diff suppressed because it is too large
+ 1 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/dist/index.es.js.map


+ 21 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@types/web-bluetooth/LICENSE

@@ -0,0 +1,21 @@
+    MIT License
+
+    Copyright (c) Microsoft Corporation.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in all
+    copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+    SOFTWARE

+ 16 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@types/web-bluetooth/README.md

@@ -0,0 +1,16 @@
+# Installation
+> `npm install --save @types/web-bluetooth`
+
+# Summary
+This package contains type definitions for Web Bluetooth (https://webbluetoothcg.github.io/web-bluetooth/).
+
+# Details
+Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/web-bluetooth.
+
+### Additional Details
+ * Last updated: Mon, 21 Mar 2022 19:31:50 GMT
+ * Dependencies: none
+ * Global values: none
+
+# Credits
+These definitions were written by [Uri Shaked](https://github.com/urish), [Xavier Lozinguez](https://github.com/xlozinguez), [Rob Moran](https://github.com/thegecko), and [David Bjerremose](https://github.com/DaBs).

+ 176 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@types/web-bluetooth/index.d.ts

@@ -0,0 +1,176 @@
+// Type definitions for Web Bluetooth
+// Project: https://webbluetoothcg.github.io/web-bluetooth/
+// Definitions by: Uri Shaked <https://github.com/urish>
+//                    Xavier Lozinguez <https://github.com/xlozinguez>
+//                    Rob Moran <https://github.com/thegecko>
+//                    David Bjerremose <https://github.com/DaBs>
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+type BluetoothServiceUUID = number | string;
+type BluetoothCharacteristicUUID = number | string;
+type BluetoothDescriptorUUID = number | string;
+
+type BluetoothManufacturerData = Map<number, DataView>;
+type BluetoothServiceData = Map<BluetoothServiceUUID, DataView>;
+
+interface BluetoothDataFilter {
+    readonly dataPrefix?: BufferSource | undefined;
+    readonly mask?: BufferSource | undefined;
+}
+
+interface BluetoothManufacturerDataFilter extends BluetoothDataFilter {
+    companyIdentifier: number;
+}
+
+interface BluetoothServiceDataFilter extends BluetoothDataFilter {
+    service: BluetoothServiceUUID;
+}
+
+interface BluetoothLEScanFilter {
+    readonly name?: string | undefined;
+    readonly namePrefix?: string | undefined;
+    readonly services?: BluetoothServiceUUID[] | undefined;
+    readonly manufacturerData?: BluetoothManufacturerDataFilter[] | undefined;
+    readonly serviceData?: BluetoothServiceDataFilter[] | undefined;
+}
+
+interface BluetoothLEScanOptions {
+    readonly filters?: BluetoothLEScanFilter[] | undefined;
+    readonly keepRepeatedDevices?: boolean | undefined;
+    readonly acceptAllAdvertisements?: boolean | undefined;
+}
+
+interface BluetoothLEScan extends BluetoothLEScanOptions {
+    active: boolean;
+    stop: () => void;
+}
+
+type RequestDeviceOptions = {
+    filters: BluetoothLEScanFilter[];
+    optionalServices?: BluetoothServiceUUID[] | undefined;
+    optionalManufacturerData?: number[] | undefined;
+} | {
+    acceptAllDevices: boolean;
+    optionalServices?: BluetoothServiceUUID[] | undefined;
+    optionalManufacturerData?: number[] | undefined;
+};
+
+interface BluetoothAdvertisingEvent extends Event {
+    readonly device: BluetoothDevice;
+    readonly uuids: BluetoothServiceUUID[];
+    readonly manufacturerData: BluetoothManufacturerData;
+    readonly serviceData: BluetoothServiceData;
+    readonly name?: string | undefined;
+    readonly appearance?: number | undefined;
+    readonly rssi?: number | undefined;
+    readonly txPower?: number | undefined;
+}
+
+interface BluetoothRemoteGATTDescriptor {
+    readonly characteristic: BluetoothRemoteGATTCharacteristic;
+    readonly uuid: string;
+    readonly value?: DataView | undefined;
+    readValue(): Promise<DataView>;
+    writeValue(value: BufferSource): Promise<void>;
+}
+
+interface BluetoothCharacteristicProperties {
+    readonly broadcast: boolean;
+    readonly read: boolean;
+    readonly writeWithoutResponse: boolean;
+    readonly write: boolean;
+    readonly notify: boolean;
+    readonly indicate: boolean;
+    readonly authenticatedSignedWrites: boolean;
+    readonly reliableWrite: boolean;
+    readonly writableAuxiliaries: boolean;
+}
+
+interface CharacteristicEventHandlers {
+    oncharacteristicvaluechanged: (this: this, ev: Event) => any;
+}
+
+interface BluetoothRemoteGATTCharacteristic extends EventTarget, CharacteristicEventHandlers {
+    readonly service: BluetoothRemoteGATTService;
+    readonly uuid: string;
+    readonly properties: BluetoothCharacteristicProperties;
+    readonly value?: DataView | undefined;
+    getDescriptor(descriptor: BluetoothDescriptorUUID): Promise<BluetoothRemoteGATTDescriptor>;
+    getDescriptors(descriptor?: BluetoothDescriptorUUID): Promise<BluetoothRemoteGATTDescriptor[]>;
+    readValue(): Promise<DataView>;
+    writeValue(value: BufferSource): Promise<void>;
+    writeValueWithResponse(value: BufferSource): Promise<void>;
+    writeValueWithoutResponse(value: BufferSource): Promise<void>;
+    startNotifications(): Promise<BluetoothRemoteGATTCharacteristic>;
+    stopNotifications(): Promise<BluetoothRemoteGATTCharacteristic>;
+    addEventListener(type: "characteristicvaluechanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
+    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
+}
+
+interface ServiceEventHandlers {
+    onserviceadded: (this: this, ev: Event) => any;
+    onservicechanged: (this: this, ev: Event) => any;
+    onserviceremoved: (this: this, ev: Event) => any;
+}
+
+interface BluetoothRemoteGATTService extends EventTarget, CharacteristicEventHandlers, ServiceEventHandlers {
+    readonly device: BluetoothDevice;
+    readonly uuid: string;
+    readonly isPrimary: boolean;
+    getCharacteristic(characteristic: BluetoothCharacteristicUUID): Promise<BluetoothRemoteGATTCharacteristic>;
+    getCharacteristics(characteristic?: BluetoothCharacteristicUUID): Promise<BluetoothRemoteGATTCharacteristic[]>;
+    getIncludedService(service: BluetoothServiceUUID): Promise<BluetoothRemoteGATTService>;
+    getIncludedServices(service?: BluetoothServiceUUID): Promise<BluetoothRemoteGATTService[]>;
+    addEventListener(type: "serviceadded", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
+    addEventListener(type: "servicechanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
+    addEventListener(type: "serviceremoved", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
+    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
+}
+
+interface BluetoothRemoteGATTServer {
+    readonly device: BluetoothDevice;
+    readonly connected: boolean;
+    connect(): Promise<BluetoothRemoteGATTServer>;
+    disconnect(): void;
+    getPrimaryService(service: BluetoothServiceUUID): Promise<BluetoothRemoteGATTService>;
+    getPrimaryServices(service?: BluetoothServiceUUID): Promise<BluetoothRemoteGATTService[]>;
+}
+
+interface BluetoothDeviceEventHandlers {
+    onadvertisementreceived: (this: this, ev: BluetoothAdvertisingEvent) => any;
+    ongattserverdisconnected: (this: this, ev: Event) => any;
+}
+
+interface WatchAdvertisementsOptions {
+    signal?: AbortSignal;
+}
+
+interface BluetoothDevice extends EventTarget, BluetoothDeviceEventHandlers, CharacteristicEventHandlers, ServiceEventHandlers {
+    readonly id: string;
+    readonly name?: string | undefined;
+    readonly gatt?: BluetoothRemoteGATTServer | undefined;
+    readonly uuids?: string[] | undefined;
+    forget(): Promise<void>;
+    watchAdvertisements(options?: WatchAdvertisementsOptions): Promise<void>;
+    unwatchAdvertisements(): void;
+    readonly watchingAdvertisements: boolean;
+    addEventListener(type: "gattserverdisconnected", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
+    addEventListener(type: "advertisementreceived", listener: (this: this, ev: BluetoothAdvertisingEvent) => any, useCapture?: boolean): void;
+    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
+}
+
+interface Bluetooth extends EventTarget, BluetoothDeviceEventHandlers, CharacteristicEventHandlers, ServiceEventHandlers {
+    getDevices(): Promise<BluetoothDevice[]>;
+    getAvailability(): Promise<boolean>;
+    onavailabilitychanged: (this: this, ev: Event) => any;
+    readonly referringDevice?: BluetoothDevice | undefined;
+    requestDevice(options?: RequestDeviceOptions): Promise<BluetoothDevice>;
+    requestLEScan(options?: BluetoothLEScanOptions): Promise<BluetoothLEScan>;
+    addEventListener(type: "availabilitychanged", listener: (this: this, ev: Event) => any, useCapture?: boolean): void;
+    addEventListener(type: "advertisementreceived", listener: (this: this, ev: BluetoothAdvertisingEvent) => any, useCapture?: boolean): void;
+    addEventListener(type: string, listener: EventListenerOrEventListenerObject, useCapture?: boolean): void;
+}
+
+interface Navigator {
+    bluetooth: Bluetooth;
+}

+ 40 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@types/web-bluetooth/package.json

@@ -0,0 +1,40 @@
+{
+    "name": "@types/web-bluetooth",
+    "version": "0.0.14",
+    "description": "TypeScript definitions for Web Bluetooth",
+    "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/web-bluetooth",
+    "license": "MIT",
+    "contributors": [
+        {
+            "name": "Uri Shaked",
+            "url": "https://github.com/urish",
+            "githubUsername": "urish"
+        },
+        {
+            "name": "Xavier Lozinguez",
+            "url": "https://github.com/xlozinguez",
+            "githubUsername": "xlozinguez"
+        },
+        {
+            "name": "Rob Moran",
+            "url": "https://github.com/thegecko",
+            "githubUsername": "thegecko"
+        },
+        {
+            "name": "David Bjerremose",
+            "url": "https://github.com/DaBs",
+            "githubUsername": "DaBs"
+        }
+    ],
+    "main": "",
+    "types": "index.d.ts",
+    "repository": {
+        "type": "git",
+        "url": "https://github.com/DefinitelyTyped/DefinitelyTyped.git",
+        "directory": "types/web-bluetooth"
+    },
+    "scripts": {},
+    "dependencies": {},
+    "typesPublisherContentHash": "d892e9ae9d24a1f67aeaec0b21dff39deea3612836f422c06a0997bcbc3d1e6f",
+    "typeScriptVersion": "3.9"
+}

+ 21 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019-PRESENT Anthony Fu<https://github.com/antfu>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 123 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/README.md

@@ -0,0 +1,123 @@
+<p align="center">
+<a href="https://github.com/vueuse/vueuse#gh-light-mode-only">
+  <img src="https://raw.githubusercontent.com/vueuse/vueuse/main/packages/public/logo-vertical.png#gh-light-mode-only" alt="VueUse - Collection of essential Vue Composition Utilities" width="300">
+</a>
+<a href="https://github.com/vueuse/vueuse#gh-dark-mode-only">
+  <img src="https://raw.githubusercontent.com/vueuse/vueuse/main/packages/public/logo-vertical-dark.png#gh-dark-mode-only" alt="VueUse - Collection of essential Vue Composition Utilities" width="300">
+</a>
+<br>
+Collection of essential Vue Composition Utilities
+</p>
+
+<p align="center">
+<a href="https://www.npmjs.com/package/@vueuse/core" target="__blank"><img src="https://img.shields.io/npm/v/@vueuse/core?color=a1b858&label=" alt="NPM version"></a>
+<a href="https://www.npmjs.com/package/@vueuse/core" target="__blank"><img alt="NPM Downloads" src="https://img.shields.io/npm/dm/@vueuse/core?color=50a36f&label="></a>
+<a href="https://vueuse.org" target="__blank"><img src="https://img.shields.io/static/v1?label=&message=docs%20%26%20demos&color=1e8a7a" alt="Docs & Demos"></a>
+<img alt="Function Count" src="https://vueuse.org/badge-function-count.svg">
+<br>
+<a href="https://github.com/vueuse/vueuse" target="__blank"><img alt="GitHub stars" src="https://img.shields.io/github/stars/vueuse/vueuse?style=social"></a>
+</p>
+
+<p align="center">
+  <a href="https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg">
+    <img src='https://cdn.jsdelivr.net/gh/antfu/static/sponsors.svg'>
+  </a>
+</p>
+
+## 🚀 Features
+
+- 🎪 [**Interactive docs & demos**](https://vueuse.org)
+- 🕶 **Seamless migration**: Works for **both** Vue 3 and 2
+- ⚡ **Fully tree shakeable**: Only take what you want, [bundle size](https://vueuse.org/export-size)
+- 🦾 **Type Strong**: Written in [TypeScript](https://www.typescriptlang.org/), with [TS Docs](https://github.com/microsoft/tsdoc)
+- 🔋 **SSR Friendly**
+- 🌎 **No bundler required**: Usable via CDN
+- 🔩 **Flexible**: Configurable event filters and targets
+- 🔌 **Optional [Add-ons](https://vueuse.org/add-ons)**: Router, Firebase, RxJS, etc.
+
+## 🦄 Usage
+
+```ts
+import { useLocalStorage, useMouse, usePreferredDark } from '@vueuse/core'
+
+export default {
+  setup() {
+    // tracks mouse position
+    const { x, y } = useMouse()
+
+    // is user prefers dark theme
+    const isDark = usePreferredDark()
+
+    // persist state in localStorage
+    const store = useLocalStorage(
+      'my-storage',
+      {
+        name: 'Apple',
+        color: 'red',
+      },
+    )
+
+    return { x, y, isDark, store }
+  },
+}
+```
+
+Refer to [functions list](https://vueuse.org/functions) or [documentations](https://vueuse.org/) for more details.
+
+## 📦 Install
+
+> 🎩 From v4.0, it works for Vue 2 & 3 **within a single package** by the power of [vue-demi](https://github.com/vueuse/vue-demi)!
+
+```bash
+npm i @vueuse/core
+```
+
+[Add ons](https://vueuse.org/add-ons.html) | [Nuxt Module](https://vueuse.org/guide/index.html#nuxt)
+
+> From v6.0, VueUse requires `vue` >= v3.2 or `@vue/composition-api` >= v1.1
+
+###### Demos
+
+- [Vite + Vue 3](https://github.com/vueuse/vueuse-vite-starter)
+- [Nuxt 3 + Vue 3](https://github.com/antfu/vitesse-nuxt3)
+- [Webpack + Vue 3](https://github.com/vueuse/vueuse-vue3-example)
+- [Nuxt 2 + Vue 2](https://github.com/antfu/vitesse-nuxt-bridge)
+- [Vue CLI + Vue 2](https://github.com/vueuse/vueuse-vue2-example)
+
+### CDN
+
+```html
+<script src="https://unpkg.com/@vueuse/shared"></script>
+<script src="https://unpkg.com/@vueuse/core"></script>
+```
+
+It will be exposed to global as `window.VueUse`
+
+## 🪴 Project Activity
+
+![Alt](https://repobeats.axiom.co/api/embed/a406ba7461a6a087dbdb14d4395046c948d44c51.svg "Repobeats analytics image")
+
+## 🧱 Contribute
+
+See the [**Contributing Guide**](https://vueuse.org/contributing)
+
+## 🌸 Thanks
+
+This project is heavily inspired by the following awesome projects.
+
+- [streamich/react-use](https://github.com/streamich/react-use)
+- [u3u/vue-hooks](https://github.com/u3u/vue-hooks)
+- [logaretm/vue-use-web](https://github.com/logaretm/vue-use-web)
+- [kripod/react-hooks](https://github.com/kripod/react-hooks)
+
+And thanks to [all the contributors on GitHub](https://github.com/vueuse/vueuse/graphs/contributors)!
+
+## 👨‍🚀 Contributors
+
+### Financial Contributors on Open Collective
+
+<a href="https://opencollective.com/vueuse"><img src="https://opencollective.com/vueuse/individuals.svg?width=890"></a>
+
+## 📄 License
+
+[MIT License](https://github.com/vueuse/vueuse/blob/main/LICENSE) © 2019-PRESENT [Anthony Fu](https://github.com/antfu)

File diff suppressed because it is too large
+ 6075 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/index.cjs


File diff suppressed because it is too large
+ 4305 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/index.d.ts


File diff suppressed because it is too large
+ 6164 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/index.iife.js


File diff suppressed because it is too large
+ 1 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/index.iife.min.js


File diff suppressed because it is too large
+ 5920 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/index.mjs


+ 1 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/metadata.cjs

@@ -0,0 +1 @@
+module.exports = require('@vueuse/metadata')

+ 1 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/metadata.d.ts

@@ -0,0 +1 @@
+export * from '@vueuse/metadata'

+ 1 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/metadata.mjs

@@ -0,0 +1 @@
+export * from '@vueuse/metadata'

+ 16 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-fix

@@ -0,0 +1,16 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*)
+        if command -v cygpath > /dev/null 2>&1; then
+            basedir=`cygpath -w "$basedir"`
+        fi
+    ;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  exec "$basedir/node"  "$basedir/../vue-demi/bin/vue-demi-fix.js" "$@"
+else 
+  exec node  "$basedir/../vue-demi/bin/vue-demi-fix.js" "$@"
+fi

+ 17 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-fix.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\vue-demi\bin\vue-demi-fix.js" %*

+ 28 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-fix.ps1

@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "$basedir/node$exe"  "$basedir/../vue-demi/bin/vue-demi-fix.js" $args
+  } else {
+    & "$basedir/node$exe"  "$basedir/../vue-demi/bin/vue-demi-fix.js" $args
+  }
+  $ret=$LASTEXITCODE
+} else {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "node$exe"  "$basedir/../vue-demi/bin/vue-demi-fix.js" $args
+  } else {
+    & "node$exe"  "$basedir/../vue-demi/bin/vue-demi-fix.js" $args
+  }
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 16 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-switch

@@ -0,0 +1,16 @@
+#!/bin/sh
+basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
+
+case `uname` in
+    *CYGWIN*|*MINGW*|*MSYS*)
+        if command -v cygpath > /dev/null 2>&1; then
+            basedir=`cygpath -w "$basedir"`
+        fi
+    ;;
+esac
+
+if [ -x "$basedir/node" ]; then
+  exec "$basedir/node"  "$basedir/../vue-demi/bin/vue-demi-switch.js" "$@"
+else 
+  exec node  "$basedir/../vue-demi/bin/vue-demi-switch.js" "$@"
+fi

+ 17 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-switch.cmd

@@ -0,0 +1,17 @@
+@ECHO off
+GOTO start
+:find_dp0
+SET dp0=%~dp0
+EXIT /b
+:start
+SETLOCAL
+CALL :find_dp0
+
+IF EXIST "%dp0%\node.exe" (
+  SET "_prog=%dp0%\node.exe"
+) ELSE (
+  SET "_prog=node"
+  SET PATHEXT=%PATHEXT:;.JS;=;%
+)
+
+endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%"  "%dp0%\..\vue-demi\bin\vue-demi-switch.js" %*

+ 28 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/.bin/vue-demi-switch.ps1

@@ -0,0 +1,28 @@
+#!/usr/bin/env pwsh
+$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
+
+$exe=""
+if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
+  # Fix case when both the Windows and Linux builds of Node
+  # are installed in the same directory
+  $exe=".exe"
+}
+$ret=0
+if (Test-Path "$basedir/node$exe") {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "$basedir/node$exe"  "$basedir/../vue-demi/bin/vue-demi-switch.js" $args
+  } else {
+    & "$basedir/node$exe"  "$basedir/../vue-demi/bin/vue-demi-switch.js" $args
+  }
+  $ret=$LASTEXITCODE
+} else {
+  # Support pipeline input
+  if ($MyInvocation.ExpectingInput) {
+    $input | & "node$exe"  "$basedir/../vue-demi/bin/vue-demi-switch.js" $args
+  } else {
+    & "node$exe"  "$basedir/../vue-demi/bin/vue-demi-switch.js" $args
+  }
+  $ret=$LASTEXITCODE
+}
+exit $ret

+ 21 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019-PRESENT Anthony Fu<https://github.com/antfu>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

File diff suppressed because it is too large
+ 1548 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/index.cjs


File diff suppressed because it is too large
+ 874 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/index.d.ts


File diff suppressed because it is too large
+ 1638 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/index.iife.js


File diff suppressed because it is too large
+ 1 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/index.iife.min.js


File diff suppressed because it is too large
+ 1442 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/index.mjs


+ 50 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/@vueuse/shared/package.json

@@ -0,0 +1,50 @@
+{
+  "name": "@vueuse/shared",
+  "version": "8.9.4",
+  "author": "Anthony Fu <https://github.com/antfu>",
+  "license": "MIT",
+  "funding": "https://github.com/sponsors/antfu",
+  "homepage": "https://github.com/vueuse/vueuse/tree/main/packages/shared#readme",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/vueuse/vueuse.git",
+    "directory": "packages/shared"
+  },
+  "bugs": {
+    "url": "https://github.com/vueuse/vueuse/issues"
+  },
+  "keywords": [
+    "vue",
+    "vue-use",
+    "utils"
+  ],
+  "sideEffects": false,
+  "exports": {
+    ".": {
+      "types": "./index.d.ts",
+      "require": "./index.cjs",
+      "import": "./index.mjs"
+    },
+    "./*": "./*"
+  },
+  "main": "./index.cjs",
+  "module": "./index.mjs",
+  "unpkg": "./index.iife.min.js",
+  "jsdelivr": "./index.iife.min.js",
+  "types": "./index.d.ts",
+  "peerDependencies": {
+    "@vue/composition-api": "^1.1.0",
+    "vue": "^2.6.0 || ^3.2.0"
+  },
+  "peerDependenciesMeta": {
+    "vue": {
+      "optional": true
+    },
+    "@vue/composition-api": {
+      "optional": true
+    }
+  },
+  "dependencies": {
+    "vue-demi": "*"
+  }
+}

+ 21 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020-present, Anthony Fu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

+ 228 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/README.md

@@ -0,0 +1,228 @@
+<p align="center">
+<img src="https://github.com/vueuse/vue-demi/blob/main/assets/banner.png?raw=true" width="600"/>
+<br>
+<a href='https://www.npmjs.com/package/vue-demi'><img src='https://img.shields.io/npm/v/vue-demi?color=42b883' alt='npm'></a>
+</p>
+
+<p align="center">
+<b>Vue Demi</b> (<i>half</i> in French) is a developing utility<br> allows you to write <b>Universal Vue Libraries</b> for Vue 2 & 3<br>
+<i>See more details in <a href='https://antfu.me/posts/make-libraries-working-with-vue-2-and-3'>this blog post</a></i>
+</p>
+
+<br>
+
+<br>
+
+## Strategies
+
+- `<=2.6`: exports from `vue` + `@vue/composition-api` with plugin auto installing.
+- `2.7`: exports from `vue` (Composition API is built-in in Vue 2.7).
+- `>=3.0`: exports from `vue`, with polyfill of Vue 2's `set` and `del` API.
+
+## Usage
+
+Install this as your plugin's dependency:
+
+```bash
+npm i vue-demi
+# or
+yarn add vue-demi
+# or 
+pnpm i vue-demi
+```
+
+Add `vue` and `@vue/composition-api` to your plugin's peer dependencies to specify what versions you support.
+
+```jsonc
+{
+  "dependencies": {
+    "vue-demi": "latest"
+  },
+  "peerDependencies": {
+    "@vue/composition-api": "^1.0.0-rc.1",
+    "vue": "^2.0.0 || >=3.0.0"
+  },
+  "peerDependenciesMeta": {
+    "@vue/composition-api": {
+      "optional": true
+    }
+  },
+  "devDependencies": {
+    "vue": "^3.0.0" // or "^2.6.0" base on your preferred working environment
+  },
+}
+```
+
+Import everything related to Vue from it, it will redirect to `vue@2` + `@vue/composition-api` or `vue@3` based on users' environments.
+
+```ts
+import { ref, reactive, defineComponent } from 'vue-demi'
+```
+
+Publish your plugin and all is done!
+
+> When using with [Vite](https://vitejs.dev), you will need to opt-out the pre-bundling to get `vue-demi` work properly by
+> ```js
+> // vite.config.js
+> export default defineConfig({
+>   optimizeDeps: {
+>     exclude: ['vue-demi']
+>  }
+> })
+> ```
+
+### Extra APIs
+
+`Vue Demi` provides extra APIs to help distinguish users' environments and to do some version-specific logic.
+
+### `isVue2` `isVue3`
+
+```ts
+import { isVue2, isVue3 } from 'vue-demi'
+
+if (isVue2) {
+  // Vue 2 only
+} else {
+  // Vue 3 only
+}
+```
+
+### `Vue2`
+
+To avoid bringing in all the tree-shakable modules, we provide a `Vue2` export to support access to Vue 2's global API. (See [#41](https://github.com/vueuse/vue-demi/issues/41).)
+
+```ts
+import { Vue2 } from 'vue-demi'
+
+if (Vue2) {
+  Vue2.config.ignoredElements.push('x-foo')
+}
+```
+
+### `install()`
+
+Composition API in Vue 2 is provided as a plugin and needs to be installed on the Vue instance before using. Normally, `vue-demi` will try to install it automatically. For some usages where you might need to ensure the plugin gets installed correctly, the `install()` API is exposed to as a safe version of `Vue.use(CompositionAPI)`. `install()` in the Vue 3 environment will be an empty function (no-op).
+
+```ts
+import { install } from 'vue-demi'
+
+install()
+```
+
+## CLI
+
+### Manually Switch Versions
+
+To explicitly switch the redirecting version, you can use these commands in your project's root.
+
+```bash
+npx vue-demi-switch 2
+# or
+npx vue-demi-switch 3
+```
+
+### Package Aliasing
+
+If you would like to import `vue` under an alias, you can use the following command 
+
+```bash
+npx vue-demi-switch 2 vue2
+# or
+npx vue-demi-switch 3 vue3
+```
+
+Then `vue-demi` will redirect APIs from the alias name you specified, for example:
+
+```ts
+import * as Vue from 'vue3'
+
+var isVue2 = false
+var isVue3 = true
+var Vue2 = undefined
+
+export * from 'vue3'
+export {
+  Vue,
+  Vue2,
+  isVue2,
+  isVue3,
+}
+```
+
+### Auto Fix
+
+If the `postinstall` hook doesn't get triggered or you have updated the Vue version, try to run the following command to resolve the redirecting.
+
+```bash
+npx vue-demi-fix
+```
+
+### Isomorphic Testings
+
+You can support testing for both versions by adding npm alias in your dev dependencies. For example:
+
+```json
+{
+  "scripts": {
+    "test:2": "vue-demi-switch 2 vue2 && jest",
+    "test:3": "vue-demi-switch 3 && jest",
+  },
+  "devDependencies": {
+    "vue": "^3.0.0",
+    "vue2": "npm:vue@2"
+  },
+}
+```
+
+or
+
+```json
+{
+  "scripts": {
+    "test:2": "vue-demi-switch 2 && jest",
+    "test:3": "vue-demi-switch 3 vue3 && jest",
+  },
+  "devDependencies": {
+    "vue": "^2.6.0",
+    "vue3": "npm:vue@3"
+  },
+}
+```
+
+## Examples
+
+See [examples](./examples).
+
+## Who is using this?
+
+- [VueUse](https://github.com/vueuse/vueuse) - Collection of Composition API utils
+- [@vue/apollo-composable](https://github.com/vuejs/vue-apollo/tree/v4/packages/vue-apollo-composable) - Apollo GraphQL functions for Vue Composition API
+- [vuelidate](https://github.com/vuelidate/vuelidate) - Simple, lightweight model-based validation
+- [vue-composition-test-utils](https://github.com/ariesjia/vue-composition-test-utils) - Simple vue composition api unit test utilities
+- [vue-use-stripe](https://github.com/frandiox/vue-use-stripe) - Stripe Elements wrapper for Vue.js
+- [@opd/g2plot-vue](https://github.com/open-data-plan/g2plot-vue) - G2plot for vue
+- [vue-echarts](https://github.com/ecomfe/vue-echarts) - Vue.js component for Apache ECharts.
+- [fluent-vue](https://github.com/Demivan/fluent-vue) - Vue.js integration for [Fluent.js](https://github.com/projectfluent/fluent.js) - JavaScript implementation of [Project Fluent](https://projectfluent.org)  
+- [vue-datatable-url-sync](https://github.com/socotecio/vue-datatable-url-sync) - Synchronize datatable options and filters with the url to keep user preference even after refresh or navigation
+- [vue-insta-stories](https://github.com/UnevenSoftware/vue-insta-stories) - Instagram stories in your vue projects.
+- [vue-tiny-validate](https://github.com/FrontLabsOfficial/vue-tiny-validate) - Tiny Vue Validate Composition
+- [v-perfect-signature](https://github.com/wobsoriano/v-perfect-signature) - Pressure-sensitive signature drawing for Vue 2 and 3
+- [vue-winbox](https://github.com/wobsoriano/vue-winbox) - A wrapper component for WinBox.js that adds the ability to mount Vue components.
+- [vue-word-highlighter](https://github.com/kawamataryo/vue-word-highlighter) - The word highlighter library for Vue 2 and Vue 3
+- [vue-chart-3](https://github.com/victorgarciaesgi/vue-chart-3) - Vue.js component for Chart.js
+- [json-editor-vue](https://github.com/cloydlau/json-editor-vue) - JSON editor & viewer for Vue 2 and 3.
+- [kidar-echarts](https://github.com/kidarjs/kidar-echarts) - A simpler echarts component for Vue 2 and 3.
+- [vue3-sketch-ruler](https://github.com/kakajun/vue3-sketch-ruler) - The zoom operation used for page presentation for Vue 2 and 3( Replace render function with template )
+- [vue-rough-notation](https://github.com/Leecason/vue-rough-notation) - RoughNotation wrapper component for Vue 2 and 3.
+- [vue-request](https://github.com/AttoJS/vue-request) - Vue composition API for data fetching, supports SWR, polling, error retry, cache request, pagination, etc.
+- [vue3-lazyload](https://github.com/murongg/vue3-lazyload) - A vue3.x image lazyload plugin.
+- [vue-codemirror6](https://github.com/logue/vue-codemirror6) - CodeMirror6 component for Vue2 and 3.
+> open a PR to add your library ;)
+
+## Underhood
+
+See [the blog post](https://antfu.me/posts/make-libraries-working-with-vue-2-and-3/#-introducing-vue-demi).
+
+## License
+
+MIT License © 2020 [Anthony Fu](https://github.com/antfu)

+ 3 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/bin/vue-demi-fix.js

@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+'use strict'
+require('../scripts/postinstall')

+ 3 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/bin/vue-demi-switch.js

@@ -0,0 +1,3 @@
+#!/usr/bin/env node
+'use strict'
+require('../scripts/switch-cli')

+ 29 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/index.cjs

@@ -0,0 +1,29 @@
+var Vue = require('vue')
+
+Object.keys(Vue).forEach(function(key) {
+  exports[key] = Vue[key]
+})
+
+exports.set = function(target, key, val) {
+  if (Array.isArray(target)) {
+    target.length = Math.max(target.length, key)
+    target.splice(key, 1, val)
+    return val
+  }
+  target[key] = val
+  return val
+}
+
+exports.del = function(target, key) {
+  if (Array.isArray(target)) {
+    target.splice(key, 1)
+    return
+  }
+  delete target[key]
+}
+
+exports.Vue = Vue
+exports.Vue2 = undefined
+exports.isVue2 = false
+exports.isVue3 = true
+exports.install = function(){}

+ 22 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/index.d.ts

@@ -0,0 +1,22 @@
+import * as Vue from 'vue'
+declare const isVue2: boolean
+declare const isVue3: boolean
+declare const Vue2: any
+declare const install: (vue?: any) => void
+/** 
+ * @deprecated To avoid bringing in all the tree-shakable modules, this API has been deprecated. Use `Vue2` or named exports instead.
+ * Refer to https://github.com/vueuse/vue-demi/issues/41
+ */
+declare const V: typeof Vue
+
+export function set<T>(target: any, key: any, val: T): T
+export function del(target: any, key: any): void
+
+export * from 'vue'
+export {
+  V as Vue,
+  Vue2,
+  isVue2,
+  isVue3,
+  install,
+}

+ 119 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/index.iife.js

@@ -0,0 +1,119 @@
+var VueDemi = (function (VueDemi, Vue, VueCompositionAPI) {
+  if (VueDemi.install) {
+    return VueDemi
+  }
+  if (!Vue) {
+    console.error('[vue-demi] no Vue instance found, please be sure to import `vue` before `vue-demi`.')
+    return VueDemi
+  }
+
+  // Vue 2.7
+  if (Vue.version.slice(0, 4) === '2.7.') {
+    for (var key in Vue) {
+      VueDemi[key] = Vue[key]
+    }
+    VueDemi.isVue2 = true
+    VueDemi.isVue3 = false
+    VueDemi.install = function () {}
+    VueDemi.Vue = Vue
+    VueDemi.Vue2 = Vue
+    VueDemi.version = Vue.version
+    VueDemi.warn = Vue.util.warn
+    VueDemi.hasInjectionContext = function() {
+      return !!VueDemi.getCurrentInstance()
+    }
+    function createApp(rootComponent, rootProps) {
+      var vm
+      var provide = {}
+      var app = {
+        config: Vue.config,
+        use: Vue.use.bind(Vue),
+        mixin: Vue.mixin.bind(Vue),
+        component: Vue.component.bind(Vue),
+        provide: function (key, value) {
+          provide[key] = value
+          return this
+        },
+        directive: function (name, dir) {
+          if (dir) {
+            Vue.directive(name, dir)
+            return app
+          } else {
+            return Vue.directive(name)
+          }
+        },
+        mount: function (el, hydrating) {
+          if (!vm) {
+            vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))
+            vm.$mount(el, hydrating)
+            return vm
+          } else {
+            return vm
+          }
+        },
+        unmount: function () {
+          if (vm) {
+            vm.$destroy()
+            vm = undefined
+          }
+        },
+      }
+      return app
+    }
+    VueDemi.createApp = createApp
+  }
+  // Vue 2.6.x
+  else if (Vue.version.slice(0, 2) === '2.') {
+    if (VueCompositionAPI) {
+      for (var key in VueCompositionAPI) {
+        VueDemi[key] = VueCompositionAPI[key]
+      }
+      VueDemi.isVue2 = true
+      VueDemi.isVue3 = false
+      VueDemi.install = function () {}
+      VueDemi.Vue = Vue
+      VueDemi.Vue2 = Vue
+      VueDemi.version = Vue.version
+      VueDemi.hasInjectionContext = function() {
+        return !!VueDemi.getCurrentInstance()
+      }
+    } else {
+      console.error('[vue-demi] no VueCompositionAPI instance found, please be sure to import `@vue/composition-api` before `vue-demi`.')
+    }
+  }
+  // Vue 3
+  else if (Vue.version.slice(0, 2) === '3.') {
+    for (var key in Vue) {
+      VueDemi[key] = Vue[key]
+    }
+    VueDemi.isVue2 = false
+    VueDemi.isVue3 = true
+    VueDemi.install = function () {}
+    VueDemi.Vue = Vue
+    VueDemi.Vue2 = undefined
+    VueDemi.version = Vue.version
+    VueDemi.set = function (target, key, val) {
+      if (Array.isArray(target)) {
+        target.length = Math.max(target.length, key)
+        target.splice(key, 1, val)
+        return val
+      }
+      target[key] = val
+      return val
+    }
+    VueDemi.del = function (target, key) {
+      if (Array.isArray(target)) {
+        target.splice(key, 1)
+        return
+      }
+      delete target[key]
+    }
+  } else {
+    console.error('[vue-demi] Vue version ' + Vue.version + ' is unsupported.')
+  }
+  return VueDemi
+})(
+  (this.VueDemi = this.VueDemi || (typeof VueDemi !== 'undefined' ? VueDemi : {})),
+  this.Vue || (typeof Vue !== 'undefined' ? Vue : undefined),
+  this.VueCompositionAPI || (typeof VueCompositionAPI !== 'undefined' ? VueCompositionAPI : undefined)
+);

+ 34 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/index.mjs

@@ -0,0 +1,34 @@
+import * as Vue from 'vue'
+
+var isVue2 = false
+var isVue3 = true
+var Vue2 = undefined
+
+function install() {}
+
+export function set(target, key, val) {
+  if (Array.isArray(target)) {
+    target.length = Math.max(target.length, key)
+    target.splice(key, 1, val)
+    return val
+  }
+  target[key] = val
+  return val
+}
+
+export function del(target, key) {
+  if (Array.isArray(target)) {
+    target.splice(key, 1)
+    return
+  }
+  delete target[key]
+}
+
+export * from 'vue'
+export {
+  Vue,
+  Vue2,
+  isVue2,
+  isVue3,
+  install,
+}

+ 60 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2.7/index.cjs

@@ -0,0 +1,60 @@
+var VueModule = require('vue')
+
+// get the real Vue https://github.com/vueuse/vue-demi/issues/192
+var Vue = VueModule.default || VueModule
+
+exports.Vue = Vue
+exports.Vue2 = Vue
+exports.isVue2 = true
+exports.isVue3 = false
+exports.install = function () {}
+exports.warn = Vue.util.warn
+
+// createApp polyfill
+exports.createApp = function (rootComponent, rootProps) {
+  var vm
+  var provide = {}
+  var app = {
+    config: Vue.config,
+    use: Vue.use.bind(Vue),
+    mixin: Vue.mixin.bind(Vue),
+    component: Vue.component.bind(Vue),
+    provide: function (key, value) {
+      provide[key] = value
+      return this
+    },
+    directive: function (name, dir) {
+      if (dir) {
+        Vue.directive(name, dir)
+        return app
+      } else {
+        return Vue.directive(name)
+      }
+    },
+    mount: function (el, hydrating) {
+      if (!vm) {
+        vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))
+        vm.$mount(el, hydrating)
+        return vm
+      } else {
+        return vm
+      }
+    },
+    unmount: function () {
+      if (vm) {
+        vm.$destroy()
+        vm = undefined
+      }
+    },
+  }
+  return app
+}
+
+Object.keys(VueModule).forEach(function (key) {
+  exports[key] = VueModule[key]
+})
+
+// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()
+exports.hasInjectionContext = function() {
+  return !!VueModule.getCurrentInstance()
+}

+ 38 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2.7/index.d.ts

@@ -0,0 +1,38 @@
+import Vue from 'vue'
+import type { PluginFunction, PluginObject, VueConstructor, Directive, InjectionKey, Component } from 'vue'
+
+declare const isVue2: boolean
+declare const isVue3: boolean
+declare const Vue2: typeof Vue | undefined
+declare const version: string
+declare const install: (vue?: typeof Vue) => void
+export declare function warn(msg: string, vm?: Component | null): void
+/**
+ * @deprecated To avoid bringing in all the tree-shakable modules, this API has been deprecated. Use `Vue2` or named exports instead.
+ * Refer to https://github.com/vueuse/vue-demi/issues/41
+ */
+declare const V: typeof Vue
+
+// accept no generic because Vue 3 doesn't accept any
+// https://github.com/vuejs/vue-next/pull/2758/
+export declare type Plugin = PluginObject<any> | PluginFunction<any>
+export type { VNode } from 'vue'
+export * from 'vue'
+export { V as Vue, Vue2, isVue2, isVue3, version, install }
+
+// #region createApp polyfill
+export interface App<T = any> {
+  config: VueConstructor['config']
+  use: VueConstructor['use']
+  mixin: VueConstructor['mixin']
+  component: VueConstructor['component']
+  directive(name: string): Directive | undefined
+  directive(name: string, directive: Directive): this
+  provide<T>(key: InjectionKey<T> | string, value: T): this
+  mount: Vue['$mount']
+  unmount: Vue['$destroy']
+}
+export declare function createApp(rootComponent: any, rootProps?: any): App
+// #endregion
+
+export declare function hasInjectionContext(): boolean

+ 80 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2.7/index.mjs

@@ -0,0 +1,80 @@
+import Vue from 'vue'
+import { getCurrentInstance } from 'vue'
+
+var isVue2 = true
+var isVue3 = false
+var Vue2 = Vue
+var warn = Vue.util.warn
+
+function install() {}
+
+// createApp polyfill
+export function createApp(rootComponent, rootProps) {
+  var vm
+  var provide = {}
+  var app = {
+    config: Vue.config,
+    use: Vue.use.bind(Vue),
+    mixin: Vue.mixin.bind(Vue),
+    component: Vue.component.bind(Vue),
+    provide: function (key, value) {
+      provide[key] = value
+      return this
+    },
+    directive: function (name, dir) {
+      if (dir) {
+        Vue.directive(name, dir)
+        return app
+      } else {
+        return Vue.directive(name)
+      }
+    },
+    mount: function (el, hydrating) {
+      if (!vm) {
+        vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))
+        vm.$mount(el, hydrating)
+        return vm
+      } else {
+        return vm
+      }
+    },
+    unmount: function () {
+      if (vm) {
+        vm.$destroy()
+        vm = undefined
+      }
+    },
+  }
+  return app
+}
+
+export {
+  Vue,
+  Vue2,
+  isVue2,
+  isVue3,
+  install,
+  warn
+}
+
+// Vue 3 components mock
+function createMockComponent(name) {
+  return {
+    setup() {
+      throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\'s provided to avoid compiler errors.')
+    }
+  }
+}
+export var Fragment = /*#__PURE__*/ createMockComponent('Fragment')
+export var Transition = /*#__PURE__*/ createMockComponent('Transition')
+export var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')
+export var Teleport = /*#__PURE__*/ createMockComponent('Teleport')
+export var Suspense = /*#__PURE__*/ createMockComponent('Suspense')
+export var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')
+
+export * from 'vue'
+
+// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()
+export function hasInjectionContext() {
+  return !!getCurrentInstance()
+}

+ 34 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2/index.cjs

@@ -0,0 +1,34 @@
+var Vue = require('vue')
+var VueCompositionAPI = require('@vue/composition-api')
+
+function install(_vue) {
+  var vueLib = _vue || Vue
+  if (vueLib && 'default' in vueLib) {
+    vueLib = vueLib.default
+  }
+
+  if (vueLib && !vueLib['__composition_api_installed__']) {
+    if (VueCompositionAPI && 'default' in VueCompositionAPI)
+      vueLib.use(VueCompositionAPI.default)
+    else if (VueCompositionAPI)
+      vueLib.use(VueCompositionAPI)
+  }
+}
+
+install(Vue)
+
+Object.keys(VueCompositionAPI).forEach(function(key) {
+  exports[key] = VueCompositionAPI[key]
+})
+
+exports.Vue = Vue
+exports.Vue2 = Vue
+exports.isVue2 = true
+exports.isVue3 = false
+exports.install = install
+exports.version = Vue.version
+
+// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()
+exports.hasInjectionContext = function () {
+  return !!VueCompositionAPI.getCurrentInstance()
+}

+ 33 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2/index.d.ts

@@ -0,0 +1,33 @@
+import Vue from 'vue'
+import type { PluginFunction, PluginObject } from 'vue'
+declare const isVue2: boolean
+declare const isVue3: boolean
+declare const Vue2: typeof Vue | undefined
+declare const version: string
+declare const install: (vue?: typeof Vue) => void
+/**
+ * @deprecated To avoid bringing in all the tree-shakable modules, this API has been deprecated. Use `Vue2` or named exports instead.
+ * Refer to https://github.com/vueuse/vue-demi/issues/41
+ */
+declare const V: typeof Vue
+
+/**
+ * DebuggerEvent is a Vue 3 development only feature. This type cannot exist in Vue 2.
+ */
+export declare type DebuggerEvent = never
+
+// accept no generic because Vue 3 doesn't accept any
+// https://github.com/vuejs/vue-next/pull/2758/
+export declare type Plugin = PluginObject<any> | PluginFunction<any>
+export type { VNode } from 'vue'
+export * from '@vue/composition-api'
+export {
+  V as Vue,
+  Vue2,
+  isVue2,
+  isVue3,
+  version,
+  install,
+}
+
+export declare function hasInjectionContext(): boolean

+ 49 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v2/index.mjs

@@ -0,0 +1,49 @@
+import Vue from 'vue'
+import VueCompositionAPI, { getCurrentInstance } from '@vue/composition-api/dist/vue-composition-api.mjs'
+
+function install(_vue) {
+  _vue = _vue || Vue
+  if (_vue && !_vue['__composition_api_installed__'])
+    _vue.use(VueCompositionAPI)
+}
+
+install(Vue)
+
+var isVue2 = true
+var isVue3 = false
+var Vue2 = Vue
+var version = Vue.version
+
+/**VCA-EXPORTS**/
+export * from '@vue/composition-api/dist/vue-composition-api.mjs'
+/**VCA-EXPORTS**/
+
+export {
+  Vue,
+  Vue2,
+  isVue2,
+  isVue3,
+  version,
+  install,
+}
+
+
+// Vue 3 components mock
+function createMockComponent(name) {
+  return {
+    setup() {
+      throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\'s provided to avoid compiler errors.')
+    }
+  }
+}
+export var Fragment = /*#__PURE__*/ createMockComponent('Fragment')
+export var Transition = /*#__PURE__*/ createMockComponent('Transition')
+export var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')
+export var Teleport = /*#__PURE__*/ createMockComponent('Teleport')
+export var Suspense = /*#__PURE__*/ createMockComponent('Suspense')
+export var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')
+
+// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()
+export function hasInjectionContext() {
+  return !!getCurrentInstance()
+}

+ 29 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v3/index.cjs

@@ -0,0 +1,29 @@
+var Vue = require('vue')
+
+Object.keys(Vue).forEach(function(key) {
+  exports[key] = Vue[key]
+})
+
+exports.set = function(target, key, val) {
+  if (Array.isArray(target)) {
+    target.length = Math.max(target.length, key)
+    target.splice(key, 1, val)
+    return val
+  }
+  target[key] = val
+  return val
+}
+
+exports.del = function(target, key) {
+  if (Array.isArray(target)) {
+    target.splice(key, 1)
+    return
+  }
+  delete target[key]
+}
+
+exports.Vue = Vue
+exports.Vue2 = undefined
+exports.isVue2 = false
+exports.isVue3 = true
+exports.install = function(){}

+ 22 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v3/index.d.ts

@@ -0,0 +1,22 @@
+import * as Vue from 'vue'
+declare const isVue2: boolean
+declare const isVue3: boolean
+declare const Vue2: any
+declare const install: (vue?: any) => void
+/** 
+ * @deprecated To avoid bringing in all the tree-shakable modules, this API has been deprecated. Use `Vue2` or named exports instead.
+ * Refer to https://github.com/vueuse/vue-demi/issues/41
+ */
+declare const V: typeof Vue
+
+export function set<T>(target: any, key: any, val: T): T
+export function del(target: any, key: any): void
+
+export * from 'vue'
+export {
+  V as Vue,
+  Vue2,
+  isVue2,
+  isVue3,
+  install,
+}

+ 34 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/lib/v3/index.mjs

@@ -0,0 +1,34 @@
+import * as Vue from 'vue'
+
+var isVue2 = false
+var isVue3 = true
+var Vue2 = undefined
+
+function install() {}
+
+export function set(target, key, val) {
+  if (Array.isArray(target)) {
+    target.length = Math.max(target.length, key)
+    target.splice(key, 1, val)
+    return val
+  }
+  target[key] = val
+  return val
+}
+
+export function del(target, key) {
+  if (Array.isArray(target)) {
+    target.splice(key, 1)
+    return
+  }
+  delete target[key]
+}
+
+export * from 'vue'
+export {
+  Vue,
+  Vue2,
+  isVue2,
+  isVue3,
+  install,
+}

+ 47 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/package.json

@@ -0,0 +1,47 @@
+{
+  "name": "vue-demi",
+  "version": "0.14.7",
+  "engines": {
+    "node": ">=12"
+  },
+  "repository": "https://github.com/antfu/vue-demi.git",
+  "funding": "https://github.com/sponsors/antfu",
+  "license": "MIT",
+  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
+  "main": "lib/index.cjs",
+  "jsdelivr": "lib/index.iife.js",
+  "unpkg": "lib/index.iife.js",
+  "module": "lib/index.mjs",
+  "types": "lib/index.d.ts",
+  "exports": {
+    ".": {
+      "types": "./lib/index.d.ts",
+      "require": "./lib/index.cjs",
+      "import": "./lib/index.mjs",
+      "browser": "./lib/index.mjs"
+    },
+    "./*": "./*"
+  },
+  "bin": {
+    "vue-demi-fix": "bin/vue-demi-fix.js",
+    "vue-demi-switch": "bin/vue-demi-switch.js"
+  },
+  "files": [
+    "lib",
+    "bin",
+    "scripts"
+  ],
+  "scripts": {
+    "postinstall": "node -e \"try{require('./scripts/postinstall.js')}catch(e){}\"",
+    "release": "npx bumpp --tag --commit --push && npm publish"
+  },
+  "peerDependencies": {
+    "@vue/composition-api": "^1.0.0-rc.1",
+    "vue": "^3.0.0-0 || ^2.6.0"
+  },
+  "peerDependenciesMeta": {
+    "@vue/composition-api": {
+      "optional": true
+    }
+  }
+}

+ 19 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/scripts/postinstall.js

@@ -0,0 +1,19 @@
+const { switchVersion, loadModule } = require('./utils')
+
+const Vue = loadModule('vue')
+
+if (!Vue || typeof Vue.version !== 'string') {
+  console.warn('[vue-demi] Vue is not found. Please run "npm install vue" to install.')
+}
+else if (Vue.version.startsWith('2.7.')) {
+  switchVersion(2.7)
+}
+else if (Vue.version.startsWith('2.')) {
+  switchVersion(2)
+}
+else if (Vue.version.startsWith('3.')) {
+  switchVersion(3)
+}
+else {
+  console.warn(`[vue-demi] Vue version v${Vue.version} is not suppported.`)
+}

+ 18 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/scripts/switch-cli.js

@@ -0,0 +1,18 @@
+const { switchVersion } = require('./utils')
+
+const version = process.argv[2]
+const vueEntry = process.argv[3] || 'vue'
+
+if (version === '2.7') {
+  switchVersion(2.7, vueEntry)
+  console.log(`[vue-demi] Switched for Vue 2.7 (entry: "${vueEntry}")`)
+} else if (version === '2') {
+  switchVersion(2, vueEntry)
+  console.log(`[vue-demi] Switched for Vue 2 (entry: "${vueEntry}")`)
+} else if (version === '3') {
+  switchVersion(3, vueEntry)
+  console.log(`[vue-demi] Switched for Vue 3 (entry: "${vueEntry}")`)
+} else {
+  console.warn(`[vue-demi] expecting version "2" or "2.7" or "3" but got "${version}"`)
+  process.exit(1)
+}

+ 62 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/node_modules/vue-demi/scripts/utils.js

@@ -0,0 +1,62 @@
+const fs = require('fs')
+const path = require('path')
+
+const dir = path.resolve(__dirname, '..', 'lib')
+
+function loadModule(name) {
+  try {
+    return require(name)
+  } catch (e) {
+    return undefined
+  }
+}
+
+function copy(name, version, vue) {
+  vue = vue || 'vue'
+  const src = path.join(dir, `v${version}`, name)
+  const dest = path.join(dir, name)
+  let content = fs.readFileSync(src, 'utf-8')
+  content = content.replace(/'vue'/g, `'${vue}'`)
+  // unlink for pnpm, #92
+  try {
+    fs.unlinkSync(dest)
+  } catch (error) { }
+  fs.writeFileSync(dest, content, 'utf-8')
+}
+
+function updateVue2API() {
+  const ignoreList = ['version', 'default']
+  const VCA = loadModule('@vue/composition-api')
+  if (!VCA) {
+    console.warn('[vue-demi] Composition API plugin is not found. Please run "npm install @vue/composition-api" to install.')
+    return
+  }
+
+  const exports = Object.keys(VCA).filter(i => !ignoreList.includes(i))
+
+  const esmPath = path.join(dir, 'index.mjs')
+  let content = fs.readFileSync(esmPath, 'utf-8')
+
+  content = content.replace(
+    /\/\*\*VCA-EXPORTS\*\*\/[\s\S]+\/\*\*VCA-EXPORTS\*\*\//m,
+`/**VCA-EXPORTS**/
+export { ${exports.join(', ')} } from '@vue/composition-api/dist/vue-composition-api.mjs'
+/**VCA-EXPORTS**/`
+    )
+
+  fs.writeFileSync(esmPath, content, 'utf-8')
+  
+}
+
+function switchVersion(version, vue) {
+  copy('index.cjs', version, vue)
+  copy('index.mjs', version, vue)
+  copy('index.d.ts', version, vue)
+
+  if (version === 2)
+    updateVue2API()
+}
+
+
+module.exports.loadModule = loadModule
+module.exports.switchVersion = switchVersion

+ 59 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/core/package.json

@@ -0,0 +1,59 @@
+{
+  "name": "@vueuse/core",
+  "version": "8.9.4",
+  "description": "Collection of essential Vue Composition Utilities",
+  "author": "Anthony Fu <https://github.com/antfu>",
+  "license": "MIT",
+  "funding": "https://github.com/sponsors/antfu",
+  "homepage": "https://github.com/vueuse/vueuse#readme",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/vueuse/vueuse.git",
+    "directory": "packages/core"
+  },
+  "bugs": {
+    "url": "https://github.com/vueuse/vueuse/issues"
+  },
+  "keywords": [
+    "vue",
+    "vue-use",
+    "utils"
+  ],
+  "sideEffects": false,
+  "exports": {
+    ".": {
+      "types": "./index.d.ts",
+      "require": "./index.cjs",
+      "import": "./index.mjs"
+    },
+    "./*": "./*",
+    "./metadata": {
+      "types": "./metadata.d.ts",
+      "require": "./metadata.cjs",
+      "import": "./metadata.mjs"
+    }
+  },
+  "main": "./index.cjs",
+  "module": "./index.mjs",
+  "unpkg": "./index.iife.min.js",
+  "jsdelivr": "./index.iife.min.js",
+  "types": "./index.d.ts",
+  "peerDependencies": {
+    "@vue/composition-api": "^1.1.0",
+    "vue": "^2.6.0 || ^3.2.0"
+  },
+  "peerDependenciesMeta": {
+    "vue": {
+      "optional": true
+    },
+    "@vue/composition-api": {
+      "optional": true
+    }
+  },
+  "dependencies": {
+    "@types/web-bluetooth": "^0.0.14",
+    "@vueuse/metadata": "8.9.4",
+    "@vueuse/shared": "8.9.4",
+    "vue-demi": "*"
+  }
+}

+ 21 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/LICENSE

@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2019-PRESENT Anthony Fu<https://github.com/antfu>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

File diff suppressed because it is too large
+ 2107 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/index.cjs


+ 75 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/index.d.ts

@@ -0,0 +1,75 @@
+interface PackageManifest {
+    name: string;
+    display: string;
+    addon?: boolean;
+    author?: string;
+    description?: string;
+    external?: string[];
+    globals?: Record<string, string>;
+    manualImport?: boolean;
+    deprecated?: boolean;
+    submodules?: boolean;
+    build?: boolean;
+    iife?: boolean;
+    cjs?: boolean;
+    mjs?: boolean;
+    dts?: boolean;
+    target?: string;
+    utils?: boolean;
+    copy?: string[];
+}
+interface VueUseFunction {
+    name: string;
+    package: string;
+    lastUpdated?: number;
+    category?: string;
+    description?: string;
+    docs?: string;
+    deprecated?: boolean;
+    internal?: boolean;
+    component?: boolean;
+    directive?: boolean;
+    external?: string;
+    alias?: string[];
+    related?: string[];
+}
+interface VueUsePackage extends PackageManifest {
+    dir: string;
+    docs?: string;
+}
+interface PackageIndexes {
+    packages: Record<string, VueUsePackage>;
+    categories: string[];
+    functions: VueUseFunction[];
+}
+interface CommitInfo {
+    functions: string[];
+    version?: string;
+    hash: string;
+    date: string;
+    message: string;
+    refs?: string;
+    body?: string;
+    author_name: string;
+    author_email: string;
+}
+interface ContributorInfo {
+    name: string;
+    count: number;
+    hash: string;
+}
+
+declare const metadata: PackageIndexes;
+declare const functions: VueUseFunction[];
+declare const packages: Record<string, VueUsePackage>;
+declare const categories: string[];
+declare const functionNames: string[];
+declare const categoryNames: string[];
+declare const coreCategoryNames: string[];
+declare const addonCategoryNames: string[];
+declare const getFunction: (name: string) => VueUseFunction | undefined;
+
+declare function getCategories(functions: VueUseFunction[]): string[];
+declare function uniq<T extends any[]>(a: T): any[];
+
+export { CommitInfo, ContributorInfo, PackageIndexes, PackageManifest, VueUseFunction, VueUsePackage, addonCategoryNames, categories, categoryNames, coreCategoryNames, functionNames, functions, getCategories, getFunction, metadata, packages, uniq };

File diff suppressed because it is too large
+ 2059 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/index.json


File diff suppressed because it is too large
+ 2093 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/index.mjs


+ 39 - 0
fhKeeper/formulahousekeeper/plugIn/form-design-master/update/node_modules/@vueuse/metadata/package.json

@@ -0,0 +1,39 @@
+{
+  "name": "@vueuse/metadata",
+  "version": "8.9.4",
+  "description": "Metadata for VueUse functions",
+  "author": "Anthony Fu <https://github.com/antfu>",
+  "license": "MIT",
+  "funding": "https://github.com/sponsors/antfu",
+  "homepage": "https://github.com/vueuse/vueuse/tree/main/packages/metadata#readme",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/vueuse/vueuse.git",
+    "directory": "packages/metadata"
+  },
+  "bugs": {
+    "url": "https://github.com/vueuse/vueuse/issues"
+  },
+  "keywords": [
+    "vue",
+    "vue-use"
+  ],
+  "sideEffects": false,
+  "exports": {
+    ".": {
+      "types": "./index.d.ts",
+      "require": "./index.cjs",
+      "import": "./index.mjs"
+    },
+    "./*": "./*"
+  },
+  "main": "./index.cjs",
+  "module": "./index.mjs",
+  "types": "./index.d.ts",
+  "files": [
+    "index.*"
+  ],
+  "scripts": {
+    "update": "esno scripts/update.ts"
+  }
+}