Explorar o código

网银登记单前端zjcmp_cd/cd/96h10119

zthwr %!s(int64=3) %!d(string=hai) anos
pai
achega
95d88900a9
Modificáronse 36 ficheiros con 2859 adicións e 0 borrados
  1. 10 0
      zj_web/zjcmp_cd/cd/96h10119/card/config.json
  2. 17 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/afterHeadEvent.js
  3. 11 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/afterTableEvent.js
  4. 26 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/beforeHeadEvent.js
  5. 9 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/beforeTableEvent.js
  6. 118 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/bodyButtonClick.js
  7. 16 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/bodySelectedEvent.js
  8. 156 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/buttonClick.js
  9. 95 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/buttonVisibilityControl.js
  10. 476 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/cardOperator.js
  11. 16 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/index.js
  12. 109 0
      zj_web/zjcmp_cd/cd/96h10119/card/events/initTemplate.js
  13. 440 0
      zj_web/zjcmp_cd/cd/96h10119/card/index.js
  14. 201 0
      zj_web/zjcmp_cd/cd/96h10119/constant/index.js
  15. 10 0
      zj_web/zjcmp_cd/cd/96h10119/list/config.json
  16. 40 0
      zj_web/zjcmp_cd/cd/96h10119/list/events/bodyButtonClick.js
  17. 55 0
      zj_web/zjcmp_cd/cd/96h10119/list/events/buttonClick.js
  18. 7 0
      zj_web/zjcmp_cd/cd/96h10119/list/events/index.js
  19. 138 0
      zj_web/zjcmp_cd/cd/96h10119/list/events/initTemplate.js
  20. 354 0
      zj_web/zjcmp_cd/cd/96h10119/list/events/listOperator.js
  21. 6 0
      zj_web/zjcmp_cd/cd/96h10119/list/events/searchBtnClick.js
  22. 76 0
      zj_web/zjcmp_cd/cd/96h10119/list/events/selectedEvent.js
  23. 185 0
      zj_web/zjcmp_cd/cd/96h10119/list/index.js
  24. 10 0
      zj_web/zjcmp_cd/cd/96h10119/main/config.json
  25. 6 0
      zj_web/zjcmp_cd/cd/96h10119/main/index.js
  26. 28 0
      zj_web/zjcmp_cd/cd/96h10119/main/router.js
  27. 41 0
      zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10101.json
  28. 27 0
      zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10102.json
  29. 27 0
      zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10103.json
  30. 27 0
      zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10104.json
  31. 27 0
      zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10106.json
  32. 26 0
      zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10107.json
  33. 23 0
      zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10108.json
  34. 23 0
      zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10110.json
  35. 23 0
      zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10119.json
  36. 0 0
      zj_web/zjcmp_cd/public/lang/standard/simpchn/ncc_patch

+ 10 - 0
zj_web/zjcmp_cd/cd/96h10119/card/config.json

@@ -0,0 +1,10 @@
+{
+    "dependModuleName": [
+        "uap/common/components/ApproveDetail",
+        "uap/common/components/NCUploader"
+    ],
+    "dependjs": [
+        "../../../../uap/common/components/ApproveDetail/index.js",
+        "../../../../uap/common/components/NCUploader/index.js"
+    ]
+}

+ 17 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/afterHeadEvent.js

@@ -0,0 +1,17 @@
+import { FIELD, CARD_ADD_DISABLED_BUTTON, CARD } from "../../constant";
+/**
+* @description: 表头编辑后事件
+* @param: moduleId 区域编码
+* @param: key 当前字段编码
+*/
+export function afterHeadEvent(props, moduleId, key, value, oldValue) {
+        if (key === FIELD.org) {
+                props.resMetaAfterPkorgEdit(); //选择主组织以后,恢复其他字段的编辑性
+                props.button.setButtonDisabled(CARD_ADD_DISABLED_BUTTON, false);//恢复增行编辑性
+                props.cardTable.setAllCheckboxAble(CARD.table_code, true);
+        }
+
+    
+
+
+}

+ 11 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/afterTableEvent.js

@@ -0,0 +1,11 @@
+/**
+* @description: 表体编辑后事件
+* @param: moduleId 区域编码
+* @param: key 当前字段编码
+*/
+export function afterTableEvent(props, moduleId, key, value, changedrows, index, record, type, method) {
+
+
+    return true;
+        
+}

+ 26 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/beforeHeadEvent.js

@@ -0,0 +1,26 @@
+
+import { ajax, cardCache, toast } from 'nc-lightapp-front';
+
+/**
+* @description: 表头编辑前事件
+* @param: moduleId 区域编码
+* @param: key 当前字段编码
+* @return: 布尔 true表示可编辑
+*/
+export function beforeHeadEvent(props, moduleId, key, value, data) {
+
+
+  //zth  未启用的银行账号也可以参照到
+  if(key === "account"){
+        toast({ color: 'success', content: "编辑了开户银行" });
+
+      }
+
+
+
+
+
+      return true;
+
+
+}

+ 9 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/beforeTableEvent.js

@@ -0,0 +1,9 @@
+/**
+* @description: 表体编辑前事件
+* @param: moduleId 区域编码
+* @param: key 当前字段编码
+* @return: 布尔 true表示可编辑
+*/
+export function beforeTableEvent(props, moduleId, key, value, index, record, status) {
+        return true;
+}

+ 118 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/bodyButtonClick.js

@@ -0,0 +1,118 @@
+import { deepClone } from 'nc-lightapp-front';
+import { CARD_BUTTON, CARD, STATUS, CARD_DISABLED_BUTTON, PRIMARY_KEY } from '../../constant';
+
+/**
+* @description: 表体按钮点击事件
+* @param: key 当前触发按钮名称
+* @param: index 当前行序
+* @param: record 当前行信息
+*/
+export function bodyButtonClick(props, key, text, record, index) {
+debugger;
+    switch (key) {
+        //肩 新增
+        case CARD_BUTTON.addRow:
+            props.cardTable.addRow(CARD.table_code);
+            break;
+
+        //肩 删除
+        case CARD_BUTTON.deleteRow:
+            let checkedRows = props.cardTable.getCheckedRows(CARD.table_code);
+            let checkedIndex = checkedRows && checkedRows.map(item => item.index);
+            if (checkedRows.length > 0) {
+                props.cardTable.delRowsByIndex(CARD.table_code, checkedIndex);
+                props.button.setButtonDisabled(CARD_DISABLED_BUTTON, true);
+            }
+            break;
+
+        //行 展开
+        case CARD_BUTTON.expand:
+            debugger;
+            props.cardTable.openTabModel(CARD.table_code, STATUS.edit, record, index);
+            break;
+
+        //行 展开(浏览态)
+        case CARD_BUTTON.unfold:
+        //行 收起
+        case CARD_BUTTON.fold:
+            debugger;
+            props.cardTable.toggleTabRowView(CARD.table_code, record);
+            break;
+
+        //行 插行
+        case CARD_BUTTON.insertRow:
+            props.cardTable.addRow(CARD.table_code, index);
+            break;
+
+        //行 删行
+        case CARD_BUTTON.delRow:
+            props.cardTable.delRowsByIndex(CARD.table_code, index);
+            break;
+
+        //行 复制行
+        case CARD_BUTTON.copyRow:
+            props.cardTable.pasteRow(CARD.table_code, index, [PRIMARY_KEY.body_id]);
+            break;
+
+        //肩 复制行
+        case CARD_BUTTON.copyRows:
+            copyControl.call(this, props, true);
+            break;
+
+        //肩 取消复制
+        case CARD_BUTTON.pasteCancel:
+            copyControl.call(this, props, false);
+            break;
+
+        //肩 粘贴至末行
+        case CARD_BUTTON.pasteTail:
+            let lastIndex = props.cardTable.getNumberOfRows(CARD.table_code);
+            props.cardTable.insertRowsAfterIndex(CARD.table_code, getPasteRows(props), lastIndex);
+            copyControl.call(this, props, false);
+            props.cardTable.selectAllRows(CARD.table_code, false);
+            break;
+
+        //行 粘贴至此
+        case CARD_BUTTON.pasteHere:
+            props.cardTable.insertRowsAfterIndex(CARD.table_code, getPasteRows(props), index);
+            copyControl.call(this, props, false);
+            props.cardTable.selectAllRows(CARD.table_code, false);
+            break;
+    }
+    if (![CARD_BUTTON.unfold, CARD_BUTTON.fold].includes(key)) {
+        debugger;
+        props.cardTable.setStatus(CARD.table_code, STATUS.edit);
+    }
+}
+
+//复制时的状态控制
+function copyControl(props, flag) {
+    //肩部按钮显示控制
+    props.button.setButtonVisible({
+        [CARD_BUTTON.addRow]: !flag,
+        [CARD_BUTTON.deleteRow]: !flag,
+        [CARD_BUTTON.copyRows]: !flag,
+
+        [CARD_BUTTON.pasteTail]: flag,
+        [CARD_BUTTON.pasteCancel]: flag,
+    });
+    props.cardTable.setAllCheckboxAble(CARD.table_code, !flag);
+    this.setState({ isPaste: flag });
+}
+
+/**
+ * 获取粘贴行数据
+ *
+ * @returns 返回粘贴行数据
+ */
+function getPasteRows(props) {
+    let checkedRows = props.cardTable.getCheckedRows(CARD.table_code);
+    let selectRowCopy = deepClone(checkedRows);
+    let selectArr = selectRowCopy.map(item => {
+        item.data.selected = false;
+        item.data.values[PRIMARY_KEY.head_id] ? item.data.values[PRIMARY_KEY.head_id].value = null : null;
+        item.data.values[PRIMARY_KEY.body_id] ? item.data.values[PRIMARY_KEY.body_id].value = null : null;
+        return item.data;
+    });
+    return selectArr;
+}

+ 16 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/bodySelectedEvent.js

@@ -0,0 +1,16 @@
+import { CARD, CARD_DISABLED_BUTTON } from "../../constant";
+
+//单选
+export function bodySelectedEvent(props, moduleId, record, index, status) {
+    let checkedRows = props.cardTable.getCheckedRows(CARD.table_code);
+    if (checkedRows.length > 0) {
+        props.button.setButtonDisabled(CARD_DISABLED_BUTTON, false);
+    } else {
+        props.button.setButtonDisabled(CARD_DISABLED_BUTTON, true);
+    }
+}
+
+//全选
+export function bodySelectedAllEvent(props, moduleId, status, length) {
+    props.button.setButtonDisabled(CARD_DISABLED_BUTTON, !(status && length > 0));
+}

+ 156 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/buttonClick.js

@@ -0,0 +1,156 @@
+import { promptBox } from 'nc-lightapp-front';
+import { CARD, CARD_BUTTON, STATUS } from '../../constant';
+import { cardBack, cardCreate, cardSave, cardUpdate,cardModify, cardDelete, cardCancel,cardLogOut, cardRefresh, cardCopy, cardAttachment, cardBillTrack, cardCommit, cardUnCommit, cardLinkApprove } from './cardOperator';
+import { buttonVisibilityControl } from "./buttonVisibilityControl";
+/**
+* @description: 卡片页头部按钮操作
+* @param: isFromSide 是否来自侧拉区域
+* @param: id 当前按钮名
+*/
+const formId = 'card_head';
+export function buttonClick(props, id, hotkey, isFromSide) {
+
+  // 当前单据的全部数据
+  let pk =
+    props.form.getFormItemsValue(this.formId, this.primaryId) &&
+    props.form.getFormItemsValue(this.formId, this.primaryId).value;
+debugger;
+
+
+    switch (id) {
+        //返回
+        case CARD_BUTTON.back:
+            cardBack(props);
+            break;
+
+        //头部 新增
+        case CARD_BUTTON.create:
+            debugger;
+            cardCreate(props);
+            break;
+
+        //头部 保存
+        case CARD_BUTTON.save:
+            cardSave({ ...props, json: this.state.json }).then(() => {
+                if (isFromSide) {
+                    props.cardTable.closeModel(CARD.table_code);
+                }
+            });
+            break;
+
+        //头部 保存新增
+        case CARD_BUTTON.saveAdd:
+            cardSave({ ...props, json: this.state.json }).then(flag => {
+                if (flag) {
+                    cardCreate(props);
+                }
+            });
+            break;
+
+        //头部 保存提交
+        case CARD_BUTTON.saveCommit:
+            cardSave({ ...props, json: this.state.json }).then(flag => {
+                if (flag) {
+                    cardCommit.call(this, { ...props, json: this.state.json });
+                }
+            });
+            break;
+
+        //头部 修改
+        case CARD_BUTTON.update:
+            cardUpdate(props);
+            break;
+        //头部 变更
+        case CARD_BUTTON.Modify:
+            props.form.setFormItemsDisabled(formId, {
+                pk_org: true, //组织不让编辑
+                bankdeposit: true,//开户银行不让编辑
+                account: true,//账户不让编辑
+              });
+            cardModify(props);
+            break;
+           //头部 查看版本
+            case CARD_BUTTON.queryVersion :
+                props.setUrlParam({ status: "version", signal: "card" });
+                this.initVersionTree();
+              //  buttonVisibilityControl.call(this, props);
+           //      this.forceUpdate();
+                break;
+
+        //头部 复制
+        case CARD_BUTTON.copy:
+             cardCopy(props);    
+            break;
+
+        //头部 删除
+        case CARD_BUTTON.delete:
+            promptBox({
+                color: STATUS.warning,
+                title: this.state.json['96H10119-000000'],/* 国际化处理: 删除*/
+                content: this.state.json['96H10119-000001'],/* 国际化处理: 确定删除吗?*/
+                beSureBtnClick: () => {
+                    cardDelete({ ...props, json: this.state.json });
+                }
+            });
+            break;
+
+        //头部 注销
+        case CARD_BUTTON.logout:
+            debugger;
+            promptBox({
+                color: STATUS.warning,
+                title: "注销",/* 国际化处理: 注销*/
+                content: "确定注销吗",/* 国际化处理: 确定注销吗?*/
+                beSureBtnClick: () => {
+                    cardLogOut({ ...props, json: this.state.json });
+                }
+            });
+            break;
+
+
+        // 头部 取消
+        case CARD_BUTTON.cancel:
+            promptBox({
+                color: STATUS.warning,
+                title: this.state.json['96H10119-000002'],/* 国际化处理: 取消*/
+                content: this.state.json['96H10119-000003'],/* 国际化处理: 是否确认要取消?*/
+                beSureBtnClick: () => {
+                    cardCancel({ ...props, json: this.state.json });
+                }
+            });
+            break;
+
+        //头部 刷新
+        case CARD_BUTTON.refresh:
+            cardRefresh({ ...props, json: this.state.json });
+            break;
+
+        //附件
+        case CARD_BUTTON.attachment:
+            cardAttachment.call(this, props);
+            break;
+
+        //单据追溯
+        case CARD_BUTTON.billTrack:
+            cardBillTrack.call(this, props);
+            break;
+
+        //审批详情
+        case CARD_BUTTON.approvalLink:
+            cardLinkApprove.call(this, props);
+            break;
+
+        //单据提交
+        case CARD_BUTTON.commit:
+            cardCommit.call(this, { ...props, json: this.state.json });
+            break;
+
+        //单据收回
+        case CARD_BUTTON.unCommit:
+            cardUnCommit({ ...props, json: this.state.json });
+            break;
+
+        default:
+            break;
+    }
+}

