<!doctype html> <html> <head> <meta charset="utf-8"><meta http-equiv="Expires" content="0"><meta http-equiv="Pragma" content="no-cache"><meta http-equiv="Cache-control" content="no-cache"><meta http-equiv="Cache" content="no-cache"> <title>方案定义</title> <script type="text/javascript"> function loadJsCss(callback) { var jscss_urls = [ {id: "js6", type: "js", url: "root/js/vuedraggable.umd.min.js"}, ]; window.top.initJsCss(document, jscss_urls, callback); }; function initVue() { new FormVue({ el: "#vbody", data: { dataname: "fee_model_plan", table_dataname: "fee_model_plan_field", title: "方案定义", dataRequest: [ {//å议类型 name: "agm_record_type", dataname: "agm_record_type", //url: "root/front/getOneDictionary", //paramsobj: { code: "OrgType", }, filter: "", orderby: "", isnotoption: false, //true:䏿˜¯é€‰é¡¹ code:"id",//是下拉选项时设置 label:"name",//是下拉选项时设置 }, {//æµå‘类型 name: "fee_model_band", dataname: "fee_model_band", //url: "root/front/getOneDictionary", //paramsobj: { code: "OrgType", }, filter: "", orderby: "", isnotoption: false, //true:䏿˜¯é€‰é¡¹ code:"id",//是下拉选项时设置 label:"name",//是下拉选项时设置 }, {//å—æ®µåº“ name: "property", dataname: "sys_data_property", //url: "root/front/getOneDictionary", //paramsobj: { code: "OrgType", }, filter: "dataobject_id='fee_memo'", orderby: "list_order_no", isnotoption: true, //true:䏿˜¯é€‰é¡¹ code:"field",//是下拉选项时设置 label:"label_chinese",//是下拉选项时设置 }, ], formAttr: { istitle: false, title: "基础信æ¯", columnnumber: 3, labelwidth: "140px", labelposition: "left",//"left",// right//top size: "mini", border: "3px solid #c6c6c600" }, default_formFields: [ {isshow: "T", field: "policyname", name: "方案åç§°", isminwidth: true}, {isshow: "T", field: "policycode", name: "方案编ç ", disabled: true, notvalunit: true}, {isshow: "T", field: "version", name: "版本å·", disabled: true, notvalunit: true}, // {isshow: "T", field: "state_name", name: "状æ€", disabled: true, notvalunit: true}, {isshow: "T", field: "effdate", name: "生效日期", type: "date", formatter: "date", required: true, notvalunit: true}, {isshow: "T", field: "expdate", name: "失效日期", type: "date", formatter: "date", required: true, notvalunit: true}, {isshow: "T", field: "createname", name: "创建人", disabled: true, notvalunit: true}, {isshow: "F", field: "record_type_name", name: "å‡†åˆ™æ¥æºåç§°", disabled: true, notvalunit: true}, {isshow: "T", field: "record_type", name: "å‡†åˆ™æ¥æº", type: "select", options: [ {value: "åè®®-回款履约", code: "hkly"}, {value: "åè®®-底价", code: "dj"}, {value: "åè®®-佣金", code: "yj"}, {value: "åè®®-年度达æˆ", code: "nddc"}, {value: "åè®®-二次议价", code: "ecyj"}, {value: "åè®®-çœæ ‡", code: "sb"}, ], required: true, notvalunit: true}, {isshow: "F", field: "flow_type_name", name: "æµå‘æ¥æºåç§°", disabled: true, notvalunit: true}, {isshow: "T", field: "flow_type", name: "æµå‘æ¥æº", type: "select", options: [ {value: "æµå‘-回款", code: "hk"}, {value: "æµå‘-库å˜", code: "kc"}, {value: "æµå‘-终端纯销", code: "zdcx"}, ], required: true, notvalunit: true}, {isshow: "T", field: "createtime", name: "创建时间", disabled: true, notvalunit: true}, // {isshow: "T", field: "biz_date", name: "è®¢å•æ—¥æœŸ", type: "date", formatter: "date", notvalunit: true}, // {isshow: "T", field: "customer_name", name: "客户åç§°", type: "popup", required: true, notvalunit: true}, // {isshow: "T", field: "customer_consignee_address", name: "收货地å€", required: true, type: "select",isfilterable:true, isrefresh:true, options: [], props:{value: "id", label: "address", checkStrictly: true}, notvalunit: true}, // {isshow: "T", field: "customer_consignee_user_name", name: "è”系人", required: true, notvalunit: true}, // {isshow: "T", field: "customer_consignee_phone", name: "è”系电è¯", required: true, notvalunit: true}, // {isshow: "T", field: "operate_emp_name", name: "业务员åç§°", disabled: true, notvalunit: true}, // {isshow: "T", field: "business_depart_name", name: "业务部门", type: "popup", required: true, notvalunit: true}, // {isshow: "T", field: "province_name", name: "区域", width: "120", type: "popup", required: true, notvalunit: true}, // {isshow: "T", field: "settle_type", name: "结算方å¼", type: "select", options: [{label: "现金",value: "cash"}, {label: "信用付款",value: "credit"}], required: true, notvalunit: true}, // {isshow: "T", field: "emp_depart_name", name: "销售部门", disabled: true, defaultval: "", notvalunit: true}, // {isshow: "T", field: "contract_no", name: "åˆåŒå·", notvalunit: true}, // {isshow: "T", field: "amt_credit", name: "授信é¢åº¦", disabled: true, formatter: "money", notvalunit: true}, // {isshow: "F", field: "iscreditsuccess", name: "资信检查结果", formatter: "TF3", notvalunit: true}, // {isshow: "T", field: "amt", name: "è®¢å•æ€»é‡‘é¢", disabled: true, formatter: "money", align: "right", notvalunit: true}, // {isshow: "T", field: "amt_receipts", name: "折扣åŽé‡‘é¢", disabled: true, formatter: "money", align: "right", notvalunit: true}, // {isshow: "T", field: "amt_discount", name: "折扣总金é¢", disabled: true, formatter: "money", align: "right", notvalunit: true}, ], formFields: [], newformData: { //id: uuid_short(), // code: createCode("BA"), create_time: createDatetime(), state_code: "Draft", state_name: "录入", creator_name: window.top.vue.userinfo.name, type_code: "", type_name: "", }, formData: { record_type: "", flow_type: "" }, isRefresh: true, default_tableFields: [ ], tableFields: [], newTableData: { create_time: createDatetime(), creator_name: window.top.vue.userinfo.name, }, tableData: [], //按键æƒé™è®¾ç½® isedit: false,//æäº¤å‰ç¼–辑,ä¿å˜/æäº¤ isrefuseedit: false,//æ‹’ç»åŽç¼–辑,ä¿å˜/冿¬¡æäº¤ isapproval: false,//å®¡æ‰¹ï¼ŒåŒæ„/æ‹’ç»/转办/退回 iscommit: false,//æäº¤æ ‡è®° //å¼¹çª—å‚æ•° popupParames: {}, //å—æ®µè®¾ç½® tablefieldClick: {}, formfieldClick: {}, tableHeight: 0, record_map: { hkly: [ //回款履约 //æ¡æ¬¾ID æ¡æ¬¾ç¼–ç 客户ID 客户编ç 客户åç§° ä»˜æ¬¾æ¡æ¬¾ç¼–ç ä»˜æ¬¾æ¡æ¬¾åç§° 备注说明 {isshow: "T", field: "field1", name: "æ¡æ¬¾ID", width: "180"}, {isshow: "T", field: "field1", name: "æ¡æ¬¾ç¼–ç ", width: "180"}, {isshow: "T", field: "field1", name: "客户ID", width: "180"}, {isshow: "T", field: "field1", name: "客户编ç ", width: "100"}, {isshow: "T", field: "field1", name: "客户åç§°", width: "200", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "ä»˜æ¬¾æ¡æ¬¾ç¼–ç ", width: "180"}, {isshow: "T", field: "field1", name: "ä»˜æ¬¾æ¡æ¬¾åç§°", width: "180", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "备注说明", width: "220", align: "left", isminwidth: true}, ], dj: [ // 底价 // ID å议编ç å议类型 ç»é”€å•†ç¼–ç ç»é”€å•†åç§° 医院åç§° 医院åç§° 产å“ç¼–ç 产å“åç§° è§„æ ¼ // 返利å•ä»· è¾¾æˆå¥– å¹´æŒ‡æ ‡ å£åº¦1 å£åº¦2 å£åº¦3 å£åº¦4 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 {isshow: "T", field: "field1", name: "å议编ç ", width: "180"}, {isshow: "T", field: "field1", name: "å议类型", width: "180"}, {isshow: "T", field: "field1", name: "ç»é”€å•†ç¼–ç ", width: "100"}, {isshow: "T", field: "field1", name: "ç»é”€å•†åç§°", width: "200", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "医院编ç ", width: "180"}, {isshow: "T", field: "field1", name: "医院åç§°", width: "180", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "产å“ç¼–ç ", width: "220", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "产å“åç§°", width: "220", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "è§„æ ¼", width: "220", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "返利å•ä»·", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "è¾¾æˆå¥–", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å¹´æŒ‡æ ‡", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦1", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦2", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦3", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦4", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "1月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "2月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "3月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "4月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "5月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "6月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "7月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "8月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "9月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "10月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "11月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "12月", width: "100", align: "right"}, ], yj: [ // 佣金 // ID å议编ç å议类型 ç»é”€å•†ç¼–ç ç»é”€å•†åç§° 医院åç§° 医院åç§° 产å“ç¼–ç 产å“åç§° è§„æ ¼ // 终端售价 佣金 è¾¾æˆå¥– å¹´æŒ‡æ ‡ å£åº¦1 å£åº¦2 å£åº¦3 å£åº¦4 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 {isshow: "T", field: "field1", name: "å议编ç ", width: "180"}, {isshow: "T", field: "field1", name: "å议类型", width: "180"}, {isshow: "T", field: "field1", name: "ç»é”€å•†ç¼–ç ", width: "100"}, {isshow: "T", field: "field1", name: "ç»é”€å•†åç§°", width: "200", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "医院编ç ", width: "180"}, {isshow: "T", field: "field1", name: "医院åç§°", width: "180", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "产å“ç¼–ç ", width: "220", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "产å“åç§°", width: "220", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "è§„æ ¼", width: "220", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "终端售价", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "佣金", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å¹´æŒ‡æ ‡", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦1", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦2", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦3", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦4", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "1月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "2月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "3月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "4月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "5月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "6月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "7月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "8月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "9月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "10月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "11月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "12月", width: "100", align: "right"}, ], nddc: [ //å¹´åº¦è¾¾æˆ // ID å议编ç å议类型 ç»é”€å•†ç¼–ç ç»é”€å•†åç§° 医院åç§° 医院åç§° 产å“ç¼–ç 产å“åç§° è§„æ ¼ // è¾¾æˆå¥– å¹´æŒ‡æ ‡ å£åº¦1 å£åº¦2 å£åº¦3 å£åº¦4 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 {isshow: "T", field: "field1", name: "å议编ç ", width: "180"}, {isshow: "T", field: "field1", name: "å议类型", width: "180"}, {isshow: "T", field: "field1", name: "ç»é”€å•†ç¼–ç ", width: "100"}, {isshow: "T", field: "field1", name: "ç»é”€å•†åç§°", width: "200", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "医院编ç ", width: "180"}, {isshow: "T", field: "field1", name: "医院åç§°", width: "180", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "产å“ç¼–ç ", width: "220", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "产å“åç§°", width: "220", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "è§„æ ¼", width: "220", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "è¾¾æˆå¥–", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å¹´æŒ‡æ ‡", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦1", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦2", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦3", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "å£åº¦4", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "1月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "2月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "3月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "4月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "5月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "6月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "7月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "8月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "9月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "10月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "11月", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "12月", width: "100", align: "right"}, ], ecyj: [ // 二次议价 //id ç”³è¯·å· åŒ»é™¢id 医院编ç 医院åç§° 医院çœä»½ 医院城市 产å“-id 产å“-ç¼–ç 产å“-åç§° è§„æ ¼ // 䏿 ‡ä»· 扣率 折扣å•ä»· 实际销售价 生效时间 失效时间 备注 创建人-id 创建人-å§“å 创建时间 æ›´æ–°æ—¶é—´ {isshow: "T", field: "field1", name: "ID", width: "180"}, {isshow: "T", field: "field1", name: "申请å·", width: "180"}, {isshow: "T", field: "field1", name: "医院编ç ", width: "180"}, {isshow: "T", field: "field1", name: "医院åç§°", width: "100", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "医院çœä»½", width: "100"}, {isshow: "T", field: "field1", name: "医院城市", width: "100"}, {isshow: "T", field: "field1", name: "产å“ç¼–ç ", width: "100"}, {isshow: "T", field: "field1", name: "产å“åç§°", width: "100", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "è§„æ ¼", width: "100"}, {isshow: "T", field: "field1", name: "䏿 ‡ä»·", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "扣率", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "折扣å•ä»·", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "实际销售价", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "生效时间", width: "100"}, {isshow: "T", field: "field1", name: "失效时间", width: "100"}, {isshow: "T", field: "field1", name: "备注", width: "200", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "创建人", width: "100"}, {isshow: "T", field: "field1", name: "创建时间", width: "100"}, {isshow: "T", field: "field1", name: "æ›´æ–°æ—¶é—´", width: "100"}, ], sb: [ //çœæ ‡ // id ç”³è¯·å· ç»é”€å•†ç¼–ç ç»é”€å•†åç§° çœä»½ 城市 产å“ID 产å“ç¼–ç 产å“åç§° 产å“è§„æ ¼ // 原å议价 扣率 æŠ˜æ‰£é‡‘é¢ ç”Ÿæ•ˆæ—¶é—´ 失效时间 备注 创建人-id 创建人-å§“å 创建时间 æ›´æ–°æ—¶é—´ {isshow: "T", field: "field1", name: "ID", width: "180"}, {isshow: "T", field: "field1", name: "申请å·", width: "180"}, {isshow: "T", field: "field1", name: "ç»é”€å•†ç¼–ç ", width: "180"}, {isshow: "T", field: "field1", name: "ç»é”€å•†åç§°", width: "100", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "çœä»½", width: "100"}, {isshow: "T", field: "field1", name: "城市", width: "100"}, {isshow: "T", field: "field1", name: "产å“ç¼–ç ", width: "100"}, {isshow: "T", field: "field1", name: "产å“åç§°", width: "100", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "è§„æ ¼", width: "100"}, {isshow: "T", field: "field1", name: "原å议价", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "扣率", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "折扣金é¢", width: "100", align: "right"}, {isshow: "T", field: "field1", name: "生效时间", width: "100"}, {isshow: "T", field: "field1", name: "失效时间", width: "100"}, {isshow: "T", field: "field1", name: "备注", width: "200", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "创建人", width: "100"}, {isshow: "T", field: "field1", name: "创建时间", width: "100"}, {isshow: "T", field: "field1", name: "æ›´æ–°æ—¶é—´", width: "100"}, ] }, flow_map: { hk: [ //回款 //ID idx 年份 月份 客户编ç 客户åç§° 订å•å· æ”¶æ¬¾å•å· å‘è´§å•å· å‘货日期 收款日期 订å•é‡‘é¢ æ”¶æ¬¾é‡‘é¢ {isshow: "T", field: "field1", name: "年份", width: "180"}, {isshow: "T", field: "field1", name: "月份", width: "180"}, {isshow: "T", field: "field1", name: "客户编ç ", width: "100"}, {isshow: "T", field: "field1", name: "客户åç§°", width: "200", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "订å•å·", width: "180"}, {isshow: "T", field: "field1", name: "收款å•å·"}, {isshow: "T", field: "field1", name: "å‘è´§å•å·"}, {isshow: "T", field: "field1", name: "å‘货日期", width: "220"}, {isshow: "T", field: "field1", name: "收款日期", width: "220"}, {isshow: "T", field: "field1", name: "订å•金é¢", width: "220"}, {isshow: "T", field: "field1", name: "收款金é¢", width: "220", align: "left"}, ], kc: [ //åº“å˜ //åº“å˜æ—¥æœŸ ç»é”€å•†ç¼–ç ç»é”€å•†åç§° 产å“ç¼–ç 产å“åç§° è§„æ ¼ æ•°é‡ {isshow: "T", field: "field1", name: "åº“å˜æ—¥æœŸ", width: "180"}, {isshow: "T", field: "field1", name: "ç»é”€å•†ç¼–ç ", width: "100"}, {isshow: "T", field: "field1", name: "ç»é”€å•†åç§°", width: "200", align: "left", isminwidth: true}, {isshow: "T", field: "field1", name: "产å“ç¼–ç ", width: "100"}, {isshow: "T", field: "field1", name: "产å“åç§°", width: "180"}, {isshow: "T", field: "field1", name: "è§„æ ¼", width: "100"}, {isshow: "T", field: "field1", name: "æ•°é‡", width: "220"}, ], zdcx: [ //终端纯销 //ID 年份 月份 æµå‘日期 上游çœä»½ 上游城市 上游ID 上游编ç 上游åç§° 下游çœä»½ 下游城市 下游ID 下游编ç 下游åç§° // 产å“ID 产å“ç¼–ç 产å“åç§° æ•°é‡ {isshow: "T", field: "field1", name: "年份", width: "180"}, {isshow: "T", field: "field1", name: "月份", width: "100"}, {isshow: "T", field: "field1", name: "æµå‘日期", width: "100"}, {isshow: "T", field: "field1", name: "上游çœä»½", width: "100"}, {isshow: "T", field: "field1", name: "上游城市", width: "100"}, {isshow: "T", field: "field1", name: "上游编ç ", width: "100"}, {isshow: "T", field: "field1", name: "上游åç§°", width: "100"}, {isshow: "T", field: "field1", name: "下游çœä»½", width: "100"}, {isshow: "T", field: "field1", name: "下游城市", width: "100"}, {isshow: "T", field: "field1", name: "下游编ç ", width: "100"}, {isshow: "T", field: "field1", name: "下游åç§°", width: "100"}, {isshow: "T", field: "field1", name: "产å“ç¼–ç ", width: "100"}, {isshow: "T", field: "field1", name: "产å“åç§°", width: "100"}, {isshow: "T", field: "field1", name: "è§„æ ¼", width: "100"}, {isshow: "T", field: "field1", name: "æ•°é‡", width: "100"}, ], }, recordArray_agm: [], recordArray: [ {isshow: "T", field: "field1", name: 'å—æ®µ1', type: "input"}, {isshow: "T", field: "field2", name: 'å—æ®µ2', type: "select"}, {isshow: "T", field: "field3", name: 'å—æ®µ3', type: "date"}, {isshow: "T", field: "field4", name: 'å—æ®µ4', type: "textarea"}, ], flowArray: [ {isshow: "T", field: "fieldA", name: 'å—æ®µa', type: "input"}, {isshow: "T", field: "fieldB", name: 'å—æ®µb', type: "select"}, {isshow: "T", field: "fieldC", name: 'å—æ®µc', type: "date"}, {isshow: "T", field: "fieldD", name: 'å—æ®µd', type: "textarea"}, ], guidelineArray: [ // {id: "1001", record: [], flow: [], field: "field1", name: 'æ–°å—æ®µ', record_field: "field1", field_name: 'å—æ®µ1', flow_field: "fieldA", flow_name: 'å—æ®µa'}, // {id: "add_field", name: 'æ–°å¢žå—æ®µ'}, ], grpup_record: { name:'guideline', pull:"clone", put:false }, grpup_flow: { name:'guideline', pull:"clone", put:false }, activeName: "", recordTabName: "", }, created() { let clientHeight = document.documentElement.clientHeight; this.tableHeight = clientHeight - 94; this.popupParames = clone(Root.popupParames); this.title = this.popupParames.title || this.popupParames.text if (this.popupParames.data) { this.formData = clone(this.popupParames.data); } if (this.popupParames.sceneCode) { if (this.popupParames.sceneCode == "add") {//新增 if (this.newformData) { let formData_ = clone(this.formData); for (var k in this.newformData) { formData_[k] = this.newformData[k]; } this.formData = formData_; } if (this.newTableData) { this.tableData.push(clone(this.newTableData)); } this.isedit = true; } else if (this.popupParames.sceneCode == "browse") {//åªè¯» this.formAttr.disabled = true; } else if (this.popupParames.sceneCode == "edit") {//编辑 this.isedit = true; } else if (this.popupParames.sceneCode == "approval") {//审批 this.formAttr.disabled = true; this.isapproval = true; } else if (this.popupParames.sceneCode == "refuseedit") {//æ‹’ç»åŽçš„编辑 this.isrefuseedit = true; } } }, mounted() { var me = this; //é¢„åŠ è½½æ•°æ® if (this.dataRequest && this.dataRequest.length) { var result = {}; this.loadRequestData(this.dataRequest, result, function(data) { me.dataRequestObj = data; //é¢„åŠ è½½æ•°æ®åŽç»™å“ªäº›å—段设置options或formatterjson console.log("é¢„åŠ è½½", data); if (me.dataRequestObj.property) { me.dataRequestObj.property.map(r=>{ r.name = r.label_chinese }) } me.initData(); }); } else { this.initData(); } // 以æœåŠ¡çš„æ–¹å¼è°ƒç”¨çš„ Loading 需è¦å¼‚æ¥å…³é— this.$nextTick(() => { hideLoading(); //釿–°è®¾ç½®å¼¹çª—宽高 // this.$nextTick(function(){ // //let w_ = this.$refs.popup_body.offsetWidth "px"; // let w_ = "900px"; // let h_ = this.$refs.popup_body.offsetHeight + "px"; // Root.setPopupWH(w_, h_); // }) }); }, methods:{ //å…³é—弹窗 closeDialog() { var me = this; if (me.popupParames.totab){ Root.tab.removeItem(Root.tab.selected); Root.tab.open(me.popupParames.parentOption, false); } else { Root.hidePopup(); } }, //å…³é—å‰è°ƒå›žè°ƒ saveAfter() { var me = this; if(this.popupParames.callback) { let obj = { //row: this.formData } this.popupParames.callback(obj, function() { me.closeDialog(); }); } else { me.closeDialog(); } }, initData() { let me = this var id_ = null; if (this.formData.id) { id_ = this.formData.id; } this.getRowDataById(id_, function(result) {//查询åŽçš„回调,用于获å–å—æ®µçš„ if (result.meta && result.meta[me.dataname] && result.meta[me.dataname].fields) { var metas = clone(result.meta[me.dataname].fields); var table_dataname_ = ""; for (var dataname_ in result.meta) { if (dataname_ != me.dataname && !table_dataname_) { table_dataname_ = dataname_; } } var table_metas = []; if (table_dataname_) { me.table_dataname = table_dataname_; table_metas = clone(result.meta[table_dataname_].fields); } var formFields_ = []; var tableFields_ = []; metas.map(f=>{ f.isshow = "T"; if (f.field == "source_agreement_id") { f.options = me.dataRequestObj.agm_record_type; } if (f.field == "source_flow_id") { f.options = me.dataRequestObj.fee_model_band; } formFields_.push(clone(f)); }) table_metas.map(f=>{ f.isshow = "T"; tableFields_.push(clone(f)); }) if (!me.formFields || (me.formFields && me.formFields.length == 0)) { me.formFields = clone(formFields_); // me.formFields = clone(me.default_formFields); me.tableFields = clone(tableFields_); //å—æ®µæ•°ç»„è½¬å—æ®µobj me.fieldsToFieldsObj(); //è®¾ç½®å—æ®µäº‹ä»¶ me.tableFieldClick(); } } me.activeName = "tab_zdpz"; if (me.rowData[me.dataname]) { me.formData = me.rowData[me.dataname]; if (me.formData.source_agreement_id) { me.recordTabName = "record"; var filter_ = "dataobject_id = (SELECT dataname from agm_record_type where id='"+me.formData.source_agreement_id+"')"; me.getFieldByDataname(filter_, function(array) { me.recordArray_agm = clone(array); me.recordArray = array }) } else { me.recordTabName = "allfields"; } if (me.formData.source_flow_id) { var filter_ = "dataobject_id = (SELECT table_name from fee_model_band where id='"+me.formData.source_flow_id+"')"; me.getFieldByDataname(filter_, function(array) { me.flowArray = array }) } } if (me.rowData[me.table_dataname]) { // me.tableData = me.rowData[me.table_dataname]; var guidelineArray_ = clone(me.rowData[me.table_dataname]); guidelineArray_.map(r=>{ r.field = r.field_name; r.name = r.field_label; r.record = []; r.flow = []; if (r.agm_field_name) { var fr_ = { field: r.agm_field_name, name: r.agm_field_label } r.record = [fr_]; } if (r.flow_field_name) { var ff_ = { field: r.flow_field_name, name: r.flow_field_label } r.flow = [ff_]; } }) me.guidelineArray = guidelineArray_ } }) }, getFieldByDataname(filter, callback) { var me = this; var param_ = { dataname: "sys_data_property", filter: filter, orderby: "list_order_no" } Server.call("root/data/getEntitySet", param_, function(result) { var fields = []; if (result && result.data && result.data.entityset) { // var aaa = clone(result.data.entityset); // var aa_ = [] // aaa.map(a=>{ // var a_ = { // "code": a.code, // "name": a.label_chinese, // "fieldname": a.code, // "expression": "[æŠ˜æ‰£æ¡æ¬¾-零售补å¿].["+a.label_chinese+"]", // } // aa_.push(a_) // }) // console.log("å—æ®µaa", aa_); var fields_ = clone(result.data.entityset); fields_.map(r=>{ r.name = r.label_chinese }) fields = fields_; } if (callback) { callback(fields); } }) }, tableFieldClick() { var me = this; //表å•å—æ®µäº‹ä»¶è®¾ç½® this.formfieldClick = { source_agreement_id: { select: { onchange: function(obj) {//下拉更改事件 var filter_ = "dataobject_id = (SELECT dataname from agm_record_type where id='"+ obj.selectoption.code +"')"; me.getFieldByDataname(filter_, function(array) { me.recordArray_agm = clone(array); me.recordArray = array }) obj.data.source_agreement_name = obj.selectoption.value; } } }, source_flow_id: { select: { onchange: function(obj) {//下拉更改事件 var filter_ = "dataobject_id = (SELECT table_name from fee_model_band where id='"+ obj.selectoption.code +"')"; me.getFieldByDataname(filter_, function(array) { me.flowArray = array }) obj.data.source_flow_name = obj.selectoption.value; } } } }; //è¡¨æ ¼å—æ®µäº‹ä»¶è®¾ç½® this.tablefieldClick = { }; }, recordEnd(e) { }, flowEnd(e) { }, end1(e){ // console.log(e) // var that=this; // var items=this.formFields.filter(function(m){ // return m.id==that.moveId // }) // //如果左边 // if(items.length<2) return; // this.formFields.splice(e.newDraggableIndex, 1) }, onMove(e,originalEvent){ // this.moveId = e.relatedContext.element.id; // //ä¸å…许åœé // if (e.relatedContext.element.id == 1) return false; // //ä¸å…许拖拽 // if (e.draggedContext.element.id == 4) return false; // if (e.draggedContext.element.id == 11) return false; // return true; }, onMoveGuideline(e,originalEvent) { // //ä¸å…许拖拽 // if (e.draggedContext.element.id == "add_field") return false; // return true; }, recordClone(origin) { var aa = ""; // console.log(origin,'origin') // clone 从一个数组拖拽到å¦å¤–一个数组时触å‘的事件和addä¸åŒï¼Œclone是å¤åˆ¶äº†æ•°ç»„å…ƒç´ // 所以我们å¯ä»¥é‡æ–°new æ‹·è´ä¸€ä¸ªæ–°å¯¹è±¡ let data1 = JSON.parse(JSON.stringify(origin)) let data = JSON.parse(JSON.stringify(origin)) data.id = uuid(); data.record = [data1]; data.flow = []; // console.log(data,'data') return data }, flowClone(origin) { var aa = ""; // console.log(origin,'origin') // clone 从一个数组拖拽到å¦å¤–一个数组时触å‘的事件和addä¸åŒï¼Œclone是å¤åˆ¶äº†æ•°ç»„å…ƒç´ // 所以我们å¯ä»¥é‡æ–°new æ‹·è´ä¸€ä¸ªæ–°å¯¹è±¡ let data1 = JSON.parse(JSON.stringify(origin)) let data = JSON.parse(JSON.stringify(origin)) data.id = uuid(); data.record = []; data.flow = [data1]; // console.log(data,'data') return data }, guidelineClone(e,originalEvent) { var aa = ""; console.log(e) }, onMove_record(e,originalEvent) { }, remove_g(array, row) { array.remove(row); }, //// addTableData() { var new_field = {id: uuid(),record: [], flow: [], field: createBaseCode("field"), name: 'æ–°å—æ®µ'}; this.guidelineArray.unshift(new_field); // var table_row = clone(this.newTableData); // this.rowChange(table_row, "add", this.table_dataname); }, delData(scope) { let me = this; let row = scope.row; let index_ = scope.$index; Root.confirm('ç¡®å®šåˆ é™¤æ•°æ®ã€' + JSON.stringify(row) + '】å—?', 'åˆ é™¤æç¤º', { confirmButtonText: 'åˆ é™¤', cancelButtonText: 'å–æ¶ˆ', type: 'warning' }).then(() => { me.rowChange(row, "del", me.table_dataname); }).catch(() => { Root.message({ type: 'info', message: '已喿¶ˆåˆ 除' }); }); }, rowChange(row, type, tablename) { var me = this; if (type == "add") { this.tableData.unshift(row); } else if (type == "del") { if (row.id) { let param = { dataname: tablename, id: row.id } Server.call("root/data/deleteEntity", param, function(result) { console.log(result); if (result && result.data) { me.tableData.remove(row); Root.message({ type: 'success', message: 'åˆ é™¤æˆåŠŸ!' }); } }); } else { this.tableData.remove(row); } } else { } }, recordTabChange(tab, event) { var me = this; if (me.recordTabName == "allfields") { me.recordArray = clone(me.dataRequestObj.property); } else if (me.recordTabName == "record") { me.recordArray = clone(me.recordArray_agm); } }, //æäº¤ submitRowTable() { this.iscommit = true; this.saveRowTable(); }, saveRowTable() { var aa = this.guidelineArray; console.log("傿•°", aa); }, //ä¿å˜ saveRowTable2() { var me = this; var operator_ = "save";//ä¿å˜ if(me.iscommit) { operator_ = "commit";//æäº¤ } var entity_ = clone(this.formData); var entity = {}; for (var r in entity_) { if (entity_[r]) { entity[r] = entity_[r]; } } var tableData_ = []; this.tableData.map(r=>{ var row_ = {}; for (var k in r) { if (r[k]) { row_[k] = r[k]; } } tableData_.push(row_); }) if (tableData_.length == 0) { Root.message({ type: 'warning', message: 'è¯·å…ˆæ·»åŠ æ˜Žç»†æ•°æ®' }); return } let param = { dataname: this.dataname, operator: operator_, data: {}, } param.data[this.dataname] = entity; param.data[this.table_dataname] = tableData_; Server.call("root/data/saveEntity", param, function(result) { console.log(result); if (result.success) { if(me.iscommit){ me.iscommit = false; Root.message({ type: 'success', message: 'æäº¤æˆåŠŸ' }); me.saveAfter(); } else { Root.message({ type: 'success', message: 'ä¿å˜æˆåŠŸ' }); me.saveAfter(); } } }); }, // å…¬å¼è®¾è®¡ formulaConfig() { //å…ˆä¿å˜æ”¿ç–çš„å®šä¹‰ï¼Œæ ¹æ®æ”¿ç–id和政ç–生æˆçš„å¤‡å¿˜å½•å—æ®µè®¾è®¡å…¬å¼ //ç›®å‰æ²¡æœ‰ä¿å˜å°±å…ˆå·²å‡çš„ä¿¡æ¯é…ç½®å…¬å¼ var me = this; var config = { totab: true, //true: 以Tabå¯¼èˆªçš„æ–¹å¼æ‰“å¼€ width: "900px", height: "900px", icon: "icon-product", text: "å…¬å¼å®šä¹‰", id: "settingFormula_edit" + me.formData.id,//totab: trueæ—¶éœ€è®¾ç½®ï¼Œç”¨äºŽåˆ¤æ–æ˜¯å¦å·²æ‰“å¼€æ¤é¡µé¢ // url: "module/performance/page/settingFormula_edit.html", url: "module/performance/page/designer/designer.html?id=" + me.formData.id, data: me.formData, delta: {policyArray :this.guidelineArray}, sceneCode: "browse", //"add"//"browse", callback: function(obj, callback) { me.onQuery(); if (callback) { callback(); } } }; me.doPopupByPublic(config); }, } }); }; loadJsCss(function () { initVue(); }); </script> <style> /* 在vue.jsä¸ v-cloak 这个指令是防æ¢é¡µé¢åŠ è½½æ—¶å‡ºçŽ° vuejs çš„å˜é‡å而设计的 */ [v-cloak] { display: none !important; } </style> <style scoped> .field_title { height: 40px; line-height: 40px; font-size: 14px; } .item { padding: 6px; background-color: #fdfdfd; border: solid 1px #eee; /* margin-bottom: 10px; */ cursor: move; } .item:hover { background-color: #f1f1f1; cursor: move; } .field_list { border: 1px solid #ccc; overflow: auto; } .field_list .item span{ padding-left: 10px; } .item_r { padding: 0px 10px; /* border: solid 1px #eee; */ /* margin-bottom: 10px; */ border-radius: 10px; cursor: move; position: relative; } .item_r_delete { color: red; position: absolute; right: 10px; top: 0px; } .item_r_delete:hover { /* background-color: #f1f1f1; */ /* font-size: 16px; */ cursor: pointer; } .el-icon-delete:hover { /* font-size: 16px; */ cursor: pointer; } .guideline_ghost { /* padding: 0px; */ /* height: 10px !important; */ overflow: hidden; background-color: #42adef !important; color: #42adef !important; } .guideline_ghost_r { padding: 0px; /* height: 16px !important; */ overflow: hidden; background-color: #dca12c !important; color: #dca12c !important; } .guideline_ghost_f { padding: 0px; /* height: 16px !important; */ overflow: hidden; background-color: #b5d6fa !important; color: #b5d6fa !important; } .el-divider--horizontal { margin: 14px 0px !important; } .text_null_r span:empty:before{ content: "坿‹–å…¥åè®®å—æ®µ"; color: #bccdd9; padding-left: 10px; } .text_null_f span:empty:before{ content: "坿‹–å…¥æµå‘å—æ®µ"; color: #bccdd9; padding-left: 10px; } </style> </head> <body style="margin: 0px;"> <div v-cloak id="vbody"> <div id="page_root"> <div ref="popup_body" style="padding: 0 20px;"> <div class="el-dialog__header"> <div class="dialog-title"> <span> {{title}}</span> </div> </div> <div :style="{height: tableHeight + 'px', 'overflow-y': 'auto'}"> <div class="el-dialog__body"> <h-form ref="form1" :form-attr="formAttr" :table-fields="formFields" :form-data="formData" :table-field-click="formfieldClick" > </h-form> <div class="h_dialog__body"> <div v-if="isedit || isrefuseedit" style=" text-align: right;"> <!-- 工具æ --> <!-- <div style=" display: inline-block; width: 90px;"> <el-button-group> <el-button @click="addTableData">新增明细</el-button> </el-button-group> </div> --> </div> <el-tabs v-model="activeName"> <el-tab-pane label="å¤‡å¿˜å½•å—æ®µé…ç½®" name="tab_zdpz"></el-tab-pane> </el-tabs> <div v-show="activeName" :style="{height: (tableHeight - 180) + 'px', width: '100%'}"> <div :style="{height: (tableHeight - 180) + 'px', width: '20%', float: 'left'}"> <div class="field_title"> <!-- {{formData.record_type_name ? formData.record_type_name : "åè®®å—æ®µ"}} --> <el-tabs v-model="recordTabName" @tab-click="recordTabChange"> <el-tab-pane :label="formData.source_agreement_name ? formData.source_agreement_name : 'åè®®å—æ®µ'" name="record"></el-tab-pane> <el-tab-pane label="å—æ®µåº“" name="allfields"></el-tab-pane> </el-tabs> </div> <div class="field_list" :style="{height: (tableHeight - 180 - 40) + 'px'}" > <draggable v-model="recordArray" @end="recordEnd" :clone="recordClone" :move="onMove" :options="{group:{name: 'guideline',pull:'clone',put: false},sort: false}" animation="300"> <transition-group> <div class="item" v-for="(item, index1) in recordArray" :key="'r'+index1"> <i :class="item.icon ? item_g.icon : 'el-icon-copy-document'"></i> <span>{{item.name}}</span> </div> </transition-group> </draggable> </div> </div> <div :style="{height: (tableHeight - 180) + 'px', width: '20%', float: 'right'}"> <div class="field_title">{{formData.source_flow_name ? formData.source_flow_name : "æµå‘å—æ®µ"}}</div> <div class="field_list" :style="{height: (tableHeight - 180 - 40) + 'px'}" > <draggable v-model="flowArray" @end="flowEnd" :clone="flowClone" :move="onMove" :options="{group:{name: 'guideline',pull:'clone',put: false},sort: true}" animation="300"> <transition-group> <div class="item" v-for="(item, index1) in flowArray" :key="'f'+index1"> <i :class="item.icon ? item_g.icon : 'el-icon-copy-document'"></i> <span>{{item.name}}</span> </div> </transition-group> </draggable> </div> </div> <div :style="{height: (tableHeight - 180) + 'px', width: '56%', margin: '0 auto'}"> <div class="field_title"> <el-row style="height: 28px;"> <el-col :span="10"><div style="text-align: left;">å¤‡å¿˜å½•å—æ®µ</div></el-col> <el-col :span="7"><div style="text-align: center;">åè®®æ˜ å°„å—æ®µ</div></el-col> <el-col :span="7"><div style="text-align: center;">æµå‘æ˜ å°„å—æ®µ</div></el-col> </el-row> </div> <!-- <div style="width: 100%; height: 30px; line-height: 30px;"> <el-button icon="el-icon-plus" @click="addTableData" style="width: 100%;" size="medium">æ–°å¢žè‡ªå®šä¹‰å—æ®µ</el-button> </div> --> <div :style="{height: (tableHeight - 180 - 40) + 'px', border: '1px dashed #ccc', overflow: 'auto'}" > <draggable v-model="guidelineArray" ghost-class="guideline_ghost" group="guideline" @end="end1" @add="guidelineClone" :move="onMoveGuideline" :options="{group:{name: 'itxst'},sort: true}" animation="300"> <transition-group :style="{height: (tableHeight - 180 - 40) + 'px', 'background-color': '#eee', display: 'block'}"> <div class="item" v-for="(item, index1) in guidelineArray" :key="'g'+index1"> <el-row style="height: 28px;line-height: 28px;"> <el-col :span="10"> <div class="" style="text-align: left;"> <i class="el-icon-copy-document"></i> <span>{{index1 + 1}}.</span> <el-input size="mini" placeholder="è¯·è¾“å…¥å—æ®µåç§°" style="width: 80%;" v-model="item.name"></el-input> <!-- <el-input size="mini" placeholder="è¯·è¾“å…¥å—æ®µ" style="width: 40%;" v-model="item.field"></el-input> --> <i class="el-icon-delete" style="color: red;" @click="remove_g(guidelineArray, item)"></i> </div> </el-col> <el-col :span="1"><el-divider></el-divider></el-col> <el-col :span="6"> <div class="text_null_r"> <draggable v-model="item.record" ghost-class="guideline_ghost_r" group="guideline" animation="300" :move="onMove_record"> <transition-group style="display: block; height: 28px; border: 1px dotted #ccc;"> <div class="item_r" style="background-color: #faea89;" v-for="(item_g, index1) in item.record" :key="'gr'+index1"> <span>{{item_g.name}} </span> <div class="item_r_delete" style="" @click="remove_g(item.record, item_g)"> <i class="el-icon-delete" ></i> </div> </div> </transition-group> </draggable> </div> </el-col> <el-col :span="1"><el-divider></el-divider></el-col> <el-col :span="6"> <div class="text_null_f"> <draggable v-model="item.flow" ghost-class="guideline_ghost_f" group="guideline" animation="300" :move="onMove_record"> <transition-group style="display: block; height: 28px; border: 1px dotted #ccc;"> <div class="item_r" style="background-color: #b8e2fa;" v-for="(item_g, index1) in item.flow" :key="'gr'+index1"> <span>{{item_g.name}} </span> <div class="item_r_delete" style="" @click="remove_g(item.flow, item_g)"> <i class="el-icon-delete"></i> </div> </div> </transition-group> </draggable> </div> </el-col> </el-row> </div> </transition-group> </draggable> </div> </div> </div> </div> </div> </div> <div class="el-dialog__footer"> <el-button size="small" type="default" @click="closeDialog">å– æ¶ˆ</el-button> <el-button size="small" type="default" @click="formulaConfig">å…¬å¼è®¾ç½®</el-button> <el-button size="small" v-if="isedit || isrefuseedit" type="primary" @click="saveRowTable":icon="buttonsconfig.save.icon">{{buttonsconfig.save.name}}</el-button> <el-button size="small" v-if="isedit" type="success" @click="submitRowTable":icon="buttonsconfig.submit.icon">{{buttonsconfig.submit.name}}</el-button> <el-button size="small" v-if="isrefuseedit" type="success" @click="">冿¬¡æäº¤</el-button> <el-button size="small" v-if="isapproval" type="primary" @click="">通 过</el-button> <el-button size="small" v-if="isapproval" type="danger" @click="">æ‹’ ç»</el-button> <el-button size="small" v-if="isapproval" type="primary" @click="">转 办</el-button> <el-button size="small" v-if="isapproval" type="success" @click="">退 回</el-button> </div> </div> </div> </div> <div id="page_loading" style="position: absolute; top:0px; width: 100vw; height: 50vh;"> <div class="spinner"> <div class="cube1"></div> <div class="cube2"></div> </div> </div> </body> </html>