Explorar el Código

仅显示有权限的应用

庄逸洲 hace 5 años
padre
commit
cfe2941068

+ 1 - 1
conf/app.conf Ver fichero

@@ -1,6 +1,6 @@
1 1
 appname = 酷医
2 2
 httpport = 8091
3
-runmode = prod
3
+runmode = dev
4 4
 copyrequestbody = true
5 5
 
6 6
 is_sso_use_session_id_key = true

+ 86 - 8
controllers/org_controller.go Ver fichero

@@ -61,19 +61,19 @@ func (this *OrgController) Create() {
61 61
 	this.Data["province"] = service.GetAllProvince()
62 62
 	this.Data["illness"], _ = service.GetIllness()
63 63
 
64
-	this.SetTpl("home/create_org.html")
64
+	this.SetTpl("new_main/create_org.html")
65 65
 }
66 66
 
67 67
 // /org/create/submit [post]
68 68
 // @param name:string
69 69
 // @param short_name:string
70
-// @param intro:string
71
-// @param logo:string
70
+// @param intro?:string
71
+// @param logo?:string
72 72
 // @param province:int
73 73
 // @param city:int
74 74
 // @param district:int
75 75
 // @param address:string
76
-// @param ill:string ("病种1,病种2")
76
+// @param ill?:string ("病种1,病种2")
77 77
 // @param category:int
78 78
 // @param org_phone?:string
79 79
 // @param business_week?:string