+ 95 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/buttonVisibilityControl.js

@@ -0,0 +1,95 @@
+import { CARD, CARD_BUTTON, STATUS, PRIMARY_KEY, FIELD, CARD_DISABLED_BUTTON } from '../../constant';
+
+/**
+* @description: 卡片按钮可见性
+*/
+export function buttonVisibilityControl(props) {
+
+    /** 
+     * 此处应根据实际情况自由发挥
+     * 目标就是将某个状态下的某些按钮展示或隐藏
+     * 示例代码可能过于繁琐且难以理解
+     * 
+     * 可调用如下方法实现
+     * props.button.setButtonVisible();
+     * props.button.setButtonDisabled();
+     * 
+     * 例如
+     * let btn1 = [ 编辑态下显示的按钮 ];
+     * let btn2 = [ 编辑态下不显示的按钮 ];
+     * 
+     * props.button.setButtonVisible(btn1,true);
+     * props.button.setButtonVisible(btn2,false);
+     * 即可控制编辑态下的显示按钮。
+    */
+
+    let buttons = props.button.getButtons();
+    if (!buttons || buttons.length == 0) {
+        //模板没渲染完成,暂不渲染按钮
+        return;
+    }
+    let status = props.getUrlParam(STATUS.status);
+    let id = props.getUrlParam(PRIMARY_KEY.id);
+    let isBrowse = status === STATUS.browse;
+    //单据状态
+    let billStatus = props.form.getFormItemsValue(CARD.form_id, FIELD.billStatus) && props.form.getFormItemsValue(CARD.form_id, FIELD.billStatus).value;
+    //pcy
+    let islouout =  props.form.getFormItemsValue(CARD.form_id, "vdef4") && props.form.getFormItemsValue(CARD.form_id, "vdef4").value;
+
+
+    let btnObj = {};
+    //将要显示的按钮
+    let showBtn = [];
+    //编辑态显示按钮
+    let editBtn = [CARD_BUTTON.save, CARD_BUTTON.saveAdd, CARD_BUTTON.saveCommit, CARD_BUTTON.cancel,
+    CARD_BUTTON.addRow, CARD_BUTTON.deleteRow, CARD_BUTTON.copyRows,
+    CARD_BUTTON.insertRow, CARD_BUTTON.delRow, CARD_BUTTON.copyRow, CARD_BUTTON.pasteHere, CARD_BUTTON.expand];
+    //联查按钮
+    let unionBtn = [CARD_BUTTON.billTrack, CARD_BUTTON.approvalLink];
+    //获得所有的按钮的编码(不包括按钮组下的按钮)
+    let parentButtons = buttons.map(item => item.key);
+    //(有重复的按钮编码,但无妨)
+    let allBtns = [...parentButtons, ...editBtn, ...unionBtn, CARD_BUTTON.create, CARD_BUTTON.update, CARD_BUTTON.delete, CARD_BUTTON.copy, CARD_BUTTON.output];
+    if (!isBrowse) { //编辑态
+
+        showBtn = editBtn;
+
+    } else { //浏览态
+        if (!id) {//点击新增然后点击取消后
+
+            showBtn = [CARD_BUTTON.create];
+
+        } else {//单据浏览态
+            let commonBtn = [CARD_BUTTON.create, CARD_BUTTON.copy, CARD_BUTTON.attachment, ...unionBtn, CARD_BUTTON.print, CARD_BUTTON.output, CARD_BUTTON.refresh, CARD_BUTTON.fold, CARD_BUTTON.unfold];
+            switch (billStatus) {
+                case STATUS.NOSTATE:
+                    showBtn = [CARD_BUTTON.update, CARD_BUTTON.delete, CARD_BUTTON.commit, ...commonBtn];
+                    break;
+                case STATUS.PASSING:
+                case STATUS.COMMIT:
+                case STATUS.GOINGON:
+                    showBtn = [CARD_BUTTON.unCommit, ...commonBtn];
+                    break;
+                default:
+                    showBtn = [...commonBtn];
+                    break;
+            }
+
+        }
+    }
+    for (let item of allBtns) {
+        btnObj[item] = showBtn.includes(item);
+    }
+    //控制按钮显示与否
+    props.button.setButtonVisible(btnObj);
+    //设置按钮禁用
+    props.button.setButtonDisabled(CARD_DISABLED_BUTTON, true);
+    if(islouout == true){
+        props.button.setButtonVisible([CARD_BUTTON.update,CARD_BUTTON.Modify, CARD_BUTTON.queryVersion ,CARD_BUTTON.delete,CARD_BUTTON.logout,CARD_BUTTON.commit], false);
+    };
+
+
+    //设置卡片状态
+    props.cardTable.setStatus(CARD.table_code, isBrowse ? STATUS.browse : STATUS.edit);
+    props.form.setFormStatus(CARD.form_id, status);
+}

+ 476 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/cardOperator.js

