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>

 

posted @ 2022-06-20 17:10  溜溜球_小钢wan  阅读(105)  评论(0编辑  收藏  举报