xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

iview render bug

https://codepen.io/xgqfrms/pen/gyGjKP

https://codepen.io/xgqfrms/full/gyGjKP

bug


<!DOCTYPE html>
<html lang="zh-Hans">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta name="author" content="xgqfrms">
    <meta name="generator" content="VS code">
    <title>vue & iview</title>
    <!-- libs -->
     <link rel="stylesheet" type="text/css" href="http://unpkg.com/iview/dist/styles/iview.css">
    <script type="text/javascript" src="http://vuejs.org/js/vue.min.js"></script>
    <script type="text/javascript" src="http://unpkg.com/iview/dist/iview.min.js"></script>
    <!-- css -->
    <style lang="css">
        .audit-common-lable{
             120px;
            display: inline-block;
            text-align: left;
            margin: 5px;
        }
        .audit-common-lable-long{
             60px;
            display: inline-block;
            text-align: right;
        }
        .audit-common-lable::after,
        .audit-common-lable-long::after{
            display: inline-block;
            content: ":";
             0;
            border: 1px;
            margin: 2px;
        }
    </style>
</head>
<body>
    <section>
        <div id="app">
            <template>
                <i-row>
                    <i-col span="24" push="1" style="margin: 5px;">
                        <span class="audit-common-lable-long">请求方式</span>
                        <i-switch
                            style=" 57px"
                            size="large"
                            @on-change="onSwitchChange"
                            v-model="isGet">
                            <span slot="open">GET</span>
                            <span slot="close">POST</span>
                        </i-switch>
                    </i-col>
                </i-row>
            </template>
            <template>
                <i-row>
                    <i-col span="24" push="1" style="margin: 5px;">
                        <span class="audit-common-lable-long">URL</span>
                        <i-input
                            v-model="url"
                            placeholder="请输入 URL!"
                            style=" 300px"
                            prefix="md-link"
                        />
                    </i-col>
                </i-row>
            </template>
            <template>
                <i-row>
                    <i-col span="24" push="1" style="margin: 5px;">
                        <span class="audit-common-lable-long">授权方式</span>
                        <i-select
                            aria-placeholder="授权方式"
                            placeholder="请选择授权方式"
                            style=" 200px"
                            v-model="authorization"
                            @on-change="onChangeSelect(`authorization`)"
                            :filterable="false"
                            :clearable="false">
                            <i-option
                                v-for="(item, i) in authorizations"
                                :value="item.value"
                                :key="i">
                                {{item.title}}
                            </i-option>
                        </i-select>
                    </i-col>
                </i-row>
            </template>
            <template>
                <i-row v-if="authorization==='auth'">
                    <i-col span="24" push="1" style="margin: 5px;">
                        <span class="audit-common-lable-long">Username</span>
                        <i-input
                            v-model="url"
                            placeholder="请输入 Username!"
                            style=" 300px"
                            prefix="md-contact"
                        />
                    </i-col>
                    <i-col span="24" push="1" style="margin: 5px;">
                        <span class="audit-common-lable-long">Password</span>
                        <i-input
                            v-model="url"
                            placeholder="请输入 Password!"
                            style=" 300px"
                            prefix="md-lock"
                        />
                    </i-col>
                </i-row>
            </template>
            <template>
                <i-row v-if="authorization==='token'">
                    <i-col span="24" push="1" style="margin: 5px;">
                        <span class="audit-common-lable-long">Token</span>
                        <i-input
                            v-model="url"
                            placeholder="请输入 Token!"
                            style=" 300px"
                            prefix="md-lock"
                        />
                    </i-col>
                </i-row>
            </template>
            <template v-if="isGet">
                <i-row>
                    <i-col span="18" push="1" style="margin: 5px;">
                        <span class="audit-common-lable">GET 参数列表</span>
                        <i-button
                            @click="addGetParams"
                            size="small">
                            + 添加
                        </i-button>
                        <!-- :maxHeight="maxGetHeight" -->
                        <i-table
                            style="margin: 5px; max-height: 300px; overflow-y: auto;"
                            :columns="colsGET"
                            :data="dataGET">
                        </i-table>
                    </i-col>
                </i-row>
            </template>
            <template v-else>
                <i-row>
                    <i-col span="23" push="1" style="margin: 5px;">
                        <span class="audit-common-lable">POST 参数方式</span>
                        <i-switch
                            style=" 57px"
                            size="large"
                            @on-change="onSwitchRadioChange"
                            v-model="isJSON">
                            <span slot="open">form data</span>
                            <span slot="close">JSON</span>
                        </i-switch>
                    </i-col>
                    <i-col span="23" push="1" style="margin: 5px;" v-if="isJSON">
                        <span class="audit-common-lable">参数类型(form data)</span>
                        <i-table
                            style="margin: 5px;"
                            :columns="colsPOST"
                            :data="dataPOST">
                        </i-table>
                    </i-col>
                    <i-col span="6" push="1" style="margin: 5px;" v-else>
                        <span class="audit-common-lable">参数类型(JSON)</span>
                        <i-input
                            style="margin: 5px;  500px;"
                            placeholder="请输入 JSON String"
                            v-model="jsonString"
                            :rows="8"
                            type="textarea">
                        </i-input>
                    </i-col>
                </i-row>
            </template>
            <template>
                <i-row>
                    <i-col span="24" push="1" style="margin: 5px;"></i-col>
                    <i-col span="2" push="1" style="margin: 5px;">
                        <i-button
                            @click="showSave"
                            size="small"
                            type="warning">
                            保存
                        </i-button>
                    </i-col>
                    <i-col span="2" push="0" style="margin: 5px;">
                        <i-button
                            :disabled="!isSaved"
                            @click="showExecute "
                            size="small"
                            type="primary">
                            执行
                        </i-button>
                    </i-col>
                </i-row>
                <Modal
                    v-model="saveModal.visible"
                    title="确定保存">
                    <span></span>
                    <div slot="footer">
                        <i-button
                            type="error"
                            size="large"
                            :loading="saveModal.loading"
                            @click="cancelSave">
                            取消
                        </i-button>
                        <i-button
                            type="success"
                            size="large"
                            :loading="saveModal.loading"
                            @click="resureSave">
                            确定
                        </i-button>
                    </div>
                </Modal>
                <Modal
                    v-model="executeModal.visible"
                    @on-ok="resureExecute"
                    @on-cancel="cancelExecute"
                    title="确定执行">
                    <!-- 确定执行 -->
                </Modal>
            </template>
        </div>
    </section>
    <!-- js -->
    <script>
        new Vue({
            el: "#app",
            data: {
                saveModal: {
                    visible: false,
                    loading: false,
                },
                executeModal: {
                    visible: false,
                    loading: false,
                },
                isGet: true,
                colsGET: [
                    {
                        title: "key",
                        key: "keyword",
                    },
                    {
                        title: "value",
                        key: "value",
                    },
                    {
                        title: "desc",
                        key: "description",
                        render: (h, params) => {
                            let {
                                isEdit,
                                description: desc,
                            } = params.row;
                            if (isEdit) {
                                return h("div", [
                                    h("input", {
                                        attrs: {
                                            value: desc,
                                            placeholder: "请输入描述信息",
                                        }
                                    }, ""),
                                ]);
                            } else {
                                return h("div", [
                                    h("span", desc),
                                ]);
                            }
                        }
                    },
                    {
                        title: "操作",
                        key: "operate",
                        render: (h, params) => {
                            let that = this;
                            let isEdit = params.row.isEdit;
                            let edit = params.row.operate[0];
                            let save = params.row.operate[1];
                            if (isEdit) {
                                return h("div", [
                                    h("Icon", {
                                        props: {
                                            name: "person"
                                        }
                                    }),
                                    h("a", {
                                        on: {
                                            click: () => {
                                                console.log(`row =
`, JSON.stringify(params.row, null, 4),);
                                                that.clickSave(params.row.index);
                                            },
                                        },
                                    }, save),
                                ]);
                            } else {
                                return h("div", [
                                    h("a", {
                                        on: {
                                            click: () => {
                                                console.log(`编辑 row =
`, JSON.stringify(params.row, null, 4), params.row.index);
                                                that.clickEdit(params.row.index);
                                            },
                                            // click: that.clickEdit(params.row.index),
                                        },
                                    }, edit),
                                ]);
                            }
                        },
                    },
                ],
                dataGET: [
                    {
                        index: 0,
                        keyword: "a",
                        value: "1",
                        description: "a=1",
                        operate: ["edit", "save", "cancel"],
                        isEdit: true,
                        // isEdit: false,
                    },
                    {
                        index: 1,
                        keyword: "b",
                        value: "2",
                        description: "b=1",
                        operate: ["edit", "save", "cancel"],
                        isEdit: false,
                    },
                ],
                colsPOST: [],
                dataPOST: [],
                authorizations: [
                    {
                        title: "No Auth",
                        value: "no",
                    },
                    {
                        title: "Basic Auth",
                        value: "auth",
                    },
                    {
                        title: "Bearer Token",
                        value: "token",
                    },
                ],
                url: "",
                authorization: "no",
                isJSON: true,
                postType: "form",
                jsonString: "",
                isSaved: false,
                maxGetHeight: 300,
            },
            methods: {
                addGetParams() {
                    this.dataGET.push({
                        keyword: "a",
                        value: "1",
                        description: "a=1",
                        operate: ["edit", "save", "cancel"],
                    });
                },
                showSave() {
                    this.saveModal.visible = true;
                },
                showExecute() {
                    this.executeModal.visible = true;
                },
                resureSave() {
                    this.saveModal.visible = false;
                    this.isSaved = true;
                },
                cancelSave() {
                    this.saveModal.visible = false;
                    this.isSaved = false;
                },
                resureExecute() {
                    this.executeModal.visible = false;
                },
                cancelExecute() {
                    this.executeModal.visible = false;
                },
                onSwitchChange() {
                    // this.isGet = !this.isGet;
                    console.log(`value =`, this.isGet);
                },
                onSwitchRadioChange() {
                    let value = this.isJSON;
                    console.log(`isJSON value =`, value);
                    if (value) {
                        this.postType = "json";
                    } else {
                        this.postType = "form";
                    }
                    console.log(`postType = `, this.postType);
                },
                onChangeSelect (type = ``) {
                    let value = this[type];
                    // this.$Message.info(value);
                },
                onChangeRadio (type = ``) {
                    let value = this[type];
                    this.$Message.info(value);
                },
                onChangeRadioGroup (type = ``) {
                    let value = this[type];
                    this.$Message.info(value);
                },
                clickSave(index = ``) {
                    if (index !== ``) {
                        console.log(`table index =`, index);
                        this.dataGET[index].isEdit = true;
                    }
                },
                clickEdit(index = ``) {
                    if (index !== ``) {
                        console.log(`table index =`, index);
                        this.dataGET[index].isEdit = true;
                    }
                },
            },
            mounted() {
                //
            },
        })
      </script>
</body>
</html>




vue namespace bug

vue & TypeError: is not a function

https://stackoverflow.com/questions/49950029/vue-uncaught-typeerror-fn-bind-is-not-a-function

image

image

原文地址:https://www.cnblogs.com/xgqfrms/p/10711196.html