@@ -0,0 +1,476 @@
+import { ajax, cardCache, toast } from 'nc-lightapp-front';
+import { REQUEST_URL, CARD, PRIMARY_KEY, CARD_BUTTON, CARD_CACHE, DATASOURCE, STATUS, FIELD, BILL_TYPE_CODE, CARD_ADD_DISABLED_BUTTON } from '../../constant';
+import { buttonVisibilityControl } from './buttonVisibilityControl';
+import { afterHeadEvent } from './afterHeadEvent';
+
+let { updateCache, addCache, getNextId, deleteCacheById, getCacheById, getCurrentLastId } = cardCache;
+
+//卡片返回
+export function cardBack(props) {
+    props.pushTo(REQUEST_URL.toList, {});
+}
+
+
+//卡片新增
+export function cardCreate(props) {
+    props.setUrlParam({ status: STATUS.add });
+    //单据有主组织,新增时,将其他字段设置为不可编辑
+    props.initMetaByPkorg();
+    props.button.setButtonDisabled(CARD_ADD_DISABLED_BUTTON, true);
+    props.cardTable.setAllCheckboxAble(CARD.table_code, false);
+    clearAll(props);
+    setByStatus(props);
+
+    let { getDefData } = cardCache;
+    let context = getDefData(CARD_CACHE.key, CARD_CACHE.dataSource);
+    if (context) {
+        let { pk_org, org_Name} = context;
+        props.form.setFormItemsValue(CARD.form_id, {
+            [FIELD.org]: { value: pk_org, display: org_Name }
+        });
+        afterHeadEvent(props, CARD.form_id, FIELD.org, { display: org_Name, value: pk_org }, { display: null, value: null });
+    }
+}
+
+/**
+ * 根据状态设置卡片
+ * @param {*} status  
+ */
+function setByStatus(props) {
+    debugger;
+    buttonVisibilityControl(props);
+    let status = props.getUrlParam(STATUS.status);
+    //设置单据编号
+    props.BillHeadInfo.setBillHeadInfoVisible({
+        showBackBtn: status === STATUS.browse,
+        showBillCode: status === STATUS.browse,
+        billCode: props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.bill_no) && props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.bill_no).value
+
+  
+    });
+    let vdef10=props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.vdef10).value;
+    if(vdef10==2){
+        props.form.setFormItemsValue(CARD.form_id, {
+            'vdef10': { value: '1', display: null },//设置变更状态
+        });
+    }
+    
+
+
+    debugger;
+    if (status !== STATUS.add) {
+        props.resMetaAfterPkorgEdit(); //选择主组织以后,恢复其他字段的编辑性 
+    }
+    // orgVersionView(props);//组织版本视图
+}
+
+/**
+ * 组织多版本视图
+ * @param {*} props 
+ * @param {*} headCode 
+ */
+function orgVersionView(props) {
+    let status = props.getUrlParam(STATUS.status);
+    //浏览态显示组织版本,编辑态显示组织
+    let showflag = status == STATUS.browse;
+    let obj = {};
+    obj[FIELD.org] = !showflag;
+    props.form.setFormItemsVisible(CARD.form_id, obj);
+}
+
+//清空表头表体数据
+function clearAll(props) {
+    props.form.EmptyAllFormValue(CARD.form_id);
+    props.cardTable.setTableData(CARD.table_code, { rows: [] });
+}
+
+//复制时清空数据
+export function copyClear(props) {
+    debugger;
+    if (props.getUrlParam('isCopy')) {
+        props.form.setFormItemsValue(CARD.form_id, {
+            [PRIMARY_KEY.head_id]: { value: null, display: null },
+             [PRIMARY_KEY.bill_no]: { value: null, display: null },
+            [FIELD.billStatus]: { value: STATUS.NOSTATE, display: '自由' },
+            [PRIMARY_KEY.vdef3]: { value: true, display: '是' },
+            [PRIMARY_KEY.vdef4]: { value: null, display: null },
+            [PRIMARY_KEY.vdef2]: { value: '1', display: null },
+            [PRIMARY_KEY.vdef10]: { value: '0', display: null }
+
+
+        });
+        props.cardTable.setColValue(CARD.table_code, PRIMARY_KEY.head_id, { value: null, display: null });
+        props.cardTable.setColValue(CARD.table_code, PRIMARY_KEY.body_id, { value: null, display: null });
+
+        var num = props.cardTable.getNumberOfRows(CARD.table_code, false);
+        var updateArray = new Array();
+        for (var i = 0; i < num; i++) {
+            updateArray.push({
+                index: i,
+                status: '2',//新增态
+            });
+        }
+        props.cardTable.setRowStatusByIndexs(CARD.table_code, updateArray);
+
+        props.setUrlParam({
+            id: null,
+            isCopy: false,
+            status: STATUS.add
+        });
+    }
+}
+
+//卡片保存
+export function cardSave(props) {
+    return new Promise((resolve, rejected) => {
+        let flag = props.form.isCheckNow(CARD.form_id) && props.cardTable.checkTableRequired(CARD.table_code);
+        if (flag) {
+            let data = props.createMasterChildData(CARD.page_code, CARD.form_id, CARD.table_code, 'cardTable');
+            props.validateToSave(data, () => {
+
+                let status = props.getUrlParam(STATUS.status);
+                ajax({
+                    url: REQUEST_URL.save,
+                    data: data,
+                    success: (res) => {
+                        let { success, data } = res;
+                        if (success) {
+                            toast({ color: STATUS.success, content: props.json['96H10119-000004'] });/* 国际化处理: 保存成功*/
+
+                            if (res.formulamsg && res.formulamsg instanceof Array && res.formulamsg.length > 0) {
+                                props.dealFormulamsg(res.formulamsg);
+                            }
+
+                            let id = null;
+                            if (res.data) {
+                                if (res.data.head && res.data.head[CARD.form_id]) {
+                                    id = res.data.head[CARD.form_id].rows[0].values[PRIMARY_KEY.head_id].value;
+                                    props.form.setAllFormValue({ [CARD.form_id]: res.data.head[CARD.form_id] });
+                                }
+                                if (res.data.body && res.data.body[CARD.table_code]) {
+                                    props.cardTable.setTableData(CARD.table_code, res.data.body[CARD.table_code]);
+                                }
+                            }
+
+                            props.setUrlParam({
+                                id,
+                                status: STATUS.browse
+                            });
+
+                            // 缓存
+                            if (status === STATUS.add) {
+                                addCache(id, data, CARD.form_id, DATASOURCE);
+                            } else {
+                                updateCache(PRIMARY_KEY.head_id, id, data, CARD.form_id, DATASOURCE);
+                            }
+
+                            setByStatus(props);
+
+                            resolve(true);
+                        }
+                    }
+                });
+
+            }, { [CARD.table_code]: 'cardTable' });
+        }
+    });
+}
+
+//卡片修改
+export function cardUpdate(props) {
+    debugger;
+    props.setUrlParam({ status: STATUS.edit });
+    
+    setByStatus(props);
+}
+
+
+//变更 add by zth
+export function cardModify(props) {
+    let pk = props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id).value || props.getUrlParam(PRIMARY_KEY.id);
+    props.setUrlParam({ status: STATUS.edit });
+    let vdef2 = props.form.getFormItemsValue(CARD.form_id, 'vdef2').value ;//历史版本
+    debugger;
+    if(!vdef2){
+        debugger;
+        vdef2=parseInt(2);
+    }else{
+        vdef2 = parseInt(vdef2)+1;
+    }
+    debugger;
+    props.form.setFormItemsValue(CARD.form_id, {
+        'vdef3': { value: true, display: null },//设置最新版本为:是
+        'vdef4': { value: false, display: null },//设置是否注销为:否
+        'vdef2': { value: vdef2.toString(), display: null },//设置历史版本
+        'vdef10': { value: '3', display: null },//设置变更状态
+    });
+    setByStatus(props);
+
+    // ajax({
+    //     url: REQUEST_URL.queryCard,
+    //     data: {
+    //         pk: id,
+    //         pagecode: CARD.page_code
+    //     },
+
+
+
+
+    // });
+
+
+
+}
+
+
+
+//卡片修改
+export function cardCopy(props) {
+    props.setUrlParam({ isCopy: true });
+    copyClear(props);
+    setByStatus(props);
+}
+
+//卡片删除
+export function cardDelete(props) {
+    debugger;
+    let pk = props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id).value || props.getUrlParam(PRIMARY_KEY.id);
+    let ts = props.form.getFormItemsValue(CARD.form_id, FIELD.ts) && props.form.getFormItemsValue(CARD.form_id, FIELD.ts).value;
+    let pkMapTs = new Map();
+    //主键与tsMap
+    if (pk && ts) {
+        pkMapTs.set(pk, ts);
+    }
+    let data = { pks: [pk], pkMapTs };
+    ajax({
+        url: REQUEST_URL.delete,
+        data: data,
+        success: (res) => {
+            if (res.success) {
+                toast({ color: STATUS.success, content: props.json['96H10119-000005'] });/* 国际化处理: 删除成功*/
+
+                // 获取下一条数据的id
+                let nextId = getNextId(pk, DATASOURCE);
+                //删除缓存
+                deleteCacheById(PRIMARY_KEY.head_id, pk, DATASOURCE);
+                let lastId = nextId ? nextId : null;
+                props.setUrlParam({ status: STATUS.browse, id: lastId });
+                if (lastId) {
+                    getCardData(props, lastId);
+                } else {// 删除的是最后一个的操作
+                    clearAll(props);
+                    setByStatus(props);
+                }
+            }
+        }
+    });
+}
+
+/**
+ * 卡片详情
+ * @param {*} id         单据id
+ * @param {*} isRefresh  是否刷新按钮,是的话不取缓存数据,直接调取接口,并addCache, 默认否
+ */
+export function getCardData(props, id, isRefresh = false, callBack) {
+    debugger;
+    clearAll(props);
+    if (!isRefresh) {
+        let cardData = getCacheById(id, DATASOURCE);
+        if (cardData) {//有缓存
+            cardData.head && props.form.setAllFormValue({ [CARD.form_id]: cardData.head[CARD.form_id] });
+            cardData.body && props.cardTable.setTableData(CARD.table_code, cardData.body[CARD.table_code]);
+            setByStatus(props);
+            return;
+        }
+    }
+    ajax({
+        url: REQUEST_URL.queryCard,
+        data: {
+            pk: id,
+            pagecode: CARD.page_code
+        },
+        success: (res) => {
+            let { success, data } = res;
+            if (success) {
+                if (data && data.head) {
+                    props.form.setAllFormValue({ [CARD.form_id]: data.head[CARD.form_id] });
+                }
+                if (data && data.body) {
+                    props.cardTable.setTableData(CARD.table_code, data.body[CARD.table_code]);
+                }
+                // 更新缓存
+                updateCache(PRIMARY_KEY.head_id, id, data, CARD.form_id, DATASOURCE);
+                callBack && callBack(props);
+                setByStatus(props);
+            }
+        },
+        error: (res) => {
+            toast({ color: STATUS.danger, content: res.message });
+            clearAll(props);
+            setByStatus(props);
+        }
+    });
+}
+
+//卡片取消
+export function cardCancel(props) {
+    let id = props.getUrlParam(PRIMARY_KEY.id);
+    props.setUrlParam({ status: STATUS.browse });
+    if (id) { //有id切换编辑态
+        props.form.cancel(CARD.form_id);
+        props.cardTable.resetTableData(CARD.table_code);
+        getCardData(props, id);
+    } else { //没有id查缓存中最后一条数据
+        let currentLastId = getCurrentLastId(DATASOURCE);
+        let lastId = currentLastId ? currentLastId : null;
+        props.setUrlParam({ id: lastId });
+        if (lastId) {
+            getCardData(props, lastId);
+        } else {
+            clearAll(props);
+            setByStatus(props);
+        }
+    }
+}
+
+
+//卡片注销
+export function cardLogOut(props) {
+    debugger;
+    let pk = props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id).value || props.getUrlParam(PRIMARY_KEY.id);
+    let ts = props.form.getFormItemsValue(CARD.form_id, FIELD.ts) && props.form.getFormItemsValue(CARD.form_id, FIELD.ts).value;
+    let pkMapTs = new Map();
+    //主键与tsMap
+    if (pk && ts) {
+        pkMapTs.set(pk, ts);
+    }
+    let data = { pks: [pk], pkMapTs };
+    ajax({
+        url: REQUEST_URL.logout,
+        data: data,
+        success: (res) => {
+            debugger;
+            if (res.success) {
+                toast({ color: STATUS.success, content: "注销成功" });/* 国际化处理: 注销成功*/
+                //删除缓存
+                deleteCacheById(PRIMARY_KEY.head_id, pk, DATASOURCE);
+                clearAll(props);
+                setByStatus(props);
+                cardRefresh(props);
+            }
+        }
+    });
+}
+
+
+
+
+
+
+
+
+
+//卡片刷新
+export function cardRefresh(props) {
+    let id = props.getUrlParam(PRIMARY_KEY.id);
+    getCardData(props, id, true);
+}
+
+/**
+ * 卡片分页
+ * @param {*} props  页面内置对象
+ * @param {*} pk    下一页的pk
+ */
+export function pageClick(props, id) {
+    props.setUrlParam({ status: STATUS.browse, id });
+    getCardData(props, id);
+}
+
+
+//卡片附件
+export function cardAttachment(props) {
+    let billId = props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id) && props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id).value;
+    let billNo = props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.bill_no) && props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.bill_no).value;
+    this.setState({
+        showUploader: !this.state.showUploader,
+        billInfo: { billId, billNo }
+    });
+}
+
+//卡片单据追溯
+export function cardBillTrack(props) {
+    let billId = props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id) && props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id).value;
+    this.setState({
+        showBillTrack: true,
+        billTrackBillId: billId,
+        billTrackBillType: BILL_TYPE_CODE
+    });
+}
+
+//卡片联查审批详情
+export function cardLinkApprove(props) {
+    let billId = props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id) && props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id).value;
+    this.setState({
+        showApproveDetail: true,
+        billId: billId
+    });
+}
+
+
+//卡片提交
+export function cardCommit(props, data) {
+    if (!data) {
+        let pk = props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id) && props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id).value;
+        let ts = props.form.getFormItemsValue(CARD.form_id, FIELD.ts) && props.form.getFormItemsValue(CARD.form_id, FIELD.ts).value;
+        let pkMapTs = new Map();
+        //主键与tsMap
+        if (pk && ts) {
+            pkMapTs.set(pk, ts);
+        }
+        data = { pks: [pk], pkMapTs };
+    }
+    ajax({
+        url: REQUEST_URL.commit,
+        data: data,
+        success: (res) => {
+            if (res.success) { //成功
+                if (res.data && res.data.workflow && (res.data.workflow == 'approveflow' || res.data.workflow == 'workflow')) {
+                    this.setState({
+                        compositeData: res.data,
+                        compositeDisplay: true,
+                        curPk: data.pks
+                    });
+                } else {
+                    cardRefresh(props);
+                }
+            } else { //失败
+                toast({ color: STATUS.warning, content: props.json['96H10119-000015'] });/* 国际化处理: 提交失败*/
+            }
+        }
+    });
+}
+
+
+//卡片收回
+export function cardUnCommit(props) {
+    let pk = props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id) && props.form.getFormItemsValue(CARD.form_id, PRIMARY_KEY.head_id).value;
+    let ts = props.form.getFormItemsValue(CARD.form_id, FIELD.ts) && props.form.getFormItemsValue(CARD.form_id, FIELD.ts).value;
+    let pkMapTs = new Map();
+    //主键与tsMap
+    if (pk && ts) {
+        pkMapTs.set(pk, ts);
+    }
+    let data = { pks: [pk], pkMapTs };
+    ajax({
+        url: REQUEST_URL.unCommit,
+        data: data,
+        success: (res) => {
+            if (res.success) { //成功
+                cardRefresh(props);
+            } else { //失败
+                toast({ color: STATUS.warning, content: props.json['96H10119-000017'] });/* 国际化处理: 收回失败*/
+            }
+        }
+    });
+}
+

+ 16 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/index.js

@@ -0,0 +1,16 @@
+import { afterHeadEvent } from './afterHeadEvent';
+import { afterTableEvent } from './afterTableEvent';
+import { beforeHeadEvent } from './beforeHeadEvent';
+import { beforeTableEvent } from './beforeTableEvent';
+import { bodyButtonClick } from './bodyButtonClick';
+import { bodySelectedEvent, bodySelectedAllEvent } from './bodySelectedEvent';
+import { buttonClick } from './buttonClick';
+import { buttonVisibilityControl } from './buttonVisibilityControl';
+import { cardBack, cardCreate, cardSave, cardUpdate, cardDelete, getCardData, cardCancel, cardRefresh, pageClick } from './cardOperator';
+import { initTemplate } from './initTemplate';
+
+export {
+    cardBack, cardCreate, cardSave, cardUpdate, cardDelete, getCardData, cardCancel, cardRefresh, pageClick,
+    afterHeadEvent, afterTableEvent, beforeHeadEvent, beforeTableEvent, bodyButtonClick, bodySelectedEvent, bodySelectedAllEvent,
+    buttonClick, buttonVisibilityControl, initTemplate
+};

+ 109 - 0
zj_web/zjcmp_cd/cd/96h10119/card/events/initTemplate.js

@@ -0,0 +1,109 @@
+import { cardCache } from 'nc-lightapp-front';
+import { CARD, CARD_BUTTON, STATUS, FIELD, CARD_CACHE, PRIMARY_KEY } from '../../constant';
+import { cardCreate, getCardData, copyClear } from './cardOperator';
+import { bodyButtonClick } from './bodyButtonClick';
+import { buttonVisibilityControl } from './buttonVisibilityControl';
+import { afterHeadEvent } from './afterHeadEvent';
+import { getBusinessInfo } from 'nc-lightapp-front';
+/**
+* @description: 卡片模板渲染
+*/
+export function initTemplate(props) {
+        props.createUIDom({},
+                (data) => {
+                        if (data) {
+                                if (data.button) {
+                                        let button = data.button;
+                                        props.button.setButtons(button);
+                                        buttonVisibilityControl(props);
+                                }
+                                if (data.template) {
+                                        let meta = data.template;
+                                        meta = modifierMeta.call(this, props, meta);
+                                        props.meta.setMeta(meta, () => {
+                                                let status = this.props.getUrlParam(STATUS.status);
+                                                let id = this.props.getUrlParam(PRIMARY_KEY.id);
+                                                if (status === STATUS.add) { //新增
+                                                        cardCreate(this.props);
+                                                } else if (id) {
+                                                        getCardData(this.props, id, false, copyClear);
+                                                }
+                                        });
+                                }
+                                if (data.context && data.context.pk_org) {
+                                        if (props.getUrlParam(STATUS.status) === STATUS.add) {
+                                                //设置默认组织
+                                                // let { pk_org, org_Name } = data.context;
+                                                // props.form.setFormItemsValue(CARD.form_id, {
+                                                //         [FIELD.org]: { value: pk_org, display: org_Name }
+                                                // });
+                                                // afterHeadEvent(props, CARD.form_id, FIELD.org, { display: org_Name, value: pk_org }, { display: null, value: null });
+                                                props.form.setFormItemsValue(CARD.form_id, {
+                                                        'billdate':{value: getBusinessInfo().businessDate,display: getBusinessInfo().businessDate},
+                                                        'maketime':{value: getBusinessInfo().businessDate,display: getBusinessInfo().businessDate},
+                                                        'creationtime':{value: getBusinessInfo().businessDate,display:
+                                                        getBusinessInfo().businessDate},
+                                                        'pk_group':{display:getBusinessInfo().groupName,value:getBusinessInfo().groupId},
+                                                        'approvestatus':{value: STATUS.NOSTATE, display: '自由'},
+                                                        'billmaker':{display:getBusinessInfo().userName,value:getBusinessInfo().userId},
+                                                        'creator':{display:getBusinessInfo().userName,value:getBusinessInfo().userId}
+                                                        });
+                                        }
+                                        // 将组织信息缓存
+                                        let { setDefData } = cardCache;
+                                        setDefData(CARD_CACHE.key, CARD_CACHE.dataSource, data.context);
+                                }
+                                //表体统一参照过滤
+                                /*
+                                props.cardTable.setQueryCondition(CARD.table_code, {
+                                        department: () => {
+                                                return {
+                                                        pk_org: props.form.getFormItemsValue(CARD.form_id, FIELD.org).value
+                                                };
+                                        }
+                                });
+                                */
+                        }
+                }
+        )
+}
+
+function modifierMeta(props, meta) {
+        //表头参照过滤
+        meta[CARD.form_id].items.map(item => {
+                if (item.attrcode === FIELD.org) { //财务组织
+                        item.queryCondition = () => {
+                                return {
+                                        funcode: props.getSearchParam('c')//appcode获取
+                                };
+                        };
+                }
+        });
+
+        for (let item of Object.keys(meta.gridrelation)) {
+                meta[item].items.push({
+                        attrcode: 'opr',
+                        label: this.state.json['96H10119-000006'],/* 国际化处理: 操作*/
+                        itemtype: 'customer',
+                        fixed: 'right',
+                        className: 'table-opr',
+                        visible: true,
+                        width: 200,
+                        render: (text, record, index) => {
+                                let status = props.getUrlParam(STATUS.status);
+                                let buttonAry = [];
+                                if (status === STATUS.browse) { //浏览态
+                                        buttonAry = [record.expandRowStatus ? CARD_BUTTON.fold : CARD_BUTTON.unfold];
+                                } else { //编辑态
+                                        buttonAry = this.state.isPaste ? [CARD_BUTTON.pasteHere] : [CARD_BUTTON.expand, CARD_BUTTON.insertRow, CARD_BUTTON.delRow, CARD_BUTTON.copyRow];
+                                }
+                                return props.button.createOprationButton(buttonAry, {
+                                        area: CARD.body_btn_code,
+                                        buttonLimit: 4,
+                                        onButtonClick: (props, key) => bodyButtonClick.call(this, props, key, text, record, index)
+                                });
+                        }
+                })
+        }
+        return meta;
+}

