Dynamics CRM 365 JS 将窗体里面的选项集内容作为参数,传到另外一个HTML界面(数组序列化+编码)
JS代码:
var reasonOptions = []; var scw_back_reason = Xrm.Page.getAttribute("scw_back_reason").getOptions(); if (scw_back_reason && scw_back_reason.length > 0) { for (var i = 0; i < scw_back_reason.length; i++) { if (scw_back_reason[i].value == -1) { continue; } reasonOptions.push({ value: scw_back_reason[i].value, label: scw_back_reason[i].text }); } } var ops = escape(JSON.stringify(reasonOptions)); //数组序列化+编码 var DialogOptions = new Xrm.DialogOptions(); DialogOptions.width = 470; DialogOptions.height = 400; var uri = Mscrm.CrmUri.create("/WebResources/scw_Lead_ReturnReason_Html?ops=" + ops).toString(); Xrm.Internal.openDialog(uri, DialogOptions, null, null, CallbackFunction); function CallbackFunction(result) { if (!result.selectValue) { alert("请选择退回原因。"); return; } }
HTML代码:
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title>选择退回原因</title> <link type="text/css" rel="styleSheet" href="./scw_batchCreateTarget.css" /> <link type="text/css" rel="styleSheet" href="./scw_element.css" /> <script src="./scw_vue.js"></script> <script src="./scw_element.js"></script> <script src="./scw_axios.min.js"></script> <script src="./scw_api.js"></script> <script type="text/javascript" src="ClientGlobalContext.js.aspx"></script> <style type="text/css"> body{ margin:0px; } .ms-crm-RefreshDialog-Footer { position: absolute; bottom: 0px; width: 100%; height: 44px; text-align: center; border-top-color: #FFFFFF; } .ms-crm-RefreshDialog-Button { color: #444444; background-color: #FFFFFF; height: 24px; font-family: Segoe UI,Tahoma,Arial; border: 1px solid #C6C6C6; background-image: none; margin-top: 10px; width: auto; min-width: 80px; white-space: nowrap; font-size: 12px; line-height: 16px; width: 84px; text-align: center; cursor: pointer; background-repeat: repeat-x; padding-left: 5px; padding-right: 5px; } </style> </head> <body> <div id="form"> <div class="batchCreateTarget" style="margin:50px 10px 0 10px;"> <table style="width:100%;"> <tr> <td style="width:80px;">退回原因:</td> <td> <el-select v-model="selectValue" placeholder="请选择" style="width:100%"> <el-option v-for="item in dataList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </td> </tr> </table> </div> <div class="ms-crm-RefreshDialog-Footer" id="tdDialogFooter"> <button tabindex="1" class="ms-crm-RefreshDialog-Button" id="btnOK" style="margin-left: 8px;" @click="closeOk" type="button">确定</button> <button tabindex="1" class="ms-crm-RefreshDialog-Button" id="cmdDialogCancel" style="margin-right: 30px; margin-left: 8px;" @click="closeCancel" type="button">取消</button> </div> </div> <script> new Vue({ el: "#form", data: { selectValue: null, dataList: [], }, onShow() { }, created() { this.init(); }, mounted() { }, methods: { init() { //组装退回原因 const url = decodeURI(decodeURI(window.location.href)); var param = this.getQuery(url); if (param) { var ops = JSON.parse(unescape(param.ops)); //解码+反序列化 this.dataList = ops; } }, handleSelect(item) { this.username = item.value; this.userid = item.userid; console.log(item); }, //获取url获取参数 getQuery(url) { var str = url.split('?')[1]; var keys = str.split('&'); var obj = {}; keys.forEach((item, idx, data) => { var arr = item.split('='); obj[arr[0]] = arr[1]; }); return obj; }, closeOk() { var result = {}; result["selectValue"] = this.selectValue; Mscrm.Utilities.setReturnValue(result); closeWindow(true); }, closeCancel() { closeWindow(true); }, }, computed: {} }); </script> </body> </html>
记得收藏并关注,掌握更多相关知识!!!