@@ -114,7 +114,7 @@ func (this *OrgController) CreateSubmit() {
114 114
 	address := this.GetString("address")
115 115
 	ill := this.GetString("ill")
116 116
 	category, _ := this.GetInt64("category")
117
-	if len(name) == 0 || len(shortName) == 0 || len(intro) == 0 || len(logo) == 0 || len(address) == 0 || province <= 0 || city <= 0 || district <= 0 || len(ill) == 0 || category <= 0 {
117
+	if len(name) == 0 || len(shortName) == 0 || len(address) == 0 || province <= 0 || city <= 0 || district <= 0 || category <= 0 {
118 118
 		this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
119 119
 		this.ServeJSON()
120 120
 		return
@@ -160,19 +160,25 @@ func (this *OrgController) CreateSubmit() {
160 160
 		CreateTime:      time.Now().Unix(),
161 161
 		ModifyTime:      time.Now().Unix(),
162 162
 	}
163
-	createErr := service.CreateOrg(&org, adminUser.Mobile)
163
+	createErr := service.CreateOrg(&org, adminUser.Mobile) // 创建机构以及所有类型的 app,如果有新类型的平台,则需要在这个方法里面把创建这一新类型的 app 的代码加上
164 164
 	if createErr != nil {
165 165
 		utils.ErrorLog("mobile=%v的超级管理员创建机构失败:%v", adminUser.Mobile, createErr)
166 166
 		this.Data["json"] = enums.MakeFailResponseJSONWithSGJErrorCode(enums.ErrorCodeDBCreate)
167 167
 		this.ServeJSON()
168 168
 	} else {
169
-		this.Data["json"] = enums.MakeSuccessResponseJSON(nil)
169
+		redirectURL := beego.AppConfig.String("submodule_domain_dialysis_manage")
170
+		this.Data["json"] = enums.MakeSuccessResponseJSON(map[string]interface{}{
171
+			"url": redirectURL,
172
+		})
170 173
 		this.ServeJSON()
171 174
 	}
172 175
 }
173 176
 
174
-// /org/app/create [get]
177
+// /org/app/create [get] 19.06.04 之前的管理应用逻辑,已弃用
175 178
 func (this *OrgController) CreateApp() {
179
+	// this.Abort("404")
180
+	// return
181
+
176 182
 	adminUserObj := this.GetSession("admin_user")
177 183
 	if adminUserObj == nil {
178 184
 		this.Redirect302(beego.URLFor("LoginController.PwdLogin"))
@@ -266,6 +272,78 @@ func (this *OrgController) CreateApp() {
266 272
 	}
267 273
 }
268 274
 
275
+// /org/admin/apps [get]
276
+// @param org:int
277
+func (this *OrgController) ViewApps() {
278
+	adminUserObj := this.GetSession("admin_user")
279
+	if adminUserObj == nil {
280
+		this.Redirect302(beego.URLFor("LoginController.PwdLogin"))
281
+		return
282
+	}
283
+	adminUser := adminUserObj.(*models.AdminUser)
284
+	orgID, _ := this.GetInt("org")
285
+	if orgID <= 0 {
286
+		this.Abort("404")
287
+		return
288
+	}
289
+	org, getOrgErr := service.GetOrgById(orgID)
290
+	if getOrgErr != nil {
291
+		utils.ErrorLog("获取id = %v的用户创建的机构时出错:%v", adminUser.Id, getOrgErr)
292
+		this.Abort("404")
293
+		return
294
+	} else {
295
+		if org == nil {
296
+			if adminUser.IsSuperAdmin == true {
297
+				this.Redirect302(beego.URLFor("OrgController.Create"))
298
+			} else {
299
+				this.Abort("404")
300
+			}
301
+			return
302
+		} else {
303
+			this.Data["avatar"] = org.OrgLogo         //"/static/images/userData.png"
304
+			this.Data["user_name"] = org.OrgShortName //adminUser.Mobile
305
+
306
+			if adminUser.IsSuperAdmin {
307
+				this.Data["scrm_role_exist"] = true
308
+				this.Data["xt_role_exist"] = true
309
+				this.Data["cdm_role_exist"] = true
310
+				this.Data["mall_role_exist"] = true
311
+			} else {
312
+				apps, getAppsErr := service.GetAdminUserAllOrgApp(adminUser.Id, org.Id)
313
+				if getAppsErr != nil {
314
+					utils.ErrorLog("获取 id = %v,org_id = %v 的用户有权限的应用时出错:%v", adminUser.Id, org.Id, getOrgErr)
315
+					this.Abort("404")
316
+					return
317
+				}
318
+				this.Data["scrm_role_exist"] = false
319
+				this.Data["xt_role_exist"] = false
320
+				this.Data["cdm_role_exist"] = false
321
+				this.Data["mall_role_exist"] = false
322
+				for _, app := range apps {
323
+					if app.AppType == 1 {
324
+						this.Data["scrm_role_exist"] = true
325
+					}
326
+					if app.AppType == 3 {
327
+						this.Data["xt_role_exist"] = true
328
+					}
329
+					if app.AppType == 4 {
330
+						this.Data["cdm_role_exist"] = true
331
+					}
332
+					if app.AppType == 5 {
333
+						this.Data["mall_role_exist"] = true
334
+					}
335
+				}
336
+			}
337
+
338
+			this.Data["submodule_domain_patient_manage"] = beego.AppConfig.String("submodule_domain_patient_manage")
339
+			this.Data["submodule_domain_dialysis_manage"] = beego.AppConfig.String("submodule_domain_dialysis_manage")
340
+			this.Data["submodule_domain_cdm_manage"] = beego.AppConfig.String("submodule_domain_cdm_manage")
341
+			this.Data["submodule_domain_mall_manage"] = beego.AppConfig.String("submodule_domain_mall_manage")
342
+			this.SetTpl("new_main/manage_app.html")
343
+		}
344
+	}
345
+}
346
+
269 347
 // /org/app/create/submit [post]
270 348
 // @param app_type:int
271 349
 func (this *OrgController) CreateAppSubmit() {

+ 72 - 2
controllers/verify_token_controller.go Ver fichero

@@ -286,8 +286,23 @@ func (this *VerifyTokenController) GetAdminUserAllInfo(mobile string) (map[strin
286 286
 			utils.ErrorLog("数据错误:查找mobile = %v的用户所属机构ID为%v下的应用时错误:%v", mobile, org.Id, getAppsErr)
287 287
 			return nil, &enums.SGJError{Code: enums.ErrorCodeDataException}
288 288
 		}
289
-		if len(apps) == 0 {
290
-			continue
289
+		if adminUser.IsSuperAdmin {
290
+			didCreateNewApp, createAppErr := this._createAppIfNeeded(adminUser.Id, org.Id, apps)
291
+			if createAppErr != nil {
292
+				return nil, createAppErr
293
+			}
294
+			if didCreateNewApp {
295
+				apps, getAppsErr = service.GetAdminUserAllOrgApp(adminUser.Id, org.Id)
296
+				if getAppsErr != nil {
297
+					utils.ErrorLog("数据错误:查找mobile = %v的用户所属机构ID为%v下的应用时错误:%v", mobile, org.Id, getAppsErr)
298
+					return nil, &enums.SGJError{Code: enums.ErrorCodeDataException}
299
+				}
300
+			}
301
+
302
+		} else {
303
+			if len(apps) == 0 {
304
+				continue
305
+			}
291 306
 		}
292 307
 
293 308
 		subscibe, getSubscibeErr := service.GetOrgServeSubscibe(org.Id)
@@ -380,3 +395,58 @@ func (this *VerifyTokenController) GetAdminUserAllInfo(mobile string) (map[strin
380 395
 	info["org_subscibes"] = org_subscibes
381 396
 	return info, nil
382 397
 }
398
+
399
+func (this *VerifyTokenController) _createAppIfNeeded(adminUserID int, orgID int, didCreatedApps []*models.OrgApp) (bool, *enums.SGJError) {
400
+	// 已创建的应用的信息
401
+	did_patient_manage_create := false
402
+	did_dialysis_manage_create := false
403
+	did_cdm_manage_create := false
404
+	did_mall_manage_create := false
405
+	for _, app := range didCreatedApps {
406
+		if app.AppType == 1 {
407
+			did_patient_manage_create = true
408
+		} else if app.AppType == 3 {
409
+			did_dialysis_manage_create = true
410
+		} else if app.AppType == 4 {
411
+			did_cdm_manage_create = true
412
+		} else if app.AppType == 5 {
413
+			did_mall_manage_create = true
414
+		}
415
+	}
416
+
417
+	// 自动创建所有应用
418
+	didCreateNew := false
419
+	if did_patient_manage_create == false {
420
+		err := service.CreateOrgApp(adminUserID, orgID, 1)
421
+		if err != nil {
422
+			utils.ErrorLog("自动创建酷医聚客应用失败:%v", err)
423
+			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
424
+		}
425
+		didCreateNew = true
426
+	}
427
+	if did_dialysis_manage_create == false {
428
+		err := service.CreateOrgApp(adminUserID, orgID, 3)
429
+		if err != nil {
430
+			utils.ErrorLog("自动创建透析管理应用失败:%v", err)
431
+			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
432
+		}
433
+		didCreateNew = true
434
+	}
435
+	if did_cdm_manage_create == false {
436
+		err := service.CreateOrgApp(adminUserID, orgID, 4)
437
+		if err != nil {
438
+			utils.ErrorLog("自动创建慢病管理应用失败:%v", err)
439
+			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
440
+		}
441
+		didCreateNew = true
442
+	}
443
+	if did_mall_manage_create == false {
444
+		err := service.CreateOrgApp(adminUserID, orgID, 5)
445
+		if err != nil {
446
+			utils.ErrorLog("自动创建微商城应用失败:%v", err)
447
+			return false, &enums.SGJError{Code: enums.ErrorCodeDataException}
448
+		}
449
+		didCreateNew = true
450
+	}
451
+	return didCreateNew, nil
452
+}

+ 2 - 1
routers/router.go Ver fichero

@@ -41,8 +41,9 @@ func init() {
41 41
 
42 42
 	beego.Router("/org/create", &controllers.OrgController{}, "get:Create")
43 43
 	beego.Router("/org/create/submit", &controllers.OrgController{}, "post:CreateSubmit")
44
+	beego.Router("/org/admin/apps", &controllers.OrgController{}, "get:ViewApps")
44 45
 	beego.Router("/org/app/create", &controllers.OrgController{}, "get:CreateApp")
45
-	beego.Router("/org/app/create/submit", &controllers.OrgController{}, "post:CreateAppSubmit")
46
+	// beego.Router("/org/app/create/submit", &controllers.OrgController{}, "post:CreateAppSubmit")
46 47
 	beego.Router("/get_org_cat", &controllers.OrgCategoryController{}, "get:GetOrgCategories")
47 48
 	beego.Router("/create_app_hint", &controllers.OrgController{}, "get:CreateAppHint")
48 49
 

+ 4 - 0
service/org_service.go Ver fichero

@@ -38,6 +38,10 @@ func CreateOrg(org *models.Org, mobile string) error {
38 38
 		tx_admin.Rollback()
39 39
 		return err
40 40
 	}
41
+	if err := createOrgApp(tx_admin, &role, mobile, 4); err != nil {
42
+		tx_admin.Rollback()
43
+		return err
44
+	}
41 45
 	if err := createOrgApp(tx_admin, &role, mobile, 5); err != nil {
42 46
 		tx_admin.Rollback()
43 47
 		return err

+ 3 - 264
static/js/create_org.js Ver fichero

@@ -1,133 +1,5 @@
1 1
 $(function() {
2
-    $("#avatar_preview_panel").hide();
3
-
4
-    var ue = UE.getEditor('editor');
5
-
6
-    // 编辑器加载完成后清除其中内容,因为像迅雷插件可能会在编辑器加载的时候插入一段文本,导致用户未输入内容却检测内容不为空
7
-    ue.addListener("ready", function() {
8
-        ue.setContent("");
9
-    });
10
-
11
-    uptoken = getQNToken();
12
-    newUploader("avatar_file", uptoken, function(file) {
13
-        console.log(file.name);
14
-        $("#avatar_preview_panel").show();
15
-        $("#avatar_upload").hide();
16
-    }, function(progress) {
17
-
18
-    }, function(err) {
19
-        alert("头像上传失败: ", err);
20
-        console.log("上传失败", err);
21
-    }, function(url) {
22
-        $("#avatar_preview_img").attr("src", url);
23
-    });
24
-
25
-    $("#avatar_upload").click(function() {
26
-        $("#avatar_file").click();
27
-    });
28
-    $("#avatar_preview_panel").click(function() {
29
-        $("#avatar_file").click();
30
-    });
31
-
32
-    function getQNToken() {
33
-        var token = ""
34
-        $.ajax({
35
-            url: "/application/qntoken",
36
-            type: "GET",
37
-            async: false,
38
-            dataType: "json",
39
-            success: function(json) {
40
-                if (json.state == 1) {
41
-                    token = json.data.token;
42
-                } else {
43
-                    console.log("获取token失败", json.msg);
44
-                }
45
-            },
46
-            error: function() {
47
-                console.log("连接失败,请检查网络");
48
-            }
49
-        });
50
-        console.log("token:", token);
51
-        return token;
52
-    }
53
-
54
-    function newUploader(bindID, token, addImageHandler, progressHandler, errorHandler, finishUploadHandler) {
55
-        return Qiniu.uploader({
56
-            runtimes: "html5,flash,html4",
57
-            browse_button: bindID,
58
-            uptoken: token,
59
-            domain: "https://images.shengws.com/",
60
-            max_file_size: "300kb",
61
-            flash_swf_url: "/static/js/qiniu/Moxie.swf",
62
-            dragdrop: false,
63
-            auto_start: true,
64
-            unique_names: false,
65
-            save_key: false,
66
-            max_retries: 3,
67
-            multi_selection: false,
68
-            filters: {
69
-                mime_types: [{
70
-                    title: "Image files",
71
-                    extensions: "jpg,jpeg,png"
72
-                }]
73
-            },
74
-
75
-            init: {
76
-                "FilesAdded": function(up, files) {
77
-                    console.log("文件添加进队列后,处理相关的事情");
78
-                    plupload.each(files, function(file) {
79
-                        // var nativeFile = file.getNative();
80
-                        // var img = new Image();
81
-                        // img.src = URL.createObjectURL(nativeFile)
82
-                        // img.onload = function() {
83
-                        //     var w = img.naturalWidth;
84
-                        //     var h = img.naturalHeight;
85
-                        //     if (w > 108 || h > 108) {
86
-                        //         alert("机构头像尺寸太大,请选择108*108以内的图片");
87
-                        //         up.removeFile(file);
88
-                        //     } else {
89
-                                addImageHandler(file);
90
-                        //     }
91
-                        // }
92
-                    });
93
-                },
94
-                "BeforeUpload": function(up, file) {
95
-                    console.log("上传之前");
96
-                },
97
-                "UploadProgress": function(up, file) {
98
-                    console.log("上传进度:", file.percent + "%")
99
-                    progressHandler(file.percent);
100
-                },
101
-                "FileUploaded": function(up, file, info) {
102
-                    // info 为 json,格式是后台获取 token 时设置的 ReturnBody
103
-                    var domain = up.getOption("domain");
104
-                    var infoObj = JSON.parse(info);
105
-                    var url = domain + infoObj.url;
106
-                    // console.log("图片路径:", url);
107
-                    finishUploadHandler(url);
108
-                },
109
-                "Error": function(up, err, errTip) {
110
-                    console.log("上传出错:", err)
111
-                    errorHandler(err);
112
-                },
113
-                "UploadComplete": function() {
114
-                    console.log("队列文件处理完毕后,处理相关的事情");
115
-                },
116
-                "Key": function(up, file) {
117
-                    console.log("自定义上传文件名");
118
-                    var rand = Math.floor(Math.random() * 1000000000)
119
-                    var date = new Date()
120
-                    var ext = Qiniu.getFileExtension(file.name);
121
-                    var key = date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate() + "/" + "org_" + rand + "." + ext;
122
-                    console.log(key);
123
-                    return key;
124
-                }
125
-            }
126
-        });
127
-    }
128
-
129 2
     $("#province_select").change(function() {
130
-        
131 3
         $("#city_select option").remove();
132 4
         $("#district_select option").remove();
133 5
         $("#city_select").append("<option value='0'>市</option>");
@@ -239,39 +111,21 @@ $(function() {
239 111
     });
240 112
 
241 113
     $("#submit").on("click", function() {
242
-        var checkErr = checkInfoFull(ue);
114
+        var checkErr = checkInfoFull();
243 115
         if (checkErr.length > 0) {
244 116
             layer.msg(checkErr);
245 117
             return;
246 118
         }
247 119
 
248
-        var ills = new Array();
249
-        $("input[name='ill_checkbox']:checkbox:checked").each(function(){ 
250
-            ills.push($(this).val());
251
-        });
252
-        var illstr = ills.join(",");
253
-
254
-        var picsStr = $("#org_pics").val();
255
-        if (picsStr.length > 2) {
256
-            picsStr = picsStr.substr(2, picsStr.length - 2);
257
-        }
258
-
259 120
         var postData = {
260 121
             name: $("#org_name").val(),
261 122
             short_name: $("#org_short_name").val(),
262
-            intro: ue.getContent(),
263
-            logo: $("#avatar_preview_img")[0].src,
264 123
             province: $("#province_select option:selected").val(),
265 124
             city: $("#city_select option:selected").val(),
266 125
             district: $("#district_select option:selected").val(),
267 126
             address: $("#address").val(),
268
-            ill: illstr,
269 127
             category: $("#org_category").val(),
270 128
             org_phone: $("#org_phone").val(),
271
-            business_week: $("#org_business_week").val(),
272
-            business_time: $("#org_business_time").val(),
273
-            business_state: $("input[name='org_business_state']:checked").val(),
274
-            org_pics: picsStr,
275 129
         }
276 130
         postRequest("/org/create/submit", postData, doSuccess, doFail);
277 131
 
@@ -281,125 +135,18 @@ $(function() {
281 135
                 return;
282 136
             }
283 137
             layer.msg("创建成功");
284
-            window.location.href = "/org/app/create"; //跳转网址
285
-        }
286
-    });
287
-
288
-    $("input[name='week_checkbox']").change(function () {
289
-        var business_week = [];
290
-        $("input[name='week_checkbox']:checked").each(function () {
291
-            var wid = $(this).attr('data-id');
292
-            var wname = $(this).attr('data-name');
293
-            business_week.push({ "id": wid, "name": wname });
294
-        });
295
-  
296
-        if (business_week.length == 0) {
297
-            $("#org_business_week").val('');
298
-        } else if (business_week.length == 1) {
299
-            $("#org_business_week").val(business_week[0]["name"]);
300
-        } else {
301
-            var blen = business_week.length;
302
-            var lastindex = blen - 1;
303
-            var btrue = true;
304
-            for (let index = 0; index < lastindex; index++) {
305
-                var sitem = parseInt(business_week[index]['id']);
306
-                var eitem = parseInt(business_week[index + 1]['id']);
307
-                sitem = sitem + 1;
308
-                if (sitem != eitem) {
309
-                    btrue = false;
310
-                    break;
311
-                }
312
-            }
313
-  
314
-            if (btrue) {
315
-                var week_show = business_week[0]["name"] + ' — ' + business_week[lastindex]["name"];
316
-                $("#org_business_week").val(week_show);
317
-            } else {
318
-                var week_show = '';
319
-                $.each(business_week, function (i, item) {
320
-                    week_show += item["name"];
321
-                    if (i != lastindex) {
322
-                        week_show += '、';
323
-                    }
324
-                });
325
-                $("#org_business_week").val(week_show);
326
-            }
327
-        }
328
-    });
329
-  
330
-    $('input[name=time_checkbox_s], input[name=time_checkbox_x]').change(function () {
331
-        if ($("input[name='time_checkbox_s']:checked").length == 0 || $("input[name='time_checkbox_x']:checked").length == 0) {
332
-            return;
333
-        }
334
-        var thetime = $("input[name='time_checkbox_s']:checked").val();
335
-        var mdatetime = $("input[name='time_checkbox_x']:checked").val();
336
-        var timeshow = '上午' + thetime + '—' + '下午' + mdatetime;
337
-        $("#org_business_time").val(timeshow);
338
-    });
339
-
340
-    Qiniu.uploader({
341
-        runtimes: "html5,flash,html4",
342
-        browse_button: "org_pic_uploader",
343
-        uptoken: uptoken,
344
-        domain: "https://images.shengws.com/",
345
-        max_file_size: "4mb",
346
-        flash_swf_url: "/static/js/qiniu/Moxie.swf",
347
-        dragdrop: false,
348
-        auto_start: true,
349
-        unique_names: false,
350
-        save_key: false,
351
-        max_retries: 3,
352
-        multi_selection: false,
353
-        filters: {
354
-            mime_types: [{
355
-                title: "Image files",
356
-                extensions: "jpg,jpeg,png"
357
-            }]
358
-        },
359
-
360
-        init: {
361
-            "FileUploaded": function(up, file, info) {
362
-                // info 为 json,格式是后台获取 token 时设置的 ReturnBody
363
-                var domain = up.getOption("domain");
364
-                var infoObj = JSON.parse(info);
365
-                var url = domain + infoObj.url;
366
-                $("#org_pics_preview").append("<div class='article-cover-add border-radius'><img style='width: auto; height: 100%;' src=" + url + " /></div>");
367
-                $("#org_pics").val($("#org_pics").val() + "@@" + url);
368
-            },
369
-            "Error": function(up, err, errTip) {
370
-                console.log("上传出错:", err)
371
-            },
372
-            "UploadComplete": function() {
373
-                console.log("队列文件处理完毕后,处理相关的事情");
374
-            },
375
-            "Key": function(up, file) {
376
-                console.log("自定义上传文件名");
377
-                var rand = Math.floor(Math.random() * 1000000000)
378
-                var date = new Date()
379
-                var ext = Qiniu.getFileExtension(file.name);
380
-                var key = date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate() + "/" + "org_pic_" + rand + "." + ext;
381
-                console.log(key);
382
-                return key;
383
-            }
138
+            window.location.href = res.data.url; //跳转网址
384 139
         }
385 140
     });
386 141
 });
387 142
 
388
-function checkInfoFull(ue) {
143
+function checkInfoFull() {
389 144
     if ($("#org_name").val().length == 0) {
390 145
         return "请填写机构名称";
391 146
     }
392 147
     if ($("#org_short_name").val().length == 0) {
393 148
         return "请填写机构简称";
394 149
     }
395
-    var intro = ue.getContent();
396
-    console.log(intro);
397
-    if (intro.length == 0) {
398
-        return "请填写机构介绍";
399
-    }
400
-    if ($("#avatar_preview_img")[0].src.length == 0) {
401
-        return "请上传机构头像";
402
-    }
403 150
     if ($("#province_select option:selected").val() == "0") {
404 151
         return "请选择省份";
405 152
     }
@@ -412,14 +159,6 @@ function checkInfoFull(ue) {
412 159
     if ($("#address").val().length == 0) {
413 160
         return "请填写地址";
414 161
     }
415
-    var selectIll = false;
416
-    $("input[name='ill_checkbox']:checkbox:checked").each(function(){ 
417
-        selectIll = true;
418
-        return false;
419
-    });
420
-    if (selectIll == false) {
421
-        return "请选择服务病种";
422
-    }
423 162
     if ($("#org_category").val().length == 0 || $("#org_category").val() == "0") {
424 163
         return "请选择机构类型";
425 164
     }

+ 437 - 0
static/js/create_org_old.js Ver fichero

@@ -0,0 +1,437 @@
1
+// 19.06.03 之前的版本,注册机构时需要填写很多信息
2
+$(function() {
3
+    $("#avatar_preview_panel").hide();
4
+
5
+    var ue = UE.getEditor('editor');
6
+
7
+    // 编辑器加载完成后清除其中内容,因为像迅雷插件可能会在编辑器加载的时候插入一段文本,导致用户未输入内容却检测内容不为空
8
+    ue.addListener("ready", function() {
9
+        ue.setContent("");
10
+    });
11
+
12
+    uptoken = getQNToken();
13
+    newUploader("avatar_file", uptoken, function(file) {
14
+        console.log(file.name);
15
+        $("#avatar_preview_panel").show();
16
+        $("#avatar_upload").hide();
17
+    }, function(progress) {
18
+
19
+    }, function(err) {
20
+        alert("头像上传失败: ", err);
21
+        console.log("上传失败", err);
22
+    }, function(url) {
23
+        $("#avatar_preview_img").attr("src", url);
24
+    });
25
+
26
+    $("#avatar_upload").click(function() {
27
+        $("#avatar_file").click();
28
+    });
29
+    $("#avatar_preview_panel").click(function() {
30
+        $("#avatar_file").click();
31
+    });
32
+
33
+    function getQNToken() {
34
+        var token = ""
35
+        $.ajax({
36
+            url: "/application/qntoken",
37
+            type: "GET",
38
+            async: false,
39
+            dataType: "json",
40
+            success: function(json) {
41
+                if (json.state == 1) {
42
+                    token = json.data.token;
43
+                } else {
44
+                    console.log("获取token失败", json.msg);
45
+                }
46
+            },
47
+            error: function() {
48
+                console.log("连接失败,请检查网络");
49
+            }
50
+        });
51
+        console.log("token:", token);
52
+        return token;
53
+    }
54
+
55
+    function newUploader(bindID, token, addImageHandler, progressHandler, errorHandler, finishUploadHandler) {
56
+        return Qiniu.uploader({
57
+            runtimes: "html5,flash,html4",
58
+            browse_button: bindID,
59
+            uptoken: token,
60
+            domain: "https://images.shengws.com/",
61
+            max_file_size: "300kb",
62
+            flash_swf_url: "/static/js/qiniu/Moxie.swf",
63
+            dragdrop: false,
64
+            auto_start: true,
65
+            unique_names: false,
66
+            save_key: false,
67
+            max_retries: 3,
68
+            multi_selection: false,
69
+            filters: {
70
+                mime_types: [{
71
+                    title: "Image files",
72
+                    extensions: "jpg,jpeg,png"
73
+                }]
74
+            },
75
+
76
+            init: {
77
+                "FilesAdded": function(up, files) {
78
+                    console.log("文件添加进队列后,处理相关的事情");
79
+                    plupload.each(files, function(file) {
80
+                        // var nativeFile = file.getNative();
81
+                        // var img = new Image();
82
+                        // img.src = URL.createObjectURL(nativeFile)
83
+                        // img.onload = function() {
84
+                        //     var w = img.naturalWidth;
85
+                        //     var h = img.naturalHeight;
86
+                        //     if (w > 108 || h > 108) {
87
+                        //         alert("机构头像尺寸太大,请选择108*108以内的图片");
88
+                        //         up.removeFile(file);
89
+                        //     } else {
90
+                                addImageHandler(file);
91
+                        //     }
92
+                        // }
93
+                    });
94
+                },
95
+                "BeforeUpload": function(up, file) {
96
+                    console.log("上传之前");
97
+                },
98
+                "UploadProgress": function(up, file) {
99
+                    console.log("上传进度:", file.percent + "%")
100
+                    progressHandler(file.percent);
101
+                },
102
+                "FileUploaded": function(up, file, info) {
103
+                    // info 为 json,格式是后台获取 token 时设置的 ReturnBody
104
+                    var domain = up.getOption("domain");
105
+                    var infoObj = JSON.parse(info);
106
+                    var url = domain + infoObj.url;
107
+                    // console.log("图片路径:", url);
108
+                    finishUploadHandler(url);
109
+                },
110
+                "Error": function(up, err, errTip) {
111
+                    console.log("上传出错:", err)
112
+                    errorHandler(err);
113
+                },
114
+                "UploadComplete": function() {
115
+                    console.log("队列文件处理完毕后,处理相关的事情");
116
+                },
117
+                "Key": function(up, file) {
118
+                    console.log("自定义上传文件名");
119
+                    var rand = Math.floor(Math.random() * 1000000000)
120
+                    var date = new Date()
121
+                    var ext = Qiniu.getFileExtension(file.name);
122
+                    var key = date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate() + "/" + "org_" + rand + "." + ext;
123
+                    console.log(key);
124
+                    return key;
125
+                }
126
+            }
127
+        });
128
+    }
129
+
130
+    $("#province_select").change(function() {
131
+        
132
+        $("#city_select option").remove();
133
+        $("#district_select option").remove();
134
+        $("#city_select").append("<option value='0'>市</option>");
135
+        $("#district_select").append("<option value='0'>区/县</option>");
136
+        var province = $("#province_select option:selected").val();
137
+        $.ajax({
138
+            url: "/city",
139
+            type: "GET",
140
+            data: {
141
+                province_id: province,
142
+            },
143
+            async: false,
144
+            dataType: "json",
145
+            success: function(json) {
146
+                if (json.state == 1) {
147
+                    var cities = json.data.list
148
+                    var optionStr = ""
149
+                    for (let index = 0; index < cities.length; index++) {
150
+                        const city = cities[index];
151
+                        optionStr = optionStr + "<option value = " + city.id + ">" + city.name + "</option>"
152
+                    }
153
+                    $("#city_select").append(optionStr);
154
+
155
+                } else {
156
+                    console.log("获取城市失败", json.msg);
157
+                }
158
+            },
159
+            error: function() {
160
+                console.log("连接失败,请检查网络");
161
+            }
162
+        });
163
+    });
164
+
165
+    $("#city_select").change(function() {
166
+        
167
+        $("#district_select option").remove();
168
+        $("#district_select").append("<option value='0'>区/县</option>");
169
+        var city = $("#city_select option:selected").val();
170
+        $.ajax({
171
+            url: "/district",
172
+            type: "GET",
173
+            data: {
174
+                city_id: city,
175
+            },
176
+            async: false,
177
+            dataType: "json",
178
+            success: function(json) {
179
+                if (json.state == 1) {
180
+                    var districts = json.data.list
181
+                    var optionStr = ""
182
+                    for (let index = 0; index < districts.length; index++) {
183
+                        const district = districts[index];
184
+                        optionStr = optionStr + "<option value = " + district.id + ">" + district.name + "</option>"
185
+                    }
186
+                    $("#district_select").append(optionStr);
187
+
188
+                } else {
189
+                    console.log("获取区县失败", json.msg);
190
+                }
191
+            },
192
+            error: function() {
193
+                console.log("连接失败,请检查网络");
194
+            }
195
+        });
196
+    });
197
+
198
+    $("#cat_p_select").change(function() {
199
+        $("#cat_c_select option").remove();
200
+        $("#cat_c_select").append("<option value='0'>详细类型</option>");
201
+        $("#cat_c_select").parent().hide();
202
+        $("#org_category").val("0");
203
+        var p_cat = $("#cat_p_select option:selected").val();
204
+        $.ajax({
205
+            url: "/get_org_cat",
206
+            type: "GET",
207
+            data: {
208
+                pid: p_cat,
209
+            },
210
+            async: false,
211
+            dataType: "json",
212
+            success: function(json) {
213
+                if (json.state == 1) {
214
+                    var cats = json.data.list
215
+                    if (cats.length == 0) {
216
+                        $("#cat_c_select").parent().hide();
217
+                        $("#org_category").val(p_cat);
218
+                    } else {
219
+                        var optionStr = ""
220
+                        for (let index = 0; index < cats.length; index++) {
221
+                            const cat = cats[index];
222
+                            optionStr = optionStr + "<option value = " + cat.id + ">" + cat.short_name + "</option>"
223
+                        }
224
+                        $("#cat_c_select").append(optionStr);
225
+                        $("#cat_c_select").parent().show();
226
+                    }
227
+
228
+                } else {
229
+                    layer.msg("获取详细类型失败: " + json.msg);
230
+                }
231
+            },
232
+            error: function() {
233
+                layer.msg("连接失败,请检查网络");
234
+            }
235
+        });
236
+    });
237
+
238
+    $("#cat_c_select").change(function() {
239
+        $("#org_category").val($("#cat_c_select option:selected").val());
240
+    });
241
+
242
+    $("#submit").on("click", function() {
243
+        var checkErr = checkInfoFull(ue);
244
+        if (checkErr.length > 0) {
245
+            layer.msg(checkErr);
246
+            return;
247
+        }
248
+
249
+        var ills = new Array();
250
+        $("input[name='ill_checkbox']:checkbox:checked").each(function(){ 
251
+            ills.push($(this).val());
252
+        });
253
+        var illstr = ills.join(",");
254
+
255
+        var picsStr = $("#org_pics").val();
256
+        if (picsStr.length > 2) {
257
+            picsStr = picsStr.substr(2, picsStr.length - 2);
258
+        }
259
+
260
+        var postData = {
261
+            name: $("#org_name").val(),
262
+            short_name: $("#org_short_name").val(),
263
+            intro: ue.getContent(),
264
+            logo: $("#avatar_preview_img")[0].src,
265
+            province: $("#province_select option:selected").val(),
266
+            city: $("#city_select option:selected").val(),
267
+            district: $("#district_select option:selected").val(),
268
+            address: $("#address").val(),
269
+            ill: illstr,
270
+            category: $("#org_category").val(),
271
+            org_phone: $("#org_phone").val(),
272
+            business_week: $("#org_business_week").val(),
273
+            business_time: $("#org_business_time").val(),
274
+            business_state: $("input[name='org_business_state']:checked").val(),
275
+            org_pics: picsStr,
276
+        }
277
+        postRequest("/org/create/submit", postData, doSuccess, doFail);
278
+
279
+        function doSuccess(res) {
280
+            if (res.state == 0) {
281
+                serverErrorMsg(res);
282
+                return;
283
+            }
284
+            layer.msg("创建成功");
285
+            window.location.href = "/org/app/create"; //跳转网址
286
+        }
287
+    });
288
+
289
+    $("input[name='week_checkbox']").change(function () {
290
+        var business_week = [];
291
+        $("input[name='week_checkbox']:checked").each(function () {
292
+            var wid = $(this).attr('data-id');
293
+            var wname = $(this).attr('data-name');
294
+            business_week.push({ "id": wid, "name": wname });
295
+        });
296
+  
297
+        if (business_week.length == 0) {
298
+            $("#org_business_week").val('');
299
+        } else if (business_week.length == 1) {
300
+            $("#org_business_week").val(business_week[0]["name"]);
301
+        } else {
302
+            var blen = business_week.length;
303
+            var lastindex = blen - 1;
304
+            var btrue = true;
305
+            for (let index = 0; index < lastindex; index++) {
306
+                var sitem = parseInt(business_week[index]['id']);
307
+                var eitem = parseInt(business_week[index + 1]['id']);
308
+                sitem = sitem + 1;
309
+                if (sitem != eitem) {
310
+                    btrue = false;
311
+                    break;
312
+                }
313
+            }
314
+  
315
+            if (btrue) {
316
+                var week_show = business_week[0]["name"] + ' — ' + business_week[lastindex]["name"];
317
+                $("#org_business_week").val(week_show);
318
+            } else {
319
+                var week_show = '';
320
+                $.each(business_week, function (i, item) {
321
+                    week_show += item["name"];
322
+                    if (i != lastindex) {
323
+                        week_show += '、';
324
+                    }
325
+                });
326
+                $("#org_business_week").val(week_show);
327
+            }
328
+        }
329
+    });
330
+  
331
+    $('input[name=time_checkbox_s], input[name=time_checkbox_x]').change(function () {
332
+        if ($("input[name='time_checkbox_s']:checked").length == 0 || $("input[name='time_checkbox_x']:checked").length == 0) {
333
+            return;
334
+        }
335
+        var thetime = $("input[name='time_checkbox_s']:checked").val();
336
+        var mdatetime = $("input[name='time_checkbox_x']:checked").val();
337
+        var timeshow = '上午' + thetime + '—' + '下午' + mdatetime;
338
+        $("#org_business_time").val(timeshow);
339
+    });
340
+
341
+    Qiniu.uploader({
342
+        runtimes: "html5,flash,html4",
343
+        browse_button: "org_pic_uploader",
344
+        uptoken: uptoken,
345
+        domain: "https://images.shengws.com/",
346
+        max_file_size: "4mb",
347
+        flash_swf_url: "/static/js/qiniu/Moxie.swf",
348
+        dragdrop: false,
349
+        auto_start: true,
350
+        unique_names: false,
351
+        save_key: false,
352
+        max_retries: 3,
353
+        multi_selection: false,
354
+        filters: {
355
+            mime_types: [{
356
+                title: "Image files",
357
+                extensions: "jpg,jpeg,png"
358
+            }]
359
+        },
360
+
361
+        init: {
362
+            "FileUploaded": function(up, file, info) {
363
+                // info 为 json,格式是后台获取 token 时设置的 ReturnBody
364
+                var domain = up.getOption("domain");
365
+                var infoObj = JSON.parse(info);
366
+                var url = domain + infoObj.url;
367
+                $("#org_pics_preview").append("<div class='article-cover-add border-radius'><img style='width: auto; height: 100%;' src=" + url + " /></div>");
368
+                $("#org_pics").val($("#org_pics").val() + "@@" + url);
369
+            },
370
+            "Error": function(up, err, errTip) {
371
+                console.log("上传出错:", err)
372
+            },
373
+            "UploadComplete": function() {
374
+                console.log("队列文件处理完毕后,处理相关的事情");
375
+            },
376
+            "Key": function(up, file) {
377
+                console.log("自定义上传文件名");
378
+                var rand = Math.floor(Math.random() * 1000000000)
379
+                var date = new Date()
380
+                var ext = Qiniu.getFileExtension(file.name);
381
+                var key = date.getFullYear() + "/" + (date.getMonth() + 1) + "/" + date.getDate() + "/" + "org_pic_" + rand + "." + ext;
382
+                console.log(key);
383
+                return key;
384
+            }
385
+        }
386
+    });
387
+});
388
+
389
+function checkInfoFull(ue) {
390
+    if ($("#org_name").val().length == 0) {
391
+        return "请填写机构名称";
392
+    }
393
+    if ($("#org_short_name").val().length == 0) {
394
+        return "请填写机构简称";
395
+    }
396
+    var intro = ue.getContent();
397
+    console.log(intro);
398
+    if (intro.length == 0) {
399
+        return "请填写机构介绍";
400
+    }
401
+    if ($("#avatar_preview_img")[0].src.length == 0) {
402
+        return "请上传机构头像";
403
+    }
404
+    if ($("#province_select option:selected").val() == "0") {
405
+        return "请选择省份";
406
+    }
407
+    if ($("#city_select option:selected").val() == "0") {
408
+        return "请选择城市";
409
+    }
410
+    if ($("#district_select option:selected").val() == "0") {
411
+        return "请选择区县";
412
+    }
413
+    if ($("#address").val().length == 0) {
414
+        return "请填写地址";
415
+    }
416
+    var selectIll = false;
417
+    $("input[name='ill_checkbox']:checkbox:checked").each(function(){ 
418
+        selectIll = true;
419
+        return false;
420
+    });
421
+    if (selectIll == false) {
422
+        return "请选择服务病种";
423
+    }
424
+    if ($("#org_category").val().length == 0 || $("#org_category").val() == "0") {
425
+        return "请选择机构类型";
426
+    }
427
+    if ($("#org_phone").val().length > 0) {
428
+        if (/^(\d{3,4}-?\d{7,8}$)|(1\d{10}$)/.test($("#org_phone").val()) == false) {
429
+            return "请填写正确的机构电话";
430
+        }
431
+    }
432
+    return "";
433
+}
434
+
435
+function doFail(res) {
436
+    serverErrorMsg(res);
437
+}

+ 121 - 0
views/new_main/create_org.html Ver fichero

@@ -0,0 +1,121 @@
1
+<!DOCTYPE html>
2
+<html>
3
+
4
+<head>
5
+    <meta charset="utf-8" />
6
+    <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
7
+    <meta name="renderer" content="webkit" />
8
+    <title>酷医云</title>
9
+    <meta name="keywords" content="酷医,酷医云,酷医聚客,病人关系管理,微信管理平台,肾病科宣,慢病管理云平台,SCRM,SPRM,血透管理,科室品牌推广" />
10
+    <meta name="description" content="医院管理系统" />
11
+    <link href="/static/css/bootstrap.min.css?v=3.4.0" rel="stylesheet" />
12
+    <link href="/static/font-awesome/css/font-awesome.css?v=4.3.0" rel="stylesheet" />
13
+    <link href="/static/css/old_style.css?v=1.0.0" rel="stylesheet">
14
+    <link href="/static/iconfont/iconfont.css?v=4.0.0" rel="stylesheet">
15
+    
16
+</head>
17
+
18
+<body>
19
+    <div class="home_content">
20
+        <div class="head white-bg clearfix">
21
+            <div class="logo fl">
22
+                <a href="/">
23
+                    <img src="/static/images/logo.jpg" alt="" />
24
+                </a>
25
+            </div>
26
+            <div class="TheUser fr ">
27
+                <div class="userData fl">
28
+                    <img src="{{.avatar}}" alt="头像" />
29
+                    <span>{{.user_name}}</span>
30
+                </div>
31
+                <div class="LogOut fl">
32
+                    <i class="icon iconfont icon-logout"></i>
33
+                    <a href="/logout">退出</a>
34
+                </div>
35
+            </div>
36
+        </div>
37
+        <!-- 完善机构信息 -->
38
+        <div class="stewardMsg">
39
+            <h2 class="stewardMsg_tit">机构信息</h2>
40
+            <div class="steward_content">
41
+                <p class="tips">以下信息是对外品牌展示的主要内容,请认真填写,后续可以在账号设置中修改。</p>
42
+                <div class="cell clearfix">
43
+                    <label class="cell_tit fl">机构名称</label>
44
+                    <input id="org_name" type="text" class="cell_input" maxlength="50" />
45
+                </div>
46
+                <div class="cell clearfix">
47
+                    <label class="cell_tit fl">机构简称</label>
48
+                    <input id="org_short_name" type="text" class="cell_input" maxlength="20" />
49
+                </div>
50
+                <div class="cell clearfix">
51
+                    <label class="cell_tit fl">机构类型</label>
52
+                    <div class="city fl">
53
+                        <div class="citySelect border-radius fl">
54
+                            <select id="cat_p_select">
55
+                                <option value="0">类型</option>
56
+                                {{range .categories}}
57
+                                <option value="{{.ID}}">{{.ShortName}}</option>
58
+                                {{end}}
59
+                            </select>
60
+                        </div>
61
+                        <div class="citySelect border-radius fl" style="display: none;">
62
+                            <select id="cat_c_select">
63
+                                <option value="0">详细类型</option>
64
+                            </select>
65
+                        </div>
66
+                        <input id="org_category" type="hidden" value="0">
67
+                    </div>
68
+                </div>
69
+                <div class="cell clearfix">
70
+                    <label class="cell_tit fl">机构地址</label>
71
+                    <div class="city fl">
72
+                        <div class="citySelect border-radius fl">
73
+                            <select id="province_select">
74
+                                <option value="0">省/直辖市</option>
75
+                                {{range .province}}
76
+                                <option value="{{.Id}}">{{.Name}}</option>
77
+                                {{end}}
78
+                            </select>
79
+                        </div>
80
+                        <div class="citySelect border-radius fl">
81
+                            <select id="city_select">
82
+                                <option value="0">市</option>
83
+                            </select>
84
+                        </div>
85
+                        <div class="citySelect border-radius fl">
86
+                            <select id="district_select">
87
+                                <option value="0">区/县</option>
88
+                            </select>
89
+                        </div>
90
+                        <input id="address" type="text" class="cell_input address" placeholder="请填写您的详细地址" maxlength="100" />
91
+                    </div>
92
+                </div>
93
+                <div class="cell clearfix">
94
+                    <label class="cell_tit fl">机构电话<br/>(选填)</label>
95
+                    <input id="org_phone" type="text" class="cell_input" maxlength="50" />
96
+                </div>
97
+                <div class="cell clearfix">
98
+                    <div class="cellBtn">
99
+                        <button id="submit" type="button">立即开启智慧管理之旅</button>
100
+                    </div>
101
+                </div>
102
+            </div>
103
+            <div class="footer">Copyright © 2017-2018 酷医 | 深圳市健康互动科技有限公司</div>
104
+        </div>
105
+    </div>
106
+
107
+    <script src="/static/js/jquery-2.1.1.min.js"></script>
108
+    <script src="/static/js/bootstrap.min.js?v=3.4.0"></script>
109
+    <script src="/static/js/jquery.metisMenu.js"></script>
110
+    <script src="/static/js/hplus.js?v=2.2.0"></script>
111
+    <script src="/static/js/qiniu/plugupload.full.min.js"></script>
112
+    <script src="/static/js/qiniu/qiniu.min.js"></script>
113
+    <script src="/static/js/ueditor/ueditor.config.js"></script>
114
+    <script src="/static/js/ueditor/ueditor.all.min.js"></script>
115
+    <script src="/static/js/layer.js"></script>
116
+    <script src="/static/js/md5.js"></script>
117
+    <script src="/static/js/common.js"></script>
118
+    <script src="/static/js/create_org.js?v=0.2.4"></script>
119
+</body>
120
+
121
+</html>

+ 323 - 0
views/new_main/create_org_old.html Ver fichero

@@ -0,0 +1,323 @@
1
+<!-- 19.06.03 之前的版本,需要填写很多信息 -->
2
+<!DOCTYPE html>
3
+<html>
4
+<head>
5
+    <meta charset="utf-8" />
6
+    <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" />
7
+    <meta name="renderer" content="webkit" />
8
+    <title>酷医云</title>
9
+    <meta name="keywords" content="酷医,酷医云,酷医聚客,病人关系管理,微信管理平台,肾病科宣,慢病管理云平台,SCRM,SPRM,血透管理,科室品牌推广" />
10
+    <meta name="description" content="医院管理系统" />
11
+    <link href="/static/css/bootstrap.min.css?v=3.4.0" rel="stylesheet" />
12
+    <link href="/static/font-awesome/css/font-awesome.css?v=4.3.0" rel="stylesheet" />
13
+    <link href="/static/css/old_style.css?v=1.0.0" rel="stylesheet">
14
+    <link href="/static/iconfont/iconfont.css?v=4.0.0" rel="stylesheet">
15
+    
16
+</head>
17
+
18
+<body>
19
+    <div class="home_content">
20
+        <div class="head white-bg clearfix">
21
+            <div class="logo fl">
22
+                <a href="/">
23
+                    <img src="/static/images/logo.jpg" alt="" />
24
+                    <!-- <span>酷医</span> -->
25
+                </a>
26
+            </div>
27
+            <div class="TheUser fr ">
28
+                <div class="userData fl">
29
+                    <img src="{{.avatar}}" alt="头像" />
30
+                    <span>{{.user_name}}</span>
31
+                </div>
32
+                <div class="LogOut fl">
33
+                    <!-- <i class="icon iconfont icon-logout"></i> -->
34
+                    <i class="icon iconfont icon-logout"></i>
35
+                    <a href="/logout">退出</a>
36
+                </div>
37
+            </div>
38
+        </div>
39
+        <!-- 完善机构信息 -->
40
+        <div class="stewardMsg">
41
+            <h2 class="stewardMsg_tit">机构信息</h2>
42
+            <div class="steward_content">
43
+                <p class="tips">以下信息是对外品牌展示的主要内容,请认真填写,后续可以在账号设置中修改。</p>
44
+                <div class="cell clearfix">
45
+                    <label class="cell_tit fl">机构名称</label>
46
+                    <input id="org_name" type="text" class="cell_input" maxlength="50" />
47
+                </div>
48
+                <div class="cell clearfix">
49
+                    <label class="cell_tit fl">机构简称</label>
50
+                    <input id="org_short_name" type="text" class="cell_input" maxlength="20" />
51
+                </div>
52
+                <div class="cell clearfix">
53
+                    <label class="cell_tit fl">机构介绍</label>
54
+                    <script id="editor" class="fl" type="text/plain"></script>
55
+                </div>
56
+                <div class="cell clearfix">
57
+                    <label class="cell_tit fl">机构头像</label>
58
+                    <div class="article-cover">
59
+                        <div class="article-cover-images">
60
+                            <div id="avatar_preview_panel" class="article-cover-add border-radius">
61
+                                <img id="avatar_preview_img" style="width: auto; height: 100%;" />
62
+                            </div>
63
+                            <div id="avatar_upload" class="article-cover-add border-radius">
64
+                                <i type="add" class="iconfont icon-add "></i>
65
+                                <span>上传头像</span>
66
+                            </div>
67
+                            <!-- <div class="article-cover-img-wrap">
68
+                                <img alt="cover" src="https://p3.pstatp.com/list/pgc-image/1524796153259ed11ebf8e9" />
69
+                                <span class="change">示例</span>
70
+                            </div> -->
71
+                            <input id="avatar_file" type="file" accept="image/png,image/jpg,image/jpeg" style="display: none;" />
72
+                        </div>
73
+                        <div class="article-cover-tip">
74
+                            目前支持PNG和JPG格式,图片大小不能超过300K
75
+                        </div>
76
+                    </div>
77
+                </div>
78
+                <div class="cell clearfix">
79
+                    <label class="cell_tit fl">机构类型</label>
80
+                    <div class="city fl">
81
+                        <div class="citySelect border-radius fl">
82
+                            <select id="cat_p_select">
83
+                                <option value="0">类型</option>
84
+                                {{range .categories}}
85
+                                <option value="{{.ID}}">{{.ShortName}}</option>
86
+                                {{end}}
87
+                            </select>
88
+                        </div>
89
+                        <div class="citySelect border-radius fl" style="display: none;">
90
+                            <select id="cat_c_select">
91
+                                <option value="0">详细类型</option>
92
+                            </select>
93
+                        </div>
94
+                        <input id="org_category" type="hidden" value="0">
95
+                    </div>
96
+                </div>
97
+                <div class="cell clearfix">
98
+                    <label class="cell_tit fl">机构地址</label>
99
+                    <div class="city fl">
100
+                        <div class="citySelect border-radius fl">
101
+                            <select id="province_select">
102
+                                <option value="0">省/直辖市</option>
103
+                                {{range .province}}
104
+                                <option value="{{.Id}}">{{.Name}}</option>
105
+                                {{end}}
106
+                            </select>
107
+                        </div>
108
+                        <div class="citySelect border-radius fl">
109
+                            <select id="city_select">
110
+                                <option value="0">市</option>
111
+                            </select>
112
+                        </div>
113
+                        <div class="citySelect border-radius fl">
114
+                            <select id="district_select">
115
+                                <option value="0">区/县</option>
116
+                            </select>
117
+                        </div>
118
+                        <input id="address" type="text" class="cell_input address" placeholder="请填写您的详细地址" maxlength="100" />
119
+                    </div>
120
+                </div>
121
+                <div class="cell clearfix">
122
+                    <label class="cell_tit fl">服务病种</label>
123
+                    <div class="Checkbox fl">
124
+                        {{range .illness}}
125
+                        <div class="opt">
126
+                            <input class="magic-checkbox" type="checkbox" name="ill_checkbox" value="{{.Id}}" id="c{{.Id}}" />
127
+                            <label for="c{{.Id}}">{{.IllnessName}}</label>
128
+                        </div>
129
+                        {{end}}
130
+                    </div>
131
+                </div>
132
+                <div class="cell clearfix">
133
+                    <label class="cell_tit fl">机构电话<br/>(选填)</label>
134
+                    <input id="org_phone" type="text" class="cell_input" maxlength="50" />
135
+                </div>
136
+                <div class="cell clearfix">
137
+                    <label class="cell_tit fl">营业时间<br/>(选填)</label>
138
+                    <input id="org_business_week" type="text" class="cell_input" style="width: 250px;" readonly />
139
+                    <input id="org_business_time" type="text" class="cell_input" style="width: 250px;" readonly />
140
+                </div>
141
+                <div class="cell clearfix">
142
+                    <label class="cell_tit fl"></label>
143
+                    <div class="Checkbox fl">
144
+                        <div class="opt" style="margin: 0 10px 15px 0;">
145
+                            <input class="magic-checkbox" type="checkbox" name="week_checkbox" value="0" id="weekc_0" data-name='星期一' data-id="0"/>
146
+                            <label for="weekc_0">星期一</label>
147
+                        </div>
148
+                        <div class="opt" style="margin: 0 10px 15px 0;">
149
+                            <input class="magic-checkbox" type="checkbox" name="week_checkbox" value="0" id="weekc_1" data-name='星期二' data-id="1"/>
150
+                            <label for="weekc_1">星期二</label>
151
+                        </div>
152
+                        <div class="opt" style="margin: 0 10px 15px 0;">
153
+                            <input class="magic-checkbox" type="checkbox" name="week_checkbox" value="0" id="weekc_2" data-name='星期三' data-id="2" />
154
+                            <label for="weekc_2">星期三</label>
155
+                        </div>
156
+                        <div class="opt" style="margin: 0 10px 15px 0;">
157
+                            <input class="magic-checkbox" type="checkbox" name="week_checkbox" value="0" id="weekc_3" data-name='星期四' data-id="3" />
158
+                            <label for="weekc_3">星期四</label>
159
+                        </div>
160
+                        <div class="opt" style="margin: 0 10px 15px 0;">
161
+                            <input class="magic-checkbox" type="checkbox" name="week_checkbox" value="0" id="weekc_4" data-name='星期五' data-id="4" />
162
+                            <label for="weekc_4">星期五</label>
163
+                        </div>
164
+                        <div class="opt" style="margin: 0 10px 15px 0;">
165
+                            <input class="magic-checkbox" type="checkbox" name="week_checkbox" value="0" id="weekc_5" data-name='星期六' data-id="5" />
166
+                            <label for="weekc_5">星期六</label>
167
+                        </div>
168
+                        <div class="opt" style="margin: 0 10px 15px 0;">
169
+                            <input class="magic-checkbox" type="checkbox" name="week_checkbox" value="0" id="weekc_6" data-name='星期日' data-id="6" />
170
+                            <label for="weekc_6">星期日</label>
171
+                        </div>
172
+                    </div>
173
+                    <div class="city fl">
174
+                        <label for="BusinessTimeRadioShang_1" style="vertical-align:middle; text-align: center;">
175
+                            <input type="radio" value="1:00" data-time="1:00" name="time_checkbox_s" id="BusinessTimeRadioShang_1">
176
+                            <span>1:00</span>
177
+                        </label>&nbsp;&nbsp;
178
+                        <label for="BusinessTimeRadioShang_2">
179
+                            <input type="radio" value="2:00" data-time="2:00" name="time_checkbox_s" id="BusinessTimeRadioShang_2">
180
+                            <span>2:00</span>
181
+                        </label>&nbsp;&nbsp;
182
+                        <label for="BusinessTimeRadioShang_3">
183
+                            <input type="radio" value="3:00" data-time="3:00" name="time_checkbox_s" id="BusinessTimeRadioShang_3">
184
+                            <span>3:00</span>
185
+                        </label>&nbsp;&nbsp;
186
+                        <label for="BusinessTimeRadioShang_4">
187
+                            <input type="radio" value="4:00" data-time="4:00" name="time_checkbox_s" id="BusinessTimeRadioShang_4">
188
+                            <span>4:00</span>
189
+                        </label>&nbsp;&nbsp;
190
+                        <label for="BusinessTimeRadioShang_5">
191
+                            <input type="radio" value="5:00" data-time="5:00" name="time_checkbox_s" id="BusinessTimeRadioShang_5">
192
+                            <span>5:00</span>
193
+                        </label>&nbsp;&nbsp;
194
+                        <label for="BusinessTimeRadioShang_6">
195
+                            <input type="radio" value="6:00" data-time="6:00" name="time_checkbox_s" id="BusinessTimeRadioShang_6">
196
+                            <span>6:00</span>
197
+                        </label>&nbsp;&nbsp;
198
+                        <label for="BusinessTimeRadioShang_7">
199
+                            <input type="radio" value="7:00" data-time="7:00" name="time_checkbox_s" id="BusinessTimeRadioShang_7">
200
+                            <span>7:00</span>
201
+                        </label>&nbsp;&nbsp;
202
+                        <label for="BusinessTimeRadioShang_8">
203
+                            <input type="radio" value="8:00" data-time="8:00" name="time_checkbox_s" id="BusinessTimeRadioShang_8">
204
+                            <span>8:00</span>
205
+                        </label>&nbsp;&nbsp;
206
+                        <label for="BusinessTimeRadioShang_9">
207
+                            <input type="radio" value="9:00" data-time="9:00" name="time_checkbox_s" id="BusinessTimeRadioShang_9">
208
+                            <span>9:00</span>
209
+                        </label>&nbsp;&nbsp;
210
+                        <label for="BusinessTimeRadioShang_10">
211
+                            <input type="radio" value="10:00" data-time="10:00" name="time_checkbox_s" id="BusinessTimeRadioShang_10">
212
+                            <span>10:00</span>
213
+                        </label>&nbsp;&nbsp;
214
+                        <label for="BusinessTimeRadioShang_11">
215
+                            <input type="radio" value="11:00" data-time="11:00" name="time_checkbox_s" id="BusinessTimeRadioShang_11">
216
+                            <span>11:00</span>
217
+                        </label>&nbsp;&nbsp;
218
+                        <label for="BusinessTimeRadioShang_12">
219
+                            <input type="radio" value="12:00" data-time="12:00" name="time_checkbox_s" id="BusinessTimeRadioShang_12">
220
+                            <span>12:00</span>
221
+                        </label>
222
+                    </div>
223
+                    <label class="cell_tit fl"></label>
224
+                    <div class="city fl">
225
+                        <label for="BusinessTimeRadioXia_1" style="vertical-align:middle; text-align: center;">
226
+                            <input type="radio" value="13:00" data-time="13:00" name="time_checkbox_x" id="BusinessTimeRadioXia_1">
227
+                            <span>13:00</span>
228
+                        </label>&nbsp;&nbsp;
229
+                        <label for="BusinessTimeRadioXia_2">
230
+                            <input type="radio" value="14:00" data-time="14:00" name="time_checkbox_x" id="BusinessTimeRadioXia_2">
231
+                            <span>14:00</span>
232
+                        </label>&nbsp;&nbsp;
233
+                        <label for="BusinessTimeRadioXia_3">
234
+                            <input type="radio" value="15:00" data-time="15:00" name="time_checkbox_x" id="BusinessTimeRadioXia_3">
235
+                            <span>15:00</span>
236
+                        </label>&nbsp;&nbsp;
237
+                        <label for="BusinessTimeRadioXia_4">
238
+                            <input type="radio" value="16:00" data-time="16:00" name="time_checkbox_x" id="BusinessTimeRadioXia_4">
239
+                            <span>16:00</span>
240
+                        </label>&nbsp;&nbsp;
241
+                        <label for="BusinessTimeRadioXia_5">
242
+                            <input type="radio" value="17:00" data-time="17:00" name="time_checkbox_x" id="BusinessTimeRadioXia_5">
243
+                            <span>17:00</span>
244
+                        </label>&nbsp;&nbsp;
245
+                        <label for="BusinessTimeRadioXia_6">
246
+                            <input type="radio" value="18:00" data-time="18:00" name="time_checkbox_x" id="BusinessTimeRadioXia_6">
247
+                            <span>18:00</span>
248
+                        </label>&nbsp;&nbsp;
249
+                        <label for="BusinessTimeRadioXia_7">
250
+                            <input type="radio" value="19:00" data-time="19:00" name="time_checkbox_x" id="BusinessTimeRadioXia_7">
251
+                            <span>19:00</span>
252
+                        </label>&nbsp;&nbsp;
253
+                        <label for="BusinessTimeRadioXia_8">
254
+                            <input type="radio" value="20:00" data-time="20:00" name="time_checkbox_x" id="BusinessTimeRadioXia_8">
255
+                            <span>20:00</span>
256
+                        </label>&nbsp;&nbsp;
257
+                        <label for="BusinessTimeRadioXia_9">
258
+                            <input type="radio" value="21:00" data-time="21:00" name="time_checkbox_x" id="BusinessTimeRadioXia_9">
259
+                            <span>21:00</span>
260
+                        </label>&nbsp;&nbsp;
261
+                        <label for="BusinessTimeRadioXia_10">
262
+                            <input type="radio" value="22:00" data-time="22:00" name="time_checkbox_x" id="BusinessTimeRadioXia_10">
263
+                            <span>22:00</span>
264
+                        </label>&nbsp;&nbsp;
265
+                        <label for="BusinessTimeRadioXia_11">
266
+                            <input type="radio" value="23:00" data-time="23:00" name="time_checkbox_x" id="BusinessTimeRadioXia_11">
267
+                            <span>23:00</span>
268
+                        </label>&nbsp;&nbsp;
269
+                        <label for="BusinessTimeRadioXia_12">
270
+                            <input type="radio" value="24:00" data-time="24:00" name="time_checkbox_x" id="BusinessTimeRadioXia_12">
271
+                            <span>24:00</span>
272
+                        </label>
273
+                    </div>
274
+                </div>
275
+                <div class="cell clearfix">
276
+                    <label class="cell_tit fl">营业状态<br/>(选填)</label>
277
+                    <input type="radio" name="org_business_state" maxlength="50" value="1" readonly style="display: inline-block; width: 20px; height: 20px; margin: 6px 0 0 0;" checked="checked" />
278
+                    <label style="vertical-align:middle; text-align: center; margin-right: 20px; font-size: 15px; margin-top: 2px;">正在营业</label>
279
+
280
+                    <input type="radio" name="org_business_state" maxlength="50" value="0" readonly style="display: inline-block; width: 20px; height: 20px; margin: 6px 0 0 0;" />
281
+                    <label style="vertical-align:middle; text-align: center; font-size: 15px; margin-top: 2px;">暂未营业</label>
282
+                </div>
283
+                <div class="cell clearfix">
284
+                    <label class="cell_tit fl">机构图册<br/>(选填)</label>
285
+                    <div class="Checkbox fl">
286
+                        <div id="org_pics_preview" class="article-cover-images">
287
+                            <div id="org_pic_uploader" class="article-cover-add border-radius">
288
+                                <i type="add" class="iconfont icon-add "></i>
289
+                                <span>上传图册</span>
290
+                            </div>
291
+                            <!-- <div class="article-cover-add border-radius">
292
+                                <img style="width: auto; height: 100%;" src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1534862678801&di=fe51b2fffb6b5d3c06f50dd5905481de&imgtype=0&src=http%3A%2F%2Fwww.cssxt.com%2Fuploadfile%2F2017%2F1208%2F20171208110834538.jpg" />
293
+                            </div> -->
294
+                        </div>
295
+                        <input id="org_pics" type="hidden" value="">
296
+                    </div>
297
+                </div>
298
+                <div class="cell clearfix">
299
+                    <div class="cellBtn">
300
+                        <button id="submit" type="button">立即开启智慧管理之旅</button>
301
+                    </div>
302
+                </div>
303
+            </div>
304
+            <div class="footer">Copyright © 2017-2018 酷医 | 深圳市健康互动科技有限公司</div>
305
+        </div>
306
+    </div>
307
+
308
+    <script src="/static/js/jquery-2.1.1.min.js"></script>
309
+    <script src="/static/js/bootstrap.min.js?v=3.4.0"></script>
310
+    <script src="/static/js/jquery.metisMenu.js"></script>
311
+    <script src="/static/js/hplus.js?v=2.2.0"></script>
312
+    <script src="/static/js/qiniu/plugupload.full.min.js"></script>
313
+    <script src="/static/js/qiniu/qiniu.min.js"></script>
314
+    <script src="/static/js/ueditor/ueditor.config.js"></script>
315
+    <script src="/static/js/ueditor/ueditor.all.min.js"></script>
316
+    <!-- <script src="/static/js/public.js"></script> -->
317
+    <script src="/static/js/layer.js"></script>
318
+    <script src="/static/js/md5.js"></script>
319
+    <script src="/static/js/common.js"></script>
320
+    <script src="/static/js/create_org.js?v=0.2.3"></script>
321
+</body>
322
+
323
+</html>

+ 27 - 19
views/new_main/manage_app.html Ver fichero

@@ -35,25 +35,7 @@
35 35
         <h2 class="name">请选择适合您的应用</h2>
36 36
         <div class="apply-content">
37 37
             <ul>
38
-                <li>
39
-                    <a href="{{.submodule_domain_patient_manage}}">
40
-                        <img src="/static/images/apply-1.jpg" alt="">
41
-                        <span class="join"> 进入应用 ></span>
42
-                        <h3 class="title">
43
-                            SCRM</h3>
44
-                        <P class="txt">SCRM是社会化病人关系管理系统,是基于移动社交时代全新营销模 式下的病人关系管理系统。以病人为中心, 通过获取、留存、活跃、洞悉、营销和服务
45
-                            六大手段,帮助品牌建立与消费者坚实有效的关系,提升个性化营销能力,有效挖掘用 户价值并推进价值转化。</P>
46
-                    </a>
47
-                </li>
48
-                <li>
49
-                    <a href="{{.submodule_domain_mall_manage}}">
50
-                        <img src="/static/images/apply-2.jpg" alt="">
51
-                        <span class="join"> 进入应用 ></span>
52
-                        <h3 class="title">
53
-                            微商城</h3>
54
-                        <P class="txt">微商城是为肾病服务机构定制的O2O商城,帮助机构实现电商业务,实现线上销售、线下服务的模式,提升销量。也可用于产品/服务的展示和传播。</P>
55
-                    </a>
56
-                </li>
38
+                {{ if .xt_role_exist }}
57 39
                 <li>
58 40
                     <a href="{{.submodule_domain_dialysis_manage}}">
59 41
                         <img src="/static/images/apply-3.jpg" alt="">
@@ -65,6 +47,8 @@
65 47
                         </P>
66 48
                     </a>
67 49
                 </li>
50
+                {{ end }}
51
+                {{ if .cdm_role_exist }}
68 52
                 <li>
69 53
                     <a href="{{.submodule_domain_cdm_manage}}">
70 54
                         <img src="/static/images/apply-4.jpg" alt="">
@@ -77,6 +61,30 @@
77 61
                         </P>
78 62
                     </a>
79 63
                 </li>
64
+                {{ end }}
65
+                {{ if .scrm_role_exist }}
66
+                <li>
67
+                    <a href="{{.submodule_domain_patient_manage}}">
68
+                        <img src="/static/images/apply-1.jpg" alt="">
69
+                        <span class="join"> 进入应用 ></span>
70
+                        <h3 class="title">
71
+                            SCRM</h3>
72
+                        <P class="txt">SCRM是社会化病人关系管理系统,是基于移动社交时代全新营销模 式下的病人关系管理系统。以病人为中心, 通过获取、留存、活跃、洞悉、营销和服务
73
+                            六大手段,帮助品牌建立与消费者坚实有效的关系,提升个性化营销能力,有效挖掘用 户价值并推进价值转化。</P>
74
+                    </a>
75
+                </li>
76
+                {{ end }}
77
+                {{ if .mall_role_exist }}
78
+                <li>
79
+                    <a href="{{.submodule_domain_mall_manage}}">
80
+                        <img src="/static/images/apply-2.jpg" alt="">
81
+                        <span class="join"> 进入应用 ></span>
82
+                        <h3 class="title">
83
+                            微商城</h3>
84
+                        <P class="txt">微商城是为肾病服务机构定制的O2O商城,帮助机构实现电商业务,实现线上销售、线下服务的模式,提升销量。也可用于产品/服务的展示和传播。</P>
85
+                    </a>
86
+                </li>
87
+                {{ end }}
80 88
             </ul>
81 89
         </div>
82 90
         <div class="join-right">Copyright © 2016-2018 圣卫士·酷医云</div>

+ 85 - 0
views/new_main/manage_app_old.html Ver fichero

@@ -0,0 +1,85 @@
1
+<!DOCTYPE html>
2
+<html lang="zh">
3
+
4
+<head>
5
+    <meta name="keywords" content="酷医,酷医云,酷医聚客,病人关系管理,微信管理平台,肾病科宣,慢病管理云平台,SCRM,SPRM,血透管理,科室品牌推广">
6
+    <meta name="description" content="酷医云,是专为肾科和血透中心研发的永久免费血透管理平台,覆盖诊前、诊中、诊后全流程管理;为血透中心提供覆盖智能营销管理、分销商城、血透管理、慢病管理、医患沟通、进销存管理以及采购商城等全流程一体化的管理平台。全国数百家血透中心信赖的选择。">
7
+    <meta charset="UTF-8">
8
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
10
+    <title>酷医云-让服务有温度</title>
11
+    <link rel="stylesheet" href="/static/css/style.css?v=4.0.0" media="screen">
12
+    <link rel="stylesheet" href="/static/css/index.css?v=4.0.1" media="screen">
13
+    <link href="/static/css/bootstrap.min.css?v=4.0.0" rel="stylesheet">
14
+    <link href="/static/css/font-awesome.min.css?v=4.0.0" rel="stylesheet" media="all">
15
+    <link href="/static/css/animate.min.css?v=4.0.0" rel="stylesheet" media="all">
16
+    <!-- Bootstrap bootstrap-touch-slider Slider Main Style Sheet -->
17
+    <link href="/static/css/bootstrap-touch-slider.css?v=4.0.0" rel="stylesheet" media="all">
18
+    <link href="/static/css/bootsnav.css?v=4.0.0" rel="stylesheet" media="all">
19
+    <link href="/static/css/zzsc-demo.css?v=4.0.0" rel="stylesheet" media="all">
20
+</head>
21
+
22
+<body>
23
+    <div class="phptpl-header">
24
+        <div class="header-container header-join" >
25
+            <a class="logo"></a>
26
+
27
+            <div class="login-statu">
28
+                <img src="{{.avatar}}" alt="">
29
+                <span class="name">{{.user_name}}</span>
30
+                <span class="out" onclick="window.location.href='/logout'">退出</span>
31
+            </div>
32
+        </div>
33
+    </div>
34
+    <div class="apply-box">
35
+        <h2 class="name">请选择适合您的应用</h2>
36
+        <div class="apply-content">
37
+            <ul>
38
+                <li>
39
+                    <a href="{{.submodule_domain_patient_manage}}">
40
+                        <img src="/static/images/apply-1.jpg" alt="">
41
+                        <span class="join"> 进入应用 ></span>
42
+                        <h3 class="title">
43
+                            SCRM</h3>
44
+                        <P class="txt">SCRM是社会化病人关系管理系统,是基于移动社交时代全新营销模 式下的病人关系管理系统。以病人为中心, 通过获取、留存、活跃、洞悉、营销和服务
45
+                            六大手段,帮助品牌建立与消费者坚实有效的关系,提升个性化营销能力,有效挖掘用 户价值并推进价值转化。</P>
46
+                    </a>
47
+                </li>
48
+                <li>
49
+                    <a href="{{.submodule_domain_mall_manage}}">
50
+                        <img src="/static/images/apply-2.jpg" alt="">
51
+                        <span class="join"> 进入应用 ></span>
52
+                        <h3 class="title">
53
+                            微商城</h3>
54
+                        <P class="txt">微商城是为肾病服务机构定制的O2O商城,帮助机构实现电商业务,实现线上销售、线下服务的模式,提升销量。也可用于产品/服务的展示和传播。</P>
55
+                    </a>
56
+                </li>
57
+                <li>
58
+                    <a href="{{.submodule_domain_dialysis_manage}}">
59
+                        <img src="/static/images/apply-3.jpg" alt="">
60
+                        <span class="join"> 进入应用 ></span>
61
+                        <h3 class="title">
62
+                            血透管理</h3>
63
+                        <P class="txt">
64
+                            血透管理是基于血透临床应用标准流程研发的血透管理协作平台,用全新的互联网、云技术和友好的用户体验,为血液透析中心提供透前、透中、透后全过程协作支撑,实现无纸化、数字化和规范化的管理,提升血透中心管理水平,改善病人就医体验。
65
+                        </P>
66
+                    </a>
67
+                </li>
68
+                <li>
69
+                    <a href="{{.submodule_domain_cdm_manage}}">
70
+                        <img src="/static/images/apply-4.jpg" alt="">
71
+                        <span class="join"> 进入应用 ></span>
72
+
73
+                        <h3 class="title">
74
+                            慢病管理</h3>
75
+                        <P class="txt">
76
+                            专注于慢性肾脏病管理,为肾内科、血液透析中心、肾病医院、肾科医生集团、肾科医生工作室等提供完整的慢病管理系统。通过智能医疗设备+移动互联网+大数据+人工智能结合,实现互联网+的全程慢病管理模式。
77
+                        </P>
78
+                    </a>
79
+                </li>
80
+            </ul>
81
+        </div>
82
+        <div class="join-right">Copyright © 2016-2018 圣卫士·酷医云</div>
83
+    </div>
84
+</body>
85
+</html>