+ 440 - 0
zj_web/zjcmp_cd/cd/96h10119/card/index.js

@@ -0,0 +1,440 @@
+import React, { Component } from 'react';
+import { ajax,createPage, base, high , toast, cardCache} from 'nc-lightapp-front';
+import { initTemplate} from './events/initTemplate';
+import { buttonClick } from './events/buttonClick';
+import { beforeHeadEvent } from './events/beforeHeadEvent';
+import { beforeTableEvent } from './events/beforeTableEvent';
+import { afterHeadEvent } from './events/afterHeadEvent';
+import { afterTableEvent } from './events/afterTableEvent';
+import { bodySelectedEvent, bodySelectedAllEvent } from './events/bodySelectedEvent';
+import { REQUEST_URL,MULTILANG, CARD, PRIMARY_KEY, CARD_BUTTON, DATASOURCE, STATUS, BILL_TYPE_CODE } from '../constant';
+import { pageClick, cardCommit} from './events/cardOperator';
+import { bodyButtonClick } from './events/bodyButtonClick';
+let { updateCache } = cardCache;
+/**
+* @description: 卡片
+*/
+const { NCAffix } = base;
+
+class Card extends Component {
+        constructor(props) {
+                super(props);
+                this.state = {
+                        json: {},
+                        showUploader: false,
+                        billInfo: {},
+                        compositeData: null, //指派信息
+                        compositeDisplay: false, //是否显示指派
+                        curPk: null, //当前选中数据的pk
+                        showApproveDetail: false, //是否显示审批详情
+                        billId: null
+                };
+
+
+                this.pageId =
+                        this.props.getUrlParam("scene") == "linksce"
+                            ? "96H10119_CARD"
+                             : this.props.getUrlParam("scene") == "approvesce"
+                               ? "96H10119A_CARD"
+                            : CARD.page_code; //card页面code
+
+                this.versionList = []; //保存历史版本号,供查看历史版本使用
+        }
+
+        componentWillMount() {
+                // json: 多语json格式参数; 
+                // status: 是否请求到json多语,可用来判断多语资源是否请求到并进行一些别的操作; 
+                // inlt: 可用来进行占位符的一些操作
+                let callback = (json, status, inlt) => {
+                        if (status) {
+                                initTemplate.call(this, this.props); // 如模板内也有多语处理,平台推荐模板加载操作放于此处, 在取到json多语资源后用传参的方式传入intemplate模板函数中
+
+                                // 保存json和inlt到页面state中并刷新页面
+                                this.setState({ json, inlt })
+                        }
+                }
+                this.props.MultiInit.getMultiLang({ moduleId: MULTILANG.moduleId, domainName: MULTILANG.domainName, callback });
+
+                // 关闭浏览器
+                window.onbeforeunload = () => {
+                        let status = this.props.cardTable.getStatus(CARD.table_code);
+                        if (status == STATUS.edit) {
+                                return this.state.json['96H10119-000007'];/* 国际化处理: 当前单据未保存,您确认离开此页面?*/
+                        }
+                };
+        }
+
+ 
+
+        handlePageInfoChange = (props, id) => {
+                debugger;
+                pageClick({ ...props, json: this.state.json }, id);
+        }
+
+     
+
+        //指派提交
+        getAssignUser = (value) => {
+                cardCommit({ ...this.props, json: this.state.json }, {
+                        pks: this.state.curPk,
+                        userObj: value
+                });
+                this.compositeTurnOff();
+        };
+
+        //关闭指派
+        compositeTurnOff = () => {
+                this.setState({
+                        compositeData: null,
+                        compositeDisplay: false
+                });
+        };
+
+
+
+
+
+      componentDidMount(){
+
+        let id = this.props.getUrlParam("id");
+        let status = this.props.getUrlParam("status");
+        this.props.button.setButtonDisabled(["deleteRow", "copyRow"], true);
+        if (id) {
+          if (status === "version") {
+            //查看版本
+            this.initVersionTree();
+          }
+        }
+
+    }
+
+
+  //同步树节点点击事件
+  onTreeSelect = pk => {
+          debugger;
+        if (pk === "-1") {
+          return;
+        }
+        ajax({
+                url:'/nccloud/zjcmp_cd/cd/guatamxqueryversioncardaction.do',
+                data: {
+                    pk: pk,
+                    pagecode: CARD.page_code
+                },
+                success: (res) => {
+                    debugger;    
+                    let { success, data } = res;
+                    if (success) {
+
+                        if (data && data.body) {                        
+                                this.props.cardTable.setTableData(CARD.table_code, data.body[CARD.table_code]);
+                            }
+
+                        if (data && data.head) {
+                            this.props.form.setAllFormValue({ [CARD.form_id]: data.head[CARD.form_id] });
+                           // this.props.form.setFormItemsDisabled(CARD.form_id, { 'pk_org': true}); 
+                               
+                        }
+                   
+
+                    }
+                },
+                 error: (res) => {
+                    toast({ color: STATUS.danger, content: res.message });
+                }
+            });
+      };
+
+
+     //获取列表肩部信息
+     getTableHead = () => (
+        <div className="shoulder-definition-area">
+                <div className="definition-icons">
+                        {this.props.button.createButtonApp({
+                                area: CARD.shoulder_btn_code,
+                                onButtonClick: bodyButtonClick.bind(this),
+                                popContainer: document.querySelector('.header-button-area')
+                        })}
+                </div>
+        </div>
+);
+
+
+  //同步树鼠标滑过事件
+  onTreeMouseEnter = key => {
+        this.props.syncTree.hideIcon(this.treeId, key, {
+          delIcon: false,
+          editIcon: false,
+          addIcon: false
+        });
+      };
+    
+
+
+
+    /**
+   * 加载查看版本页面
+   * @param {*} callback - 回调函数
+   */
+  initVersionTree = callback => {
+        debugger;
+        const treeRoot = {
+          isleaf: false,
+          pid: "__root__",
+          refname: this.state.json["36620GC-000001"] /* 国际化处理: 版本号*/,
+          refpk: "-1"
+        };
+        ajax({
+          url:'/nccloud/zjcmp_cd/cd/guatamxqueryversionlistaction.do',
+          data: {
+            queryAreaCode: "search",
+            querytype: "tree",
+            querycondition: {},
+            pageCode: this.pageId,
+            pageInfo: { pageIndex: 0, pageSize: 100 },
+            def1: this.props.getUrlParam("id") //主键
+            
+          },
+          success: res => {
+                debugger;
+            let { success, data } = res;
+            let versionList = data && data.data && data.data.rows;
+            this.versionList = versionList.map(item => item.refpk);
+            if (success) {
+              let treeData = this.props.syncTree.createTreeData(versionList);
+              if (versionList.length) {
+                this.onTreeSelect(versionList[0].refpk);
+              }
+              this.props.syncTree.setSyncTreeData(this.treeId, [
+                Object.assign(treeRoot, { children: treeData })
+              ]);
+            }
+          }
+        });
+      };
+  
+
+
+        render() {
+                let { form, cardPagination, BillHeadInfo, cardTable,syncTree,DragWidthCom } = this.props;
+                let { createCardPagination } = cardPagination;
+                let { createForm } = form;
+                let { createCardTable } = cardTable;
+                let { createBillHeadInfo } = BillHeadInfo;
+                let { NCUploader, BillTrack, ApprovalTrans, ApproveDetail } = high;
+                let status = this.props.getUrlParam(STATUS.status);
+                let id = this.props.getUrlParam(PRIMARY_KEY.id);
+                let billNo = this.props.form.getFormItemsValue(CARD.page_code, PRIMARY_KEY.bill_no);
+                let { createSyncTree } = syncTree;
+            
+
+    // 卡片 主表dom
+    let cardFormDom = (
+        <div className="nc-bill-top-area">
+          <div className="nc-bill-form-area">
+            {createForm(CARD.headcode, {
+              onAfterEvent: afterHeadEvent.bind(this),
+              onBeforeEvent: beforeHeadEvent.bind(this)
+            })}
+          </div>
+        </div>
+      );
+
+      // 卡片子表dom
+      let cardFormTableDom = (
+                <div className="nc-bill-bottom-area">
+                <div className="nc-bill-table-area">
+                {createCardTable(CARD.table_code, {
+                cancelCustomRightMenu: true,
+                tableHead: this.getTableHead.bind(this),
+                onTabChange: key => {
+                console.log(key);
+                },
+                adaptionHeight: true,
+                modelSave: buttonClick.bind(this, this.props, "Save"),
+      
+                }
+                 
+                )}
+
+
+                
+                </div>
+                </div>
+          );
+
+
+    // 左树 dom
+    let treeDom = (
+        <div className="left-area" style={{ marginLeft: "20px" }}>
+          {createSyncTree({
+            treeId: this.treeId, // 组件id
+            needSearch: false, //是否需要查询框,默认为true,显示。false: 不显示
+            onSelectEve: this.onTreeSelect.bind(this), //选择节点回调方法
+            onMouseEnterEve: this.onTreeMouseEnter.bind(this), //鼠标滑过节点事件
+            defaultExpandAll: true, //默认展开所有节点
+            disabledSearch: true //是否显示搜索框
+          })}
+        </div>
+      );
+
+    // 右卡 dom
+    let rightDom = (
+        <div className="nc-bill-card">
+          {cardFormDom}
+          {cardFormTableDom} 
+        </div>
+      );
+
+                return (
+                        <div className="nc-bill-card">
+
+                                <div className="nc-bill-top-area">
+                                        <NCAffix>
+                                                <div className="nc-bill-header-area">
+                                                        <div>
+                                                                {createBillHeadInfo({
+                                                                        title: this.state.json[CARD.page_title],//标题
+                                                                        billCode: billNo && billNo.value,//单据号
+                                                                        backBtnClick: buttonClick.bind(this, this.props, CARD_BUTTON.back)
+                                                                })}
+                                                        </div>
+
+                                                     {status !== "version" && (   
+                                                        <div className="header-button-area">
+                                                                {this.props.button.createButtonApp({
+                                                                        area: CARD.head_btn_code,
+                                                                        onButtonClick: buttonClick.bind(this)
+                                                                })}
+                                                        </div>
+                                                       )} 
+
+
+                                                        {status == STATUS.browse && id &&
+                                                                <div className="header-cardPagination-area" style={{ float: 'right' }}>
+                                                                        {createCardPagination({
+                                                                                dataSource: DATASOURCE,
+                                                                                pkname: PRIMARY_KEY.head_id,
+                                                                                handlePageInfoChange: this.handlePageInfoChange
+                                                                        })}
+                                                                </div>
+                                                        }
+                                                </div>
+
+                                                     {/* 为多版本联查时加载 树卡区域 */}
+                                                     {status === "version" && (
+                                                        <div className="tree-card">
+                                                        <DragWidthCom
+                                                        leftDom={treeDom} //左侧区域dom
+                                                        rightDom={rightDom} //右侧区域dom
+                                                        defLeftWid="20%" // 默认左侧区域宽度,px/百分百
+                                                        />
+                                                        </div>
+                                                        )} 
+                              
+                                        </NCAffix>
+
+
+                                        {status !== "version"  && (
+
+                                                <div className="nc-bill-form-area">
+                                                {createForm(CARD.form_id, {
+                                                        onAfterEvent: afterHeadEvent,
+                                                        onBeforeEvent: beforeHeadEvent
+                                                })}
+                                                </div>  
+
+                                         ) }
+ 
+                                       
+                                </div>
+
+
+                                        {/* 为正常状态时 加载主子表 */}
+                                        {status !== "version"  && (
+                                             <div className="nc-bill-bottom-area">
+                                             <div className="nc-bill-table-area">
+                                                     {createCardTable(CARD.table_code, {
+                                                             tableHead: this.getTableHead.bind(this),
+                                                             showCheck: true,
+                                                             showIndex: true,
+                                                             onSelected: bodySelectedEvent,
+                                                             onSelectedAll: bodySelectedAllEvent,
+                                                             onBeforeEvent: beforeTableEvent,
+                                                             onAfterEvent: afterTableEvent,
+                                                             modelSave: buttonClick.bind(this, { ...this.props, json: this.state.json }, CARD_BUTTON.save, undefined, true),
+                                                     })}
+                                                </div>
+                                        </div> 
+                                        ) }
+ 
+
+                         
+
+                                {/* 附件 */}
+                                {this.state.showUploader && (
+                                        <NCUploader
+                                                placement={'bottom'}
+                                                {...this.state.billInfo}
+                                                onHide={() => {
+                                                        this.setState({
+                                                                showUploader: false
+                                                        });
+                                                }}
+                                        />
+                                )}
+
+                                {/*联查单据追溯*/}
+                                {
+                                        <BillTrack
+                                                show={this.state.showBillTrack}
+                                                close={() => {
+                                                        this.setState({ showBillTrack: false });
+                                                }}
+                                                pk={this.state.billTrackBillId}
+                                                type={this.state.billTrackBillType}
+                                        />
+                                }
+
+                                {/* 指派 */}
+                                {this.state.compositeDisplay && (
+                                        <ApprovalTrans
+                                                title={this.state.json['96H10119-000018']} /* 国际化处理: 指派*/
+                                                data={this.state.compositeData}
+                                                display={this.state.compositeDisplay}
+                                                getResult={this.getAssignUser}
+                                                cancel={this.compositeTurnOff}
+                                        />
+                                )}
+
+                                {/* 联查审批详情 */}
+                                {
+                                        <ApproveDetail
+                                                show={this.state.showApproveDetail}
+                                                billtype={BILL_TYPE_CODE}
+                                                billid={this.state.billId}
+                                                close={() => {
+                                                        this.setState({
+                                                                showApproveDetail: false
+                                                        });
+                                                }}
+                                        />
+                                }
+
+                                
+
+                        </div>
+
+                );
+        }
+}
+
+Card = createPage({
+        billinfo: {
+                billtype: 'card',
+                pagecode: CARD.page_code,
+                headcode: CARD.form_id,
+                bodycode: CARD.table_code
+        }
+})(Card);
+export default Card;

