yujian
2020-05-17 63da7625fdca6a7de96d6afd1e76ebb70a0516b8
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
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
<!DOCTYPE html>
<html>
    
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
        <meta http-equiv="X-UA-Compatible" content="chrome=1"/>
        <title>消息编辑</title>
        <link rel="stylesheet" type="text/css" href="../../../../css/doui.min.css"/>
        <script src="../../../../js/doui.min.js" type="text/javascript" charset="utf-8"></script>
        <script src="../../../../js/requestHost.js" type="text/javascript" charset="utf-8"></script>
        <script type="text/javascript">
            doui.importLoad({
                importArray: [
                    // 雷打不动
                    getHostPath() + "js/jquery.min.js",
                    getHostPath() + "js/vue.min.js",
                    // 字体图标
                    getHostPath() + "fontAdmin/iconfont.css",
                    getHostPath() + "font/iconfont.css",
                    // dom模板
                    getHostPath() + "css/admin-all.css",
                    getHostPath() + "js/admin-creat.js",
                    // 编辑器
                    getHostPath() + "childPath/editor/wangEditor.min.js",
                    getHostPath() + "childPath/editor/wangEditor.config.js",
                ],
            });
        </script>
        <!--自设-->
        <style type="text/css">
            /*输入说明*/
            .shuoming{ width: 0.8rem; padding-top: 0.04rem; margin-right: 20px; text-align: right; }
            /*商品框*/
            .goodsDan{ width: 0.53rem; height: 0.53rem; position: relative; margin-right: 0.1rem; margin-bottom: 0.1rem; overflow: hidden; }
            .goodsImg{ width: 0.53rem; height: 0.53rem; position: absolute; left: 0; top: 0; display: block; }
            .goodsId{ width: 0.53rem; height: 0.14rem; line-height: 0.14rem; text-align: center; color: white; position: absolute; left: 0; bottom: 0; background-color: rgba(0,0,0,0.7); }
            .goodsClose{ font-size: 0.07rem; width: 0.12rem; height: 0.12rem; line-height: 0.12rem; position: absolute; right: 0.01rem; top: 0.01rem; color: white; text-align: center; }
        </style>
    </head>
    
    <body class="fontPC" style="display:none;">
        <div id="allwai" class="heightenBox">
            
            <!-- =============================================================== 搜索筛选(顶部) -->
            <div class="admin-header">
                <!--返回按钮-->
                <div class="admin-btn-roundM bg-yellow click-scale" v-on:click='doui.pageToUrl({ type: "replace", url: "today_index.html" });'>
                    <div><i class="fi fi-left"></i></div> 
                    <span class="admin-marginLeft">返回</span>
                </div>
            </div>
            
            <!-- =============================================================== 内容区域 -->
            <div class="admin-main-overHeader bg-white fboxCol Xstart Ycenter" style="padding-bottom:0.5rem;">
                
                <!--标题-->
                <div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
                    <div class="shuoming font18 font-blue">推送标题</div>
                    <div class="flex1 fboxCol Xstart Ystart">
                        <textarea style="width:2.5rem; height:0.5rem;" placeholder="如:超级优惠来袭(不能携带emoji表情)" v-model="sub.title"></textarea>
                    </div>
                </div>
                
                <!--推送内容-->
                <div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
                    <div class="shuoming font18 font-blue">推送内容</div>
                    <div class="flex1 fboxCol Xstart Ystart">
                        <!--编辑框选择-->
                        <div class="fboxRow Xstart Ycenter" style="padding:0.04rem 0;">
                            <!--普通-->
                            <div class="fboxRow Xstart Ycenter cursor-pointer" v-on:click="content.typeClick(1)">
                                <div class=""><i class="fi" v-bind:class="content.edit==1?'fi-radio-ok font-green':'fi-radio-no font-gray'"></i></div>
                                <div class="font-black admin-marginLeft">普通文本域</div>
                            </div>
                            <div class="fboxRow Xstart Ycenter cursor-pointer" style="margin-left:0.2rem;" v-on:click="content.typeClick(2)">
                                <div class=""><i class="fi" v-bind:class="content.edit==2?'fi-radio-ok font-green':'fi-radio-no font-gray'"></i></div>
                                <div class="font-black admin-marginLeft">富文本编辑器</div>
                            </div>
                        </div>
                        <!--普通文本框-->
                        <textarea v-show="content.edit==1" style="width:2.6rem; height:0.8rem;" v-model="sub.content"></textarea>
                        <!--wang编辑器-->
                        <div v-show="content.edit==2" id="editor1"></div>
                    </div>
                </div>
                
                <!--推送用户ID-->
                <div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
                    <div class="shuoming font18 font-blue">推送用户</div>
                    <div class="flex1 fboxCol Xstart Ystart">
                        <textarea style="width:2.5rem; height:0.5rem;" placeholder="如:911382 (仅支持单ID,不填则全员推送)" v-model="sub.uid"></textarea>
                    </div>
                </div>
                
                <!--android推送版本-->
                <div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
                    <div class="shuoming font18 font-blue">android推送版本</div>
                    <div class="flex1 fboxWrap Xstart Ystart">
                        <!-- 一个选择项 -->
                        <div v-for="(item,index) in version.android" class="fboxRow Xcenter Ycenter cursor-pointer" style="margin:10px;" @click="version.checkClick('1',item)">
                            <div class="font18"><i class="fi" :class="version.result.android.indexOf(item.key)>=0?'fi-check-ok font-green':'fi-check-no font-gray'"></i></div>
                            <div style="margin-left:3px;">{{item.value}}</div>
                        </div>
                    </div>
                </div>
                
                <!--ios推送版本-->
                <div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
                    <div class="shuoming font18 font-blue">ios推送版本</div>
                    <div class="flex1 fboxWrap Xstart Ystart">
                        <!-- 一个选择项 -->
                        <div v-for="(item,index) in version.ios" class="fboxRow Xcenter Ycenter cursor-pointer" style="margin:10px;" @click="version.checkClick('2',item)">
                            <div class="font18"><i class="fi" :class="version.result.ios.indexOf(item.key)>=0?'fi-check-ok font-green':'fi-check-no font-gray'"></i></div>
                            <div style="margin-left:3px;">{{item.value}}</div>
                        </div>
                    </div>
                </div>
                
                <!--商品-->
                <div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
                    <div class="shuoming font18 font-blue">备选商品编辑</div>
                    <div class="flex1 fboxCol Xstart Ystart">
                        <!--操作选项-->
                        <div class="fboxRow Xstart Ycenter">
                            <!--获取按钮-->
                            <div class="admin-btn-roundM click-scale bg-blue" v-on:click="goods.fuGaiClick()">覆盖</div>
                            <!--追加-->
                            <div class="admin-btn-roundM click-scale bg-blue admin-marginLeft" v-on:click="goods.appendClick()">追加</div>
                            <!--清空商品-->
                            <div class="admin-btn-roundM click-scale bg-red admin-marginLeft" v-on:click="goods.delAll()">清空商品</div>
                        </div>
                        <!--商品展示框-->
                        <div class="fboxWrap Xstart Ystart" style="width:2.8rem; min-height:0.8rem; padding:0.1rem; margin-top:0.05rem; border:1px solid #CCC;">
                            <!--循环显示商品-->
                            <div v-for="(item, index) in goods.list" class="goodsDan border-round" v-bind:title="item.title">
                                <img class="goodsImg img-round" v-bind:src="item.pictUrl"/>
                                <div class="goodsId font12">{{item.auctionId}}</div>
                                <div class="goodsClose admin-btn-arcS bg-red cursor-pointer" v-on:click="goods.delClick(index)"><i class="fi fi-no"></i></div>
                            </div>
                        </div>
                    </div>
                </div>                
                
                <!-- 是否自动发布 -->
                <div class="fboxRow Xstart Ystart" style="width:4rem; padding:0.1rem;">
                    <div class="shuoming font18 font-blue">预设时间</div>
                    <div class="flex1 fboxCol Xstart Ystart">
                        <div class="inputShell admin-header-input"><input type="datetime-local" v-model="opt.start"/></div>
                    </div>
                </div>
                
                <!--确定推送-->
                <div class="admin-btn-roundM bg-green click-scale" v-on:click="shuruUp()">保存(未推送)</div>
            
            </div>
            
        </div>
    </body>
    
