zhangyanpeng
2024-05-29 1f227a1cf627526701c652ba84bae3e430bba8d3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>上传附件</title>
        <script src="../../js/vue/vue.js"></script>
        <script src="../../js/vue/element-ui/lib/index.js"></script>
        <script src="../../js/vue/page.js"></script>
        <script src="../../js/myelement.js"></script>
        
        <link href="../../js/vue/element-ui/lib/theme-chalk/index.css" rel="stylesheet">
        <link href="../../css/myelement.css" rel="stylesheet">
        <link href="../../css/iconfont.css" rel="stylesheet">
        <link href="../../css/page.css" rel="stylesheet">
        <link href="//at.alicdn.com/t/font_2374495_mkoo966o0uo.css" rel="stylesheet">
    </head>
    
    <body style="margin: 0px;">
        <div id="vbody">
            <div id="page_root">
                <div ref="popup_body" style="width: 400px; height: 490px;padding-right: 20px;">
                    <div class="el-dialog__header">
                        <div class="dialog-title">
                          <i class="iconfont icon-customermanagement"></i>
                          <span> {{formAttr.title}} </span>
                        </div>
                    </div>    
                    <div class="el-dialog__body"style="height: 350px;">
                        <!-- <el-upload action="https://jsonplaceholder.typicode.com/posts/" style="height: 100px;">
                            <el-button size="small" type="primary">点击上传</el-button>
                        </el-upload> -->
                        <el-button type="default" @click="onPopupByUploadFile">上传附件</el-button>
                        
                        <div style="margin-top: 20px; height: 230px" align="center">
                            <div v-if="!imgUrl" v-for="(item, index) in fileList" >
                                <img :src="item.url" alt="图" height="120px" style="float: left;"/>
                            </div>
                            <div v-if="imgUrl" >
                                <img :src="imgUrl" alt="图" height="230px" style="float: left;"/>
                            </div>
                        </div>
                    </div>
                    <div class="el-dialog__footer" >
                      <el-button type="default" @click="closeDialog">关 闭</el-button>
                      <el-button type="primary" @click="saveRowTable" >保 存</el-button><!-- style="display:none;" -->
                    </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>
        </div>    
        <script type="text/javascript">
            new ListVue({
                el: "#vbody",
                data: {
                    role: RootRole,
                    formAttr: {
                        istitle: false,
                        title: "附件信息",
                        columnnumber: 2,
                        labelwidth: "100px",
                        labelposition: "right",
                        size: "medium",
                        border: "0px solid #c6c6c600"
                    },
                    imgUrl: "",
                    popupParames: "",
                    fileList: [
                        {name: "medicine1.jpeg",url: "../../../../img/sjwt1.jpg"},
                        {name: "medicine2.jpeg",url: "../../../../img/sjwt2.jpg"},
                        {name: "medicine3.jpeg",url: "../../../../img/sjwt3.jpg"},
                    ],
                    revocationid: "",
                    fileObj: null
                },
                
                created() {
                    this.popupParames = clone(Root.popupParames);
                },
                mounted() {
                    var me = this;
                    if (this.popupParames.imgUrl) {
                        this.imgUrl = clone(Root.popupParames.imgUrl);
                    }
                    if (this.popupParames.data && this.popupParames.data.id) {
                        me.revocationid = me.popupParames.data.id;
                        popupParames = me.popupParames;
                        getDownloadImgURL(this.popupParames.data.file_id, function(result) {
                            me.imgUrl = result.data.fileurl;
                        });
                    }
                    
                    this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
                        document.getElementById('page_root').style.display =  "block";
                        document.getElementById('page_loading').style.display =  "none";
                        
                        //重新设置弹窗宽高
                        this.$nextTick(function(){
                            let w_ = this.$refs.popup_body.offsetWidth + "px";
                            let h_ = this.$refs.popup_body.offsetHeight + "px";
                            Root.setPopupWH(w_, h_);
                        })
                    });
                },
                
                methods:{
                    closeDialog() {
                        Root.hidePopup();
                    },
                    saveRowTable() {
                        var me = this;
                        if (this.popupParames.callback) {
                            let obj = {
                                row: this.fileObj
                            }
                            this.popupParames.callback(obj, function() {
                                if (me.popupParames.totab) {
                                    Root.tab.removeItem(Root.tab.selected);
                                    Root.tab.open(me.popupParames.parentOption, false);
                                } else {
                                    Root.hidePopup();
                                }
                            });
                        } else {
                            alert("该按键事件缺失!")
                        }
                    },
                    handleChange(file, fileList) {
                        this.fileList = fileList.slice(-4);
                    },
                    
                    onServerInitData(data) {
                        var me = this.data;
                    },
                    
                    onPopupByUploadFile() {
                        var me = this;
                        
                        var config = {
                            totab: false,
                            width: "1500px",
                            icon: "icon-product",
                            text: "附件上传",
                            id: "popupByUploadFile",
                            url: "../tool/popup_uploadFile.html",
                            data: {},
                            delta: {filetypelist: [".png", ".jpg"]},
                            callback: function(obj, callback) {
                                me.fileObj = obj;
                                
                                getDownloadImgURL(obj.row[0].id, function(result) {
                                    me.imgUrl = result.data.fileurl;
                                });
                                if (callback) {
                                    callback();
                                }
                            }
                        };
                        this.doPopupByPublic(config);
                    },
                    
                    doPopupByPublic(config) {
                        if (config.totab) {
                            if (config.url) {
                                if (config.text.length > 4) {
                                    config.text = config.text.substr(0, 4) + "...";
                                }
                            }
                            
                            var callback_ = config.callback;
                            var parames = {
                                url: config.url,
                                sceneCode: config.sceneCode,
                                data: config.data,
                                delta: config.delta,
                                disabled: config.disabled,
                                disabledone: config.disabledone,
                                operationtype: config.operationtype,
                                parentOption: window.top.tab.selected.option,
                                callback: function(obj, callback) {
                                    if (callback_) {
                                        callback_(obj);
                                    }
                                    if (callback) {
                                        callback();
                                    }
                                }
                            };
                            
                            Root.popupParames = parames;
                            
                            window.top.tab.open(config);
                        }
                        else {
                            this.doPopup(config);
                        }
                    },
                    
                }
            });
        </script>
        
        <style>
            .el-input__inner{
                padding: 0 2px;
            }
        </style>
        
    </body>
</html>