+ 201 - 0
zj_web/zjcmp_cd/cd/96h10119/constant/index.js

@@ -0,0 +1,201 @@
+/**
+* @description: 常量
+*/
+
+//应用编码
+export const APPCODE = '96H10119';
+
+//单据类型
+export const BILL_TYPE_CODE = 'DJSK';
+
+/**
+* @description: 多语
+* @param moduleId: 多语资源名
+* @param domainName: 工程名
+*/
+export const MULTILANG = {
+        moduleId: '96H10119',
+        domainName: 'zjcmp_cd'
+};
+
+/**
+ * 列表
+ */
+export const LIST = {
+        page_title: '96H10119-000011',                  //页面标题 /* 国际化处理: 投融资费用*/
+
+        page_code: '96H10119_LIST',                     //页面编码
+
+        search_id: 'list_query',                        //查询区 
+        table_id: 'list_head',                          //表格区 
+
+        head_btn_code: 'list_head',                     //表头按钮区 
+        body_btn_code: 'list_inner',                                    //表体表格按钮区
+};
+
+/**
+ * 卡片
+ */
+export const CARD = {
+        page_title: '96H10119-000011',                   //页面标题 /* 国际化处理: 投融资费用*/
+
+        page_code: '96H10119_CARD',                      //页面编码
+
+        form_id: 'card_head',                            //表头表单区
+        table_code: 'card_body',                         //表体表格区
+        table_edit_code: 'card_body_edit',               //表体表格编辑态侧拉区
+        table_browse_code: 'card_body_browse',           //表体表格浏览态下拉区
+        headcode: 'card_head',
+        head_btn_code: 'card_head',                      //表头按钮区
+        shoulder_btn_code: 'tabs_head',                  //表体肩部按钮区
+        body_btn_code: 'tabs_body'                       //表体表格按钮区
+};
+
+//领域名.模块名.节点名.自定义名
+//缓存标示
+export const DATASOURCE = 'tm.fmc.cost.datasource';
+
+//查询区域缓存 
+export const SEARCH_CACHE = {
+        key: 'tm.fmc.cost.SEARCH_CACHE',                 //查询区域缓存Key
+        dataSource: DATASOURCE                                           //查询区域缓存数据的名称空间
+}
+
+//卡片缓存 
+export const CARD_CACHE = {
+        key: 'tm.fmc.cost.CARD_CACHE',                   //卡片区域缓存Key
+        dataSource: DATASOURCE                                           //卡片区域缓存数据的名称空间
+}
+
+
+
+
+ 
+  
+
+
+//请求基础路径
+export const base_path = '/nccloud/zjcmp_cd/cd/';
+
+//url
+export const REQUEST_URL = {
+        save: `/nccloud/zjcmp_cd/cd/savetamx_registerVO.do`,                       //保存
+        delete: `/nccloud/zjcmp_cd/cd/deletetamx_registerVO.do`,                        //删除
+        queryCard: `/nccloud/zjcmp_cd/cd/querycardtamx_registerVO.do`,                      //卡片查询
+        queryList: `/nccloud/zjcmp_cd/cd/querypagetamx_registerVO.do`,              //列表查询
+        queryListByPks: `/nccloud/zjcmp_cd/cd/querypagebypktamx_registerVO.do`,     //列表分页查询
+        commit: `/nccloud/zjcmp_cd/cd/committamx_registerVO.do`,                   //提交
+        unCommit: `/nccloud/zjcmp_cd/cd/uncommittamx_registerVO.do`,               //收回
+        logout: `/nccloud/zjcmp_cd/cd/logouttamx_registerVO.do`,               //注销
+        toCard: '/card',
+        toList: '/list'
+};
+
+export const LIST_BUTTON = {
+        create: 'AddBtn',
+        delete: 'DelBtn',
+        commit: 'CommitBtn',
+        unCommit: 'UnCommitBtn',
+        linkGroup: 'JointBtn',
+        attachment: 'AttachmentBtn',
+        approvalLink: 'DetailBtn',
+        billTrack: 'TrackBtn',
+        print: 'PrintBtn',
+        output: 'OutputBtn',
+        refresh: 'RefreshBtn',
+
+        bodyUpdate: 'edit',
+        bodyDelete: 'delete',
+        bodyCommit: 'commit',
+        bodyUnCommit: 'unCommit',
+        copy: 'copy'
+};
+
+//列表默认禁用按钮
+export const LIST_DISABLED_BUTTON = [LIST_BUTTON.delete, LIST_BUTTON.commit, LIST_BUTTON.unCommit, LIST_BUTTON.linkGroup, LIST_BUTTON.approvalLink, LIST_BUTTON.billTrack,
+LIST_BUTTON.attachment, LIST_BUTTON.print, LIST_BUTTON.output];
+
+export const CARD_BUTTON = {
+        save: 'SaveBtn',
+        saveAdd: 'SaveAddBtn',
+        saveCommit: 'SaveCommitBtn',
+        cancel: 'CancelBtn',
+        create: 'CreateBtn',
+        update: 'UpdateBtn',
+        delete: 'DeleteBtn',
+        copy: 'CopyBtn',
+        commit: 'CommitBtn',
+        unCommit: 'UnCommitBtn',
+        attachment: 'AttachmentBtn',
+        approvalLink: 'DetailBtn',
+        billTrack: 'TrackBtn',
+        print: 'PrintBtn',
+        output: 'OutputBtn',
+        refresh: 'RefreshBtn',
+        back: 'Back',
+        Modify: 'Modify',
+        queryVersion:"queryVersion",
+        addRow: 'addRow',
+        deleteRow: 'deleteRow',
+        copyRows: 'copyRows',
+        pasteTail: 'pasteTail',
+        pasteCancel: 'pasteCancel',
+        logout : 'logout',
+        expand: 'expand',
+        insertRow: 'insertRow',
+        delRow: 'delRow',
+        copyRow: 'copyRow',
+        fold: 'fold',
+        unfold: 'unfold',
+        pasteHere: 'pasteHere'
+};
+
+//卡片默认禁用按钮
+export const CARD_DISABLED_BUTTON = [CARD_BUTTON.deleteRow, CARD_BUTTON.copyRows];
+//卡片新增禁用按钮
+export const CARD_ADD_DISABLED_BUTTON = [CARD_BUTTON.addRow, CARD_BUTTON.save, CARD_BUTTON.saveAdd, CARD_BUTTON.saveCommit];
+
+//字段名
+export const FIELD = {
+        org: 'pk_org',                                                   //组织
+        //orgV: 'pk_org_v',                                              //组织多版本
+        billStatus: 'approvestatus',                             //单据状态字段(用以按钮控制)
+        ts: 'ts'                                                                 //时间戳
+};
+
+//主属性字段名
+export const PRIMARY_KEY = {
+        head_id: 'pk_register',           //表头主键字段名
+        body_id: 'pk_register_b',           //表体主键字段名
+        bill_no: 'billno',                                               //单据编号字段名
+        id: 'id' ,                                                                //单据前端缓存标识
+        vdef3:'vdef3',                   //最新版本
+        vdef4:'vdef4',                  //是否注销
+        vdef2:'vdef2',                  //历史版本
+        vdef10:'vdef10'                //变更状态
+
+};
+
+//状态
+export const STATUS = {
+        status: 'status',                                                //状态
+
+        edit: 'edit',                                            //编辑态
+        browse: 'browse',                                        //浏览态
+        add: 'add',                                                              //新增态
+
+        info: 'info',                                                    //帮助
+        warning: 'warning',                                              //警告
+        success: 'success',                                              //成功
+        danger: 'danger',                                                //出错
+
+        NOSTATE: '-1',                                                   //自由 态
+        NOPASS: '0',                                                     //未通过 态
+        PASSING: '1',                                                    //通过 态
+        GOINGON: '2',                                                    //进行中 态
+        COMMIT: '3'                                                              //提交 态
+};
+
+
+
+ 

+ 10 - 0
zj_web/zjcmp_cd/cd/96h10119/list/config.json

@@ -0,0 +1,10 @@
+{
+    "dependModuleName": [
+        "uap/common/components/ApproveDetail",
+        "uap/common/components/NCUploader"
+    ],
+    "dependjs": [
+        "../../../../uap/common/components/ApproveDetail/index.js",
+        "../../../../uap/common/components/NCUploader/index.js"
+    ]
+}

+ 40 - 0
zj_web/zjcmp_cd/cd/96h10119/list/events/bodyButtonClick.js

@@ -0,0 +1,40 @@
+import { PRIMARY_KEY, LIST_BUTTON, FIELD } from '../../constant';
+import { listEdit, listBodyDelete, listCopy, listCommit, listUnCommit } from './listOperator';
+
+//列表操作列按钮操作
+export function bodyButtonClick(props, key, text, record, index) {
+    let pk = record[PRIMARY_KEY.head_id] && record[PRIMARY_KEY.head_id].value;
+    let ts = record[FIELD.ts] && record[FIELD.ts].value;
+    let pkMapTs = new Map();
+    //主键与tsMap
+    if (pk && ts) {
+        pkMapTs.set(pk, ts);
+    }
+
+    switch (key) {
+        //修改
+        case LIST_BUTTON.bodyUpdate:
+            listEdit(props, pk)
+            break;
+
+        //删除
+        case LIST_BUTTON.bodyDelete:
+            listBodyDelete({ ...props, json: this.state.json }, { pks: [pk], pkMapTs }, index);
+            break;
+
+        //复制
+        case LIST_BUTTON.copy:
+            listCopy(props, pk);
+            break;
+
+        //提交
+        case LIST_BUTTON.bodyCommit:
+            listCommit.call(this, { ...props, json: this.state.json }, { pks: [pk], pkMapTs });
+            break;
+
+        //收回
+        case LIST_BUTTON.bodyUnCommit:
+            listUnCommit({ ...props, json: this.state.json }, { pks: [pk], pkMapTs });
+            break;
+    }
+}

+ 55 - 0
zj_web/zjcmp_cd/cd/96h10119/list/events/buttonClick.js

@@ -0,0 +1,55 @@
+import { promptBox } from 'nc-lightapp-front';
+import { listCreate, listRefresh, listHeadDelete, listAttachment, listBillTrack, listCommit, listUnCommit, listLinkApprove } from './listOperator';
+import { LIST_BUTTON, STATUS } from '../../constant';
+
+//列表头部按钮操作
+export function buttonClick(props, id, text, record, index) {
+        switch (id) {
+                //新增
+                case LIST_BUTTON.create:
+                        listCreate(props);
+                        break;
+
+                //删除
+                case LIST_BUTTON.delete:
+                        promptBox({
+                                color: STATUS.warning,
+                                title: this.state.json['96H10119-000000'],/* 国际化处理: 删除*/
+                                content: this.state.json['96H10119-000001'],/* 国际化处理: 确定删除吗?*/
+                                beSureBtnClick: () => {
+                                        listHeadDelete({ ...props, json: this.state.json });
+                                }
+                        });
+                        break;
+
+                //附件
+                case LIST_BUTTON.attachment:
+                        listAttachment.call(this, { ...props, json: this.state.json });
+                        break;
+
+                //单据追溯
+                case LIST_BUTTON.billTrack:
+                        listBillTrack.call(this, { ...props, json: this.state.json });
+                        break;
+
+                //审批详情
+                case LIST_BUTTON.approvalLink:
+                        listLinkApprove.call(this, { ...props, json: this.state.json });
+                        break;
+
+                //提交
+                case LIST_BUTTON.commit:
+                        listCommit.call(this, { ...props, json: this.state.json });
+                        break;
+
+                //收回
+                case LIST_BUTTON.unCommit:
+                        listUnCommit({ ...props, json: this.state.json });
+                        break;
+
+                //刷新
+                case LIST_BUTTON.refresh:
+                        listRefresh({ ...props, json: this.state.json });
+                        break;
+        }
+}

+ 7 - 0
zj_web/zjcmp_cd/cd/96h10119/list/events/index.js

@@ -0,0 +1,7 @@
+import { buttonClick } from './buttonClick';
+import { searchBtnClick } from './searchBtnClick';
+import { selectedEvent } from './selectedEvent';
+import { bodyButtonClick } from './bodyButtonClick';
+import { initTemplate } from './initTemplate';
+import { listCreate, listRefresh, listSearch, pageInfoClick, handleDoubleClick } from './listOperator';
+export { buttonClick, searchBtnClick, selectedEvent, listCreate, listRefresh, listSearch, pageInfoClick, handleDoubleClick, bodyButtonClick, initTemplate };

+ 138 - 0
zj_web/zjcmp_cd/cd/96h10119/list/events/initTemplate.js