</html>
 
 
<!--页面数据-->
<script type="text/javascript">
    
    // 编辑器申明
    var editor = null;
    // vue申明
    var vm = null;
    
    doui.onReady({
        success: function ()
        {
            // vue 实例化
            vm = new Vue({
                el: "#allwai",
                // 数据
                data: {
                    
                    // ---------------------------------------------------------------- 输入组件
                    // 版本号管理
                    version: {
                        android: [],
                        ios: [],
                        result: {
                            android: [],
                            ios: [],
                        },
                        checkClick: function (typeC, itemC)
                        {
                            // 安卓
                            if (typeC == "1") 
                            {
                                // 结果中的顺序
                                var index = vm.version.result.android.indexOf(itemC.key);
                                // 如果是选过的    从key中除去该选项
                                if (index >= 0) { vm.version.result.android.splice(index, 1); }
                                // 没有则添加
                                else { vm.version.result.android.push(itemC.key); }
                            }
                            // ios
                            else if (typeC == "2")
                            {
                                // 结果中的顺序
                                var index = vm.version.result.ios.indexOf(itemC.key);
                                // 如果是选过的    从key中除去该选项
                                if (index >= 0) { vm.version.result.ios.splice(index, 1); }
                                // 没有则添加
                                else { vm.version.result.ios.push(itemC.key); }
                            }
                        },
                        // 获取
                        request: function () 
                        {
                            // 发起请求
                            doui.request({
                                type: "jsonp",
                                url: gethttp() + "/admin/new/api/v1/config/getVersionList",
                                data: {},
                                success: function (res) 
                                {
                                    if (res.code != 0) { doui.showToast({ content: res.msg }); }
                                    else
                                    {
                                        // 安卓列表分析
                                        for (var i = 0, mo = res.data.android; i < mo.length; i++) 
                                        {
                                            var jiedian = { key: mo[i].version, value: mo[i].version, check: false };
                                            vm.version.android.push(jiedian);
                                        }
                                        // ios列表分析
                                        for (var i = 0, mo = res.data.ios; i < mo.length; i++) 
                                        {
                                            var jiedian = { key: mo[i].version, value: mo[i].version, check: false };
                                            vm.version.ios.push(jiedian);
                                        }
                                    }
                                },
                            });
                        },
                    },
                    
                    // 推送内容wang编辑处
                    content: {
                        edit: "1", // 编辑器类型  1-普通     2-富文本                
                        // 编辑器选择点击
                        typeClick: function (editC) { vm.content.edit = editC; },
                        // wang的富文本获取
                        wangHtmlGet: function () { vm.sub.content = wang.htmlGet(editor); },
                    },
                    
                    // 备选商品
                    goods: {
                        list: [],
                        // 从本地分析商品数据
                        localGoodsParsing: function ()
                        {
                            var back = [];
                            // 从本地获取商品
                            doui.localStorageGet({
                                key: "goodsGroup",
                                fail: function () { doui.showToast({ content: "未备选推送商品" }); },
                                success: function (localData)
                                {
                                    for (var i = 0, mo = localData; i < mo.length; i++) 
                                    {
                                        // 用于显示的商品格式
                                        var thisGoods = {
                                            pictUrl: mo[i][0].key, // 商品图片
                                            title: mo[i][1].key, // 商品名称
                                            auctionId: mo[i][2].key, // 商品id
                                        };
                                        back.push(thisGoods);
                                    }
                                }
                            });
                            // 返回值
                            return back;
                        },
                        // 覆盖 点击
                        fuGaiClick: function () 
                        {
                            var localData = vm.goods.localGoodsParsing();
                            vm.goods.list = localData;
                        },
                        // 追加 点击
                        appendClick: function () 
                        {
                            var localData = vm.goods.localGoodsParsing();
                            vm.goods.list = vm.goods.list.concat(localData);
                        },
                        // 商品上面的删除 点击
                        delClick: function (indexC) { vm.goods.list.splice(indexC, 1); },
                        // 清空商品
                        delAll: function () { vm.goods.list = new Array(); },
                    },
                    
                    // 分享设置
                    opt: {
                        // 自动发布时间
                        start: "",
                    },
                    
                    // ---------------------------------------------------------------- 上传数据总结
                    sub: {
                        id: "", // 当前推送的id
                        title: "", // 详细标题
                        content: "", // 详细内容字符串
                        uid: "", // 被推送用户id字符串 组
                    },
                    
                },
            });
            
            
            // 编辑器初始化
            editor = wang.createGet({
                ids: ['editor1'],
                menus: [ 'justify', 'foreColor', 'emoticon', 'undo', 'redo', ],
                emoji: true,
            });
            wang.style_scrollbar();
            wang.style_menu(editor, "font-size:0.08rem;");
            wang.style_editor(editor, "font-size:15px; width:2.7rem; height:0.8rem;");
            wang.style_img("width:auto; max-height:30px;");
            
            
            // 版本号获取
            vm.version.request();
            // url数据接收
            doui.urlParam({
                success: function (res)
                {
                    // 新建
                    if (res.type == "new")
                    {
                        // 从本地获取商品
                        var goods = vm.goods.localGoodsParsing();
                        vm.goods.list = goods;
                    }
                    // 修改
                    else if (res.type == "updata")
                    {
                        // 获取id
                        vm.sub.id = res.id;
                        // 请求数据
                        tableGet();
                    }
                }
            });
            
            
            document.body.style.display = "block";    
        }
    });
    
    
    // ============================================================================== 接口请求
    // 获取详细信息
    function tableGet ()
    {
        doui.showLoading({ content: "请求数据" });
        doui.request({
            type: "jsonp",
            url: gethttp() + "/admin/new/api/v1/pushgoods/getPushInfo",
            data: { id: vm.sub.id, },
            success: function (res)
            {
                doui.hideLoading();
                if (res.code != 0) { doui.showToast({ content: res.msg }); }
                else 
                {
                    var item = res.data.pushGoods;
                    vm.sub.title = item.title; // 详细标题
                    vm.sub.content = item.content; // 详细内容字符串
                    wang.valueSet(editor, vm.sub.content);
                    vm.sub.uid = item.uid?item.uid:""; // 被推送用户id字符串 组
                    vm.version.result.android = item.listAndroid; // 推送版本
                    vm.version.result.ios = item.listIOS; // 推送版本
                    // 选择的商品
                    vm.goods.list = res.data.listGroup;
                    vm.opt.start = item.controlTime_str;
                }
            }
        });
    }
    
    // 数据提交
    function shuruUp ()
    {
        // 富文本时候
        var alertContent = vm.sub.content;
        if (vm.content.edit == 2) { vm.content.wangHtmlGet(); alertContent = wang.textGet(editor); }
        // 商品id获取
        var zu_id = new Array();
        for (var i = 0; i < vm.goods.list.length; i++) { zu_id.push(vm.goods.list[i].auctionId); }
        if (zu_id.length <= 0) { doui.showToast("请编辑商品"); return false; }
        
        // 数据请求
        doui.showLoading("处理中");
        doui.request({
            type: "jsonp",
            url: gethttp() + '/admin/new/api/v1/pushgoods/save',
            data: {
                id: vm.sub.id, // 要操作的推送的id
                uid: vm.sub.uid,
                alertTitle: vm.sub.title,
                alertContent: alertContent,
                title: vm.sub.title,
                content: vm.sub.content,
                arrayAndroid: vm.version.result.android,
                arrayIOS: vm.version.result.ios,
                idArray: zu_id,
                controlTime_str: vm.opt.start,
            },
            success: function (res) 
            {
                doui.hideLoading();
                if (res.code != 0) { doui.showToast({ content: res.msg }); }
                else 
                { 
                    doui.showToast({ content: "处理成功" }); 
                    // 删除本地数据
                    doui.localStorageDel({ key: "goodsGroup" }); 
                    // 回到上一页
                    setTimeout(function(){ doui.pageToUrl({ type: "replace", url: "today_index.html" }); }, 400);
                }
            }
        });
        
    }
 
</script>