├── CNAME ├── README.md ├── docs ├── CNAME ├── index.html ├── toc │ ├── css │ │ ├── demo.css │ │ └── zTreeStyle │ │ │ ├── img │ │ │ ├── diy │ │ │ │ ├── 1_close.png │ │ │ │ ├── 1_open.png │ │ │ │ ├── 2.png │ │ │ │ ├── 3.png │ │ │ │ ├── 4.png │ │ │ │ ├── 5.png │ │ │ │ ├── 6.png │ │ │ │ ├── 7.png │ │ │ │ ├── 8.png │ │ │ │ └── 9.png │ │ │ ├── line_conn.gif │ │ │ ├── loading.gif │ │ │ ├── zTreeStandard.gif │ │ │ └── zTreeStandard.png │ │ │ └── zTreeStyle.css │ ├── js │ │ ├── jquery-1.4.4.min.js │ │ ├── jquery.ztree.all-3.5.min.js │ │ ├── ztree_toc.js │ │ └── ztree_toc.min.js │ └── style │ │ ├── Clearness Dark.css │ │ ├── Clearness.css │ │ ├── GitHub.css │ │ ├── GitHub2.css │ │ ├── github-bf51422f4bb36427d391e4b75a1daa083c2d840e.css │ │ ├── github2-d731afd4f624c99a4b19ad69f3083cd6d02b81d5.css │ │ └── makedownpad.css └── toc_conf.js └── package.json /CNAME: -------------------------------------------------------------------------------- 1 | shopapi.lipengzhou.com 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 电商管理后台 API 接口文档 2 | 3 | ## API V1 接口说明 4 | 5 | - 接口基准地址:`http://localhost:8888/api/private/v1/` 6 | - 服务端已开启 CORS 跨域支持 7 | - API V1 认证统一使用 Token 认证 8 | - 需要授权的 API ,必须在请求头中使用 `Authorization` 字段提供 `token` 令牌 9 | - 使用 HTTP Status Code 标识状态 10 | - 数据返回格式统一使用 JSON 11 | 12 | ### 支持的请求方法 13 | 14 | - GET(SELECT):从服务器取出资源(一项或多项)。 15 | - POST(CREATE):在服务器新建一个资源。 16 | - PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。 17 | - PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。 18 | - DELETE(DELETE):从服务器删除资源。 19 | - HEAD:获取资源的元数据。 20 | - OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。 21 | 22 | ### 通用返回状态说明 23 | 24 | | *状态码* | *含义* | *说明* | 25 | |----------|-----------------------|-----------------------------------------------------| 26 | | 200 | OK | 请求成功 | 27 | | 201 | CREATED | 创建成功 | 28 | | 204 | DELETED | 删除成功 | 29 | | 400 | BAD REQUEST | 请求的地址不存在或者包含不支持的参数 | 30 | | 401 | UNAUTHORIZED | 未授权 | 31 | | 403 | FORBIDDEN | 被禁止访问 | 32 | | 404 | NOT FOUND | 请求的资源不存在 | 33 | | 422 | Unprocesable entity | [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误 | 34 | | 500 | INTERNAL SERVER ERROR | 内部错误 | 35 | | | | | 36 | 37 | --- 38 | 39 | ## 登录 40 | 41 | ### 登录验证接口 42 | 43 | * 请求路径:login 44 | * 请求方法:post 45 | * 请求参数 46 | 47 | | 参数名 | 参数说明 | 备注 | 48 | | -------- | -------- | -------- | 49 | | username | 用户名 | 不能为空 | 50 | | password | 密码 | 不能为空 | 51 | 52 | * 响应参数 53 | 54 | | 参数名 | 参数说明 | 备注 | 55 | | -------- | ----------- | --------------- | 56 | | id | 用户 ID | | 57 | | rid | 用户角色 ID | | 58 | | username | 用户名 | | 59 | | mobile | 手机号 | | 60 | | email | 邮箱 | | 61 | | token | 令牌 | 基于 jwt 的令牌 | 62 | 63 | * 响应数据 64 | 65 | ```javascript 66 | { 67 | "data": { 68 | "id": 500, 69 | "rid": 0, 70 | "username": "admin", 71 | "mobile": "123", 72 | "email": "123@qq.com", 73 | "token": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1MTI1NDQyOTksImV4cCI6MTUxMjYzMDY5OX0.eGrsrvwHm-tPsO9r_pxHIQ5i5L1kX9RX444uwnRGaIM" 74 | }, 75 | "meta": { 76 | "msg": "登录成功", 77 | "status": 200 78 | } 79 | } 80 | ``` 81 | 82 | ## 用户管理 83 | 84 | ### 用户数据列表 85 | 86 | * 请求路径:users 87 | * 请求方法:get 88 | * 请求参数 89 | 90 | | 参数名 | 参数说明 | 备注 | 91 | | -------- | ------------ | -------- | 92 | | query | 查询参数 | 可以为空 | 93 | | pagenum | 当前页码 | 不能为空 | 94 | | pagesize | 每页显示条数 | 不能为空 | 95 | 96 | * 响应参数 97 | 98 | | 参数名 | 参数说明 | 备注 | 99 | | --------- | ------------ | ---- | 100 | | totalpage | 总记录数 | | 101 | | pagenum | 当前页码 | | 102 | | users | 用户数据集合 | | 103 | 104 | * 响应数据 105 | 106 | ```javascript 107 | { 108 | "data": { 109 | "totalpage": 5, 110 | "pagenum": 4, 111 | "users": [ 112 | { 113 | "id": 25, 114 | "username": "tige117", 115 | "mobile": "18616358651", 116 | "type": 1, 117 | "openid": "", 118 | "email": "tige112@163.com", 119 | "create_time": "2017-11-09T20:36:26.000Z", 120 | "modify_time": null, 121 | "is_delete": false, 122 | "is_active": false 123 | } 124 | ] 125 | }, 126 | "meta": { 127 | "msg": "获取成功", 128 | "status": 200 129 | } 130 | } 131 | ``` 132 | 133 | ### 添加用户 134 | 135 | * 请求路径:users 136 | * 请求方法:post 137 | * 请求参数 138 | 139 | | 参数名 | 参数说明 | 备注 | 140 | | -------- | -------- | -------- | 141 | | username | 用户名称 | 不能为空 | 142 | | password | 用户密码 | 不能为空 | 143 | | email | 邮箱 | 可以为空 | 144 | | mobile | 手机号 | 可以为空 | 145 | 146 | * 响应参数 147 | 148 | | 参数名 | 参数说明 | 备注 | 149 | | -------- | ----------- | ---- | 150 | | id | 用户 ID | | 151 | | rid | 用户角色 ID | | 152 | | username | 用户名 | | 153 | | mobile | 手机号 | | 154 | | email | 邮箱 | | 155 | 156 | * 响应数据 157 | 158 | ```javascript 159 | { 160 | "data": { 161 | "id": 28, 162 | "username": "tige1200", 163 | "mobile": "test", 164 | "type": 1, 165 | "openid": "", 166 | "email": "test@test.com", 167 | "create_time": "2017-11-10T03:47:13.533Z", 168 | "modify_time": null, 169 | "is_delete": false, 170 | "is_active": false 171 | }, 172 | "meta": { 173 | "msg": "用户创建成功", 174 | "status": 201 175 | } 176 | } 177 | ``` 178 | 179 | ### 修改用户状态 180 | 181 | * 请求路径:users/:uId/state/:type 182 | * 请求方法:put 183 | * 请求参数 184 | 185 | | 参数名 | 参数说明 | 备注 | 186 | | ------ | -------- | ------------------------------------------- | 187 | | uId | 用户 ID | 不能为空`携带在url中` | 188 | | type | 用户状态 | 不能为空`携带在url中`,值为 true 或者 false | 189 | 190 | * 响应数据 191 | 192 | ```javascript 193 | { 194 | "data": { 195 | "id": 566, 196 | "rid": 30, 197 | "username": "admin", 198 | "mobile": "123456", 199 | "email": "bb@itcast.com", 200 | "mg_state": 0 201 | }, 202 | "meta": { 203 | "msg": "设置状态成功", 204 | "status": 200 205 | } 206 | } 207 | ``` 208 | 209 | ### 根据 ID 查询用户信息 210 | 211 | * 请求路径:users/:id 212 | * 请求方法:get 213 | * 请求参数 214 | 215 | | 参数名 | 参数说明 | 备注 | 216 | | ------ | -------- | --------------------- | 217 | | id | 用户 ID | 不能为空`携带在url中` | 218 | 219 | * 响应参数 220 | 221 | | 参数名 | 参数说明 | 备注 | 222 | | ------- | -------- | ---- | 223 | | id | 用户 ID | | 224 | | role_id | 角色 ID | | 225 | | mobile | 手机号 | | 226 | | email | 邮箱 | | 227 | 228 | * 响应数据 229 | 230 | ```javascript 231 | { 232 | "data": { 233 | "id": 503, 234 | "username": "admin3", 235 | "role_id": 0, 236 | "mobile": "00000", 237 | "email": "new@new.com" 238 | }, 239 | "meta": { 240 | "msg": "更新成功", 241 | "status": 200 242 | } 243 | } 244 | ``` 245 | 246 | ### 编辑用户提交 247 | 248 | * 请求路径:users/:id 249 | * 请求方法:put 250 | * 请求参数 251 | 252 | | 参数名 | 参数说明 | 备注 | 253 | | ------ | -------- | --------------------------- | 254 | | id | 用户 id | 不能为空 `参数是url参数:id` | 255 | | email | 邮箱 | 可以为空 | 256 | | mobile | 手机号 | 可以为空 | 257 | 258 | * 响应参数 259 | 260 | | 参数名 | 参数说明 | 备注 | 261 | | ------- | -------- | ---- | 262 | | id | 用户 ID | | 263 | | role_id | 角色 ID | | 264 | | mobile | 手机号 | | 265 | | email | 邮箱 | | 266 | 267 | * 响应数据 268 | 269 | ```javascript 270 | /* 200表示成功,500表示失败 */ 271 | { 272 | "data": { 273 | "id": 503, 274 | "username": "admin3", 275 | "role_id": 0, 276 | "mobile": "111", 277 | "email": "123@123.com" 278 | }, 279 | "meta": { 280 | "msg": "更新成功", 281 | "status": 200 282 | } 283 | } 284 | ``` 285 | 286 | ### 删除单个用户 287 | 288 | * 请求路径:users/:id 289 | * 请求方法:delete 290 | * 请求参数 291 | 292 | | 参数名 | 参数说明 | 备注 | 293 | | ------ | -------- | -------------------------- | 294 | | id | 用户 id | 不能为空`参数是url参数:id` | 295 | 296 | * 响应参数 297 | 298 | * 响应数据 299 | 300 | ```javascript 301 | { 302 | "data": null, 303 | "meta": { 304 | "msg": "删除成功", 305 | "status": 200 306 | } 307 | } 308 | ``` 309 | 310 | ### 分配用户角色 311 | 312 | * 请求路径:users/:id/role 313 | * 请求方法:put 314 | * 请求参数 315 | 316 | | 参数名 | 参数说明 | 备注 | 317 | | ------ | -------- | -------------------------- | 318 | | id | 用户 ID | 不能为空`参数是url参数:id` | 319 | | rid | 角色 id | 不能为空`参数body参数` | 320 | 321 | * 响应参数 322 | 323 | | 参数名 | 参数说明 | 备注 | 324 | | ------- | -------- | ---- | 325 | | id | 用户 ID | | 326 | | role_id | 角色 ID | | 327 | | mobile | 手机号 | | 328 | | email | 邮箱 | | 329 | 330 | * 响应数据 331 | 332 | ```javascript 333 | { 334 | "data": { 335 | "id": 508, 336 | "rid": "30", 337 | "username": "asdf1", 338 | "mobile": "123123", 339 | "email": "adfsa@qq.com" 340 | }, 341 | "meta": { 342 | "msg": "设置角色成功", 343 | "status": 200 344 | } 345 | } 346 | ``` 347 | 348 | ## 权限管理 349 | 350 | ### 所有权限列表 351 | 352 | * 请求路径:rights/:type 353 | * 请求方法:get 354 | * 请求参数 355 | 356 | | 参数名 | 参数说明 | 备注 | 357 | | ------ | -------- | ---------------------------------------------------------------------------- | 358 | | type | 类型 | 值: list 或 tree , list 列表显示权限, tree 树状显示权限,`参数是url参数:type` | 359 | 360 | * 响应参数 361 | 362 | | 参数名 | 参数说明 | 备注 | 363 | | -------- | ------------ | ---- | 364 | | id | 权限 ID | | 365 | | authName | 权限说明 | | 366 | | level | 权限层级 | | 367 | | pid | 权限父 ID | | 368 | | path | 对应访问路径 | | 369 | 370 | * 响应数据 371 | type=list 372 | 373 | ```javascript 374 | { 375 | "data": [ 376 | { 377 | "id": 101, 378 | "authName": "商品管理", 379 | "level": "0", 380 | "pid": 0, 381 | "path": null 382 | }, 383 | { 384 | "id": 102, 385 | "authName": "订单管理", 386 | "level": "0", 387 | "pid": 0, 388 | "path": null 389 | } 390 | ], 391 | "meta": { 392 | "msg": "获取权限列表成功", 393 | "status": 200 394 | } 395 | } 396 | ``` 397 | 398 | type=tree 399 | 400 | ```javascript 401 | ;[ 402 | { 403 | data: [ 404 | { 405 | id: 101, 406 | authName: '商品管理', 407 | path: null, 408 | pid: 0, 409 | children: [ 410 | { 411 | id: 104, 412 | authName: '商品列表', 413 | path: null, 414 | pid: 101, 415 | children: [ 416 | { 417 | id: 105, 418 | authName: '添加商品', 419 | path: null, 420 | pid: '104,101' 421 | } 422 | ] 423 | } 424 | ] 425 | } 426 | ], 427 | meta: { 428 | msg: '获取权限列表成功', 429 | status: 200 430 | } 431 | } 432 | ] 433 | ``` 434 | 435 | ### 左侧菜单权限 436 | 437 | * 请求路径:menus 438 | * 请求方法:get 439 | * 响应数据 440 | 441 | ```javascript 442 | { 443 | "data": 444 | { 445 | "id": 101, 446 | "authName": "商品管理", 447 | "path": null, 448 | "children": [ 449 | { 450 | "id": 104, 451 | "authName": "商品列表", 452 | "path": null, 453 | "children": [] 454 | } 455 | ] 456 | } 457 | "meta": { 458 | "msg": "获取菜单列表成功", 459 | "status": 200 460 | } 461 | } 462 | ``` 463 | 464 | ## 角色管理 465 | 466 | ### 角色列表 467 | 468 | * 请求路径:roles 469 | * 请求方法:get 470 | * 响应数据说明 471 | * 第一层为角色信息 472 | * 第二层开始为权限说明,权限一共有 3 层权限 473 | * 响应数据 474 | 475 | ```javascript 476 | { 477 | "data": [ 478 | { 479 | "id": 30, 480 | "roleName": "主管", 481 | "roleDesc": "技术负责人", 482 | "children": [ 483 | { 484 | "id": 101, 485 | "authName": "商品管理", 486 | "path": null, 487 | "children": [ 488 | { 489 | "id": 104, 490 | "authName": "商品列表", 491 | "path": null, 492 | "children": [ 493 | { 494 | "id": 105, 495 | "authName": "添加商品", 496 | "path": null 497 | } 498 | ] 499 | } 500 | ] 501 | } 502 | ] 503 | } 504 | ], 505 | "meta": { 506 | "msg": "获取成功", 507 | "status": 200 508 | } 509 | } 510 | ``` 511 | 512 | ### 添加角色 513 | 514 | * 请求路径:roles 515 | * 请求方法:post 516 | * 请求参数 517 | 518 | | 参数名 | 参数说明 | 备注 | 519 | | -------- | -------- | -------- | 520 | | roleName | 角色名称 | 不能为空 | 521 | | roleDesc | 角色描述 | 可以为空 | 522 | 523 | * 响应参数 524 | 525 | | 参数名 | 参数说明 | 备注 | 526 | | -------- | -------- | ---- | 527 | | roleId | 角色 ID | | 528 | | roleName | 角色名称 | | 529 | | roleDesc | 角色描述 | | 530 | 531 | * 响应数据 532 | 533 | ```javascript 534 | { 535 | "data": { 536 | "roleId": 40, 537 | "roleName": "admin2", 538 | "roleDesc": "admin2Desc" 539 | }, 540 | "meta": { 541 | "msg": "创建成功", 542 | "status": 201 543 | } 544 | } 545 | ``` 546 | 547 | ### 根据 ID 查询角色 548 | 549 | * 请求路径:roles/:id 550 | * 请求方法:get 551 | * 请求参数 552 | 553 | | 参数名 | 参数说明 | 备注 | 554 | | ------ | -------- | --------------------- | 555 | | :id | 角色 ID | 不能为空`携带在url中` | 556 | 557 | * 响应参数 558 | 559 | | 参数名 | 参数说明 | 备注 | 560 | | -------- | -------- | ---- | 561 | | roleId | 角色 ID | | 562 | | roleName | 角色名称 | | 563 | | roleDesc | 角色描述 | | 564 | 565 | * 响应数据 566 | 567 | ```javascript 568 | { 569 | "data": { 570 | "roleId": 31, 571 | "roleName": "测试角色", 572 | "roleDesc": "测试负责人" 573 | }, 574 | "meta": { 575 | "msg": "获取成功", 576 | "status": 200 577 | } 578 | } 579 | ``` 580 | 581 | ### 编辑提交角色 582 | 583 | * 请求路径:roles/:id 584 | * 请求方法:put 585 | * 请求参数 586 | 587 | | 参数名 | 参数说明 | 备注 | 588 | | -------- | -------- | --------------------- | 589 | | :id | 角色 ID | 不能为空`携带在url中` | 590 | | roleName | 角色名称 | 不能为空 | 591 | | roleDesc | 角色描述 | 可以为空 | 592 | 593 | * 响应数据 594 | 595 | ```javascript 596 | { 597 | "data": { 598 | "roleId": 31, 599 | "roleName": "测试角色", 600 | "roleDesc": "测试角色描述" 601 | }, 602 | "meta": { 603 | "msg": "获取成功", 604 | "status": 200 605 | } 606 | } 607 | ``` 608 | 609 | ### 删除角色 610 | 611 | * 请求路径:roles/:id 612 | * 请求方法:delete 613 | * 请求参数 614 | 615 | | 参数名 | 参数说明 | 备注 | 616 | | ------ | -------- | --------------------- | 617 | | :id | 角色 ID | 不能为空`携带在url中` | 618 | 619 | * 响应数据 620 | 621 | ```javascript 622 | { 623 | "data": null, 624 | "meta": { 625 | "msg": "删除成功", 626 | "status": 200 627 | } 628 | } 629 | ``` 630 | 631 | ### 角色授权 632 | 633 | * 请求路径:roles/:roleId/rights 634 | * 请求方法:post 635 | * 请求参数 636 | 637 | | 参数名 | 参数说明 | 备注 | 638 | | ------- | ------------ | ------------------------- | 639 | | :roleId | 角色 ID | 不能为空`携带在url中` | 640 | | rids | 权限 ID 列表 | 以 `,` 分割的权限 ID 列表 | 641 | 642 | * 响应数据 643 | 644 | ```javascript 645 | { 646 | "data": null, 647 | "meta": { 648 | "msg": "更新成功", 649 | "status": 200 650 | } 651 | } 652 | ``` 653 | 654 | ### 删除角色指定权限 655 | 656 | * 请求路径:roles/:roleId/rights/:rightId 657 | * 请求方法:delete 658 | * 请求参数 659 | 660 | | 参数名 | 参数说明 | 备注 | 661 | | -------- | -------- | --------------------- | 662 | | :roleId | 角色 ID | 不能为空`携带在url中` | 663 | | :rightId | 权限 ID | 不能为空`携带在url中` | 664 | 665 | * 响应数据说明 666 | * 返回当前所有拥有的角色信息 667 | * 响应数据 668 | 669 | ```javascript 670 | { 671 | "data": [ 672 | { 673 | "id": 101, 674 | "authName": "商品管理", 675 | "path": null, 676 | "children": [ 677 | { 678 | "id": 104, 679 | "authName": "商品列表", 680 | "path": null, 681 | "children": [ 682 | { 683 | "id": 105, 684 | "authName": "添加商品", 685 | "path": null 686 | }, 687 | { 688 | "id": 116, 689 | "authName": "修改", 690 | "path": null 691 | } 692 | ] 693 | } 694 | ] 695 | } 696 | ], 697 | "meta": { 698 | "msg": "取消权限成功", 699 | "status": 200 700 | } 701 | } 702 | ``` 703 | 704 | ## 商品分类管理 705 | 706 | ### 商品数据列表 707 | 708 | * 请求路径:categories 709 | * 请求方法:get 710 | * 请求参数 711 | 712 | | 参数名 | 参数说明 | 备注 | 713 | | ------ | -------- | -------------------------------------------- | 714 | | type | [1,2,3] | 值:1,2,3 分别表示显示一层二层三层分类列表 | 715 | 716 | * 响应参数 717 | 718 | | 参数名 | 参数说明 | 备注 | 719 | | --------- | ------------ | ---- | 720 | | cat_id | 分类 ID | | 721 | | cat_name | 分类名称 | | 722 | | cat_pid | 分类父 ID | | 723 | | cat_level | 分类当前层级 | | 724 | 725 | * 响应数据 726 | 727 | ```javascript 728 | { 729 | "data": [ 730 | { 731 | "cat_id": 1, 732 | "cat_name": "手机相机", 733 | "cat_pid": 0, 734 | "cat_level": 0 735 | }, 736 | { 737 | "cat_id": 2, 738 | "cat_name": "电脑办公", 739 | "cat_pid": 0, 740 | "cat_level": 0 741 | } 742 | ], 743 | "meta": { 744 | "msg": "获取成功", 745 | "status": 200 746 | } 747 | } 748 | ``` 749 | 750 | ### 添加分类 751 | 752 | * 请求路径:categories 753 | * 请求方法:post 754 | * 请求参数 755 | 756 | | 参数名 | 参数说明 | 备注 | 757 | | --------- | --------- | -------- | 758 | | cat_pid | 分类父 ID | 不能为空 | 759 | | cat_name | 分类名称 | 不能为空 | 760 | | cat_level | 分类层级 | 不能为空 | 761 | 762 | * 响应数据 763 | 764 | ```javascript 765 | { 766 | "data": { 767 | "cat_id": 62, 768 | "cat_name": "相框", 769 | "cat_pid": "1", 770 | "cat_level": "1" 771 | }, 772 | "meta": { 773 | "msg": "创建成功", 774 | "status": 201 775 | } 776 | } 777 | ``` 778 | 779 | ### 根据 id 查询分类 780 | 781 | * 请求路径:categories/:id 782 | * 请求方法:get 783 | * 请求参数 784 | 785 | | 参数名 | 参数说明 | 备注 | 786 | | ------ | -------- | --------------------- | 787 | | :id | 分类 ID | 不能为空`携带在url中` | 788 | 789 | * 响应数据 790 | 791 | ```javascript 792 | { 793 | "data": { 794 | "cat_id": 3, 795 | "cat_name": "厨卫电器", 796 | "cat_pid": 0, 797 | "cat_level": 0 798 | }, 799 | "meta": { 800 | "msg": "获取成功", 801 | "status": 200 802 | } 803 | } 804 | ``` 805 | 806 | ### 编辑提交分类 807 | 808 | * 请求路径:categories/:id 809 | * 请求方法:put 810 | * 请求参数 811 | 812 | | 参数名 | 参数说明 | 备注 | 813 | | -------- | -------- | --------------------- | 814 | | :id | 分类 ID | 不能为空`携带在url中` | 815 | | cat_name | 分类名称 | 不能为空 | 816 | 817 | * 响应数据 818 | 819 | ```javascript 820 | { 821 | "data": { 822 | "cat_id": 22, 823 | "cat_name": "自拍杆", 824 | "cat_pid": 7, 825 | "cat_level": 2 826 | }, 827 | "meta": { 828 | "msg": "更新成功", 829 | "status": 200 830 | } 831 | } 832 | ``` 833 | 834 | ### 删除分类 835 | 836 | * 请求路径:categories/:id 837 | * 请求方法:delete 838 | * 请求参数 839 | 840 | | 参数名 | 参数说明 | 备注 | 841 | | ------ | -------- | --------------------- | 842 | | :id | 分类 ID | 不能为空`携带在url中` | 843 | 844 | * 响应数据 845 | 846 | ```javascript 847 | { 848 | "data": null, 849 | "meta": { 850 | "msg": "删除成功", 851 | "status": 200 852 | } 853 | } 854 | ``` 855 | 856 | ## 分类参数管理 857 | 858 | ### 参数列表 859 | 860 | * 请求路径:categories/:id/attributes 861 | * 请求方法:get 862 | * 请求参数 863 | 864 | | 参数名 | 参数说明 | 备注 | 865 | | ------ | ----------- | --------------------------------------------------------- | 866 | | :id | 分类 ID | 不能为空`携带在url中` | 867 | | sel | [only,many] | 不能为空,通过 only 或 many 来获取分类静态参数还是动态参数 | 868 | 869 | * 响应参数 870 | 871 | | 参数名 | 参数说明 | 备注 | 872 | | ---------- | ---------------------------------------------- | ---- | 873 | | attr_id | 分类参数 ID | | 874 | | attr_name | 分类参数名称 | | 875 | | cat_id | 分类参数所属分类 | | 876 | | attr_sel | only:输入框(唯一) many:后台下拉列表/前台单选框 | | 877 | | attr_write | manual:手工录入 list:从列表选择 | | 878 | | attr_vals | 如果 attr_write:list,那么有值,该值以逗号分隔 | | 879 | 880 | * 响应数据 881 | 882 | ```javascript 883 | { 884 | "data": [ 885 | { 886 | "attr_id": 1, 887 | "attr_name": "cpu", 888 | "cat_id": 22, 889 | "attr_sel": "only", 890 | "attr_write": "manual", 891 | "attr_vals": "ffff" 892 | } 893 | ], 894 | "meta": { 895 | "msg": "获取成功", 896 | "status": 200 897 | } 898 | } 899 | ``` 900 | 901 | ### 添加动态参数或者静态属性 902 | 903 | * 请求路径:categories/:id/attributes 904 | * 请求方法:post 905 | * 请求参数 906 | 907 | | 参数名 | 参数说明 | 备注 | 908 | | --------- | ------------------------------------------ | --------------------- | 909 | | :id | 分类 ID | 不能为空`携带在url中` | 910 | | attr_name | 参数名称 | 不能为空 | 911 | | attr_sel | [only,many] | 不能为空 | 912 | | attr_vals | 如果是 many 就需要填写值的选项,以逗号分隔 | | 913 | 914 | * 响应数据 915 | 916 | ```javascript 917 | { 918 | "data": { 919 | "attr_id": 44, 920 | "attr_name": "测试参数", 921 | "cat_id": "1", 922 | "attr_sel": "many", 923 | "attr_write": "list", 924 | "attr_vals": "a,b,c" 925 | }, 926 | "meta": { 927 | "msg": "创建成功", 928 | "status": 201 929 | } 930 | } 931 | ``` 932 | 933 | ### 删除参数 934 | 935 | * 请求路径:categories/:id/attributes/:attrid 936 | * 请求方法:delete 937 | * 请求参数 938 | 939 | | 参数名 | 参数说明 | 备注 | 940 | | ------- | -------- | --------------------- | 941 | | :id | 分类 ID | 不能为空`携带在url中` | 942 | | :attrid | 参数 ID | 不能为空`携带在url中` | 943 | 944 | * 响应数据 945 | 946 | ```javascript 947 | { 948 | "data": null, 949 | "meta": { 950 | "msg": "删除成功", 951 | "status": 200 952 | } 953 | } 954 | ``` 955 | 956 | ### 根据 ID 查询参数 957 | 958 | * 请求路径:categories/:id/attributes/:attrId 959 | * 请求方法:get 960 | * 请求参数 961 | 962 | | 参数名 | 参数说明 | 备注 | 963 | | --------- | ------------------------------------------ | --------------------- | 964 | | :id | 分类 ID | 不能为空`携带在url中` | 965 | | :attrId | 属性 ID | 不能为空`携带在url中` | 966 | | attr_sel | [only,many] | 不能为空 | 967 | | attr_vals | 如果是 many 就需要填写值的选项,以逗号分隔 | | 968 | 969 | * 响应数据 970 | 971 | ```javascript 972 | { 973 | "data": { 974 | "attr_id": 1, 975 | "attr_name": "cpu", 976 | "cat_id": 22, 977 | "attr_sel": "only", 978 | "attr_write": "manual", 979 | "attr_vals": "ffff" 980 | }, 981 | "meta": { 982 | "msg": "获取成功", 983 | "status": 200 984 | } 985 | } 986 | ``` 987 | 988 | ### 编辑提交参数 989 | 990 | * 请求路径:categories/:id/attributes/:attrId 991 | * 请求方法:put 992 | * 请求参数 993 | 994 | | 参数名 | 参数说明 | 备注 | 995 | | ------- | -------- | --------------------- | 996 | | :id | 分类 ID | 不能为空`携带在url中` | 997 | | :attrId | 属性 ID | 不能为空`携带在url中` | 998 | 999 | * 响应数据 1000 | 1001 | ```javascript 1002 | { 1003 | "data": { 1004 | "attr_id": 9, 1005 | "attr_name": "测试更新", 1006 | "cat_id": "43", 1007 | "attr_sel": "only", 1008 | "attr_write": "manual", 1009 | "attr_vals": "abc" 1010 | }, 1011 | "meta": { 1012 | "msg": "更新成功", 1013 | "status": 200 1014 | } 1015 | } 1016 | ``` 1017 | 1018 | ## 商品管理 1019 | 1020 | ### 商品列表数据 1021 | 1022 | * 请求路径:goods 1023 | * 请求方法:get 1024 | * 请求参数 1025 | 1026 | | 参数名 | 参数说明 | 备注 | 1027 | | -------- | ------------ | -------- | 1028 | | query | 查询参数 | 可以为空 | 1029 | | pagenum | 当前页码 | 不能为空 | 1030 | | pagesize | 每页显示条数 | 不能为空 | 1031 | 1032 | * 响应参数 1033 | 1034 | | 参数名 | 参数说明 | 备注 | 1035 | | ------------ | ------------ | -------------------------------------- | 1036 | | total | 总共商品条数 | | 1037 | | pagenum | 当前商品页数 | | 1038 | | goods_id | 商品 ID | | 1039 | | goods_name | 商品名称 | | 1040 | | goods_price | 价格 | | 1041 | | goods_number | 数量 | | 1042 | | goods_weight | 重量 | 不能为空 | 1043 | | goods_state | 商品状态 | 商品状态 0: 未通过 1: 审核中 2: 已审核 | 1044 | | add_time | 添加时间 | | 1045 | | upd_time | 更新时间 | | 1046 | | hot_mumber | 热销品数量 | | 1047 | | is_promote | 是否是热销品 | | 1048 | 1049 | * 响应数据 1050 | 1051 | ```javascript 1052 | { 1053 | "data": { 1054 | "total": 50, 1055 | "pagenum": "1", 1056 | "goods": [ 1057 | { 1058 | "goods_id": 144, 1059 | "goods_name": "asfdsd", 1060 | "goods_price": 1, 1061 | "goods_number": 1, 1062 | "goods_weight": 1, 1063 | "goods_state": null, 1064 | "add_time": 1512954923, 1065 | "upd_time": 1512954923, 1066 | "hot_mumber": 0, 1067 | "is_promote": false 1068 | } 1069 | ] 1070 | }, 1071 | "meta": { 1072 | "msg": "获取成功", 1073 | "status": 200 1074 | } 1075 | } 1076 | ``` 1077 | 1078 | ### 添加商品 1079 | 1080 | * 请求路径:goods 1081 | * 请求方法:post 1082 | * 请求参数 1083 | 1084 | | 参数名 | 参数说明 | 备注 | 1085 | | --------------- | -------------------------- | -------- | 1086 | | goods_name | 商品名称 | 不能为空 | 1087 | | goods_cat | 以为','分割的分类列表 | 不能为空 | 1088 | | goods_price | 价格 | 不能为空 | 1089 | | goods_number | 数量 | 不能为空 | 1090 | | goods_weight | 重量 | 不能为空 | 1091 | | goods_introduce | 介绍 | 可以为空 | 1092 | | pics | 上传的图片临时路径(对象) | 可以为空 | 1093 | | attrs | 商品的参数(数组) | 可以为空 | 1094 | 1095 | * 请求数据 1096 | 1097 | ```javascript 1098 | { 1099 | "goods_name":"test_goods_name2", 1100 | "goods_price":20, 1101 | "goods_number":30, 1102 | "goods_weight":40, 1103 | "goods_introduce":"abc", 1104 | "pics":[ 1105 | {"pic":"/tmp_uploads/30f08d52c551ecb447277eae232304b8"} 1106 | ], 1107 | "attrs":[ 1108 | { 1109 | "attr_id":15, 1110 | "attr_value":"ddd" 1111 | }, 1112 | { 1113 | "attr_id":15, 1114 | "attr_value":"eee" 1115 | } 1116 | ] 1117 | } 1118 | ``` 1119 | 1120 | * 响应参数 1121 | 1122 | | 参数名 | 参数说明 | 备注 | 1123 | | ------------ | -------------------------- | --------------------------------------------------------------------------------------------------------------------- | 1124 | | total | 总共商品条数 | | 1125 | | pagenum | 当前商品页数 | | 1126 | | goods_id | 商品 ID | | 1127 | | goods_cat | 以为','分割的分类列表 | | 1128 | | goods_name | 商品名称 | | 1129 | | goods_price | 价格 | | 1130 | | goods_number | 数量 | | 1131 | | goods_weight | 重量 | 不能为空 | 1132 | | goods_state | 商品状态 | 商品状态 0: 未通过 1: 审核中 2: 已审核 | 1133 | | add_time | 添加时间 | | 1134 | | upd_time | 更新时间 | | 1135 | | hot_mumber | 热销品数量 | | 1136 | | is_promote | 是否是热销品 | | 1137 | | pics | 上传的图片临时路径(对象) | pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图 | 1138 | | attrs | 商品的参数(数组) | goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选, | 1139 | 1140 | * 响应数据 1141 | 1142 | ```javascript 1143 | { 1144 | "data": { 1145 | "goods_id": 145, 1146 | "goods_name": "test_goods_name2", 1147 | "goods_price": 20, 1148 | "cat_id": 1, 1149 | "goods_number": 30, 1150 | "goods_weight": 40, 1151 | "goods_introduce": "abc", 1152 | "goods_big_logo": "", 1153 | "goods_small_logo": "", 1154 | "goods_state": 1, 1155 | "add_time": 1512962370, 1156 | "upd_time": 1512962370, 1157 | "hot_mumber": 0, 1158 | "is_promote": false, 1159 | "pics": [ 1160 | { 1161 | "pics_id": 397, 1162 | "goods_id": 145, 1163 | "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8", 1164 | "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8", 1165 | "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8" 1166 | } 1167 | ], 1168 | "attrs": [ 1169 | { 1170 | "goods_id": 145, 1171 | "attr_id": 15, 1172 | "attr_value": "ddd", 1173 | "add_price": null, 1174 | "attr_name": "fffffff", 1175 | "attr_sel": "many", 1176 | "attr_write": "list", 1177 | "attr_vals": "" 1178 | }, 1179 | { 1180 | "goods_id": 145, 1181 | "attr_id": 15, 1182 | "attr_value": "eee", 1183 | "add_price": null, 1184 | "attr_name": "fffffff", 1185 | "attr_sel": "many", 1186 | "attr_write": "list", 1187 | "attr_vals": "" 1188 | } 1189 | ] 1190 | }, 1191 | "meta": { 1192 | "msg": "创建商品成功", 1193 | "status": 201 1194 | } 1195 | } 1196 | ``` 1197 | 1198 | ### 根据 ID 查询商品 1199 | 1200 | * 请求路径:goods/:id 1201 | * 请求方法:get 1202 | * 请求参数 1203 | 1204 | | 参数名 | 参数说明 | 备注 | 1205 | | ------ | -------- | --------------------- | 1206 | | id | 商品 ID | 不能为空`携带在url中` | 1207 | 1208 | * 响应参数 1209 | 1210 | | 参数名 | 参数说明 | 备注 | 1211 | | ------------ | -------------------------- | --------------------------------------------------------------------------------------------------------------------- | 1212 | | total | 总共商品条数 | | 1213 | | pagenum | 当前商品页数 | | 1214 | | goods_id | 商品 ID | | 1215 | | goods_name | 商品名称 | | 1216 | | goods_price | 价格 | | 1217 | | goods_number | 数量 | | 1218 | | goods_weight | 重量 | 不能为空 | 1219 | | goods_state | 商品状态 | 商品状态 0: 未通过 1: 审核中 2: 已审核 | 1220 | | add_time | 添加时间 | | 1221 | | upd_time | 更新时间 | | 1222 | | hot_mumber | 热销品数量 | | 1223 | | is_promote | 是否是热销品 | | 1224 | | pics | 上传的图片临时路径(对象) | pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图 | 1225 | | attrs | 商品的参数(数组) | goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选, | 1226 | 1227 | * 响应数据 1228 | 1229 | ```javascript 1230 | { 1231 | "data": { 1232 | "goods_id": 145, 1233 | "goods_name": "test_goods_name2", 1234 | "goods_price": 20, 1235 | "goods_number": 30, 1236 | "goods_weight": 40, 1237 | "goods_introduce": "abc", 1238 | "goods_big_logo": "", 1239 | "goods_small_logo": "", 1240 | "goods_state": 1, 1241 | "add_time": 1512962370, 1242 | "upd_time": 1512962370, 1243 | "hot_mumber": 0, 1244 | "is_promote": false, 1245 | "pics": [ 1246 | { 1247 | "pics_id": 397, 1248 | "goods_id": 145, 1249 | "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8", 1250 | "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8", 1251 | "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8" 1252 | } 1253 | ], 1254 | "attrs": [ 1255 | { 1256 | "goods_id": 145, 1257 | "attr_id": 15, 1258 | "attr_value": "ddd", 1259 | "add_price": null, 1260 | "attr_name": "fffffff", 1261 | "attr_sel": "many", 1262 | "attr_write": "list", 1263 | "attr_vals": "" 1264 | }, 1265 | { 1266 | "goods_id": 145, 1267 | "attr_id": 15, 1268 | "attr_value": "eee", 1269 | "add_price": null, 1270 | "attr_name": "fffffff", 1271 | "attr_sel": "many", 1272 | "attr_write": "list", 1273 | "attr_vals": "" 1274 | } 1275 | ] 1276 | }, 1277 | "meta": { 1278 | "msg": "创建商品成功", 1279 | "status": 201 1280 | } 1281 | } 1282 | ``` 1283 | 1284 | ### 编辑提交商品 1285 | 1286 | * 请求路径:goods/:id 1287 | * 请求方法:put 1288 | * 请求参数 1289 | 1290 | | 参数名 | 参数说明 | 备注 | 1291 | | --------------- | -------------------------- | --------------------- | 1292 | | id | 商品 ID | 不能为空`携带在url中` | 1293 | | goods_name | 商品名称 | 不能为空 | 1294 | | goods_price | 价格 | 不能为空 | 1295 | | goods_number | 数量 | 不能为空 | 1296 | | goods_weight | 重量 | 不能为空 | 1297 | | goods_introduce | 介绍 | 可以为空 | 1298 | | pics | 上传的图片临时路径(对象) | 可以为空 | 1299 | | attrs | 商品的参数(数组) | 可以为空 | 1300 | 1301 | * 请求数据 1302 | 1303 | ```javascript 1304 | { 1305 | "goods_name":"test_goods_name2", 1306 | "goods_price":20, 1307 | "goods_number":30, 1308 | "goods_weight":40, 1309 | "goods_introduce":"abc", 1310 | "pics":[ 1311 | {"pic":"/tmp_uploads/30f08d52c551ecb447277eae232304b8"} 1312 | ], 1313 | "attrs":[ 1314 | { 1315 | "attr_id":15, 1316 | "attr_value":"ddd" 1317 | }, 1318 | { 1319 | "attr_id":15, 1320 | "attr_value":"eee" 1321 | } 1322 | ] 1323 | } 1324 | ``` 1325 | 1326 | * 响应参数 1327 | 1328 | | 参数名 | 参数说明 | 备注 | 1329 | | ------------ | -------------------------- | --------------------------------------------------------------------------------------------------------------------- | 1330 | | total | 总共商品条数 | | 1331 | | pagenum | 当前商品页数 | | 1332 | | goods_id | 商品 ID | | 1333 | | goods_name | 商品名称 | | 1334 | | goods_price | 价格 | | 1335 | | goods_number | 数量 | | 1336 | | goods_weight | 重量 | 不能为空 | 1337 | | goods_state | 商品状态 | 商品状态 0: 未通过 1: 审核中 2: 已审核 | 1338 | | add_time | 添加时间 | | 1339 | | upd_time | 更新时间 | | 1340 | | hot_mumber | 热销品数量 | | 1341 | | is_promote | 是否是热销品 | | 1342 | | pics | 上传的图片临时路径(对象) | pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图 | 1343 | | attrs | 商品的参数(数组) | goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入,还是单选, | 1344 | 1345 | * 响应数据 1346 | 1347 | ```javascript 1348 | { 1349 | "data": { 1350 | "goods_id": 145, 1351 | "goods_name": "test_goods_name2", 1352 | "goods_price": 20, 1353 | "goods_number": 30, 1354 | "goods_weight": 40, 1355 | "goods_introduce": "abc", 1356 | "goods_big_logo": "", 1357 | "goods_small_logo": "", 1358 | "goods_state": 1, 1359 | "add_time": 1512962370, 1360 | "upd_time": 1512962370, 1361 | "hot_mumber": 0, 1362 | "is_promote": false, 1363 | "pics": [ 1364 | { 1365 | "pics_id": 397, 1366 | "goods_id": 145, 1367 | "pics_big": "uploads/goodspics/big_30f08d52c551ecb447277eae232304b8", 1368 | "pics_mid": "uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8", 1369 | "pics_sma": "uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8" 1370 | } 1371 | ], 1372 | "attrs": [ 1373 | { 1374 | "goods_id": 145, 1375 | "attr_id": 15, 1376 | "attr_value": "ddd", 1377 | "add_price": null, 1378 | "attr_name": "fffffff", 1379 | "attr_sel": "many", 1380 | "attr_write": "list", 1381 | "attr_vals": "" 1382 | }, 1383 | { 1384 | "goods_id": 145, 1385 | "attr_id": 15, 1386 | "attr_value": "eee", 1387 | "add_price": null, 1388 | "attr_name": "fffffff", 1389 | "attr_sel": "many", 1390 | "attr_write": "list", 1391 | "attr_vals": "" 1392 | } 1393 | ] 1394 | }, 1395 | "meta": { 1396 | "msg": "创建商品成功", 1397 | "status": 201 1398 | } 1399 | } 1400 | ``` 1401 | 1402 | ### 删除商品 1403 | 1404 | * 请求路径:goods/:id 1405 | * 请求方法:delete 1406 | * 请求参数 1407 | 1408 | | 参数名 | 参数说明 | 备注 | 1409 | | ------ | -------- | --------------------- | 1410 | | id | 商品 ID | 不能为空`携带在url中` | 1411 | 1412 | * 响应数据 1413 | 1414 | ```javascript 1415 | { 1416 | "data": null, 1417 | "meta": { 1418 | "msg": "删除成功", 1419 | "status": 200 1420 | } 1421 | } 1422 | ``` 1423 | 1424 | ###同步商品图片 1425 | 1426 | * 请求路径:goods/:id/pics 1427 | * 请求方法:put 1428 | * 请求参数 1429 | 1430 | | 参数名 | 参数说明 | 备注 | 1431 | | ------ | ------------ | ----------------------------------------------------------------------------------- | 1432 | | id | 商品 ID | 不能为空`携带在url中` | 1433 | | pics | 商品图片集合 | 如果有 pics_id 字段会保留该图片,如果没有 pics_id 但是有 pic 字段就会新生成图片数据 | 1434 | 1435 | * 请求数据 1436 | 1437 | ```javascript 1438 | ;[ 1439 | { pic: 'tmp_uploads/db28f6316835836e97653b5c75e418be.png' }, 1440 | { 1441 | pics_id: 397, 1442 | goods_id: 145, 1443 | pics_big: 'uploads/goodspics/big_30f08d52c551ecb447277eae232304b8', 1444 | pics_mid: 'uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8', 1445 | pics_sma: 'uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8' 1446 | } 1447 | ] 1448 | ``` 1449 | 1450 | * 响应数据 1451 | 1452 | ```javascript 1453 | { 1454 | "data": { 1455 | "goods_id": 96, 1456 | "goods_name": "iphoneXX", 1457 | "goods_price": 2, 1458 | "goods_number": 22, 1459 | "goods_weight": 22, 1460 | "goods_introduce": null, 1461 | "goods_big_logo": "./uploads/goods/20171113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg", 1462 | "goods_small_logo": "./uploads/goods/20171113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg", 1463 | "goods_state": 0, 1464 | "is_del": "1", 1465 | "add_time": 1510045904, 1466 | "upd_time": 1512635159, 1467 | "delete_time": 1512635159, 1468 | "hot_mumber": 0, 1469 | "is_promote": false, 1470 | "pics": [ 1471 | { 1472 | "pics_id": 383, 1473 | "goods_id": 96, 1474 | "pics_big": "uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg", 1475 | "pics_mid": "uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg", 1476 | "pics_sma": "uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg" 1477 | } 1478 | ], 1479 | "attrs": [ 1480 | { 1481 | "goods_id": 96, 1482 | "attr_id": 15, 1483 | "attr_value": "eee", 1484 | "add_price": null, 1485 | "attr_name": "fffffff", 1486 | "attr_sel": "many", 1487 | "attr_write": "list", 1488 | "attr_vals": "" 1489 | }, 1490 | { 1491 | "goods_id": 96, 1492 | "attr_id": 15, 1493 | "attr_value": "ddd", 1494 | "add_price": null, 1495 | "attr_name": "fffffff", 1496 | "attr_sel": "many", 1497 | "attr_write": "list", 1498 | "attr_vals": "" 1499 | } 1500 | ] 1501 | }, 1502 | "meta": { 1503 | "msg": "更新成功", 1504 | "status": 200 1505 | } 1506 | } 1507 | ``` 1508 | 1509 | ###同步商品属性 1510 | 1511 | * 请求路径:goods/:id/attributes 1512 | * 请求方法:put 1513 | * 请求参数 1514 | 1515 | | 参数名 | 参数说明 | 备注 | 1516 | | ------ | -------- | --------------------- | 1517 | | id | 商品 ID | 不能为空`携带在url中` | 1518 | 1519 | * 请求数据 1520 | 1521 | ```javascript 1522 | ;[ 1523 | { 1524 | attr_id: 15, 1525 | attr_value: 'ddd' 1526 | }, 1527 | { 1528 | attr_id: 15, 1529 | attr_value: 'eee' 1530 | } 1531 | ] 1532 | ``` 1533 | 1534 | * 响应数据 1535 | 1536 | ```javascript 1537 | { 1538 | "data": { 1539 | "goods_id": 96, 1540 | "goods_name": "iphoneXX", 1541 | "goods_price": 2, 1542 | "goods_number": 22, 1543 | "goods_weight": 22, 1544 | "goods_introduce": null, 1545 | "goods_big_logo": "./uploads/goods/20171113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg", 1546 | "goods_small_logo": "./uploads/goods/20171113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg", 1547 | "goods_state": 0, 1548 | "is_del": "1", 1549 | "add_time": 1510045904, 1550 | "upd_time": 1512635159, 1551 | "delete_time": 1512635159, 1552 | "hot_mumber": 0, 1553 | "is_promote": false, 1554 | "pics": [ 1555 | { 1556 | "pics_id": 383, 1557 | "goods_id": 96, 1558 | "pics_big": "uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg", 1559 | "pics_mid": "uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg", 1560 | "pics_sma": "uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg" 1561 | } 1562 | ], 1563 | "attrs": [ 1564 | { 1565 | "goods_id": 96, 1566 | "attr_id": 15, 1567 | "attr_value": "eee", 1568 | "add_price": null, 1569 | "attr_name": "fffffff", 1570 | "attr_sel": "many", 1571 | "attr_write": "list", 1572 | "attr_vals": "" 1573 | }, 1574 | { 1575 | "goods_id": 96, 1576 | "attr_id": 15, 1577 | "attr_value": "ddd", 1578 | "add_price": null, 1579 | "attr_name": "fffffff", 1580 | "attr_sel": "many", 1581 | "attr_write": "list", 1582 | "attr_vals": "" 1583 | } 1584 | ] 1585 | }, 1586 | "meta": { 1587 | "msg": "更新成功", 1588 | "status": 200 1589 | } 1590 | } 1591 | ``` 1592 | 1593 | ###商品图片处理必须安装 GraphicsMagick 1594 | 1595 | * linux 1596 | 1597 | ``` 1598 | apt-get install GraphicsMagick 1599 | ``` 1600 | 1601 | * Mac OS X 1602 | 1603 | ``` 1604 | brew install GraphicsMagick 1605 | ``` 1606 | 1607 | * Windows 1608 | [点击下载](https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick-binaries/1.3.27/GraphicsMagick-1.3.27-Q8-win64-dll.exe/download) 1609 | 1610 | ## 图片上传 1611 | 1612 | * 请求路径:upload 1613 | * 请求方法:post 1614 | * 请求参数 1615 | 1616 | | 参数名 | 参数说明 | 备注 | 1617 | | ------ | -------- | ---- | 1618 | | file | 上传文件 | | 1619 | 1620 | * 响应数据 1621 | 1622 | ```javascript 1623 | { 1624 | "data": { 1625 | "tmp_path": "tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png", 1626 | "url": "http://127.0.0.1:8888tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png" 1627 | }, 1628 | "meta": { 1629 | "msg": "上传成功", 1630 | "status": 200 1631 | } 1632 | } 1633 | ``` 1634 | 1635 | ## 订单管理 1636 | 1637 | ### 订单数据列表 1638 | 1639 | * 请求路径:orders 1640 | * 请求方法:get 1641 | * 请求参数 1642 | 1643 | | 参数名 | 参数说明 | 备注 | 1644 | | -------------------- | --------------- | -------- | 1645 | | query | 查询参数 | 可以为空 | 1646 | | pagenum | 当前页码 | 不能为空 | 1647 | | pagesize | 每页显示条数 | 不能为空 | 1648 | | user_id | 用户 ID | 可以为空 | 1649 | | pay_status | 支付状态 | 可以为空 | 1650 | | is_send | 是否发货 | 可以为空 | 1651 | | order_fapiao_title | ['个人','公司'] | 可以为空 | 1652 | | order_fapiao_company | 公司名称 | 可以为空 | 1653 | | order_fapiao_content | 发票内容 | 可以为空 | 1654 | | consignee_addr | 发货地址 | 可以为空 | 1655 | 1656 | * 响应数据 1657 | 1658 | ```javascript 1659 | { 1660 | "data": { 1661 | "total": 1, 1662 | "pagenum": "1", 1663 | "goods": [ 1664 | { 1665 | "order_id": 47, 1666 | "user_id": 133, 1667 | "order_number": "itcast-59e7502d7993d", 1668 | "order_price": 322, 1669 | "order_pay": "1", 1670 | "is_send": "是", 1671 | "trade_no": "", 1672 | "order_fapiao_title": "个人", 1673 | "order_fapiao_company": "", 1674 | "order_fapiao_content": "办公用品", 1675 | "consignee_addr": "a:7:{s:6:\"cgn_id\";i:1;s:7:\"user_id\";i:133;s:8:\"cgn_name\";s:9:\"王二柱\";s:11:\"cgn_address\";s:51:\"北京市海淀区苏州街长远天地大厦305室\";s:7:\"cgn_tel\";s:11:\"13566771298\";s:8:\"cgn_code\";s:6:\"306810\";s:11:\"delete_time\";N;}", 1676 | "pay_status": "1", 1677 | "create_time": 1508331565, 1678 | "update_time": 1508331565 1679 | } 1680 | ] 1681 | }, 1682 | "meta": { 1683 | "msg": "获取成功", 1684 | "status": 200 1685 | } 1686 | } 1687 | ``` 1688 | 1689 | ### 修改订单状态 1690 | 1691 | * 请求路径:orders/:id 1692 | * 请求方法:put 1693 | * 请求参数 1694 | 1695 | | 参数名 | 参数说明 | 备注 | 1696 | | ------------ | ------------ | ------------------------------------------ | 1697 | | id | 订单 ID | 不能为空`携带在url中` | 1698 | | is_send | 订单是否发货 | 1:已经发货,0:未发货 | 1699 | | order_pay | 订单支付 | 支付方式 0 未支付 1 支付宝 2 微信 3 银行卡 | 1700 | | order_price | 订单价格 | | 1701 | | order_number | 订单数量 | | 1702 | | pay_status | 支付状态 | 订单状态: 0 未付款、1 已付款 | 1703 | 1704 | * 请求数据说明 1705 | 1706 | * 所有请求数据都是增量更新,如果参数不填写,就不会更新该字段 1707 | 1708 | * 响应数据 1709 | 1710 | ```javascript 1711 | { 1712 | "data": { 1713 | "order_id": 67, 1714 | "user_id": 1, 1715 | "order_number": "itcast-g7kmck71vjaujfgoi", 1716 | "order_price": 20, 1717 | "order_pay": "0", 1718 | "is_send": "否", 1719 | "trade_no": "", 1720 | "order_fapiao_title": "个人", 1721 | "order_fapiao_company": "", 1722 | "order_fapiao_content": "", 1723 | "consignee_addr": "", 1724 | "pay_status": "0", 1725 | "create_time": 1512533560, 1726 | "update_time": 1512533560, 1727 | "goods": [ 1728 | { 1729 | "id": 82, 1730 | "order_id": 67, 1731 | "goods_id": 96, 1732 | "goods_price": 333, 1733 | "goods_number": 2, 1734 | "goods_total_price": 999 1735 | }, 1736 | { 1737 | "id": 83, 1738 | "order_id": 67, 1739 | "goods_id": 95, 1740 | "goods_price": 666, 1741 | "goods_number": 5, 1742 | "goods_total_price": 999 1743 | } 1744 | ] 1745 | }, 1746 | "meta": { 1747 | "msg": "获取成功", 1748 | "status": 200 1749 | } 1750 | } 1751 | ``` 1752 | 1753 | ### 查看订单详情 1754 | 1755 | * 请求路径:orders/:id 1756 | * 请求方法:get 1757 | * 请求参数 1758 | 1759 | | 参数名 | 参数说明 | 备注 | 1760 | | ------ | -------- | --------------------- | 1761 | | id | 订单 ID | 不能为空`携带在url中` | 1762 | 1763 | * 响应数据 1764 | 1765 | ```javascript 1766 | { 1767 | "data": { 1768 | "order_id": 67, 1769 | "user_id": 1, 1770 | "order_number": "itcast-g7kmck71vjaujfgoi", 1771 | "order_price": 20, 1772 | "order_pay": "0", 1773 | "is_send": "否", 1774 | "trade_no": "", 1775 | "order_fapiao_title": "个人", 1776 | "order_fapiao_company": "", 1777 | "order_fapiao_content": "", 1778 | "consignee_addr": "", 1779 | "pay_status": "0", 1780 | "create_time": 1512533560, 1781 | "update_time": 1512533560, 1782 | "goods": [ 1783 | { 1784 | "id": 82, 1785 | "order_id": 67, 1786 | "goods_id": 96, 1787 | "goods_price": 333, 1788 | "goods_number": 2, 1789 | "goods_total_price": 999 1790 | }, 1791 | { 1792 | "id": 83, 1793 | "order_id": 67, 1794 | "goods_id": 95, 1795 | "goods_price": 666, 1796 | "goods_number": 5, 1797 | "goods_total_price": 999 1798 | } 1799 | ] 1800 | }, 1801 | "meta": { 1802 | "msg": "获取成功", 1803 | "status": 200 1804 | } 1805 | } 1806 | ``` 1807 | 1808 | ## 数据统计 1809 | 1810 | ### 基于类型统计(饼图) 1811 | 1812 | * 请求路径:reports/:type 1813 | * 请求方法:get 1814 | * 响应数据 1815 | 1816 | ### 基于时间统计(折线图) 1817 | 1818 | * 请求路径:reports/:type 1819 | * 请求方法:get 1820 | * 响应数据 1821 | 1822 | ### 基于销量统计(柱状图) 1823 | 1824 | * 请求路径:reports/:type 1825 | * 请求方法:get 1826 | * 响应数据 1827 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | shopapi.lipengzhou.com -------------------------------------------------------------------------------- /docs/toc/css/demo.css: -------------------------------------------------------------------------------- 1 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td { 2 | margin: 0;padding: 0;border: 0;outline: 0;font-weight: inherit;font-style: inherit;font-size: 100%;font-family: inherit;vertical-align: baseline;} 3 | body {color: #2f332a;font: 15px/21px Arial, Helvetica, simsun, sans-serif;background: #f0f6e4 \9;} 4 | h1, h2, h3, h4, h5, h6 {color: #2f332a;font-weight: bold;font-family: Helvetica, Arial, sans-serif;padding-bottom: 5px;} 5 | h1 {font-size: 24px;line-height: 34px;text-align: center;} 6 | h2 {font-size: 14px;line-height: 24px;padding-top: 5px;} 7 | h6 {font-weight: normal;font-size: 12px;letter-spacing: 1px;line-height: 24px;text-align: center;} 8 | a {color:#3C6E31;text-decoration: underline;} 9 | a:hover {background-color:#3C6E31;color:white;} 10 | input.radio {margin: 0 2px 0 8px;} 11 | input.radio.first {margin-left:0;} 12 | input.empty {color: lightgray;} 13 | code {color: #2f332a;} 14 | .highlight_red {color:#A60000;} 15 | .highlight_green {color:#A7F43D;} 16 | li {list-style: circle;font-size: 12px;} 17 | li.title {list-style: none;} 18 | ul.list {margin-left: 17px;} 19 | 20 | div.content_wrap {width: 600px;height:380px;} 21 | div.content_wrap div.left{float: left;width: 250px;} 22 | div.content_wrap div.right{float: right;width: 340px;} 23 | div.zTreeDemoBackground {width:250px;height:362px;text-align:left;} 24 | 25 | ul.ztree {margin-top: 10px;border: 1px solid #617775;background: #f0f6e4;width:220px;height:360px;overflow-y:scroll;overflow-x:auto;} 26 | ul.log {border: 1px solid #617775;background: #f0f6e4;width:300px;height:170px;overflow: hidden;} 27 | ul.log.small {height:45px;} 28 | ul.log li {color: #666666;list-style: none;padding-left: 10px;} 29 | ul.log li.dark {background-color: #E3E3E3;} 30 | 31 | /* ruler */ 32 | div.ruler {height:20px; width:220px; background-color:#f0f6e4;border: 1px solid #333; margin-bottom: 5px; cursor: pointer} 33 | div.ruler div.cursor {height:20px; width:30px; background-color:#3C6E31; color:white; text-align: right; padding-right: 5px; cursor: pointer} -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/diy/1_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/diy/1_close.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/diy/1_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/diy/1_open.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/diy/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/diy/2.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/diy/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/diy/3.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/diy/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/diy/4.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/diy/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/diy/5.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/diy/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/diy/6.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/diy/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/diy/7.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/diy/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/diy/8.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/diy/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/diy/9.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/line_conn.gif -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/loading.gif -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/zTreeStandard.gif -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lipengzhou/shop-api-doc/ef9e4874e150c83268e29dc50bbcce991c91d7eb/docs/toc/css/zTreeStyle/img/zTreeStandard.png -------------------------------------------------------------------------------- /docs/toc/css/zTreeStyle/zTreeStyle.css: -------------------------------------------------------------------------------- 1 | /*------------------------------------- 2 | zTree Style 3 | 4 | version: 3.4 5 | author: Hunter.z 6 | email: hunter.z@263.net 7 | website: http://code.google.com/p/jquerytree/ 8 | 9 | -------------------------------------*/ 10 | 11 | .ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif} 12 | .ztree {margin:0; padding:5px; color:#333} 13 | .ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0} 14 | .ztree li ul{ margin:0; padding:0 0 0 18px} 15 | .ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;} 16 | 17 | .ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent; 18 | text-decoration:none; vertical-align:top; display: inline-block} 19 | .ztree li a:hover {text-decoration:underline} 20 | .ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} 21 | .ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} 22 | .ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid; 23 | opacity:0.8; filter:alpha(opacity=80)} 24 | .ztree li a.tmpTargetNode_prev {} 25 | .ztree li a.tmpTargetNode_next {} 26 | .ztree li a input.rename {height:14px; width:80px; padding:0; margin:0; 27 | font-size:12px; border:1px #7EC4CC solid; *border:0px} 28 | .ztree li span {line-height:16px; margin-right:2px} 29 | .ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle; 30 | border:0 none; cursor: pointer;outline:none; 31 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; 32 | background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")} 33 | 34 | .ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto} 35 | .ztree li span.button.chk.checkbox_false_full {background-position:0 0} 36 | .ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px} 37 | .ztree li span.button.chk.checkbox_false_part {background-position:0 -28px} 38 | .ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px} 39 | .ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px} 40 | .ztree li span.button.chk.checkbox_true_full {background-position:-14px 0} 41 | .ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px} 42 | .ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px} 43 | .ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px} 44 | .ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px} 45 | .ztree li span.button.chk.radio_false_full {background-position:-28px 0} 46 | .ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px} 47 | .ztree li span.button.chk.radio_false_part {background-position:-28px -28px} 48 | .ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px} 49 | .ztree li span.button.chk.radio_false_disable {background-position:-28px -56px} 50 | .ztree li span.button.chk.radio_true_full {background-position:-42px 0} 51 | .ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px} 52 | .ztree li span.button.chk.radio_true_part {background-position:-42px -28px} 53 | .ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px} 54 | .ztree li span.button.chk.radio_true_disable {background-position:-42px -56px} 55 | 56 | .ztree li span.button.switch {width:18px; height:18px} 57 | .ztree li span.button.root_open{background-position:-92px -54px} 58 | .ztree li span.button.root_close{background-position:-74px -54px} 59 | .ztree li span.button.roots_open{background-position:-92px 0} 60 | .ztree li span.button.roots_close{background-position:-74px 0} 61 | .ztree li span.button.center_open{background-position:-92px -18px} 62 | .ztree li span.button.center_close{background-position:-74px -18px} 63 | .ztree li span.button.bottom_open{background-position:-92px -36px} 64 | .ztree li span.button.bottom_close{background-position:-74px -36px} 65 | .ztree li span.button.noline_open{background-position:-92px -72px} 66 | .ztree li span.button.noline_close{background-position:-74px -72px} 67 | .ztree li span.button.root_docu{ background:none;} 68 | .ztree li span.button.roots_docu{background-position:-56px 0} 69 | .ztree li span.button.center_docu{background-position:-56px -18px} 70 | .ztree li span.button.bottom_docu{background-position:-56px -36px} 71 | .ztree li span.button.noline_docu{ background:none;} 72 | 73 | .ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle} 74 | .ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle} 75 | .ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle} 76 | .ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle} 77 | .ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle} 78 | 79 | .ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle} 80 | 81 | ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)} 82 | 83 | span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute; 84 | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; 85 | background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")} 86 | 87 | ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)} 88 | .zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute} 89 | 90 | /* level style*/ 91 | /*.ztree li span.button.level0 { 92 | display:none; 93 | } 94 | .ztree li ul.level0 { 95 | padding:0; 96 | background:none; 97 | }*/ -------------------------------------------------------------------------------- /docs/toc/js/jquery.ztree.all-3.5.min.js: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * JQuery zTree core 3.5.02 4 | * http://zTree.me/ 5 | * 6 | * Copyright (c) 2010 Hunter.z 7 | * 8 | * Licensed same as jquery - MIT License 9 | * http://www.opensource.org/licenses/mit-license.php 10 | * 11 | * email: hunter.z@263.net 12 | * Date: 2013-01-28 13 | */ 14 | (function(k){var F,G,H,I,J,K,r={},L={},t={},M={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0},data:{key:{children:"children",name:"name",title:"",url:"url"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",url:"",autoParam:[],otherParam:[], 15 | dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},u=[function(b){var a=b.treeObj,c=e.event;a.bind(c.NODECREATED,function(a,c,g){j.apply(b.callback.onNodeCreated,[a,c,g])}); 16 | a.bind(c.CLICK,function(a,c,g,l,h){j.apply(b.callback.onClick,[c,g,l,h])});a.bind(c.EXPAND,function(a,c,g){j.apply(b.callback.onExpand,[a,c,g])});a.bind(c.COLLAPSE,function(a,c,g){j.apply(b.callback.onCollapse,[a,c,g])});a.bind(c.ASYNC_SUCCESS,function(a,c,g,l){j.apply(b.callback.onAsyncSuccess,[a,c,g,l])});a.bind(c.ASYNC_ERROR,function(a,c,g,l,h,e){j.apply(b.callback.onAsyncError,[a,c,g,l,h,e])})}],v=[function(b){var a=e.event;b.treeObj.unbind(a.NODECREATED).unbind(a.CLICK).unbind(a.EXPAND).unbind(a.COLLAPSE).unbind(a.ASYNC_SUCCESS).unbind(a.ASYNC_ERROR)}], 17 | w=[function(b){var a=h.getCache(b);a||(a={},h.setCache(b,a));a.nodes=[];a.doms=[]}],x=[function(b,a,c,d,f,g){if(c){var l=h.getRoot(b),e=b.data.key.children;c.level=a;c.tId=b.treeId+"_"+ ++l.zId;c.parentTId=d?d.tId:null;if(c[e]&&c[e].length>0){if(typeof c.open=="string")c.open=j.eqs(c.open,"true");c.open=!!c.open;c.isParent=!0;c.zAsync=!0}else{c.open=!1;if(typeof c.isParent=="string")c.isParent=j.eqs(c.isParent,"true");c.isParent=!!c.isParent;c.zAsync=!c.isParent}c.isFirstNode=f;c.isLastNode=g;c.getParentNode= 18 | function(){return h.getNodeCache(b,c.parentTId)};c.getPreNode=function(){return h.getPreNode(b,c)};c.getNextNode=function(){return h.getNextNode(b,c)};c.isAjaxing=!1;h.fixPIdKeyValue(b,c)}}],y=[function(b){var a=b.target,c=h.getSetting(b.data.treeId),d="",f=null,g="",l="",i=null,n=null,p=null;if(j.eqs(b.type,"mousedown"))l="mousedown";else if(j.eqs(b.type,"mouseup"))l="mouseup";else if(j.eqs(b.type,"contextmenu"))l="contextmenu";else if(j.eqs(b.type,"click"))if(j.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+ 19 | e.id.SWITCH)!==null)d=(k(a).parent("li").get(0)||k(a).parentsUntil("li").parent().get(0)).id,g="switchNode";else{if(p=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}]))d=(k(p).parent("li").get(0)||k(p).parentsUntil("li").parent().get(0)).id,g="clickNode"}else if(j.eqs(b.type,"dblclick")&&(l="dblclick",p=j.getMDom(c,a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=(k(p).parent("li").get(0)||k(p).parentsUntil("li").parent().get(0)).id,g="switchNode";if(l.length>0&&d.length==0&&(p=j.getMDom(c, 20 | a,[{tagName:"a",attrName:"treeNode"+e.id.A}])))d=(k(p).parent("li").get(0)||k(p).parentsUntil("li").parent().get(0)).id;if(d.length>0)switch(f=h.getNodeCache(c,d),g){case "switchNode":f.isParent?j.eqs(b.type,"click")||j.eqs(b.type,"dblclick")&&j.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?i=F:g="":g="";break;case "clickNode":i=G}switch(l){case "mousedown":n=H;break;case "mouseup":n=I;break;case "dblclick":n=J;break;case "contextmenu":n=K}return{stop:!1,node:f,nodeEventType:g,nodeEventCallback:i, 21 | treeEventType:l,treeEventCallback:n}}],z=[function(b){var a=h.getRoot(b);a||(a={},h.setRoot(b,a));a[b.data.key.children]=[];a.expandTriggerFlag=!1;a.curSelectedList=[];a.noSelection=!0;a.createdNodes=[];a.zId=0;a._ver=(new Date).getTime()}],A=[],B=[],C=[],D=[],E=[],h={addNodeCache:function(b,a){h.getCache(b).nodes[h.getNodeCacheId(a.tId)]=a},getNodeCacheId:function(b){return b.substring(b.lastIndexOf("_")+1)},addAfterA:function(b){B.push(b)},addBeforeA:function(b){A.push(b)},addInnerAfterA:function(b){D.push(b)}, 22 | addInnerBeforeA:function(b){C.push(b)},addInitBind:function(b){u.push(b)},addInitUnBind:function(b){v.push(b)},addInitCache:function(b){w.push(b)},addInitNode:function(b){x.push(b)},addInitProxy:function(b){y.push(b)},addInitRoot:function(b){z.push(b)},addNodesData:function(b,a,c){var d=b.data.key.children;a[d]||(a[d]=[]);if(a[d].length>0)a[d][a[d].length-1].isLastNode=!1,i.setNodeLineIcos(b,a[d][a[d].length-1]);a.isParent=!0;a[d]=a[d].concat(c)},addSelectedNode:function(b,a){var c=h.getRoot(b);h.isSelectedNode(b, 23 | a)||c.curSelectedList.push(a)},addCreatedNode:function(b,a){(b.callback.onNodeCreated||b.view.addDiyDom)&&h.getRoot(b).createdNodes.push(a)},addZTreeTools:function(b){E.push(b)},exSetting:function(b){k.extend(!0,M,b)},fixPIdKeyValue:function(b,a){b.data.simpleData.enable&&(a[b.data.simpleData.pIdKey]=a.parentTId?a.getParentNode()[b.data.simpleData.idKey]:b.data.simpleData.rootPId)},getAfterA:function(b,a,c){for(var d=0,f=B.length;d-1&&g.push(a[l]),g=g.concat(h.getNodesByParamFuzzy(b,a[l][f],c,d));return g},getNodesByFilter:function(b,a,c,d,f){if(!a)return d?null:[];for(var g=b.data.key.children,l=d?null: 27 | [],e=0,i=a.length;e0)},clone:function(b){if(b===null)return null;var a=b.constructor===Array?[]:{},c;for(c in b)a[c]=b[c]instanceof Date?new Date(b[c].getTime()):typeof b[c]==="object"?arguments.callee(b[c]):b[c];return a},eqs:function(b,a){return b.toLowerCase()=== 37 | a.toLowerCase()},isArray:function(b){return Object.prototype.toString.apply(b)==="[object Array]"},getMDom:function(b,a,c){if(!a)return null;for(;a&&a.id!==b.treeId;){for(var d=0,f=c.length;a.tagName&&d0&&(s=i.appendNodes(b,a+1,o[j],o,f,g&&o.open));g&&(i.makeDOMNodeMainBefore(e,b,o),i.makeDOMNodeLine(e,b,o),h.getBeforeA(b,o,e),i.makeDOMNodeNameBefore(e,b,o),h.getInnerBeforeA(b,o,e),i.makeDOMNodeIcon(e,b,o),h.getInnerAfterA(b,o,e),i.makeDOMNodeNameAfter(e,b,o),h.getAfterA(b,o,e),o.isParent&&o.open&&i.makeUlHtml(b,o,e,s.join("")),i.makeDOMNodeMainAfter(e,b,o),h.addCreatedNode(b,o))}return e},appendParentULDom:function(b, 40 | a){var c=[],d=k("#"+a.tId),f=k("#"+a.tId+e.id.UL),g=i.appendNodes(b,a.level+1,a[b.data.key.children],a,!1,!0);i.makeUlHtml(b,a,c,g.join(""));!d.get(0)&&a.parentTId&&(i.appendParentULDom(b,a.getParentNode()),d=k("#"+a.tId));f.get(0)&&f.remove();d.append(c.join(""))},asyncNode:function(b,a,c,d){var f,g;if(a&&!a.isParent)return j.apply(d),!1;else if(a&&a.isAjaxing)return!1;else if(j.apply(b.callback.beforeAsync,[b.treeId,a],!0)==!1)return j.apply(d),!1;if(a)a.isAjaxing=!0,k("#"+a.tId+e.id.ICON).attr({style:"", 41 | "class":"button ico_loading"});var l={};for(f=0,g=b.async.autoParam.length;a&&f1&&(n=q[1],q=q[0]);l[n]=a[q]}if(j.isArray(b.async.otherParam))for(f=0,g=b.async.otherParam.length;f=0;d--)if(!a||a===c[d])if(k("#"+c[d].tId+e.id.A).removeClass(e.node.CURSELECTED),a){h.removeSelectedNode(b,a);break}if(!a)h.getRoot(b).curSelectedList=[]},createNodeCallback:function(b){if(b.callback.onNodeCreated||b.view.addDiyDom)for(var a=h.getRoot(b);a.createdNodes.length>0;){var c=a.createdNodes.shift();j.apply(b.view.addDiyDom,[b.treeId,c]);b.callback.onNodeCreated&&b.treeObj.trigger(e.event.NODECREATED, 44 | [b.treeId,c])}},createNodes:function(b,a,c,d){if(c&&c.length!=0){var f=h.getRoot(b),g=b.data.key.children,g=!d||d.open||!!k("#"+d[g][0].tId).get(0);f.createdNodes=[];a=i.appendNodes(b,a,c,d,!0,g);d?(d=k("#"+d.tId+e.id.UL),d.get(0)&&d.append(a.join(""))):b.treeObj.append(a.join(""));i.createNodeCallback(b)}},destroy:function(b){b&&(h.initCache(b),h.initRoot(b),m.unbindTree(b),m.unbindEvent(b),b.treeObj.empty())},expandCollapseNode:function(b,a,c,d,f){var g=h.getRoot(b),l=b.data.key.children;if(a){if(g.expandTriggerFlag){var q= 45 | f,f=function(){q&&q();a.open?b.treeObj.trigger(e.event.EXPAND,[b.treeId,a]):b.treeObj.trigger(e.event.COLLAPSE,[b.treeId,a])};g.expandTriggerFlag=!1}if(!a.open&&a.isParent&&(!k("#"+a.tId+e.id.UL).get(0)||a[l]&&a[l].length>0&&!k("#"+a[l][0].tId).get(0)))i.appendParentULDom(b,a),i.createNodeCallback(b);if(a.open==c)j.apply(f,[]);else{var c=k("#"+a.tId+e.id.UL),g=k("#"+a.tId+e.id.SWITCH),n=k("#"+a.tId+e.id.ICON);a.isParent?(a.open=!a.open,a.iconOpen&&a.iconClose&&n.attr("style",i.makeNodeIcoStyle(b, 46 | a)),a.open?(i.replaceSwitchClass(a,g,e.folder.OPEN),i.replaceIcoClass(a,n,e.folder.OPEN),d==!1||b.view.expandSpeed==""?(c.show(),j.apply(f,[])):a[l]&&a[l].length>0?c.slideDown(b.view.expandSpeed,f):(c.show(),j.apply(f,[]))):(i.replaceSwitchClass(a,g,e.folder.CLOSE),i.replaceIcoClass(a,n,e.folder.CLOSE),d==!1||b.view.expandSpeed==""||!(a[l]&&a[l].length>0)?(c.hide(),j.apply(f,[])):c.slideUp(b.view.expandSpeed,f))):j.apply(f,[])}}else j.apply(f,[])},expandCollapseParentNode:function(b,a,c,d,f){a&&(a.parentTId? 47 | (i.expandCollapseNode(b,a,c,d),a.parentTId&&i.expandCollapseParentNode(b,a.getParentNode(),c,d,f)):i.expandCollapseNode(b,a,c,d,f))},expandCollapseSonNode:function(b,a,c,d,f){var g=h.getRoot(b),e=b.data.key.children,g=a?a[e]:g[e],e=a?!1:d,j=h.getRoot(b).expandTriggerFlag;h.getRoot(b).expandTriggerFlag=!1;if(g)for(var k=0,m=g.length;k/g,">");b.push("",d,"")},makeDOMNodeLine:function(b,a,c){b.push("")},makeDOMNodeMainAfter:function(b){b.push("")},makeDOMNodeMainBefore:function(b, 49 | a,c){b.push("
  • ")},makeDOMNodeNameAfter:function(b){b.push("")},makeDOMNodeNameBefore:function(b,a,c){var d=h.getNodeTitle(a,c),f=i.makeNodeUrl(a,c),g=i.makeNodeFontCss(a,c),l=[],k;for(k in g)l.push(k,":",g[k],";");b.push("0?"href='"+f+"'":""," target='",i.makeNodeTarget(c),"' style='",l.join(""),"'"); 50 | j.apply(a.view.showTitle,[a.treeId,c],a.view.showTitle)&&d&&b.push("title='",d.replace(/'/g,"'").replace(//g,">"),"'");b.push(">")},makeNodeFontCss:function(b,a){var c=j.apply(b.view.fontCss,[b.treeId,a],b.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(b,a){var c=["ico"];a.isAjaxing||(c[0]=(a.iconSkin?a.iconSkin+"_":"")+c[0],a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU));return"button "+c.join("_")},makeNodeIcoStyle:function(b, 51 | a){var c=[];if(!a.isAjaxing){var d=a.isParent&&a.iconOpen&&a.iconClose?a.open?a.iconOpen:a.iconClose:a.icon;d&&c.push("background:url(",d,") 0 0 no-repeat;");(b.view.showIcon==!1||!j.apply(b.view.showIcon,[b.treeId,a],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(b,a){var c=[];b.view.showLine?a.level==0&&a.isFirstNode&&a.isLastNode?c.push(e.line.ROOT):a.level==0&&a.isFirstNode?c.push(e.line.ROOTS):a.isLastNode?c.push(e.line.BOTTOM):c.push(e.line.CENTER):c.push(e.line.NOLINE); 52 | a.isParent?c.push(a.open?e.folder.OPEN:e.folder.CLOSE):c.push(e.folder.DOCU);return i.makeNodeLineClassEx(a)+c.join("_")},makeNodeLineClassEx:function(b){return"button level"+b.level+" switch "},makeNodeTarget:function(b){return b.target||"_blank"},makeNodeUrl:function(b,a){var c=b.data.key.url;return a[c]?a[c]:null},makeUlHtml:function(b,a,c,d){c.push("
      ");c.push(d);c.push("
    ")}, 53 | makeUlLineClass:function(b,a){return b.view.showLine&&!a.isLastNode?e.line.LINE:""},removeChildNodes:function(b,a){if(a){var c=b.data.key.children,d=a[c];if(d){for(var f=0,g=d.length;f0)a[c][0].isFirstNode=!0},setLastNode:function(b,a){var c=b.data.key.children,d=a[c].length;if(d>0)a[c][d-1].isLastNode=!0},removeNode:function(b,a){var c=h.getRoot(b),d=b.data.key.children,f=a.parentTId?a.getParentNode():c;a.isFirstNode=!1;a.isLastNode=!1;a.getPreNode=function(){return null};a.getNextNode=function(){return null};if(h.getNodeCache(b,a.tId)){k("#"+a.tId).remove();h.removeNodeCache(b,a);h.removeSelectedNode(b,a);for(var g=0,l=f[d].length;g< 55 | l;g++)if(f[d][g].tId==a.tId){f[d].splice(g,1);break}i.setFirstNode(b,f);i.setLastNode(b,f);var j,g=f[d].length;if(!b.data.keep.parent&&g==0)f.isParent=!1,f.open=!1,g=k("#"+f.tId+e.id.UL),l=k("#"+f.tId+e.id.SWITCH),j=k("#"+f.tId+e.id.ICON),i.replaceSwitchClass(f,l,e.folder.DOCU),i.replaceIcoClass(f,j,e.folder.DOCU),g.css("display","none");else if(b.view.showLine&&g>0){var n=f[d][g-1],g=k("#"+n.tId+e.id.UL),l=k("#"+n.tId+e.id.SWITCH);j=k("#"+n.tId+e.id.ICON);f==c?f[d].length==1?i.replaceSwitchClass(n, 56 | l,e.line.ROOT):(c=k("#"+f[d][0].tId+e.id.SWITCH),i.replaceSwitchClass(f[d][0],c,e.line.ROOTS),i.replaceSwitchClass(n,l,e.line.BOTTOM)):i.replaceSwitchClass(n,l,e.line.BOTTOM);g.removeClass(e.line.LINE)}}},replaceIcoClass:function(b,a,c){if(a&&!b.isAjaxing&&(b=a.attr("class"),b!=void 0)){b=b.split("_");switch(c){case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:b[b.length-1]=c}a.attr("class",b.join("_"))}},replaceSwitchClass:function(b,a,c){if(a){var d=a.attr("class");if(d!=void 0){d=d.split("_"); 57 | switch(c){case e.line.ROOT:case e.line.ROOTS:case e.line.CENTER:case e.line.BOTTOM:case e.line.NOLINE:d[0]=i.makeNodeLineClassEx(b)+c;break;case e.folder.OPEN:case e.folder.CLOSE:case e.folder.DOCU:d[1]=c}a.attr("class",d.join("_"));c!==e.folder.DOCU?a.removeAttr("disabled"):a.attr("disabled","disabled")}}},selectNode:function(b,a,c){c||i.cancelPreSelectedNode(b);k("#"+a.tId+e.id.A).addClass(e.node.CURSELECTED);h.addSelectedNode(b,a)},setNodeFontCss:function(b,a){var c=k("#"+a.tId+e.id.A),d=i.makeNodeFontCss(b, 58 | a);d&&c.css(d)},setNodeLineIcos:function(b,a){if(a){var c=k("#"+a.tId+e.id.SWITCH),d=k("#"+a.tId+e.id.UL),f=k("#"+a.tId+e.id.ICON),g=i.makeUlLineClass(b,a);g.length==0?d.removeClass(e.line.LINE):d.addClass(g);c.attr("class",i.makeNodeLineClass(b,a));a.isParent?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",i.makeNodeIcoStyle(b,a));f.attr("class",i.makeNodeIcoClass(b,a))}},setNodeName:function(b,a){var c=h.getNodeTitle(b,a),d=k("#"+a.tId+e.id.SPAN);d.empty(); 59 | b.view.nameIsHTML?d.html(h.getNodeName(b,a)):d.text(h.getNodeName(b,a));j.apply(b.view.showTitle,[b.treeId,a],b.view.showTitle)&&k("#"+a.tId+e.id.A).attr("title",!c?"":c)},setNodeTarget:function(b){k("#"+b.tId+e.id.A).attr("target",i.makeNodeTarget(b))},setNodeUrl:function(b,a){var c=k("#"+a.tId+e.id.A),d=i.makeNodeUrl(b,a);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(b,a){a.open||!j.canAsync(b,a)?i.expandCollapseNode(b,a,!a.open):b.async.enable?i.asyncNode(b,a)|| 60 | i.expandCollapseNode(b,a,!a.open):a&&i.expandCollapseNode(b,a,!a.open)}};k.fn.zTree={consts:{event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}}, 61 | _z:{tools:j,view:i,event:m,data:h},getZTreeObj:function(b){return(b=h.getZTreeTools(b))?b:null},destroy:function(b){if(b&&b.length>0)i.destroy(h.getSetting(b));else for(var a in r)i.destroy(r[a])},init:function(b,a,c){var d=j.clone(M);k.extend(!0,d,a);d.treeId=b.attr("id");d.treeObj=b;d.treeObj.empty();r[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed="";h.initRoot(d);b=h.getRoot(d);a=d.data.key.children;c=c?j.clone(j.isArray(c)?c:[c]):[];b[a]=d.data.simpleData.enable? 62 | h.transformTozTreeFormat(d,c):c;h.initCache(d);m.unbindTree(d);m.bindTree(d);m.unbindEvent(d);m.bindEvent(d);c={setting:d,addNodes:function(a,b,c){function e(){i.addNodes(d,a,h,c==!0)}if(!b)return null;a||(a=null);if(a&&!a.isParent&&d.data.keep.leaf)return null;var h=j.clone(j.isArray(b)?b:[b]);j.canAsync(d,a)?i.asyncNode(d,a,c,e):e();return h},cancelSelectedNode:function(a){i.cancelPreSelectedNode(this.setting,a)},destroy:function(){i.destroy(this.setting)},expandAll:function(a){a=!!a;i.expandCollapseSonNode(this.setting, 63 | null,a,!0);return a},expandNode:function(a,b,c,e,n){if(!a||!a.isParent)return null;b!==!0&&b!==!1&&(b=!a.open);if((n=!!n)&&b&&j.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(n&&!b&&j.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&i.expandCollapseParentNode(this.setting,a.getParentNode(),b,!1);if(b===a.open&&!c)return null;h.getRoot(d).expandTriggerFlag=n;if(c)i.expandCollapseSonNode(this.setting,a,b,!0,function(){if(e!==!1)try{k("#"+a.tId).focus().blur()}catch(b){}}); 64 | else if(a.open=!b,i.switchNode(this.setting,a),e!==!1)try{k("#"+a.tId).focus().blur()}catch(m){}return b},getNodes:function(){return h.getNodes(this.setting)},getNodeByParam:function(a,b,c){return!a?null:h.getNodeByParam(this.setting,c?c[this.setting.data.key.children]:h.getNodes(this.setting),a,b)},getNodeByTId:function(a){return h.getNodeCache(this.setting,a)},getNodesByParam:function(a,b,c){return!a?null:h.getNodesByParam(this.setting,c?c[this.setting.data.key.children]:h.getNodes(this.setting), 65 | a,b)},getNodesByParamFuzzy:function(a,b,c){return!a?null:h.getNodesByParamFuzzy(this.setting,c?c[this.setting.data.key.children]:h.getNodes(this.setting),a,b)},getNodesByFilter:function(a,b,c,d){b=!!b;return!a||typeof a!="function"?b?null:[]:h.getNodesByFilter(this.setting,c?c[this.setting.data.key.children]:h.getNodes(this.setting),a,b,d)},getNodeIndex:function(a){if(!a)return null;for(var b=d.data.key.children,c=a.parentTId?a.getParentNode():h.getRoot(this.setting),e=0,i=c[b].length;e0?i.createNodes(d,0,b[a]):d.async.enable&&d.async.url&&d.async.url!==""&&i.asyncNode(d);return c}};var N=k.fn.zTree,e=N.consts})(jQuery); 70 | 71 | /* 72 | * JQuery zTree excheck 3.5.02 73 | * http://zTree.me/ 74 | * 75 | * Copyright (c) 2010 Hunter.z 76 | * 77 | * Licensed same as jquery - MIT License 78 | * http://www.opensource.org/licenses/mit-license.php 79 | * 80 | * email: hunter.z@263.net 81 | * Date: 2013-01-28 82 | */ 83 | (function(m){var p,q,r,n={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},v={check:{enable:!1,autoCheckTrigger:!1,chkStyle:n.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:n.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c, 84 | a){if(a.chkDisabled===!0)return!1;var b=g.getSetting(c.data.treeId),d=b.data.key.checked;if(l.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;a[d]=!a[d];e.checkNodeRelation(b,a);d=m("#"+a.tId+i.id.CHECK);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(i.event.CHECK,[c,b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=g.getSetting(c.data.treeId),d=m("#"+a.tId+i.id.CHECK);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c,a){if(a.chkDisabled=== 85 | !0)return!1;var b=g.getSetting(c.data.treeId),d=m("#"+a.tId+i.id.CHECK);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};m.extend(!0,m.fn.zTree.consts,n);m.extend(!0,m.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,h,k=c.data.key.children,j=c.data.key.checked;b=i.radio;if(c.check.chkStyle==b.STYLE){var f=g.getRadioCheckedList(c);if(a[j])if(c.check.radioType==b.TYPE_ALL){for(d=f.length-1;d>=0;d--)b=f[d],b[j]=!1,f.splice(d,1),e.setChkClass(c,m("#"+b.tId+i.id.CHECK),b),b.parentTId!= 86 | a.parentTId&&e.repairParentChkClassWithSelf(c,b);f.push(a)}else{f=a.parentTId?a.getParentNode():g.getRoot(c);for(d=0,h=f[k].length;d-1)&&e.setSonNodeCheckBox(c,a,!0),!a[j]&&(!a[k]||a[k].length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c, 87 | a,!1),a[j]&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!a[j]&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=c.data.key.checked,d=i.checkbox,h=i.radio,k="",k=a.chkDisabled===!0?d.DISABLED:a.halfCheck?d.PART:c.check.chkStyle==h.STYLE?a.check_Child_State<1?d.FULL:d.PART:a[b]?a.check_Child_State===2||a.check_Child_State===-1?d.FULL:d.PART:a.check_Child_State<1?d.FULL:d.PART,b=c.check.chkStyle+"_"+(a[b]?d.TRUE:d.FALSE)+ 88 | "_"+k,b=a.check_Focus&&a.chkDisabled!==!0?b+"_"+d.FOCUS:b;return"button "+d.DEFAULT+" "+b},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===i.checkbox.STYLE)for(var b=c.data.key.checked,d=c.data.key.children,h=g.getRoot(c),k=0,j=h[d].length;k0?e.repairParentChkClass(c,a[b][0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){var h=c.data.key.children;if(a.chkDisabled!=b)a.chkDisabled=b;e.repairChkClass(c,a);if(a[h]&&d)for(var k=0,j=a[h].length;k0){j=!1;break}j&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var h=c.data.key.children,k=c.data.key.checked,j=m("#"+a.tId+i.id.CHECK);d||(d=a);var f=!1;if(a[h])for(var o=0,l=a[h].length;o0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,j,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(i.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=g.getRoot(c).radioCheckedList,b=0,d= 93 | a.length;b-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var h=c.data.key.children,k=c.data.key.checked,e=b&&c.check.chkStyle==i.radio.STYLE&& 94 | c.check.radioType==i.radio.TYPE_ALL,d=!d?[]:d,f=0,o=a.length;f0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var d=c.data.key.children,h=c.data.key.checked,b=!b?[]:b,k=0,e=a.length;k0?2:0,g==2){h=2;break}else g==0&&(h=0);else if(c.check.chkStyle==i.checkbox.STYLE)if(g=f.nocheck===!0||f.chkDisabled===!0?f.check_Child_State:f.halfCheck===!0?1:f[d]?f.check_Child_State===-1||f.check_Child_State===2?2:1:f.check_Child_State> 96 | 0?1:0,g===1){h=1;break}else if(g===2&&h>-1&&e>0&&g!==h){h=1;break}else if(h===2&&g>-1&&g<2){h=1;break}else g>-1&&(h=g)}a.check_Child_State=h}}}});var n=m.fn.zTree,l=n._z.tools,i=n.consts,e=n._z.view,g=n._z.data;g.exSetting(v);g.addInitBind(function(c){c.treeObj.bind(i.event.CHECK,function(a,b,d,h){l.apply(c.callback.onCheck,[b?b:a,d,h])})});g.addInitUnBind(function(c){c.treeObj.unbind(i.event.CHECK)});g.addInitCache(function(){});g.addInitNode(function(c,a,b,d){if(b){a=c.data.key.checked;typeof b[a]== 97 | "string"&&(b[a]=l.eqs(b[a],"true"));b[a]=!!b[a];b.checkedOld=b[a];if(typeof b.nocheck=="string")b.nocheck=l.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=l.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=l.eqs(b.halfCheck,"true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return g.getCheckStatus(c, 98 | b)}}});g.addInitProxy(function(c){var a=c.target,b=g.getSetting(c.data.treeId),d="",h=null,e="",j=null;if(l.eqs(c.type,"mouseover")){if(b.check.enable&&l.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+i.id.CHECK)!==null)d=a.parentNode.id,e="mouseoverCheck"}else if(l.eqs(c.type,"mouseout")){if(b.check.enable&&l.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+i.id.CHECK)!==null)d=a.parentNode.id,e="mouseoutCheck"}else if(l.eqs(c.type,"click")&&b.check.enable&&l.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+ 99 | i.id.CHECK)!==null)d=a.parentNode.id,e="checkNode";if(d.length>0)switch(h=g.getNodeCache(b,d),e){case "checkNode":j=p;break;case "mouseoverCheck":j=q;break;case "mouseoutCheck":j=r}return{stop:!1,node:h,nodeEventType:e,nodeEventCallback:j,treeEventType:"",treeEventCallback:null}});g.addInitRoot(function(c){g.getRoot(c).radioCheckedList=[]});g.addBeforeA(function(c,a,b){var d=c.data.key.checked;c.check.enable&&(g.makeChkFlag(c,a),c.check.chkStyle==i.radio.STYLE&&c.check.radioType==i.radio.TYPE_ALL&& 100 | a[d]&&g.getRoot(c).radioCheckedList.push(a),b.push(""))});g.addZTreeTools(function(c,a){a.checkNode=function(a,b,g,j){var f=this.setting.data.key.checked;if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!a[f]),j=!!j,(a[f]!==b||g)&&!(j&&l.apply(this.setting.callback.beforeCheck,[this.setting.treeId,a],!0)==!1)&&l.uCanDo(this.setting)&&this.setting.check.enable&&a.nocheck!== 101 | !0))a[f]=b,b=m("#"+a.tId+i.id.CHECK),(g||this.setting.check.chkStyle===i.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),j&&c.treeObj.trigger(i.event.CHECK,[null,c.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var b=this.setting.data.key.children;return g.getTreeCheckedNodes(this.setting,g.getRoot(c)[b],a!==!1)};a.getChangeCheckedNodes=function(){var a=this.setting.data.key.children; 102 | return g.getTreeChangeCheckedNodes(this.setting,g.getRoot(c)[a])};a.setChkDisabled=function(a,b,c,g){b=!!b;c=!!c;e.repairSonChkDisabled(this.setting,a,b,!!g);e.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,h){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&m("#"+c.tId).get(0)&&l.uCanDo(this.setting)){var g=m("#"+c.tId+i.id.CHECK);(h==!0||this.setting.check.chkStyle===i.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting, 103 | g,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)};var t=e.removeNode;e.removeNode=function(c,a){var b=a.getParentNode();t&&t.apply(e,arguments);a&&b&&(e.repairChkClass(c,b),e.repairParentChkClass(c,b))};var u=e.appendNodes;e.appendNodes=function(c,a,b,d,h,i){var j="";u&&(j=u.apply(e,arguments));d&&g.makeChkFlag(c,d);return j}})(jQuery); 104 | 105 | /* 106 | * JQuery zTree exedit 3.5.02 107 | * http://zTree.me/ 108 | * 109 | * Copyright (c) 2010 Hunter.z 110 | * 111 | * Licensed same as jquery - MIT License 112 | * http://www.opensource.org/licenses/mit-license.php 113 | * 114 | * email: hunter.z@263.net 115 | * Date: 2013-01-28 116 | */ 117 | (function(k){var F={event:{DRAG:"ztree_drag",DROP:"ztree_drop",REMOVE:"ztree_remove",RENAME:"ztree_rename"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},D={onHoverOverNode:function(b,a){var c=p.getSetting(b.data.treeId),d=p.getRoot(c);if(d.curHoverNode!=a)D.onHoverOutNode(b);d.curHoverNode=a;e.addHoverDom(c,a)},onHoverOutNode:function(b){var b= 118 | p.getSetting(b.data.treeId),a=p.getRoot(b);if(a.curHoverNode&&!p.isSelectedNode(b,a.curHoverNode))e.removeTreeDom(b,a.curHoverNode),a.curHoverNode=null},onMousedownNode:function(b,a){function c(b){if(z.dragFlag==0&&Math.abs(K-b.clientX)1){var s=m[0].parentTId?m[0].getParentNode()[l]:p.getNodes(g);l=[];for(a=0,c=s.length;a-1&&j+1!==a&&(f=!1),l.push(s[a]),j=a),m.length===l.length){m=l;break}}f&&(D=m[0].getPreNode(),E=m[m.length-1].getNextNode());y=k("
      "); 120 | for(a=0,c=m.length;a0),e.removeTreeDom(g,f),j=k("
    • "),j.append(k("#"+f.tId+d.id.A).clone()),j.css("padding","0"),j.children("#"+f.tId+d.id.A).removeClass(d.node.CURSELECTED),y.append(j),a==g.edit.drag.maxShowNodeNum-1){j=k("
    • ...
    • ");y.append(j);break}y.attr("id",m[0].tId+d.id.UL+"_tmp");y.addClass(g.treeObj.attr("class"));y.appendTo("body");t=k(""); 121 | t.attr("id","zTreeMove_arrow_tmp");t.appendTo("body");g.treeObj.trigger(d.event.DRAG,[b,g.treeId,m])}if(z.dragFlag==1){r&&t.attr("id")==b.target.id&&u&&b.clientX+x.scrollLeft()+2>k("#"+u+d.id.A,r).offset().left?(f=k("#"+u+d.id.A,r),b.target=f.length>0?f.get(0):b.target):r&&(r.removeClass(d.node.TMPTARGET_TREE),u&&k("#"+u+d.id.A,r).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+F.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+F.move.TYPE_INNER)); 122 | u=r=null;G=!1;i=g;f=p.getSettings();for(var B in f)if(f[B].treeId&&f[B].edit.enable&&f[B].treeId!=g.treeId&&(b.target.id==f[B].treeId||k(b.target).parents("#"+f[B].treeId).length>0))G=!0,i=f[B];B=x.scrollTop();j=x.scrollLeft();l=i.treeObj.offset();a=i.treeObj.get(0).scrollHeight;f=i.treeObj.get(0).scrollWidth;c=b.clientY+B-l.top;var o=i.treeObj.height()+l.top-b.clientY-B,n=b.clientX+j-l.left,H=i.treeObj.width()+l.left-b.clientX-j;l=cg.edit.drag.borderMin;var s=og.edit.drag.borderMin,I=ng.edit.drag.borderMin,C=Hg.edit.drag.borderMin,o=c>g.edit.drag.borderMin&&o>g.edit.drag.borderMin&&n>g.edit.drag.borderMin&&H>g.edit.drag.borderMin,n=l&&i.treeObj.scrollTop()<=0,H=s&&i.treeObj.scrollTop()+i.treeObj.height()+10>=a,M=I&&i.treeObj.scrollLeft()<=0,N=C&&i.treeObj.scrollLeft()+i.treeObj.width()+10>=f;if(b.target.id&&i.treeObj.find("#"+b.target.id).length>0){for(var A=b.target;A&&A.tagName&&!h.eqs(A.tagName,"li")&& 124 | A.id!=i.treeId;)A=A.parentNode;var O=!0;for(a=0,c=m.length;a0){O=!1;break}if(O&&b.target.id&&(b.target.id==A.id+d.id.A||k(b.target).parents("#"+A.id+d.id.A).length>0))r=k(A),u=A.id}f=m[0];if(o&&(b.target.id==i.treeId||k(b.target).parents("#"+i.treeId).length>0)){if(!r&&(b.target.id==i.treeId||n||H||M||N)&&(G||!G&&f.parentTId))r=i.treeObj;l?i.treeObj.scrollTop(i.treeObj.scrollTop()-10):s&&i.treeObj.scrollTop(i.treeObj.scrollTop()+ 125 | 10);I?i.treeObj.scrollLeft(i.treeObj.scrollLeft()-10):C&&i.treeObj.scrollLeft(i.treeObj.scrollLeft()+10);r&&r!=i.treeObj&&r.offset().left=-0.2)&&f?(a=1-t.width(),l=s-t.height()/2,v=d.move.TYPE_PREV):(C==0||b>=C&&b<=1.2)&&a?(a=1-t.width(),l=l==null||w.isParent&&w.open?s+c.height()-t.height()/2:l.offset().top-t.height()/2,v=d.move.TYPE_NEXT):(a=5-t.width(),l=s,v=d.move.TYPE_INNER);t.css({display:"block",top:l+"px",left:j+a+"px"});c.addClass(d.node.TMPTARGET_NODE+"_"+v);if(P!= 128 | u||Q!=v)J=(new Date).getTime();if(w&&w.isParent&&v==d.move.TYPE_INNER&&(b=!0,window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId!==w.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===w.tId&&(b=!1),b))window.zTreeMoveTimer=setTimeout(function(){v==d.move.TYPE_INNER&&w&&w.isParent&&!w.open&&(new Date).getTime()-J>i.edit.drag.autoOpenTime&&h.apply(i.callback.beforeDragOpen,[i.treeId,w],!0)&&(e.switchNode(i,w),i.edit.drag.autoExpandTrigger&& 129 | i.treeObj.trigger(d.event.EXPAND,[i.treeId,w]))},i.edit.drag.autoOpenTime+50),window.zTreeMoveTargetNodeTId=w.tId}}else if(v=d.move.TYPE_INNER,r&&h.apply(i.edit.drag.inner,[i.treeId,m,null],!!i.edit.drag.inner)?r.addClass(d.node.TMPTARGET_TREE):r=null,t.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;P=u;Q=v}return!1}function q(b){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;Q=P=null; 130 | x.unbind("mousemove",c);x.unbind("mouseup",q);x.unbind("selectstart",f);k("body").css("cursor","auto");r&&(r.removeClass(d.node.TMPTARGET_TREE),u&&k("#"+u+d.id.A,r).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+F.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+F.move.TYPE_INNER));h.showIfameMask(g,!1);z.showHoverDom=!0;if(z.dragFlag!=0){z.dragFlag=0;var a,l,j;for(a=0,l=m.length;a0);k("#"+s[0].tId).focus().blur();g.treeObj.trigger(d.event.DROP,[b, 133 | i.treeId,s,n,v,o])};v==d.move.TYPE_INNER&&h.canAsync(i,n)?e.asyncNode(i,n,!1,a):a()}}else{for(a=0,l=m.length;a0);g.treeObj.trigger(d.event.DROP,[b,g.treeId,m,null,null,null])}}}function f(){return!1}var l,j,g=p.getSetting(b.data.treeId),z=p.getRoot(g);if(b.button==2||!g.edit.enable||!g.edit.drag.isCopy&&!g.edit.drag.isMove)return!0;var o=b.target,n=p.getRoot(g).curSelectedList,m=[];if(p.isSelectedNode(g,a))for(l=0,j=n.length;l0;)c.dragMaskList[0].remove(), 136 | c.dragMaskList.shift();if(a)for(var d=k("iframe"),f=0,e=d.length;f");j.appendTo("body");c.dragMaskList.push(j)}}},view:{addEditBtn:function(b,a){if(!(a.editNameFlag||k("#"+a.tId+d.id.EDIT).length>0)&&h.apply(b.edit.showRenameBtn,[b.treeId,a],b.edit.showRenameBtn)){var c=k("#"+a.tId+d.id.A),q="";c.append(q);k("#"+a.tId+d.id.EDIT).bind("click",function(){if(!h.uCanDo(b)||h.apply(b.callback.beforeEditName,[b.treeId,a],!0)==!1)return!1;e.editNode(b,a);return!1}).show()}},addRemoveBtn:function(b,a){if(!(a.editNameFlag||k("#"+a.tId+d.id.REMOVE).length>0)&&h.apply(b.edit.showRemoveBtn,[b.treeId,a],b.edit.showRemoveBtn)){var c=k("#"+a.tId+d.id.A),q="";c.append(q);k("#"+a.tId+d.id.REMOVE).bind("click",function(){if(!h.uCanDo(b)||h.apply(b.callback.beforeRemove,[b.treeId,a],!0)==!1)return!1;e.removeNode(b,a);b.treeObj.trigger(d.event.REMOVE,[b.treeId,a]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(b,a){if(p.getRoot(b).showHoverDom)a.isHover=!0,b.edit.enable&&(e.addEditBtn(b, 139 | a),e.addRemoveBtn(b,a)),h.apply(b.view.addHoverDom,[b.treeId,a])},cancelCurEditNode:function(b,a){var c=p.getRoot(b),q=b.data.key.name,f=c.curEditNode;if(f){var l=c.curEditInput,j=a?a:l.val();if(!a&&h.apply(b.callback.beforeRename,[b.treeId,f,j],!0)===!1)return!1;else f[q]=j?j:l.val(),a||b.treeObj.trigger(d.event.RENAME,[b.treeId,f]);k("#"+f.tId+d.id.A).removeClass(d.node.CURSELECTED_EDIT);l.unbind();e.setNodeName(b,f);f.editNameFlag=!1;c.curEditNode=null;c.curEditInput=null;e.selectNode(b,f,!1)}return c.noSelection= 140 | !0},editNode:function(b,a){var c=p.getRoot(b);e.editNodeBlur=!1;if(p.isSelectedNode(b,a)&&c.curEditNode==a&&a.editNameFlag)setTimeout(function(){h.inputFocus(c.curEditInput)},0);else{var q=b.data.key.name;a.editNameFlag=!0;e.removeTreeDom(b,a);e.cancelCurEditNode(b);e.selectNode(b,a,!1);k("#"+a.tId+d.id.SPAN).html("");var f=k("#"+a.tId+d.id.INPUT);f.attr("value",a[q]);b.edit.editNameSelectAll?h.inputSelect(f):h.inputFocus(f); 141 | f.bind("blur",function(){e.editNodeBlur||e.cancelCurEditNode(b)}).bind("keydown",function(c){c.keyCode=="13"?(e.editNodeBlur=!0,e.cancelCurEditNode(b,null,!0)):c.keyCode=="27"&&e.cancelCurEditNode(b,a[q])}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});k("#"+a.tId+d.id.A).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=f;c.noSelection=!1;c.curEditNode=a}},moveNode:function(b,a,c,q,f,l){var j=p.getRoot(b),g=b.data.key.children;if(a!=c&&(!b.data.keep.leaf||!a||a.isParent|| 142 | q!=d.move.TYPE_INNER)){var h=c.parentTId?c.getParentNode():j,o=a===null||a==j;o&&a===null&&(a=j);if(o)q=d.move.TYPE_INNER;j=a.parentTId?a.getParentNode():j;if(q!=d.move.TYPE_PREV&&q!=d.move.TYPE_NEXT)q=d.move.TYPE_INNER;if(q==d.move.TYPE_INNER)if(o)c.parentTId=null;else{if(!a.isParent)a.isParent=!0,a.open=!!a.open,e.setNodeLineIcos(b,a);c.parentTId=a.tId}var n;o?n=o=b.treeObj:(!l&&q==d.move.TYPE_INNER?e.expandCollapseNode(b,a,!0,!1):l||e.expandCollapseNode(b,a.getParentNode(),!0,!1),o=k("#"+a.tId), 143 | n=k("#"+a.tId+d.id.UL),o.get(0)&&!n.get(0)&&(n=[],e.makeUlHtml(b,a,n,""),o.append(n.join(""))),n=k("#"+a.tId+d.id.UL));var m=k("#"+c.tId);m.get(0)?o.get(0)||m.remove():m=e.appendNodes(b,c.level,[c],null,!1,!0).join("");n.get(0)&&q==d.move.TYPE_INNER?n.append(m):o.get(0)&&q==d.move.TYPE_PREV?o.before(m):o.get(0)&&q==d.move.TYPE_NEXT&&o.after(m);var x=-1,y=0,t=null,o=null,r=c.level;if(c.isFirstNode){if(x=0,h[g].length>1)t=h[g][1],t.isFirstNode=!0}else if(c.isLastNode)x=h[g].length-1,t=h[g][x-1],t.isLastNode= 144 | !0;else for(n=0,m=h[g].length;n=0&&h[g].splice(x,1);if(q!=d.move.TYPE_INNER)for(n=0,m=j[g].length;n0)o=a[g][a[g].length-1],o.isLastNode=!1;a[g].splice(a[g].length,0,c);c.isLastNode=!0;c.isFirstNode=a[g].length==1}else a.isFirstNode&&q==d.move.TYPE_PREV?(j[g].splice(y,0,c),o=a,o.isFirstNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!0,c.isLastNode=!1):a.isLastNode&&q==d.move.TYPE_NEXT? 145 | (j[g].splice(y+1,0,c),o=a,o.isLastNode=!1,c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(q==d.move.TYPE_PREV?j[g].splice(y,0,c):j[g].splice(y+1,0,c),c.parentTId=a.parentTId,c.isFirstNode=!1,c.isLastNode=!1);p.fixPIdKeyValue(b,c);p.setSonNodeLevel(b,c.getParentNode(),c);e.setNodeLineIcos(b,c);e.repairNodeLevelClass(b,c,r);!b.data.keep.parent&&h[g].length<1?(h.isParent=!1,h.open=!1,a=k("#"+h.tId+d.id.UL),q=k("#"+h.tId+d.id.SWITCH),g=k("#"+h.tId+d.id.ICON),e.replaceSwitchClass(h,q,d.folder.DOCU), 146 | e.replaceIcoClass(h,g,d.folder.DOCU),a.css("display","none")):t&&e.setNodeLineIcos(b,t);o&&e.setNodeLineIcos(b,o);b.check&&b.check.enable&&e.repairChkClass&&(e.repairChkClass(b,h),e.repairParentChkClassWithSelf(b,h),h!=c.parent&&e.repairParentChkClassWithSelf(b,c));l||e.expandCollapseParentNode(b,c.getParentNode(),!0,f)}},removeEditBtn:function(b){k("#"+b.tId+d.id.EDIT).unbind().remove()},removeRemoveBtn:function(b){k("#"+b.tId+d.id.REMOVE).unbind().remove()},removeTreeDom:function(b,a){a.isHover= 147 | !1;e.removeEditBtn(a);e.removeRemoveBtn(a);h.apply(b.view.removeHoverDom,[b.treeId,a])},repairNodeLevelClass:function(b,a,c){if(c!==a.level){var b=k("#"+a.tId),e=k("#"+a.tId+d.id.A),f=k("#"+a.tId+d.id.UL),c="level"+c,a="level"+a.level;b.removeClass(c);b.addClass(a);e.removeClass(c);e.addClass(a);f.removeClass(c);f.addClass(a)}}},event:{},data:{setSonNodeLevel:function(b,a,c){if(c){var d=b.data.key.children;c.level=a?a.level+1:0;if(c[d])for(var a=0,f=c[d].length;a0)switch(l=p.getNodeCache(c,f),j){case "mousedownNode":g=D.onMousedownNode;break;case "hoverOverNode":g=D.onHoverOverNode;break;case "hoverOutNode":g=D.onHoverOutNode}return{stop:!1,node:l,nodeEventType:j,nodeEventCallback:g,treeEventType:"",treeEventCallback:null}});p.addInitRoot(function(b){b=p.getRoot(b);b.curEditNode=null;b.curEditInput=null;b.curHoverNode=null;b.dragFlag=0;b.dragNodeShowBefore= 152 | [];b.dragMaskList=[];b.showHoverDom=!0});p.addZTreeTools(function(b,a){a.cancelEditName=function(a){var d=p.getRoot(b),f=b.data.key.name,h=d.curEditNode;d.curEditNode&&e.cancelCurEditNode(b,a?a:h[f])};a.copyNode=function(a,k,f,l){if(!k)return null;if(a&&!a.isParent&&b.data.keep.leaf&&f===d.move.TYPE_INNER)return null;var j=h.clone(k);if(!a)a=null,f=d.move.TYPE_INNER;f==d.move.TYPE_INNER?(k=function(){e.addNodes(b,a,[j],l)},h.canAsync(b,a)?e.asyncNode(b,a,l,k):k()):(e.addNodes(b,a.parentNode,[j],l), 153 | e.moveNode(b,a,j,f,!1,l));return j};a.editName=function(a){a&&a.tId&&a===p.getNodeCache(b,a.tId)&&(a.parentTId&&e.expandCollapseParentNode(b,a.getParentNode(),!0),e.editNode(b,a))};a.moveNode=function(a,q,f,l){function j(){e.moveNode(b,a,q,f,!1,l)}if(!q)return q;if(a&&!a.isParent&&b.data.keep.leaf&&f===d.move.TYPE_INNER)return null;else if(a&&(q.parentTId==a.tId&&f==d.move.TYPE_INNER||k("#"+q.tId).find("#"+a.tId).length>0))return null;else a||(a=null);h.canAsync(b,a)?e.asyncNode(b,a,l,j):j();return q}; 154 | a.setEditable=function(a){b.edit.enable=a;return this.refresh()}});var K=e.cancelPreSelectedNode;e.cancelPreSelectedNode=function(b,a){for(var c=p.getRoot(b).curSelectedList,d=0,f=c.length;d 0; i-- ) { 47 | str += current * opts.step+'*'; 48 | } 49 | 50 | return eval( str + '1' ); 51 | } 52 | 53 | ;(function($) { 54 | /* 55 | * 根据header创建目录内容 56 | */ 57 | function create_toc(opts) { 58 | $(opts.documment_selector).find(':header').each(function() { 59 | var level = parseInt(this.nodeName.substring(1), 10); 60 | 61 | _rename_header_content(opts,this,level); 62 | 63 | _add_header_node(opts,$(this)); 64 | });//end each 65 | } 66 | 67 | /* 68 | * 渲染ztree 69 | */ 70 | function render_with_ztree(opts) { 71 | var t = $(opts._zTree); 72 | t = $.fn.zTree.init(t,opts.ztreeSetting,opts._header_nodes).expandAll(opts.is_expand_all); 73 | // alert(opts._headers * 88); 74 | // $(opts._zTree).height(opts._headers * 33 + 33); 75 | 76 | $(opts._zTree).css(opts.ztreeStyle); 77 | } 78 | 79 | /* 80 | * 将已有header编号,并重命名 81 | */ 82 | function _rename_header_content(opts ,header_obj ,level) { 83 | if(opts._headers.length == level) { 84 | opts._headers[level - 1]++; 85 | } else if(opts._headers.length > level) { 86 | opts._headers = opts._headers.slice(0, level); 87 | opts._headers[level - 1] ++; 88 | } else if(opts._headers.length < level) { 89 | for(var i = 0; i < (level - opts._headers.length); i++) { 90 | // console.log('push 1'); 91 | opts._headers.push(1); 92 | } 93 | } 94 | 95 | if(opts.is_auto_number == true) { 96 | //另存为的文件里会有编号,所以有编号的就不再重新替换 97 | if($(header_obj).text().indexOf( opts._headers.join('.') ) != -1){ 98 | 99 | }else{ 100 | $(header_obj).text(opts._headers.join('.') + '. ' + $(header_obj).text()); 101 | } 102 | } 103 | } 104 | 105 | /* 106 | * 给ztree用的header_nodes增加数据 107 | */ 108 | function _add_header_node(opts ,header_obj) { 109 | var id = encode_id_with_array(opts,opts._headers); 110 | var pid = get_parent_id_with_array(opts,opts._headers); 111 | 112 | // 设置锚点id 113 | $(header_obj).attr('id',id); 114 | 115 | log($(header_obj).text()); 116 | 117 | opts._header_offsets.push($(header_obj).offset().top - opts.highlight_offset); 118 | 119 | log('h offset ='+( $(header_obj).offset().top - opts.highlight_offset ) ); 120 | 121 | opts._header_nodes.push({ 122 | id:id, 123 | pId:pid , 124 | name:$(header_obj).text()||'null', 125 | open:true, 126 | url:'#'+ id, 127 | target:'_self' 128 | }); 129 | } 130 | 131 | /* 132 | * 根据滚动确定当前位置,并更新ztree 133 | */ 134 | function bind_scroll_event_and_update_postion(opts) { 135 | var timeout; 136 | var highlight_on_scroll = function(e) { 137 | if (timeout) { 138 | clearTimeout(timeout); 139 | } 140 | 141 | timeout = setTimeout(function() { 142 | var top = $(window).scrollTop(),highlighted; 143 | 144 | if(opts.debug) console.log('top='+top); 145 | 146 | for (var i = 0, c = opts._header_offsets.length; i < c; i++) { 147 | // fixed: top+5防止点击ztree的时候,出现向上抖动的情况 148 | if (opts._header_offsets[i] >= (top + 5) ) { 149 | console.log('opts._header_offsets['+ i +'] = '+opts._header_offsets[i]); 150 | $('a').removeClass('curSelectedNode'); 151 | 152 | // 由于有root节点,所以i应该从1开始 153 | var obj = $('#tree_' + (i+1) + '_a').addClass('curSelectedNode'); 154 | break; 155 | } 156 | } 157 | }, opts.refresh_scroll_time); 158 | }; 159 | 160 | if (opts.highlight_on_scroll) { 161 | $(window).bind('scroll', highlight_on_scroll); 162 | highlight_on_scroll(); 163 | } 164 | } 165 | 166 | /* 167 | * 初始化 168 | */ 169 | function init_with_config(opts) { 170 | opts.highlight_offset = $(opts.documment_selector).offset().top; 171 | } 172 | 173 | /* 174 | * 日志 175 | */ 176 | function log(str) { 177 | return; 178 | if($.fn.ztree_toc.defaults.debug == true) { 179 | console.log(str); 180 | } 181 | } 182 | 183 | $.fn.ztree_toc = function(options) { 184 | // 将defaults 和 options 参数合并到{} 185 | var opts = $.extend({},$.fn.ztree_toc.defaults,options); 186 | 187 | return this.each(function() { 188 | opts._zTree = $(this); 189 | 190 | // 初始化 191 | init_with_config(opts); 192 | 193 | // 创建table of content,获取元数据_headers 194 | create_toc(opts); 195 | 196 | // 根据_headers生成ztree 197 | render_with_ztree(opts); 198 | 199 | // 根据滚动确定当前位置,并更新ztree 200 | bind_scroll_event_and_update_postion(opts); 201 | }); 202 | // each end 203 | } 204 | 205 | //定义默认 206 | $.fn.ztree_toc.defaults = { 207 | _zTree: null, 208 | _headers: [], 209 | _header_offsets: [], 210 | _header_nodes: [{ id:1, pId:0, name:"Table of Content",open:true}], 211 | debug: true, 212 | highlight_offset: 0, 213 | highlight_on_scroll: true, 214 | /* 215 | * 计算滚动判断当前位置的时间,默认是50毫秒 216 | */ 217 | refresh_scroll_time: 50, 218 | documment_selector: 'body', 219 | is_posion_top: false, 220 | /* 221 | * 默认是否显示header编号 222 | */ 223 | is_auto_number: false, 224 | /* 225 | * 默认是否展开全部 226 | */ 227 | is_expand_all: true, 228 | /* 229 | * 是否对选中行,显示高亮效果 230 | */ 231 | is_highlight_selected_line: true, 232 | step: 100, 233 | ztreeStyle: { 234 | width:'260px', 235 | overflow: 'auto', 236 | position: 'fixed', 237 | 'z-index': 2147483647, 238 | border: '0px none', 239 | left: '0px', 240 | bottom: '0px', 241 | // height:'100px' 242 | }, 243 | ztreeSetting: { 244 | view: { 245 | dblClickExpand: false, 246 | showLine: true, 247 | showIcon: false, 248 | selectedMulti: false 249 | }, 250 | data: { 251 | simpleData: { 252 | enable: true, 253 | idKey : "id", 254 | pIdKey: "pId", 255 | // rootPId: "0" 256 | } 257 | }, 258 | callback: { 259 | beforeClick: function(treeId, treeNode) { 260 | $('a').removeClass('curSelectedNode'); 261 | if(treeNode.id == 1){ 262 | // TODO: when click root node 263 | console.log('click root table of content'); 264 | } 265 | if($.fn.ztree_toc.defaults.is_highlight_selected_line == true) { 266 | $('#' + treeNode.id).css('color' ,'red').fadeOut("slow" ,function() { 267 | // Animation complete. 268 | $(this).show().css('color','black'); 269 | }); 270 | } 271 | }, 272 | onRightClick: function(event, treeId, treeNode) { 273 | if(treeNode.id == 1){ 274 | // TODO: when right_click root node:table content 275 | console.log('right_click root table of content'); 276 | } 277 | } 278 | } 279 | } 280 | }; 281 | 282 | })(jQuery); -------------------------------------------------------------------------------- /docs/toc/js/ztree_toc.min.js: -------------------------------------------------------------------------------- 1 | /*! ztree_toc - v0.2.2 - 2014-02-08 2 | * https://github.com/i5ting/jQuery.zTree_Toc.js 3 | * Copyright (c) 2014 alfred.sang; Licensed MIT */ 4 | function encode_id_with_array(a,b){for(var c=0,d=0;d0;i--)str+=current*opts.step+"*";return eval(str+"1")}!function(a){function b(b){a(b.documment_selector).find(":header").each(function(){var c=parseInt(this.nodeName.substring(1),10);d(b,this,c),e(b,a(this))})}function c(b){var c=a(b._zTree);c=a.fn.zTree.init(c,b.ztreeSetting,b._header_nodes).expandAll(b.is_expand_all),a(b._zTree).css(b.ztreeStyle)}function d(b,c,d){if(b._headers.length==d)b._headers[d-1]++;else if(b._headers.length>d)b._headers=b._headers.slice(0,d),b._headers[d-1]++;else if(b._headers.lengthd;d++)if(b._header_offsets[d]>=c+5){console.log("opts._header_offsets["+d+"] = "+b._header_offsets[d]),a("a").removeClass("curSelectedNode"),a("#tree_"+(d+1)+"_a").addClass("curSelectedNode");break}},b.refresh_scroll_time)};b.highlight_on_scroll&&(a(window).bind("scroll",d),d())}function g(b){b.highlight_offset=a(b.documment_selector).offset().top}function h(a){}a.fn.ztree_toc=function(d){var e=a.extend({},a.fn.ztree_toc.defaults,d);return this.each(function(){e._zTree=a(this),g(e),b(e),c(e),f(e)})},a.fn.ztree_toc.defaults={_zTree:null,_headers:[],_header_offsets:[],_header_nodes:[{id:1,pId:0,name:"Table of Content",open:!0}],debug:!0,highlight_offset:0,highlight_on_scroll:!0,refresh_scroll_time:50,documment_selector:"body",is_posion_top:!1,is_auto_number:!1,is_expand_all:!0,is_highlight_selected_line:!0,step:100,ztreeStyle:{width:"260px",overflow:"auto",position:"fixed","z-index":2147483647,border:"0px none",left:"0px",bottom:"0px"},ztreeSetting:{view:{dblClickExpand:!1,showLine:!0,showIcon:!1,selectedMulti:!1},data:{simpleData:{enable:!0,idKey:"id",pIdKey:"pId"}},callback:{beforeClick:function(b,c){a("a").removeClass("curSelectedNode"),1==c.id&&console.log("click root table of content"),1==a.fn.ztree_toc.defaults.is_highlight_selected_line&&a("#"+c.id).css("color","red").fadeOut("slow",function(){a(this).show().css("color","black")})},onRightClick:function(a,b,c){1==c.id&&console.log("right_click root table of content")}}}}}(jQuery); -------------------------------------------------------------------------------- /docs/toc/style/Clearness Dark.css: -------------------------------------------------------------------------------- 1 | h1, 2 | h2, 3 | h3, 4 | h4, 5 | h5, 6 | h6, 7 | p, 8 | blockquote { 9 | margin: 0; 10 | padding: 0; 11 | } 12 | body { 13 | font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", Arial, sans-serif; 14 | font-size: 13px; 15 | line-height: 18px; 16 | color: #fff; 17 | background-color: #282a36; 18 | margin: 10px 13px 10px 13px; 19 | } 20 | table { 21 | margin: 10px 0 15px 0; 22 | border-collapse: collapse; 23 | } 24 | td,th { 25 | border: 1px solid #ddd; 26 | padding: 3px 10px; 27 | } 28 | th { 29 | padding: 5px 10px; 30 | } 31 | a { 32 | color: #59acf3; 33 | } 34 | a:hover { 35 | color: #a7d8ff; 36 | text-decoration: none; 37 | } 38 | a img { 39 | border: none; 40 | } 41 | p { 42 | margin-bottom: 9px; 43 | } 44 | h1, 45 | h2, 46 | h3, 47 | h4, 48 | h5, 49 | h6 { 50 | color: #fff; 51 | line-height: 36px; 52 | } 53 | h1 { 54 | margin-bottom: 18px; 55 | font-size: 30px; 56 | } 57 | h2 { 58 | font-size: 24px; 59 | } 60 | h3 { 61 | font-size: 18px; 62 | } 63 | h4 { 64 | font-size: 16px; 65 | } 66 | h5 { 67 | font-size: 14px; 68 | } 69 | h6 { 70 | font-size: 13px; 71 | } 72 | hr { 73 | margin: 0 0 19px; 74 | border: 0; 75 | border-bottom: 1px solid #ccc; 76 | } 77 | blockquote { 78 | padding: 13px 13px 21px 15px; 79 | margin-bottom: 18px; 80 | font-family:georgia,serif; 81 | font-style: italic; 82 | } 83 | blockquote:before { 84 | content:"\201C"; 85 | font-size:40px; 86 | margin-left:-10px; 87 | font-family:georgia,serif; 88 | color:#eee; 89 | } 90 | blockquote p { 91 | font-size: 14px; 92 | font-weight: 300; 93 | line-height: 18px; 94 | margin-bottom: 0; 95 | font-style: italic; 96 | } 97 | code, pre { 98 | font-family: Monaco, Andale Mono, Courier New, monospace; 99 | } 100 | code { 101 | color: #ff4a14; 102 | padding: 1px 3px; 103 | font-size: 12px; 104 | -webkit-border-radius: 3px; 105 | -moz-border-radius: 3px; 106 | border-radius: 3px; 107 | } 108 | pre { 109 | display: block; 110 | padding: 14px; 111 | margin: 0 0 18px; 112 | line-height: 16px; 113 | font-size: 11px; 114 | border: 1px solid #bf370f; 115 | white-space: pre; 116 | white-space: pre-wrap; 117 | word-wrap: break-word; 118 | } 119 | pre code { 120 | background-color: #282a36; 121 | color: #ff4a14; 122 | font-size: 11px; 123 | padding: 0; 124 | } 125 | sup { 126 | font-size: 0.83em; 127 | vertical-align: super; 128 | line-height: 0; 129 | } 130 | * { 131 | -webkit-print-color-adjust: exact; 132 | } 133 | @media screen and (min-width: 914px) { 134 | body { 135 | width: 854px; 136 | margin:10px auto; 137 | } 138 | } 139 | @media print { 140 | body,code,pre code,h1,h2,h3,h4,h5,h6 { 141 | color: black; 142 | } 143 | table, pre { 144 | page-break-inside: avoid; 145 | } 146 | } -------------------------------------------------------------------------------- /docs/toc/style/Clearness.css: -------------------------------------------------------------------------------- 1 | h1, 2 | h2, 3 | h3, 4 | h4, 5 | h5, 6 | h6, 7 | p, 8 | blockquote { 9 | margin: 0; 10 | padding: 0; 11 | } 12 | body { 13 | font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", Arial, sans-serif; 14 | font-size: 13px; 15 | line-height: 18px; 16 | color: #737373; 17 | background-color: white; 18 | margin: 10px 13px 10px 13px; 19 | } 20 | table { 21 | margin: 10px 0 15px 0; 22 | border-collapse: collapse; 23 | } 24 | td,th { 25 | border: 1px solid #ddd; 26 | padding: 3px 10px; 27 | } 28 | th { 29 | padding: 5px 10px; 30 | } 31 | 32 | a { 33 | color: #0069d6; 34 | } 35 | a:hover { 36 | color: #0050a3; 37 | text-decoration: none; 38 | } 39 | a img { 40 | border: none; 41 | } 42 | p { 43 | margin-bottom: 9px; 44 | } 45 | h1, 46 | h2, 47 | h3, 48 | h4, 49 | h5, 50 | h6 { 51 | color: #404040; 52 | line-height: 36px; 53 | } 54 | h1 { 55 | margin-bottom: 18px; 56 | font-size: 30px; 57 | } 58 | h2 { 59 | font-size: 24px; 60 | } 61 | h3 { 62 | font-size: 18px; 63 | } 64 | h4 { 65 | font-size: 16px; 66 | } 67 | h5 { 68 | font-size: 14px; 69 | } 70 | h6 { 71 | font-size: 13px; 72 | } 73 | hr { 74 | margin: 0 0 19px; 75 | border: 0; 76 | border-bottom: 1px solid #ccc; 77 | } 78 | blockquote { 79 | padding: 13px 13px 21px 15px; 80 | margin-bottom: 18px; 81 | font-family:georgia,serif; 82 | font-style: italic; 83 | } 84 | blockquote:before { 85 | content:"\201C"; 86 | font-size:40px; 87 | margin-left:-10px; 88 | font-family:georgia,serif; 89 | color:#eee; 90 | } 91 | blockquote p { 92 | font-size: 14px; 93 | font-weight: 300; 94 | line-height: 18px; 95 | margin-bottom: 0; 96 | font-style: italic; 97 | } 98 | code, pre { 99 | font-family: Monaco, Andale Mono, Courier New, monospace; 100 | } 101 | code { 102 | background-color: #fee9cc; 103 | color: rgba(0, 0, 0, 0.75); 104 | padding: 1px 3px; 105 | font-size: 12px; 106 | -webkit-border-radius: 3px; 107 | -moz-border-radius: 3px; 108 | border-radius: 3px; 109 | } 110 | pre { 111 | display: block; 112 | padding: 14px; 113 | margin: 0 0 18px; 114 | line-height: 16px; 115 | font-size: 11px; 116 | border: 1px solid #d9d9d9; 117 | white-space: pre-wrap; 118 | word-wrap: break-word; 119 | } 120 | pre code { 121 | background-color: #fff; 122 | color:#737373; 123 | font-size: 11px; 124 | padding: 0; 125 | } 126 | sup { 127 | font-size: 0.83em; 128 | vertical-align: super; 129 | line-height: 0; 130 | } 131 | * { 132 | -webkit-print-color-adjust: exact; 133 | } 134 | @media screen and (min-width: 914px) { 135 | body { 136 | width: 854px; 137 | margin:10px auto; 138 | } 139 | } 140 | @media print { 141 | body,code,pre code,h1,h2,h3,h4,h5,h6 { 142 | color: black; 143 | } 144 | table, pre { 145 | page-break-inside: avoid; 146 | } 147 | } -------------------------------------------------------------------------------- /docs/toc/style/GitHub.css: -------------------------------------------------------------------------------- 1 | *{margin:0;padding:0;} 2 | body { 3 | font:13.34px helvetica,arial,freesans,clean,sans-serif; 4 | color:black; 5 | line-height:1.4em; 6 | background-color: #F8F8F8; 7 | padding: 0.7em; 8 | } 9 | p { 10 | margin:1em 0; 11 | line-height:1.5em; 12 | } 13 | table { 14 | font-size:inherit; 15 | font:100%; 16 | margin:1em; 17 | } 18 | table th{border-bottom:1px solid #bbb;padding:.2em 1em;} 19 | table td{border-bottom:1px solid #ddd;padding:.2em 1em;} 20 | input[type=text],input[type=password],input[type=image],textarea{font:99% helvetica,arial,freesans,sans-serif;} 21 | select,option{padding:0 .25em;} 22 | optgroup{margin-top:.5em;} 23 | pre,code{font:12px Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace;} 24 | pre { 25 | margin:1em 0; 26 | font-size:12px; 27 | background-color:#eee; 28 | border:1px solid #ddd; 29 | padding:5px; 30 | line-height:1.5em; 31 | color:#444; 32 | overflow:auto; 33 | -webkit-box-shadow:rgba(0,0,0,0.07) 0 1px 2px inset; 34 | -webkit-border-radius:3px; 35 | -moz-border-radius:3px;border-radius:3px; 36 | } 37 | pre code { 38 | padding:0; 39 | font-size:12px; 40 | background-color:#eee; 41 | border:none; 42 | } 43 | code { 44 | font-size:12px; 45 | background-color:#f8f8ff; 46 | color:#444; 47 | padding:0 .2em; 48 | border:1px solid #dedede; 49 | } 50 | img{border:0;max-width:100%;} 51 | abbr{border-bottom:none;} 52 | a{color:#4183c4;text-decoration:none;} 53 | a:hover{text-decoration:underline;} 54 | a code,a:link code,a:visited code{color:#4183c4;} 55 | h2,h3{margin:1em 0;} 56 | h1,h2,h3,h4,h5,h6{border:0;} 57 | h1{font-size:170%;border-top:4px solid #aaa;padding-top:.5em;margin-top:1.5em;} 58 | h1:first-child{margin-top:0;padding-top:.25em;border-top:none;} 59 | h2{font-size:150%;margin-top:1.5em;border-top:4px solid #e0e0e0;padding-top:.5em;} 60 | h3{margin-top:1em;} 61 | hr{border:1px solid #ddd;} 62 | ul{margin:1em 0 1em 2em;} 63 | ol{margin:1em 0 1em 2em;} 64 | ul li,ol li{margin-top:.5em;margin-bottom:.5em;} 65 | ul ul,ul ol,ol ol,ol ul{margin-top:0;margin-bottom:0;} 66 | blockquote{margin:1em 0;border-left:5px solid #ddd;padding-left:.6em;color:#555;} 67 | dt{font-weight:bold;margin-left:1em;} 68 | dd{margin-left:2em;margin-bottom:1em;} 69 | sup { 70 | font-size: 0.83em; 71 | vertical-align: super; 72 | line-height: 0; 73 | } 74 | * { 75 | -webkit-print-color-adjust: exact; 76 | } 77 | @media screen and (min-width: 914px) { 78 | body { 79 | width: 854px; 80 | margin:0 auto; 81 | } 82 | } 83 | @media print { 84 | table, pre { 85 | page-break-inside: avoid; 86 | } 87 | pre { 88 | word-wrap: break-word; 89 | } 90 | } -------------------------------------------------------------------------------- /docs/toc/style/GitHub2.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: Helvetica, arial, sans-serif; 3 | font-size: 14px; 4 | line-height: 1.6; 5 | padding-top: 10px; 6 | padding-bottom: 10px; 7 | background-color: white; 8 | padding: 30px; } 9 | 10 | body > *:first-child { 11 | margin-top: 0 !important; } 12 | body > *:last-child { 13 | margin-bottom: 0 !important; } 14 | 15 | a { 16 | color: #4183C4; } 17 | a.absent { 18 | color: #cc0000; } 19 | a.anchor { 20 | display: block; 21 | padding-left: 30px; 22 | margin-left: -30px; 23 | cursor: pointer; 24 | position: absolute; 25 | top: 0; 26 | left: 0; 27 | bottom: 0; } 28 | 29 | h1, h2, h3, h4, h5, h6 { 30 | margin: 20px 0 10px; 31 | padding: 0; 32 | font-weight: bold; 33 | -webkit-font-smoothing: antialiased; 34 | cursor: text; 35 | position: relative; } 36 | 37 | h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { 38 | background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA09pVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoMTMuMCAyMDEyMDMwNS5tLjQxNSAyMDEyLzAzLzA1OjIxOjAwOjAwKSAgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUM2NjlDQjI4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUM2NjlDQjM4ODBGMTFFMTg1ODlEODNERDJBRjUwQTQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5QzY2OUNCMDg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5QzY2OUNCMTg4MEYxMUUxODU4OUQ4M0REMkFGNTBBNCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsQhXeAAAABfSURBVHjaYvz//z8DJYCRUgMYQAbAMBQIAvEqkBQWXI6sHqwHiwG70TTBxGaiWwjCTGgOUgJiF1J8wMRAIUA34B4Q76HUBelAfJYSA0CuMIEaRP8wGIkGMA54bgQIMACAmkXJi0hKJQAAAABJRU5ErkJggg==) no-repeat 10px center; 39 | text-decoration: none; } 40 | 41 | h1 tt, h1 code { 42 | font-size: inherit; } 43 | 44 | h2 tt, h2 code { 45 | font-size: inherit; } 46 | 47 | h3 tt, h3 code { 48 | font-size: inherit; } 49 | 50 | h4 tt, h4 code { 51 | font-size: inherit; } 52 | 53 | h5 tt, h5 code { 54 | font-size: inherit; } 55 | 56 | h6 tt, h6 code { 57 | font-size: inherit; } 58 | 59 | h1 { 60 | font-size: 28px; 61 | color: black; } 62 | 63 | h2 { 64 | font-size: 24px; 65 | border-bottom: 1px solid #cccccc; 66 | color: black; } 67 | 68 | h3 { 69 | font-size: 18px; } 70 | 71 | h4 { 72 | font-size: 16px; } 73 | 74 | h5 { 75 | font-size: 14px; } 76 | 77 | h6 { 78 | color: #777777; 79 | font-size: 14px; } 80 | 81 | p, blockquote, ul, ol, dl, li, table, pre { 82 | margin: 15px 0; } 83 | 84 | hr { 85 | background: transparent url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQjdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKYDQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x 0 0; 86 | border: 0 none; 87 | color: #cccccc; 88 | height: 4px; 89 | padding: 0; 90 | } 91 | 92 | body > h2:first-child { 93 | margin-top: 0; 94 | padding-top: 0; } 95 | body > h1:first-child { 96 | margin-top: 0; 97 | padding-top: 0; } 98 | body > h1:first-child + h2 { 99 | margin-top: 0; 100 | padding-top: 0; } 101 | body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child { 102 | margin-top: 0; 103 | padding-top: 0; } 104 | 105 | a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 { 106 | margin-top: 0; 107 | padding-top: 0; } 108 | 109 | h1 p, h2 p, h3 p, h4 p, h5 p, h6 p { 110 | margin-top: 0; } 111 | 112 | li p.first { 113 | display: inline-block; } 114 | li { 115 | margin: 0; } 116 | ul, ol { 117 | padding-left: 30px; } 118 | 119 | ul :first-child, ol :first-child { 120 | margin-top: 0; } 121 | 122 | dl { 123 | padding: 0; } 124 | dl dt { 125 | font-size: 14px; 126 | font-weight: bold; 127 | font-style: italic; 128 | padding: 0; 129 | margin: 15px 0 5px; } 130 | dl dt:first-child { 131 | padding: 0; } 132 | dl dt > :first-child { 133 | margin-top: 0; } 134 | dl dt > :last-child { 135 | margin-bottom: 0; } 136 | dl dd { 137 | margin: 0 0 15px; 138 | padding: 0 15px; } 139 | dl dd > :first-child { 140 | margin-top: 0; } 141 | dl dd > :last-child { 142 | margin-bottom: 0; } 143 | 144 | blockquote { 145 | border-left: 4px solid #dddddd; 146 | padding: 0 15px; 147 | color: #777777; } 148 | blockquote > :first-child { 149 | margin-top: 0; } 150 | blockquote > :last-child { 151 | margin-bottom: 0; } 152 | 153 | table { 154 | padding: 0;border-collapse: collapse; } 155 | table tr { 156 | border-top: 1px solid #cccccc; 157 | background-color: white; 158 | margin: 0; 159 | padding: 0; } 160 | table tr:nth-child(2n) { 161 | background-color: #f8f8f8; } 162 | table tr th { 163 | font-weight: bold; 164 | border: 1px solid #cccccc; 165 | margin: 0; 166 | padding: 6px 13px; } 167 | table tr td { 168 | border: 1px solid #cccccc; 169 | margin: 0; 170 | padding: 6px 13px; } 171 | table tr th :first-child, table tr td :first-child { 172 | margin-top: 0; } 173 | table tr th :last-child, table tr td :last-child { 174 | margin-bottom: 0; } 175 | 176 | img { 177 | max-width: 100%; } 178 | 179 | span.frame { 180 | display: block; 181 | overflow: hidden; } 182 | span.frame > span { 183 | border: 1px solid #dddddd; 184 | display: block; 185 | float: left; 186 | overflow: hidden; 187 | margin: 13px 0 0; 188 | padding: 7px; 189 | width: auto; } 190 | span.frame span img { 191 | display: block; 192 | float: left; } 193 | span.frame span span { 194 | clear: both; 195 | color: #333333; 196 | display: block; 197 | padding: 5px 0 0; } 198 | span.align-center { 199 | display: block; 200 | overflow: hidden; 201 | clear: both; } 202 | span.align-center > span { 203 | display: block; 204 | overflow: hidden; 205 | margin: 13px auto 0; 206 | text-align: center; } 207 | span.align-center span img { 208 | margin: 0 auto; 209 | text-align: center; } 210 | span.align-right { 211 | display: block; 212 | overflow: hidden; 213 | clear: both; } 214 | span.align-right > span { 215 | display: block; 216 | overflow: hidden; 217 | margin: 13px 0 0; 218 | text-align: right; } 219 | span.align-right span img { 220 | margin: 0; 221 | text-align: right; } 222 | span.float-left { 223 | display: block; 224 | margin-right: 13px; 225 | overflow: hidden; 226 | float: left; } 227 | span.float-left span { 228 | margin: 13px 0 0; } 229 | span.float-right { 230 | display: block; 231 | margin-left: 13px; 232 | overflow: hidden; 233 | float: right; } 234 | span.float-right > span { 235 | display: block; 236 | overflow: hidden; 237 | margin: 13px auto 0; 238 | text-align: right; } 239 | 240 | code, tt { 241 | margin: 0 2px; 242 | padding: 0 5px; 243 | white-space: nowrap; 244 | border: 1px solid #eaeaea; 245 | background-color: #f8f8f8; 246 | border-radius: 3px; } 247 | 248 | pre code { 249 | margin: 0; 250 | padding: 0; 251 | white-space: pre; 252 | border: none; 253 | background: transparent; } 254 | 255 | .highlight pre { 256 | background-color: #f8f8f8; 257 | border: 1px solid #cccccc; 258 | font-size: 13px; 259 | line-height: 19px; 260 | overflow: auto; 261 | padding: 6px 10px; 262 | border-radius: 3px; } 263 | 264 | pre { 265 | background-color: #f8f8f8; 266 | border: 1px solid #cccccc; 267 | font-size: 13px; 268 | line-height: 19px; 269 | overflow: auto; 270 | padding: 6px 10px; 271 | border-radius: 3px; } 272 | pre code, pre tt { 273 | background-color: transparent; 274 | border: none; } 275 | 276 | sup { 277 | font-size: 0.83em; 278 | vertical-align: super; 279 | line-height: 0; 280 | } 281 | * { 282 | -webkit-print-color-adjust: exact; 283 | } 284 | @media screen and (min-width: 914px) { 285 | body { 286 | width: 854px; 287 | margin:0 auto; 288 | } 289 | } 290 | @media print { 291 | table, pre { 292 | page-break-inside: avoid; 293 | } 294 | pre { 295 | word-wrap: break-word; 296 | } 297 | } -------------------------------------------------------------------------------- /docs/toc/style/makedownpad.css: -------------------------------------------------------------------------------- 1 | 2 | /* GitHub stylesheet for MarkdownPad (http://markdownpad.com) */ 3 | /* Author: Nicolas Hery - http://nicolashery.com */ 4 | /* Version: b13fe65ca28d2e568c6ed5d7f06581183df8f2ff */ 5 | /* Source: https://github.com/nicolahery/markdownpad-github */ 6 | 7 | /* RESET 8 | =============================================================================*/ 9 | 10 | html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { 11 | margin: 0; 12 | padding: 0; 13 | border: 0; 14 | } 15 | 16 | /* BODY 17 | =============================================================================*/ 18 | 19 | body { 20 | font-family: Helvetica, arial, freesans, clean, sans-serif; 21 | font-size: 14px; 22 | line-height: 1.6; 23 | color: #333; 24 | background-color: #fff; 25 | padding: 20px; 26 | max-width: 960px; 27 | margin: 0 auto; 28 | } 29 | 30 | body>*:first-child { 31 | margin-top: 0 !important; 32 | } 33 | 34 | body>*:last-child { 35 | margin-bottom: 0 !important; 36 | } 37 | 38 | /* BLOCKS 39 | =============================================================================*/ 40 | 41 | p, blockquote, ul, ol, dl, table, pre { 42 | margin: 15px 0; 43 | } 44 | 45 | /* HEADERS 46 | =============================================================================*/ 47 | 48 | h1, h2, h3, h4, h5, h6 { 49 | margin: 20px 0 10px; 50 | padding: 0; 51 | font-weight: bold; 52 | -webkit-font-smoothing: antialiased; 53 | } 54 | 55 | h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code { 56 | font-size: inherit; 57 | } 58 | 59 | h1 { 60 | font-size: 28px; 61 | color: #000; 62 | } 63 | 64 | h2 { 65 | font-size: 24px; 66 | border-bottom: 1px solid #ccc; 67 | color: #000; 68 | } 69 | 70 | h3 { 71 | font-size: 18px; 72 | } 73 | 74 | h4 { 75 | font-size: 16px; 76 | } 77 | 78 | h5 { 79 | font-size: 14px; 80 | } 81 | 82 | h6 { 83 | color: #777; 84 | font-size: 14px; 85 | } 86 | 87 | body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child { 88 | margin-top: 0; 89 | padding-top: 0; 90 | } 91 | 92 | a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 { 93 | margin-top: 0; 94 | padding-top: 0; 95 | } 96 | 97 | h1+p, h2+p, h3+p, h4+p, h5+p, h6+p { 98 | margin-top: 10px; 99 | } 100 | 101 | /* LINKS 102 | =============================================================================*/ 103 | 104 | a { 105 | color: #4183C4; 106 | text-decoration: none; 107 | } 108 | 109 | a:hover { 110 | text-decoration: underline; 111 | } 112 | 113 | /* LISTS 114 | =============================================================================*/ 115 | 116 | ul, ol { 117 | padding-left: 30px; 118 | } 119 | 120 | ul li > :first-child, 121 | ol li > :first-child, 122 | ul li ul:first-of-type, 123 | ol li ol:first-of-type, 124 | ul li ol:first-of-type, 125 | ol li ul:first-of-type { 126 | margin-top: 0px; 127 | } 128 | 129 | ul ul, ul ol, ol ol, ol ul { 130 | margin-bottom: 0; 131 | } 132 | 133 | dl { 134 | padding: 0; 135 | } 136 | 137 | dl dt { 138 | font-size: 14px; 139 | font-weight: bold; 140 | font-style: italic; 141 | padding: 0; 142 | margin: 15px 0 5px; 143 | } 144 | 145 | dl dt:first-child { 146 | padding: 0; 147 | } 148 | 149 | dl dt>:first-child { 150 | margin-top: 0px; 151 | } 152 | 153 | dl dt>:last-child { 154 | margin-bottom: 0px; 155 | } 156 | 157 | dl dd { 158 | margin: 0 0 15px; 159 | padding: 0 15px; 160 | } 161 | 162 | dl dd>:first-child { 163 | margin-top: 0px; 164 | } 165 | 166 | dl dd>:last-child { 167 | margin-bottom: 0px; 168 | } 169 | 170 | /* CODE 171 | =============================================================================*/ 172 | 173 | pre, code, tt { 174 | font-size: 12px; 175 | font-family: Consolas, "Liberation Mono", Courier, monospace; 176 | } 177 | 178 | code, tt { 179 | margin: 0 0px; 180 | padding: 0px 0px; 181 | white-space: nowrap; 182 | border: 1px solid #eaeaea; 183 | background-color: #f8f8f8; 184 | border-radius: 3px; 185 | } 186 | 187 | pre>code { 188 | margin: 0; 189 | padding: 0; 190 | white-space: pre; 191 | border: none; 192 | background: transparent; 193 | } 194 | 195 | pre { 196 | background-color: #f8f8f8; 197 | border: 1px solid #ccc; 198 | font-size: 13px; 199 | line-height: 19px; 200 | overflow: auto; 201 | padding: 6px 10px; 202 | border-radius: 3px; 203 | } 204 | 205 | pre code, pre tt { 206 | background-color: transparent; 207 | border: none; 208 | } 209 | 210 | kbd { 211 | -moz-border-bottom-colors: none; 212 | -moz-border-left-colors: none; 213 | -moz-border-right-colors: none; 214 | -moz-border-top-colors: none; 215 | background-color: #DDDDDD; 216 | background-image: linear-gradient(#F1F1F1, #DDDDDD); 217 | background-repeat: repeat-x; 218 | border-color: #DDDDDD #CCCCCC #CCCCCC #DDDDDD; 219 | border-image: none; 220 | border-radius: 2px 2px 2px 2px; 221 | border-style: solid; 222 | border-width: 1px; 223 | font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; 224 | line-height: 10px; 225 | padding: 1px 4px; 226 | } 227 | 228 | /* QUOTES 229 | =============================================================================*/ 230 | 231 | blockquote { 232 | border-left: 4px solid #DDD; 233 | padding: 0 15px; 234 | color: #777; 235 | } 236 | 237 | blockquote>:first-child { 238 | margin-top: 0px; 239 | } 240 | 241 | blockquote>:last-child { 242 | margin-bottom: 0px; 243 | } 244 | 245 | /* HORIZONTAL RULES 246 | =============================================================================*/ 247 | 248 | hr { 249 | clear: both; 250 | margin: 15px 0; 251 | height: 0px; 252 | overflow: hidden; 253 | border: none; 254 | background: transparent; 255 | border-bottom: 4px solid #ddd; 256 | padding: 0; 257 | } 258 | 259 | /* TABLES 260 | =============================================================================*/ 261 | 262 | table th { 263 | font-weight: bold; 264 | } 265 | 266 | table th, table td { 267 | border: 1px solid #ccc; 268 | padding: 6px 13px; 269 | } 270 | 271 | table tr { 272 | border-top: 1px solid #ccc; 273 | background-color: #fff; 274 | } 275 | 276 | table tr:nth-child(2n) { 277 | background-color: #f8f8f8; 278 | } 279 | 280 | /* IMAGES 281 | =============================================================================*/ 282 | 283 | img { 284 | max-width: 100% 285 | } 286 | -------------------------------------------------------------------------------- /docs/toc_conf.js: -------------------------------------------------------------------------------- 1 | var jquery_ztree_toc_opts = { 2 | debug:false, 3 | is_auto_number:true, 4 | documment_selector:'.markdown-body', 5 | ztreeStyle: { 6 | width:'326px', 7 | overflow: 'auto', 8 | position: 'fixed', 9 | 'z-index': 2147483647, 10 | border: '0px none', 11 | left: '0px', 12 | top: '0px', 13 | // 'overflow-x': 'hidden', 14 | 'height': $(window).height() + 'px' 15 | } 16 | } 17 | var markdown_panel_style = { 18 | 'width':'70%', 19 | 'margin-left':'25%' 20 | }; -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "api接口文档", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "repository": "https://github.com/lipengzhou/shop-api-doc.git", 6 | "author": "lipengzhou ", 7 | "license": "MIT", 8 | "scripts": { 9 | "doc": "i5ting_toc" 10 | } 11 | } 12 | --------------------------------------------------------------------------------