@@ -0,0 +1,138 @@
+import { LIST, LIST_BUTTON, PRIMARY_KEY, CARD, REQUEST_URL, FIELD, STATUS, LIST_DISABLED_BUTTON } from '../../constant';
+import { bodyButtonClick } from '../events/bodyButtonClick';
+
+//列表模板渲染
+export function initTemplate(props) {
+        props.createUIDom(
+                {
+                        pagecode: LIST.page_code,       //页面code
+                },
+                (data) => {
+                        if (data) {
+                                if (data.button) {
+                                        //将请求回来的按钮组数据设置到页面的 buttons 属性上
+                                        let button = data.button;
+                                        props.button.setButtons(button);
+                                        props.button.setPopContent(LIST_BUTTON.bodyDelete, this.state.json['96H10119-000008']);/* 国际化处理: 确认要删除吗?*/
+                                        props.button.setButtonDisabled(LIST_DISABLED_BUTTON, true);
+                                }
+                                if (data.template) {
+                                        let meta = data.template;
+                                        meta = modifierMeta.call(this, props, meta);
+                                        //高级查询区赋予组织
+                                        if (data.context && data.context.pk_org) {
+                                                let { pk_org, org_Name } = data.context;
+                                                //遍历查询区域字段,将默认业务单元赋值给组织字段
+                                                meta[LIST.search_id].items.map((item) => {
+                                                        if (item.attrcode == FIELD.org) {
+                                                                //item.initialvalue = { display: org_Name, value: pk_org }
+                                                        }
+//else if (item.attrcode == FIELD.orgV) {
+//                                                              item.initialvalue = { display: org_v_Name, value: pk_org_v }
+//                                                      }
+                                                });
+                                        }
+                                        props.meta.setMeta(meta);
+                                        //查询区赋予组织
+                                        //判断查询区域组织是否有值,如果有则表明快速查询方案已个性化定制。无需加载默认业务单元
+                                        if (data.context && data.context.pk_org) {
+                                                let orgValue = props.search.getSearchValByField(LIST.search_id, FIELD.org);
+                                                //let orgVValue = props.search.getSearchValByField(LIST.search_id, FIELD.orgV);
+                                                // if (!(orgValue && orgValue.value) && !(orgVValue && orgVValue.value)) {
+                                                if (!(orgValue && orgValue.value)) {
+                                                        let { pk_org, org_Name } = data.context;
+                                                        props.search.setSearchValByField(LIST.search_id, FIELD.org, { display: org_Name, value: pk_org });
+                                                        //props.search.setSearchValByField(LIST.search_id, FIELD.orgV, { display: org_v_Name, value: pk_org_v });
+                                                }
+                                        }
+                                }
+                        }
+                }
+        );
+}
+
+function modifierMeta(props, meta) {
+
+        //查询区参照过滤
+        meta[LIST.search_id].items.map((item) => {
+                if (item.attrcode === FIELD.org) { //财务组织过滤
+                        item.isMultiSelectedEnabled = true; //财务组织多选
+                        item.queryCondition = () => {
+                                return {
+                                        funcode: props.getSearchParam('c')//appcode获取
+                                };
+                        };
+                }
+                //else if (item.attrcode === FIELD.orgV) {
+                //      item.isMultiSelectedEnabled = true;
+                //      item.queryCondition = () => {
+                //              return {
+                //                      funcode: props.getSearchParam('c')//appcode获取
+                //              };
+                //      };
+                //}
+        });
+
+        //开启分页
+        meta[LIST.table_id].pagination = true;
+
+        meta[LIST.table_id].items = meta[LIST.table_id].items.map((item, key) => {
+                if (item.attrcode == PRIMARY_KEY.bill_no) {
+                        item.render = (text, record, index) => {
+                                return (
+                                        <a
+                                                style={{ cursor: 'pointer' }}
+                                                onClick={() => {
+                                                        props.pushTo(REQUEST_URL.toCard, {
+                                                                status: STATUS.browse,
+                                                                id: record[PRIMARY_KEY.head_id].value,
+                                                                pagecode: CARD.page_code
+                                                        });
+                                                }}
+                                        >
+                                                {record[PRIMARY_KEY.bill_no] && record[PRIMARY_KEY.bill_no].value}
+                                        </a>
+                                );
+                        };
+                }
+                return item;
+        });
+
+        //添加操作列
+        //示例代码
+        meta[LIST.table_id].items.push({
+                itemtype: 'customer',
+                attrcode: 'opr',
+                label: this.state.json['96H10119-000006'],/* 国际化处理: 操作*/
+                width: '180px',
+                fixed: 'right',
+                className: "table-opr",
+                visible: true,
+                render: (text, record, index) => {
+                        let buttonAry = [];
+                        let billStatus = record[FIELD.billStatus] && record[FIELD.billStatus].value;
+                        switch (billStatus) {
+                                case STATUS.NOSTATE:
+                                        buttonAry = [LIST_BUTTON.bodyCommit, LIST_BUTTON.bodyUpdate, LIST_BUTTON.bodyDelete, LIST_BUTTON.copy];
+                                        break;
+                                case STATUS.PASSING:
+                                case STATUS.COMMIT:
+                                case STATUS.GOINGON:
+                                        buttonAry = [LIST_BUTTON.bodyUnCommit, LIST_BUTTON.copy];
+                                        break;
+                                default:
+                                        buttonAry = [LIST_BUTTON.copy];
+                                        break;
+                        }
+
+                        return props.button.createOprationButton(buttonAry, {
+                                area: LIST.body_btn_code,
+                                buttonLimit: 4,
+                                onButtonClick: (props, key) => bodyButtonClick.call(this, props, key, text, record, index)
+                        });
+                }
+        });
+
+        return meta;
+}
+

+ 354 - 0
zj_web/zjcmp_cd/cd/96h10119/list/events/listOperator.js

@@ -0,0 +1,354 @@
+import { ajax, cardCache, toast } from 'nc-lightapp-front';
+import { REQUEST_URL, SEARCH_CACHE, CARD, LIST, PRIMARY_KEY, LIST_BUTTON, STATUS, BILL_TYPE_CODE, FIELD } from '../../constant';
+
+//列表新增
+export function listCreate(props) {
+    props.pushTo(REQUEST_URL.toCard, {
+        status: STATUS.add,
+        pagecode: CARD.page_code
+    });
+}
+
+//列表刷新
+export function listRefresh(props) {
+    let { getDefData } = cardCache;
+    let queryInfo = getDefData(SEARCH_CACHE.key, SEARCH_CACHE.dataSource);
+    listSearch(props, queryInfo);
+}
+
+//列表修改
+export function listEdit(props, pk) {
+    props.pushTo(REQUEST_URL.toCard, {
+        status: STATUS.edit,
+        id: pk,
+        pagecode: CARD.page_code
+    });
+}
+
+//列表复制
+export function listCopy(props, pk) {
+    props.pushTo(REQUEST_URL.toCard, {
+        status: STATUS.edit,
+        id: pk,
+        pagecode: CARD.page_code,
+        isCopy: true
+    });
+}
+
+
+//列表提交
+export function listCommit(props, data) {
+    if (!data) {
+        let select = checkSelected(props, false);
+        if(!select.valid){
+            return;
+        }
+        if (select.valid) {
+            let selectDatas = select.selectDatas;
+            let pks = selectDatas && selectDatas.map(item => item.data.values[PRIMARY_KEY.head_id].value);
+            let pkMapTs = new Map();
+            selectDatas && selectDatas.map(item => {
+                let pk = item.data.values[PRIMARY_KEY.head_id].value;
+                let ts = item.data.values[FIELD.ts] && item.data.values[FIELD.ts].value;
+                //主键与tsMap
+                if (pk && ts) {
+                    pkMapTs.set(pk, ts);
+                }
+            });
+            data = { pks, pkMapTs };
+        }
+    }
+    ajax({
+        url: REQUEST_URL.commit,
+        data: data,
+        success: (res) => {
+            if (res.success) { //成功
+                if (res.data && res.data.workflow && (res.data.workflow == 'approveflow' || res.data.workflow == 'workflow')) {
+                    this.setState({
+                        compositeData: res.data,
+                        compositeDisplay: true,
+                        curPk: data.pks
+                    });
+                    PromptMessage.call(this, res);
+                } else {
+                    PromptMessage.call(this, res);
+                    listRefresh(props);
+                }
+            } else { //失败
+                PromptMessage.call(this, res);
+                //toast({ color: STATUS.warning, content: props.json['96H10119-000015'] });/* 国际化处理: 提交失败*/
+            }
+        }
+    });
+}
+
+//列表收回
+export function listUnCommit(props, data) {
+    if (!data) {
+        let select = checkSelected(props, false);
+        if (select.valid) {
+            let selectDatas = select.selectDatas;
+            let pks = selectDatas && selectDatas.map(item => item.data.values[PRIMARY_KEY.head_id].value);
+            let pkMapTs = new Map();
+            selectDatas && selectDatas.map(item => {
+                let pk = item.data.values[PRIMARY_KEY.head_id].value;
+                let ts = item.data.values[FIELD.ts] && item.data.values[FIELD.ts].value;
+                //主键与tsMap
+                if (pk && ts) {
+                    pkMapTs.set(pk, ts);
+                }
+            });
+            data = { pks, pkMapTs };
+        }
+    }
+    ajax({
+        url: REQUEST_URL.unCommit,
+        data: data,
+        success: (res) => {
+            if (res.success) { //成功
+                listRefresh(props);
+            } else { //失败
+                toast({ color: STATUS.warning, content: props.json['96H10119-000017'] });/* 国际化处理: 收回失败*/
+            }
+        }
+    });
+}
+
+
+/**
+ * 是否选中数据
+ * 
+ * @param {*} isCheckOne 是否选中一条数据
+ * @returns 返回是否校验成功
+ */
+export function checkSelected(props, isCheckOne) {
+    let valid = true;
+    let selectDatas = props.table && props.table.getCheckedRows(LIST.table_id);
+    if (isCheckOne && selectDatas.length > 1) {
+        toast({
+            color: STATUS.warning, content: props.json['96H10119-000012']/* 国际化处理: 请选中一行表体数据!*/
+        });
+        valid = false;
+    } else if (selectDatas.length == 0) {
+        toast({
+            color: STATUS.warning, content: props.json['96H10119-000013']/* 国际化处理: 请选择表体数据操作!*/
+        });
+        valid = false;
+    }
+    return { valid, selectDatas };
+}
+
+//列表附件
+export function listAttachment(props) {
+    let select = checkSelected(props, true);
+    if (select.valid) {
+        let selectDatas = select.selectDatas;
+        let billId = selectDatas[0] && selectDatas[0].data.values[PRIMARY_KEY.head_id].value;
+        let billNo = selectDatas[0] && selectDatas[0].data.values[PRIMARY_KEY.bill_no].value;
+        this.setState({
+            showUploader: !this.state.showUploader,
+            billInfo: { billId, billNo }
+        });
+    }
+}
+
+//列表单据追溯
+export function listBillTrack(props) {
+    //单据追溯示例
+    let select = checkSelected(props, true);
+    if (select.valid) {
+        let selectDatas = select.selectDatas;
+        let billId = selectDatas[0] && selectDatas[0].data.values[PRIMARY_KEY.head_id].value;
+        this.setState({
+            showBillTrack: true,
+            billTrackBillId: billId,
+            billTrackBillType: BILL_TYPE_CODE
+        });
+    }
+}
+
+//列表审批详情
+export function listLinkApprove(props) {
+    let select = checkSelected(props, true);
+    if (select.valid) {
+        let selectDatas = select.selectDatas;
+        let billId = selectDatas[0] && selectDatas[0].data.values[PRIMARY_KEY.head_id].value;
+        this.setState({
+            showApproveDetail: true,
+            billId: billId
+        });
+    }
+}
+
+//列表表头删除
+export function listHeadDelete(props) {
+    let data = {};
+    let pks = [];
+    let select = checkSelected(props, false);
+    if (select.valid) {
+        let selectDatas = select.selectDatas;
+        pks = selectDatas && selectDatas.map(item => item.data.values[PRIMARY_KEY.head_id].value);
+        let pkMapTs = new Map();
+        selectDatas && selectDatas.map(item => {
+            let pk = item.data.values[PRIMARY_KEY.head_id].value;
+            let ts = item.data.values[FIELD.ts] && item.data.values[FIELD.ts].value;
+            //主键与tsMap
+            if (pk && ts) {
+                pkMapTs.set(pk, ts);
+            }
+        });
+        data = { pks, pkMapTs };
+    }
+    ajax({
+        url: REQUEST_URL.delete,
+        data: data,
+        success: (res) => {
+            if (res.success) { //成功
+                let allTableData = props.table.getAllTableData(LIST.table_id);
+                let allPks = allTableData.rows[0] && allTableData.rows.map(item => item.values[PRIMARY_KEY.head_id].value);
+                let deleteRowIndexArr = pks.map(item => allPks.findIndex(v => v == item)).filter(item => item != -1);
+                props.table.deleteCacheId(LIST.table_id, pks);
+                props.table.deleteTableRowsByIndex(LIST.table_id, deleteRowIndexArr);
+                toast({ color: STATUS.success, content: props.json['96H10119-000005'] });/* 国际化处理: 删除成功*/
+            } else { //失败
+                toast({ color: STATUS.warning, content: props.json['96H10119-000009'] });/* 国际化处理: 删除失败*/
+            }
+        }
+    });
+}
+
+//列表表体删除
+export function listBodyDelete(props, data, index) {
+    ajax({
+        url: REQUEST_URL.delete,
+        data: data,
+        success: (res) => {
+            if (res.success) { //成功
+                props.table.deleteCacheId(LIST.table_id, data.pks[0]);
+                props.table.deleteTableRowsByIndex(LIST.table_id, index);
+                toast({ color: STATUS.success, content: props.json['96H10119-000005'] });/* 国际化处理: 删除成功*/
+            } else { //失败
+                toast({ color: STATUS.warning, content: props.json['96H10119-000009'] });/* 国际化处理: 删除失败*/
+            }
+        }
+    });
+}
+
+//列表查询
+export function listSearch(props, queryInfo) {
+    let pageInfo = props.table.getTablePageInfo(LIST.table_id);
+    if (!queryInfo) {
+        queryInfo = props.search.getQueryInfo(LIST.search_id);
+    }
+    queryInfo.pageInfo = pageInfo;
+    queryInfo.pageCode = LIST.page_code;
+
+    // 刷新按钮可用
+    props.button.setDisabled({ [LIST_BUTTON.refresh]: false });
+
+    ajax({
+        url: REQUEST_URL.queryList,
+        data: queryInfo,
+        success: (res) => {
+            let { success, data } = res;
+            if (res.formulamsg && res.formulamsg instanceof Array && res.formulamsg.length > 0) {
+                props.dealFormulamsg(res.formulamsg);
+            }
+            if (success && data && data[LIST.table_id]) {
+                props.table.setAllTableData(LIST.table_id, data[LIST.table_id]);
+                toast({ color: STATUS.success });
+            } else {
+                props.table.setAllTableData(LIST.table_id, { rows: [] });
+                toast({ color: STATUS.warning, content: props.json['96H10119-000010'] });/* 国际化处理: 未查询出符合条件的数据!*/
+            }
+
+            // 将查询条件缓存
+            let { setDefData } = cardCache;
+            setDefData(SEARCH_CACHE.key, SEARCH_CACHE.dataSource, queryInfo);
+        }
+    });
+}
+
+//分页查询
+export function pageInfoClick(props, config, pks) {
+    let data = {
+        pks,
+        pagecode: LIST.page_code
+    };
+
+    ajax({
+        url: REQUEST_URL.queryListByPks,
+        data: data,
+        success: (res) => {
+            let { success, data } = res;
+            if (success && data && data[LIST.table_id]) {
+                props.table.setAllTableData(LIST.table_id, data[LIST.table_id]);
+                toast({ color: STATUS.success });
+            } else {
+                props.table.setAllTableData(LIST.table_id, { rows: [] });
+                toast({ color: STATUS.warning, content: props.json['96H10119-000010'] });/* 国际化处理: 未查询出符合条件的数据!*/
+            }
+        }
+    });
+}
+
+/**
+ * 列表消息提示
+ * @param {*} res           返回的response
+ * @param {*} opername      操作名称
+ */
+export function PromptMessage(res) {
+    let { status, msg } = res.data;
+    let content;
+    let total = res.data.total;
+    let successNum = res.data.successNum;
+    let failNum = res.data.failNum;
+    content = '共' + '提交' + total + '条';/* 国际化处理: 共,条,*/
+    content = content + ',成功' + successNum + '条';/* 国际化处理: 成功,条 ,,成功*/
+    content = content +',失败' + failNum + ',条';/* 国际化处理: 失败,条,条*/
+    let errMsgArr = res.data.errormessages;
+    //全部成功
+    if (status == 0) {
+        toast({
+            color: "success",
+            title: '提交' + msg,
+            content: content,
+            TextArr: ['展开', '收起', '关闭'],/* 国际化处理: 展开,收起,关闭*/
+            groupOperation: true
+        });
+    }
+    //全部失败
+    else if (status == 1) {
+        toast({
+            duration: "infinity",
+            color: "danger",
+            title: '提交' + msg,
+            content: content,
+            TextArr: ['展开', '收起', '关闭'],/* 国际化处理: 展开,收起,关闭*/
+            groupOperation: true,
+            groupOperationMsg: errMsgArr
+        });
+    }
+    //部分成功
+    else if (status == 2) {
+        toast({
+            duration: "infinity",
+            color: "warning",
+            title: '提交' + msg,
+            content: content,
+            TextArr: ['展开', '收起', '关闭'],/* 国际化处理: 展开,收起,关闭*/
+            groupOperation: true,
+            groupOperationMsg: errMsgArr
+        });
+    }
+}
+
+//列表行双击
+export function handleDoubleClick(record, index, props) {
+    props.pushTo(REQUEST_URL.toCard, {
+        status: STATUS.browse,
+        id: record[PRIMARY_KEY.head_id].value,
+        pagecode: CARD.page_code,
+        scene: props.getUrlParam('scene')
+    });
+};

+ 6 - 0
zj_web/zjcmp_cd/cd/96h10119/list/events/searchBtnClick.js

@@ -0,0 +1,6 @@
+import { listSearch } from './listOperator';
+
+//点击查询,获取查询区数据
+export function searchBtnClick(props) {
+        listSearch(props);
+}

+ 76 - 0
zj_web/zjcmp_cd/cd/96h10119/list/events/selectedEvent.js

@@ -0,0 +1,76 @@
+import { LIST, LIST_BUTTON, FIELD, LIST_DISABLED_BUTTON, STATUS } from "../../constant";
+
+//选择事件示例
+
+//单选 props, moduleId(区域id), record(行数据), index(当前index), status(选框值)
+export function selectedEvent(props, moduleId, record, index, status) {
+    props.button.setButtonDisabled(LIST_DISABLED_BUTTON, true);
+
+    let showBtn = [], deleteFlag = true, isAllNoState = true, isAllPassing = true;
+    let selectDatas = props.table.getCheckedRows(LIST.table_id);
+
+    if (selectDatas.length == 0) {
+        return;
+    } else if (selectDatas.length > 1) { //多选
+        showBtn = [LIST_BUTTON.print, LIST_BUTTON.output];
+        for (let selectData of selectDatas) {
+            let status = selectData.data.values[FIELD.billStatus].value;
+            if (status == STATUS.PASSING || status == STATUS.COMMIT || status == STATUS.GOINGON) {
+                isAllNoState = false;
+                deleteFlag = false;
+            } else if (status == STATUS.NOSTATE) {
+                isAllPassing = false;
+            }
+        }
+        if (deleteFlag) {
+            showBtn.push(LIST_BUTTON.delete);
+        }
+        if (isAllNoState) {
+            showBtn.push(LIST_BUTTON.commit);
+        }
+        if (isAllPassing) {
+            showBtn.push(LIST_BUTTON.unCommit);
+        }
+        props.button.setButtonDisabled(showBtn, false);
+    } else { //单选
+        let busistatus = selectDatas[0].data.values[FIELD.billStatus] && selectDatas[0].data.values[FIELD.billStatus].value;
+        if (busistatus == STATUS.NOSTATE) { //自由
+            showBtn = [LIST_BUTTON.commit, LIST_BUTTON.delete];
+        } else if (busistatus == STATUS.PASSING || busistatus == STATUS.COMMIT || busistatus == STATUS.GOINGON) { //提交
+            showBtn = [LIST_BUTTON.unCommit, LIST_BUTTON.approvalLink];
+        }
+        props.button.setButtonDisabled([...showBtn, LIST_BUTTON.print, LIST_BUTTON.output, LIST_BUTTON.attachment, LIST_BUTTON.linkGroup, LIST_BUTTON.billTrack], false);
+    }
+
+}
+
+//全选
+export function selectedAllEvent(props, moduleId, status, length) {
+    props.button.setButtonDisabled(LIST_DISABLED_BUTTON, true);
+
+    let selectDatas = props.table.getCheckedRows(LIST.table_id);
+    if (selectDatas.length > 0) {
+        let showBtn = [], deleteFlag = true, isAllNoState = true, isAllPassing = true;
+        let selectDatas = props.table.getCheckedRows(LIST.table_id);
+        showBtn = [LIST_BUTTON.print, LIST_BUTTON.output];
+        for (let selectData of selectDatas) {
+            let status = selectData.data.values[FIELD.billStatus].value;
+            if (status == STATUS.PASSING || status == STATUS.COMMIT || status == STATUS.GOINGON) {
+                isAllNoState = false;
+                deleteFlag = false;
+            } else if (status == STATUS.NOSTATE) {
+                isAllPassing = false;
+            }
+        }
+        if (deleteFlag) {
+            showBtn.push(LIST_BUTTON.delete);
+        }
+        if (isAllNoState) {
+            showBtn.push(LIST_BUTTON.commit);
+        }
+        if (isAllPassing) {
+            showBtn.push(LIST_BUTTON.unCommit);
+        }
+        props.button.setButtonDisabled(showBtn, false);
+    }
+}

+ 185 - 0
zj_web/zjcmp_cd/cd/96h10119/list/index.js

@@ -0,0 +1,185 @@
+import React, { Component } from 'react';
+import { createPage, createPageIcon, cardCache, high } from 'nc-lightapp-front';
+import { initTemplate } from './events/initTemplate';
+import { buttonClick } from './events/buttonClick';
+import { searchBtnClick } from './events/searchBtnClick';
+import { selectedEvent, selectedAllEvent } from './events/selectedEvent';
+import { LIST_BUTTON, SEARCH_CACHE, LIST, MULTILANG, PRIMARY_KEY, BILL_TYPE_CODE } from '../constant';
+import { pageInfoClick, handleDoubleClick, listCommit } from './events/listOperator';
+
+class List extends Component {
+        constructor(props) {
+                super(props);
+                this.state = {
+                        json: {},
+                        showUploader: false,
+                        billInfo: {},
+                        compositeData: null, //指派信息
+                        compositeDisplay: false, //是否显示指派
+                        curPk: null, //当前选中数据的pk
+                        showApproveDetail: false, //是否显示审批详情
+                        billId: null
+                };
+        }
+
+        componentWillMount() {
+                // json: 多语json格式参数; 
+                // status: 是否请求到json多语,可用来判断多语资源是否请求到并进行一些别的操作; 
+                // inlt: 可用来进行占位符的一些操作
+                let callback = (json, status, inlt) => {
+                        if (status) {
+                                initTemplate.call(this, this.props); // 如模板内也有多语处理,平台推荐模板加载操作放于此处, 在取到json多语资源后用传参的方式传入intemplate模板函数中
+
+                                // 保存json和inlt到页面state中并刷新页面
+                                this.setState({ json, inlt })
+                        }
+                }
+                this.props.MultiInit.getMultiLang({ moduleId: MULTILANG.moduleId, domainName: MULTILANG.domainName, callback });
+        }
+
+        componentDidMount() {
+                let { getDefData } = cardCache;
+                if (getDefData(SEARCH_CACHE.key, SEARCH_CACHE.dataSource)) {
+                        this.props.button.setDisabled({
+                                [LIST_BUTTON.refresh]: false
+                        });
+                } else {
+                        this.props.button.setDisabled({
+                                [LIST_BUTTON.refresh]: true
+                        });
+                }
+        }
+
+        handlePageInfoChange = (props, config, pks) => {
+                pageInfoClick({ ...props, json: this.state.json }, config, pks);
+        }
+
+        onRowDoubleClick = (record, index, props) => {
+                handleDoubleClick(record, index, { ...props, json: this.state.json });
+        }
+
+        clickSearchBtn = (props) => {
+                searchBtnClick({ ...props, json: this.state.json });
+        }
+
+        clickSelectBtn = (props, moduleId, record, index, status) => {
+                selectedEvent(props, moduleId, record, index, status);
+        }
+
+        clickSelectAllBtn = (props, moduleId, status, length) => {
+                selectedAllEvent(props, moduleId, status, length);
+        }
+
+        //指派提交
+        getAssignUser = (value) => {
+                listCommit({ ...this.props, json: this.state.json }, {
+                        pks: this.state.curPk,
+                        userObj: value
+                });
+                this.compositeTurnOff();
+        };
+
+        //关闭指派
+        compositeTurnOff = () => {
+                this.setState({
+                        compositeData: null,
+                        compositeDisplay: false
+                });
+        };
+
+        render() {
+                let { table, search } = this.props;
+                let { createSimpleTable } = table;
+                let { NCCreateSearch } = search;
+                let { NCUploader, BillTrack, ApprovalTrans, ApproveDetail } = high;
+                return (
+                        <div className="nc-bill-list">
+                                <div className="nc-bill-header-area">
+                                        <div className="header-title-search-area">
+                                                {createPageIcon()}
+                                                <h2 className="title-search-detail">{this.state.json[LIST.page_title]}</h2>
+                                        </div>
+
+                                        <div className="header-button-area">
+                                                {this.props.button.createButtonApp({
+                                                        area: LIST.head_btn_code,
+                                                        onButtonClick: buttonClick.bind(this)
+                                                })}
+                                        </div>
+                                </div>
+
+                                <div className="nc-bill-search-area">
+                                        {NCCreateSearch(LIST.search_id, {
+                                                clickSearchBtn: this.clickSearchBtn
+                                        })}
+                                </div>
+
+                                <div className="table-area">
+                                        {createSimpleTable(LIST.table_id, {
+                                                showCheck: true,
+                                                dataSource: SEARCH_CACHE.dataSource,
+                                                pkname: PRIMARY_KEY.head_id,
+                                                handlePageInfoChange: this.handlePageInfoChange,
+                                                onRowDoubleClick: this.onRowDoubleClick,
+                                                onSelected: this.clickSelectBtn,
+                                                onSelectedAll: this.clickSelectAllBtn,
+                                        })}
+                                </div>
+
+                                {/* 附件 */}
+                                {this.state.showUploader && (
+                                        <NCUploader
+                                                placement={'bottom'}
+                                                {...this.state.billInfo}
+                                                onHide={() => {
+                                                        this.setState({
+                                                                showUploader: false
+                                                        });
+                                                }}
+                                        />
+                                )}
+
+                                {/*联查单据追溯*/}
+                                {
+                                        <BillTrack
+                                                show={this.state.showBillTrack}
+                                                close={() => {
+                                                        this.setState({ showBillTrack: false });
+                                                }}
+                                                pk={this.state.billTrackBillId}
+                                                type={this.state.billTrackBillType}
+                                        />
+                                }
+
+                                {/* 指派 */}
+                                {this.state.compositeDisplay && (
+                                        <ApprovalTrans
+                                                title={this.state.json['96H10119-000018']} /* 国际化处理: 指派*/
+                                                data={this.state.compositeData}
+                                                display={this.state.compositeDisplay}
+                                                getResult={this.getAssignUser}
+                                                cancel={this.compositeTurnOff}
+                                        />
+                                )}
+
+                                {/* 联查审批详情 */}
+                                {
+                                        <ApproveDetail
+                                                show={this.state.showApproveDetail}
+                                                billtype={BILL_TYPE_CODE}
+                                                billid={this.state.billId}
+                                                close={() => {
+                                                        this.setState({
+                                                                showApproveDetail: false
+                                                        });
+                                                }}
+                                        />
+                                }
+                        </div>
+                );
+        }
+}
+
+List = createPage({
+})(List);
+export default List;

+ 10 - 0
zj_web/zjcmp_cd/cd/96h10119/main/config.json

@@ -0,0 +1,10 @@
+{
+    "dependModuleName": [
+        "uap/common/components/ApproveDetail",
+        "uap/common/components/NCUploader"
+    ],
+    "dependjs": [
+        "../../../../uap/common/components/ApproveDetail/index.js",
+        "../../../../uap/common/components/NCUploader/index.js"
+    ]
+}

+ 6 - 0
zj_web/zjcmp_cd/cd/96h10119/main/index.js

@@ -0,0 +1,6 @@
+import { RenderRouter } from 'nc-lightapp-front';
+import routes from './router';
+
+(function main(routers, htmlTagid) {
+        RenderRouter(routers, htmlTagid);
+})(routes, 'app');

+ 28 - 0
zj_web/zjcmp_cd/cd/96h10119/main/router.js

@@ -0,0 +1,28 @@
+import { asyncComponent } from 'nc-lightapp-front';
+import list from '../list';
+
+/**
+* @description: 页面路由
+* 保留注释 webpackChunkName:项目名/模块名/组件名/...
+*/
+const card = asyncComponent(() =>
+        import(/*webpackChunkName: "fmc/fmc/cost/card/card"*/ /* webpackMode: "eager" */ '../card')
+);
+
+const routes = [
+        {
+                path: '/',
+                component: list,
+                exact: true
+        },
+        {
+                path: '/list',
+                component: list
+        },
+        {
+                path: '/card',
+                component: card
+        }
+];
+
+export default routes;

+ 41 - 0
zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10101.json

@@ -0,0 +1,41 @@
+{
+    "96H10101-000000": "确定要删除吗?",
+    "96H10101-000001": "操作",
+    "96H10101-000002": "删除成功",
+    "96H10101-000003": "查询成功,共",
+    "96H10101-000004": "条。",
+    "96H10101-000005": "未查询出符合条件的数据",
+    "96H10101-000006": "取消",
+    "96H10101-000007": "确定要取消吗?",
+    "96H10101-000008": "保存成功",
+    "96H10101-000009": "删除",
+    "96H10101-000010": "确定要删除所选数据吗?",
+    "96H10101-000011": "提示",
+    "96H10101-000012": "请选择数据操作!",
+    "96H10101-000013": "无可打印数据",
+    "96H10101-000014": "无可输出的数据",
+    "96H10101-000015": "编辑态不能查询",
+    "96H10101-000016": "确定启用?",
+    "96H10101-000017": "确定停用?",
+    "96H10101-000018": "单表小应用",
+    "96H10101-000019": "确定要删除吗?",
+    "96H10101-000020": "刷新成功",
+    "96H10101-000021": "语种",
+    "96H10101-000022": "下列字段值不能为空:\n",
+    "96H10101-000023": "单表小应用",
+    "96H10101-000024": "继承担保定额",
+    "96H10101-000025": "协议编号",
+    "96H10101-000026": "控制方式",
+    "96H10101-000027": "受保单位",
+    "96H10101-000028": "资金组织",
+    "96H10101-000029": "担保额度",
+    "96H10101-000030": "继承担保定额",
+    "96H10101-000032": "担保可用额度",
+    "96H10101-000033": "期初已用担保额度",
+    "96H10101-000034": "本期已用担保额度",
+    "96H10101-000035": "可用担保额度",
+    "96H10101-000036": "币种",
+    "96H10101-000037": "开始日期",
+    "96H10101-000038": "结束日期"
+}
+

+ 27 - 0
zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10102.json

@@ -0,0 +1,27 @@
+{
+    "96H10102-000000": "确定要删除吗?",
+    "96H10102-000001": "操作",
+    "96H10102-000002": "删除成功",
+    "96H10102-000003": "查询成功,共",
+    "96H10102-000004": "条。",
+    "96H10102-000005": "未查询出符合条件的数据",
+    "96H10102-000006": "取消",
+    "96H10102-000007": "确定要取消吗?",
+    "96H10102-000008": "保存成功",
+    "96H10102-000009": "删除",
+    "96H10102-000010": "确定要删除所选数据吗?",
+    "96H10102-000011": "提示",
+    "96H10102-000012": "请选择数据操作!",
+    "96H10102-000013": "无可打印数据",
+    "96H10102-000014": "无可输出的数据",
+    "96H10102-000015": "编辑态不能查询",
+    "96H10102-000016": "确定启用?",
+    "96H10102-000017": "确定停用?",
+    "96H10102-000018": "集团担保定额",
+    "96H10102-000019": "确定要删除吗?",
+    "96H10102-000020": "刷新成功",
+    "96H10102-000021": "语种",
+    "96H10102-000022": "下列字段值不能为空:\n",
+    "96H10102-000023": "集团担保定额"
+}
+

+ 27 - 0
zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10103.json

@@ -0,0 +1,27 @@
+{
+    "96H10103-000000": "确定要删除吗?",
+    "96H10103-000001": "操作",
+    "96H10103-000002": "删除成功",
+    "96H10103-000003": "查询成功,共",
+    "96H10103-000004": "条。",
+    "96H10103-000005": "未查询出符合条件的数据",
+    "96H10103-000006": "取消",
+    "96H10103-000007": "确定要取消吗?",
+    "96H10103-000008": "保存成功",
+    "96H10103-000009": "删除",
+    "96H10103-000010": "确定要删除所选数据吗?",
+    "96H10103-000011": "提示",
+    "96H10103-000012": "请选择数据操作!",
+    "96H10103-000013": "无可打印数据",
+    "96H10103-000014": "无可输出的数据",
+    "96H10103-000015": "编辑态不能查询",
+    "96H10103-000016": "确定启用?",
+    "96H10103-000017": "确定停用?",
+    "96H10103-000018": "集团担保定额",
+    "96H10103-000019": "确定要删除吗?",
+    "96H10103-000020": "刷新成功",
+    "96H10103-000021": "语种",
+    "96H10103-000022": "下列字段值不能为空:\n",
+    "96H10103-000023": "集团担保定额"
+}
+

+ 27 - 0
zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10104.json

@@ -0,0 +1,27 @@
+{
+    "96H10104-000000": "确定要删除吗?",
+    "96H10104-000001": "操作",
+    "96H10104-000002": "删除成功",
+    "96H10104-000003": "查询成功,共",
+    "96H10104-000004": "条。",
+    "96H10104-000005": "未查询出符合条件的数据",
+    "96H10104-000006": "取消",
+    "96H10104-000007": "确定要取消吗?",
+    "96H10104-000008": "保存成功",
+    "96H10104-000009": "删除",
+    "96H10104-000010": "确定要删除所选数据吗?",
+    "96H10104-000011": "提示",
+    "96H10104-000012": "请选择数据操作!",
+    "96H10104-000013": "无可打印数据",
+    "96H10104-000014": "无可输出的数据",
+    "96H10104-000015": "编辑态不能查询",
+    "96H10104-000016": "确定启用?",
+    "96H10104-000017": "确定停用?",
+    "96H10104-000018": "资金计划填报单",
+    "96H10104-000019": "确定要删除吗?",
+    "96H10104-000020": "刷新成功",
+    "96H10104-000021": "语种",
+    "96H10104-000022": "下列字段值不能为空:\n",
+    "96H10104-000023": "资金计划填报单"
+}
+

+ 27 - 0
zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10106.json

@@ -0,0 +1,27 @@
+{
+    "96H10106-000000": "确定要删除吗?",
+    "96H10106-000001": "操作",
+    "96H10106-000002": "删除成功",
+    "96H10106-000003": "查询成功,共",
+    "96H10106-000004": "条。",
+    "96H10106-000005": "未查询出符合条件的数据",
+    "96H10106-000006": "取消",
+    "96H10106-000007": "确定要取消吗?",
+    "96H10106-000008": "保存成功",
+    "96H10106-000009": "删除",
+    "96H10106-000010": "确定要删除所选数据吗?",
+    "96H10106-000011": "提示",
+    "96H10106-000012": "请选择数据操作!",
+    "96H10106-000013": "无可打印数据",
+    "96H10106-000014": "无可输出的数据",
+    "96H10106-000015": "编辑态不能查询",
+    "96H10106-000016": "确定启用?",
+    "96H10106-000017": "确定停用?",
+    "96H10106-000018": "集团担保定额",
+    "96H10106-000019": "确定要删除吗?",
+    "96H10106-000020": "刷新成功",
+    "96H10106-000021": "语种",
+    "96H10106-000022": "下列字段值不能为空:\n",
+    "96H10106-000023": "集团担保定额"
+}
+

+ 26 - 0
zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10107.json

@@ -0,0 +1,26 @@
+{
+    "96H10107-000000": "删除",
+    "96H10107-000001": "确定删除吗?",
+    "96H10107-000002": "取消",
+    "96H10107-000003": "是否确认要取消?",
+    "96H10107-000004": "保存成功!",
+    "96H10107-000005": "删除成功",
+    "96H10107-000006": "操作",
+    "96H10107-000007": "当前单据未保存,您确认离开此页面?",
+    "96H10107-000008": "确认要删除吗?",
+    "96H10107-000009": "删除失败",
+    "96H10107-000010": "未查询出符合条件的数据!",
+
+    "96H10107-000011": "集团担保定额单",
+
+    "96H10107-000012": "请选中一行表体数据!",
+    "96H10107-000013": "请选择表体数据操作!",
+    "96H10107-000014": "提交成功!",
+    "96H10107-000015": "提交失败!",
+    "96H10107-000016": "收回成功!",
+    "96H10107-000017": "收回失败!",
+    "96H10107-000018": "指派",
+    "96H10107-000019": "待提交",
+    "96H10107-000020": "审批中",
+    "96H10107-000021": "全部"
+}

+ 23 - 0
zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10108.json

@@ -0,0 +1,23 @@
+{
+    "96H10108-000000": "删除",
+    "96H10108-000001": "确定删除吗?",
+    "96H10108-000002": "取消",
+    "96H10108-000003": "是否确认要取消?",
+    "96H10108-000004": "保存成功!",
+    "96H10108-000005": "删除成功",
+    "96H10108-000006": "操作",
+    "96H10108-000007": "当前单据未保存,您确认离开此页面?",
+    "96H10108-000008": "确认要删除吗?",
+    "96H10108-000009": "删除失败",
+    "96H10108-000010": "未查询出符合条件的数据!",
+
+    "96H10108-000011": "网银登记单",
+
+    "96H10108-000012": "请选中一行表体数据!",
+    "96H10108-000013": "请选择表体数据操作!",
+    "96H10108-000014": "提交成功!",
+    "96H10108-000015": "提交失败!",
+    "96H10108-000016": "收回成功!",
+    "96H10108-000017": "收回失败!",
+    "96H10108-000018": "指派"
+}

+ 23 - 0
zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10110.json

@@ -0,0 +1,23 @@
+{
+    "96H10110-000000": "删除",
+    "96H10110-000001": "确定删除吗?",
+    "96H10110-000002": "取消",
+    "96H10110-000003": "是否确认要取消?",
+    "96H10110-000004": "保存成功!",
+    "96H10110-000005": "删除成功",
+    "96H10110-000006": "操作",
+    "96H10110-000007": "当前单据未保存,您确认离开此页面?",
+    "96H10110-000008": "确认要删除吗?",
+    "96H10110-000009": "删除失败",
+    "96H10110-000010": "未查询出符合条件的数据!",
+
+    "96H10110-000011": "资金计划填报单表头",
+
+    "96H10110-000012": "请选中一行表体数据!",
+    "96H10110-000013": "请选择表体数据操作!",
+    "96H10110-000014": "提交成功!",
+    "96H10110-000015": "提交失败!",
+    "96H10110-000016": "收回成功!",
+    "96H10110-000017": "收回失败!",
+    "96H10110-000018": "指派"
+}

+ 23 - 0
zj_web/zjcmp_cd/public/lang/standard/simpchn/96H10119.json

@@ -0,0 +1,23 @@
+{
+    "96H10119-000000": "删除",
+    "96H10119-000001": "确定删除吗?",
+    "96H10119-000002": "取消",
+    "96H10119-000003": "是否确认要取消?",
+    "96H10119-000004": "保存成功!",
+    "96H10119-000005": "删除成功",
+    "96H10119-000006": "操作",
+    "96H10119-000007": "当前单据未保存,您确认离开此页面?",
+    "96H10119-000008": "确认要删除吗?",
+    "96H10119-000009": "删除失败",
+    "96H10119-000010": "未查询出符合条件的数据!",
+    "36620GC-000001": "版本号",
+    "96H10119-000011": "网银登记单",
+
+    "96H10119-000012": "请选中一行表体数据!",
+    "96H10119-000013": "请选择表体数据操作!",
+    "96H10119-000014": "提交成功!",
+    "96H10119-000015": "提交失败!",
+    "96H10119-000016": "收回成功!",
+    "96H10119-000017": "收回失败!",
+    "96H10119-000018": "指派"
+}

+ 0 - 0
zj_web/zjcmp_cd/public/lang/standard/simpchn/ncc_patch