Эх сурвалжийг харах

删除无用资源+客体属性管理开发

林倩 3 жил өмнө
parent
commit
78e4b6f52c
100 өөрчлөгдсөн 1024 нэмэгдсэн , 3830 устгасан
  1. 3 3
      config/dev.env.js
  2. 187 172
      src/api/data-auth.js
  3. 30 0
      src/components/vxe-table-basic/index.scss
  4. 221 0
      src/components/vxe-table-basic/index.vue
  5. 12 12
      src/pages/appfun-auth-manage/app-role-manage/index.vue
  6. 11 11
      src/pages/appfun-auth-manage/org-quotas-manage/index.vue
  7. 10 7
      src/pages/appfun-auth-manage/role-auth-manage/persionView.vue
  8. 3 1
      src/pages/appfun-auth-manage/role-auth-manage/roleView.vue
  9. 26 33
      src/pages/auth-object-manage/object-prop-manage/add-appser-dialog.vue
  10. 115 0
      src/pages/auth-object-manage/object-prop-manage/add-fun-dialog.vue
  11. 19 27
      src/pages/auth-object-manage/object-prop-manage/app-ser-list.vue
  12. 0 40
      src/pages/auth-object-manage/object-prop-manage/data-source-list.vue
  13. 152 151
      src/pages/auth-object-manage/object-prop-manage/function-list.vue
  14. 92 79
      src/pages/auth-object-manage/object-prop-manage/index.vue
  15. 11 11
      src/pages/auth-object-manage/service-resource-manage/DataConfig.js
  16. 12 9
      src/pages/auth-subject-manage/DataConfig.js
  17. 6 10
      src/pages/auth-subject-manage/index.scss
  18. 66 29
      src/pages/auth-subject-manage/subject-prop-manage/prop-detail.vue
  19. 3 2
      src/pages/auth-subject-manage/subject-prop-manage/prop-tree.vue
  20. 2 2
      src/pages/auth-subject-manage/user-prop-manage/index.vue
  21. 2 2
      src/pages/statistics-manage/auth-behavior-statistic/index.vue
  22. 2 2
      src/router/index.js
  23. 6 6
      src/router/modules/appfun-auth-manage.js
  24. 33 33
      src/router/modules/log-manage.js
  25. 0 40
      static/UEditor/dialogs/anchor/anchor.html
  26. 0 681
      static/UEditor/dialogs/attachment/attachment.css
  27. 0 60
      static/UEditor/dialogs/attachment/attachment.html
  28. 0 760
      static/UEditor/dialogs/attachment/attachment.js
  29. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_chm.gif
  30. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_default.png
  31. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_doc.gif
  32. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_exe.gif
  33. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_jpg.gif
  34. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_mp3.gif
  35. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_mv.gif
  36. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_pdf.gif
  37. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_ppt.gif
  38. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_psd.gif
  39. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_rar.gif
  40. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_txt.gif
  41. BIN
      static/UEditor/dialogs/attachment/fileTypeImages/icon_xls.gif
  42. BIN
      static/UEditor/dialogs/attachment/images/alignicon.gif
  43. BIN
      static/UEditor/dialogs/attachment/images/alignicon.png
  44. BIN
      static/UEditor/dialogs/attachment/images/bg.png
  45. BIN
      static/UEditor/dialogs/attachment/images/file-icons.gif
  46. BIN
      static/UEditor/dialogs/attachment/images/file-icons.png
  47. BIN
      static/UEditor/dialogs/attachment/images/icons.gif
  48. BIN
      static/UEditor/dialogs/attachment/images/icons.png
  49. BIN
      static/UEditor/dialogs/attachment/images/image.png
  50. BIN
      static/UEditor/dialogs/attachment/images/progress.png
  51. BIN
      static/UEditor/dialogs/attachment/images/success.gif
  52. BIN
      static/UEditor/dialogs/attachment/images/success.png
  53. 0 94
      static/UEditor/dialogs/background/background.css
  54. 0 56
      static/UEditor/dialogs/background/background.html
  55. 0 376
      static/UEditor/dialogs/background/background.js
  56. BIN
      static/UEditor/dialogs/background/images/bg.png
  57. BIN
      static/UEditor/dialogs/background/images/success.png
  58. 0 65
      static/UEditor/dialogs/charts/chart.config.js
  59. 0 165
      static/UEditor/dialogs/charts/charts.css
  60. 0 89
      static/UEditor/dialogs/charts/charts.html
  61. 0 519
      static/UEditor/dialogs/charts/charts.js
  62. BIN
      static/UEditor/dialogs/charts/images/charts0.png
  63. BIN
      static/UEditor/dialogs/charts/images/charts1.png
  64. BIN
      static/UEditor/dialogs/charts/images/charts2.png
  65. BIN
      static/UEditor/dialogs/charts/images/charts3.png
  66. BIN
      static/UEditor/dialogs/charts/images/charts4.png
  67. BIN
      static/UEditor/dialogs/charts/images/charts5.png
  68. 0 43
      static/UEditor/dialogs/emotion/emotion.css
  69. 0 54
      static/UEditor/dialogs/emotion/emotion.html
  70. 0 186
      static/UEditor/dialogs/emotion/emotion.js
  71. BIN
      static/UEditor/dialogs/emotion/images/0.gif
  72. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0001.gif
  73. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0002.gif
  74. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0003.gif
  75. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0004.gif
  76. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0005.gif
  77. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0006.gif
  78. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0007.gif
  79. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0008.gif
  80. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0009.gif
  81. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0010.gif
  82. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0011.gif
  83. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0012.gif
  84. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0013.gif
  85. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0014.gif
  86. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0015.gif
  87. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0016.gif
  88. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0017.gif
  89. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0018.gif
  90. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0019.gif
  91. BIN
      static/UEditor/dialogs/emotion/images/babycat/C_0020.gif
  92. BIN
      static/UEditor/dialogs/emotion/images/bface.gif
  93. BIN
      static/UEditor/dialogs/emotion/images/bobo/b_0001.gif
  94. BIN
      static/UEditor/dialogs/emotion/images/bobo/b_0002.gif
  95. BIN
      static/UEditor/dialogs/emotion/images/bobo/b_0003.gif
  96. BIN
      static/UEditor/dialogs/emotion/images/bobo/b_0004.gif
  97. BIN
      static/UEditor/dialogs/emotion/images/bobo/b_0005.gif
  98. BIN
      static/UEditor/dialogs/emotion/images/bobo/b_0006.gif
  99. BIN
      static/UEditor/dialogs/emotion/images/bobo/b_0007.gif
  100. BIN
      static/UEditor/dialogs/emotion/images/bobo/b_0008.gif

+ 3 - 3
config/dev.env.js

@@ -13,7 +13,7 @@ module.exports = merge(prodEnv, {
   QQQ: '"/easy-mock2"',
 
   //是否需要登录验证
-  NEED_LOGIN: 'false',
+  NEED_LOGIN: 'true',
 
   //需要依赖的系统名称
   // INSTALLED_PROJECT: "'zfba,demo2,cross-env'",
@@ -33,9 +33,9 @@ module.exports = merge(prodEnv, {
   PROT: '8871',
   PROXY_TABLE: JSON.stringify({
     '/dcucauth': {
-      target: "http://10.11.1.237:8861"
+      // target: "http://10.11.1.237:8861"
       // target: "http://10.254.11.203:8861"
-      //  target: "http://192.168.10.2:8871"
+       target: "http://192.168.10.2:8871"
       //  target: "http://192.168.6.133:3471"
       // target: 'http://192.168.6.131:3561'
     }

+ 187 - 172
src/api/data-auth.js

@@ -4,311 +4,326 @@
  @Date:2021-04-09
  */
 
-import request from "@/utils/request";
-const baseUrl = "/authsvr/v2/dataauth";
+import request from '@/utils/request';
+const baseUrl = '/authsvr/v2/dataauth';
 
 /********************************************  数据授权  ******************************************/
 
 // 标签树
 export function getBusinessTagTree(data) {
-    return request({
-        url: `${baseUrl}/businessTreeList`,
-        method: "get"
-    });
+  return request({
+    url: `${baseUrl}/businessTreeList`,
+    method: 'get'
+  });
 }
 
 // 获取数据授权资源树
 export function getAllDataTree(params) {
-    return request({
-        url: `${baseUrl}/allDataTree`,
-        method: "get",
-        params
-    });
+  return request({
+    url: `${baseUrl}/allDataTree`,
+    method: 'get',
+    params
+  });
 }
 
 // 获取单个主体数据权限
 export function getSubDataAuth(data) {
-    return request({
-        url: `${baseUrl}/getSubDataAuth`,
-        method: "post",
-        data
-    });
+  return request({
+    url: `${baseUrl}/getSubDataAuth`,
+    method: 'post',
+    data
+  });
 }
 
 // 人员视角数据权限查询
 export function dataAuthInfoByUserId(params) {
-    return request({
-        url: `${baseUrl}/dataAuthInfoByUserId`,
-        method: "get",
-        params
-    });
+  return request({
+    url: `${baseUrl}/dataAuthInfoByUserId`,
+    method: 'get',
+    params
+  });
 }
 
 // 业务域标签数据授权
 export function saveLabelDataAuth(data) {
-    return request({
-        url: `${baseUrl}/labelDataAuth`,
-        method: "post",
-        data
-    });
+  return request({
+    url: `${baseUrl}/labelDataAuth`,
+    method: 'post',
+    data
+  });
 }
 
 // 机构数据授权
 export function saveOrgDataAuth(data) {
-    return request({
-        url: `${baseUrl}/orgDataAuth`,
-        method: "post",
-        data
-    });
+  return request({
+    url: `${baseUrl}/orgDataAuth`,
+    method: 'post',
+    data
+  });
 }
 
 // 人员数据授权
 export function saveUserDataAuth(data) {
-    return request({
-        url: `${baseUrl}/userDataAuth`,
-        method: "post",
-        data
-    });
+  return request({
+    url: `${baseUrl}/userDataAuth`,
+    method: 'post',
+    data
+  });
 }
 
 /*********************************** 数据分级分类表码    ******************************************************/
 
-const dataLevelBaseUrl = "/datalevelsvr/v2";
+const dataLevelBaseUrl = '/datalevelsvr/v2';
 export const dataLevelTableUrl = `${dataLevelBaseUrl}/search`;
 // 数据分级详情
 export function getDataLevelDetail(id) {
-    return request({
-        url: `${dataLevelBaseUrl}/detail/` + id,
-        method: "get"
-    });
+  return request({
+    url: `${dataLevelBaseUrl}/detail/` + id,
+    method: 'get'
+  });
 }
 // 保存数据分级
 export function saveDataLevel(data) {
-    return request({
-        url: `${dataLevelBaseUrl}/save`,
-        method: "POST",
-        data
-    });
+  return request({
+    url: `${dataLevelBaseUrl}/save`,
+    method: 'POST',
+    data
+  });
 }
 // 删除数据分级
 export function delDataLevel(id) {
-    return request({
-        url: `${dataLevelBaseUrl}/deleteById/` + id,
-        method: "DELETE"
-    });
+  return request({
+    url: `${dataLevelBaseUrl}/deleteById/` + id,
+    method: 'DELETE'
+  });
 }
 
-
 // 数据安全等级
-const dataSecLevBaseUrl = "/datasecsvr/v2";
+const dataSecLevBaseUrl = '/datasecsvr/v2';
 export const dataSecLevTableUrl = `${dataSecLevBaseUrl}/search`;
 // 获取数据安全等级详情
 export function getDataSecLevDetail(id) {
-    return request({
-        url: `${dataSecLevBaseUrl}/detail/` + id,
-        method: "get"
-    });
+  return request({
+    url: `${dataSecLevBaseUrl}/detail/` + id,
+    method: 'get'
+  });
 }
 // 保存数据安全等级
 export function saveDataSecLev(data) {
-    return request({
-        url: `${dataSecLevBaseUrl}/save`,
-        method: "POST",
-        data
-    });
+  return request({
+    url: `${dataSecLevBaseUrl}/save`,
+    method: 'POST',
+    data
+  });
 }
 // 删除数据安全等级
 export function delDataSecLev(id) {
-    return request({
-        url: `${dataSecLevBaseUrl}/deleteById/` + id,
-        method: "DELETE"
-    });
+  return request({
+    url: `${dataSecLevBaseUrl}/deleteById/` + id,
+    method: 'DELETE'
+  });
 }
 
 // 数据资源分类表码
-const dataSourceClaBaseUrl = "/dataclassifysvr/v2"
+const dataSourceClaBaseUrl = '/dataclassifysvr/v2';
 export const dataSourceClaTableUrl = `${dataSourceClaBaseUrl}/search`;
 // 获取数据资源分类详情
 export function getDataSourceClaDetail(labId) {
-    return request({
-        url: `${dataSourceClaBaseUrl}/detailAllLevel/` + labId,
-        method: "get"
-    });
+  return request({
+    url: `${dataSourceClaBaseUrl}/detailAllLevel/` + labId,
+    method: 'get'
+  });
 }
 // 添加数据资源分类
 export function saveDataSourceCla(data) {
-    return request({
-        url: `${dataSourceClaBaseUrl}/save`,
-        method: "POST",
-        data
-    });
+  return request({
+    url: `${dataSourceClaBaseUrl}/save`,
+    method: 'POST',
+    data
+  });
 }
 
 // 修改数据资源分类
 export function updateDataSourceCla(data) {
-    return request({
-        url: `${dataSourceClaBaseUrl}/update`,
-        method: "POST",
-        data
-    });
+  return request({
+    url: `${dataSourceClaBaseUrl}/update`,
+    method: 'POST',
+    data
+  });
 }
 // 删除数据资源分类
 export function delDataSourceCla(id) {
-    return request({
-        url: `${dataSourceClaBaseUrl}/deleteById/` + id,
-        method: "DELETE"
-    });
+  return request({
+    url: `${dataSourceClaBaseUrl}/deleteById/` + id,
+    method: 'DELETE'
+  });
 }
 
-
 // 字段分类列表
-const fieldClassifyBaseUrl = "/fieldclassifysvr/v2"
+const fieldClassifyBaseUrl = '/fieldclassifysvr/v2';
 export const fieldClassifyTableUrl = `${fieldClassifyBaseUrl}/search`;
 // 获取字段分类详情
 export function getFieldClassifyDetail(labId) {
-    return request({
-        url: `${fieldClassifyBaseUrl}/detailAllLevel/` + labId,
-        method: "get"
-    });
+  return request({
+    url: `${fieldClassifyBaseUrl}/detailAllLevel/` + labId,
+    method: 'get'
+  });
 }
 // 添加字段分类
 export function saveFieldClassify(data) {
-    return request({
-        url: `${fieldClassifyBaseUrl}/save`,
-        method: "POST",
-        data
-    });
+  return request({
+    url: `${fieldClassifyBaseUrl}/save`,
+    method: 'POST',
+    data
+  });
 }
 
 // 修改字段分类
 export function updateFieldClassify(data) {
-    return request({
-        url: `${fieldClassifyBaseUrl}/update`,
-        method: "POST",
-        data
-    });
+  return request({
+    url: `${fieldClassifyBaseUrl}/update`,
+    method: 'POST',
+    data
+  });
 }
 // 删除字段分类
 export function delFieldClassify(id) {
-    return request({
-        url: `${fieldClassifyBaseUrl}/deleteById/` + id,
-        method: "DELETE"
-    });
+  return request({
+    url: `${fieldClassifyBaseUrl}/deleteById/` + id,
+    method: 'DELETE'
+  });
 }
 
-
-
 /************************************ 清单  *****************************************/
 
 // 清单列表
 export function getDataDetailList() {
-    return request({
-        url: `${baseUrl}/dataDetailList`,
-        method: "POST"
-    });
+  return request({
+    url: `${baseUrl}/dataDetailList`,
+    method: 'POST'
+  });
 }
 
 // 获取清单搜索下拉表
 export function getSelectList(params) {
-    return request({
-        url: `${baseUrl}/getDataResourceTree`,
-        method: "GET",
-        params: {
-            typeCode: params
-        }
-    });
+  return request({
+    url: `${baseUrl}/getDataResourceTree`,
+    method: 'GET',
+    params: {
+      typeCode: params
+    }
+  });
 }
 
 // 人员视角 - 授权列表
 export function userDataTreeByIdcard(authType, idcard) {
-    return request({
-        url: `${baseUrl}/userDataTreeByIdcard`,
-        method: "GET",
-        params: {
-            authType,
-            idcard
-        }
-    });
+  return request({
+    url: `${baseUrl}/userDataTreeByIdcard`,
+    method: 'GET',
+    params: {
+      authType,
+      idcard
+    }
+  });
 }
 
 /****************************** 用户属性管理 ************************************ */
 
-const authUserBaseUrl = "/authsvr/v2/authuserinfo";
+const authUserBaseUrl = '/authsvr/v2/authuserinfo';
 export const authUserTableUrl = `${authUserBaseUrl}/page`;
 // 获取人员详情
 export function getAuthUserDetail(id) {
-    return request({
-        url: `${authUserBaseUrl}/detail/` + id,
-        method: "GET"
-    });
+  return request({
+    url: `${authUserBaseUrl}/detail/` + id,
+    method: 'GET'
+  });
 }
 
 /****************************** 机构属性管理 ************************************ */
-const authOrgBaseUrl = "/authsvr/v2/authorginfo"
+const authOrgBaseUrl = '/authsvr/v2/authorginfo';
 // 机构详情
 export function orgInfoDetail(id) {
-    return request({
-        url: `${authOrgBaseUrl}/detail/` + id,
-        method: "GET"
-    });
+  return request({
+    url: `${authOrgBaseUrl}/detail/` + id,
+    method: 'GET'
+  });
 }
 
-
 /******************************* 主客体授权管理    ********************************* */
-const propBaseUrl = "/attrsvr/v2"
+const propBaseUrl = '/attrsvr/v2';
 // 根据属性所属类别获取属性列表,返回树结构
-export function getPropTreeByType(attrType) {
-    return request({
-        url: `${propBaseUrl}/getAttrTreeList`,
-        method: "GET",
-        params: {
-            attrType
-        }
-    });
+export function getPropTreeByType(attrSubType) {
+  return request({
+    url: `${propBaseUrl}/getAttrTreeList`,
+    method: 'GET',
+    params: {
+        attrSubType
+    }
+  });
 }
 // 获取属性详情
 export function getPropDetail(params) {
-    return request({
-        url: `${propBaseUrl}/attrRelToIds`,
-        method: "GET",
-        params
-    });
+  return request({
+    url: `${propBaseUrl}/attrRelToIds`,
+    method: 'GET',
+    params
+  });
 }
 
 // 保存属性
 export function saveProp(data) {
-    return request({
-        url: `${propBaseUrl}/attrAdds`,
-        method: "POST",
-        data
-    });
+  return request({
+    url: `${propBaseUrl}/attrAdds`,
+    method: 'POST',
+    data
+  });
 }
 // 删除属性
 export function deleteProp(params) {
-    return request({
-        url: `${propBaseUrl}/deleteAllById`,
-        method: "GET",
-        params
-    });
+  return request({
+    url: `${propBaseUrl}/deleteAllById`,
+    method: 'GET',
+    params
+  });
 }
 
 // 添加属性关联应用
-export function addRelateApp(data) {
-    return request({
-        url: `${propBaseUrl}/attrRelAdd`,
-        method: "POST",
-        data
-    });
+export function addAttrRelateSource(data) {
+  return request({
+    url: `${propBaseUrl}/attrRelAdd`,
+    method: 'POST',
+    data
+  });
 }
 
 // 查询属性关联的id集合
 export function getRelateIds(params) {
+  return request({
+    url: `${propBaseUrl}/attrRelToIds`,
+    method: 'get',
+    params
+  });
+}
+
+// 删除被关联的资源
+export function delAttrRelResource(attrRelId) {
     return request({
-        url: `${propBaseUrl}/attrRelToIds`,
-        method: "get",
-        params
+      url: `${propBaseUrl}/delAttrRelResource`,
+      method: 'get',
+      params: {
+        attrRelId
+      }
     });
-}
+  }
+
+// 查询客体属性-关联应用列表
+export const ObjRelAppTableUrl = `${propBaseUrl}/relAppPage`;
+
+// 查询客体属性-未关联应用列表
+export const ObjNotRelAppTableUrl = `${propBaseUrl}/notRelAppPage`;
+
+// 查询客体属性-关联服务列表
+export const ObjRelServiceTableUrl = `${propBaseUrl}/relServicePage`;
 
-// 查询客体-应用列表
-export const ObjAppTableUrl = `${propBaseUrl}/relAppPage`
+// 查询客体属性-未关联服务列表
+export const ObjNotRelServiceTableUrl = `${propBaseUrl}/notRelServicePage`;

+ 30 - 0
src/components/vxe-table-basic/index.scss

@@ -0,0 +1,30 @@
+.pagination-section {
+    text-align: right;
+    margin: 10px 0;
+  }
+  /deep/ .vxe-table .vxe-table--header-wrapper {
+    color: rgba(0, 0, 0, 0.65);
+    font-family: 'Microsoft YaHei', '微软雅黑', 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', Arial,
+      sans-serif;
+    -webkit-font-smoothing: antialiased;
+  }
+  /deep/ .vxe-table--render-default {
+    color: rgba(0, 0, 0, 0.85);
+  }
+  /deep/ .vxe-table--render-default .vxe-cell {
+    white-space: normal;
+  }
+  /deep/ .vxe-header--column {
+    font-weight: 400;  
+  }
+  /deep/ .vxe-table--render-default .vxe-cell--checkbox .vxe-checkbox--icon:before {   
+      border: 1px solid rgba(0, 0, 0, 0.15);
+  }
+  /deep/ .vxe-body--row:hover {
+     background-color: rgba(24, 144, 255, 0.08);
+  }
+ 
+  /deep/ .vxe-table--render-default .vxe-table--empty-block {
+    min-height: 60px;
+    color: rgba(0,0,0,.65);
+  }

+ 221 - 0
src/components/vxe-table-basic/index.vue

@@ -0,0 +1,221 @@
+<!--
+二次封装vxe-table组件
+@Author: linqian
+@Date: 2021-10-18 14:22
+-->
+<template>
+  <div>
+    <vxe-table
+      ref="vxeGrid"
+      :data="tableData"
+      :border="true"
+      :loading="false"
+      rowId="id"
+      v-bind="gridOptions"
+      highlight-hover-row
+      :seq-config="{ seqMethod }"
+    >
+      <vxe-table-column type="checkbox" width="60" align="center" v-if="selection">
+        <template #header="row">
+          <span class="custom-checkbox">
+            <el-checkbox
+              :indeterminate="row.indeterminate"
+              v-model="row.checked"
+              @change="handleToggleAllCheck"
+            ></el-checkbox>
+          </span>
+        </template>
+        <template #checkbox="scoped">
+          <span class="custom-checkbox">
+            <el-checkbox
+              :indeterminate="scoped.indeterminate"
+              v-model="scoped.checked"
+              @change="handleToggleCheck(scoped.row)"
+            ></el-checkbox>
+          </span>
+        </template>
+      </vxe-table-column>
+      <vxe-table-column type="seq" width="60" align="center" title="序号"></vxe-table-column>
+      <vxe-table-column
+        v-for="item in tableColumn"
+        :key="item.id"
+        :align="item.align ? item.align : 'center'"
+        v-bind="item"
+      >
+        <template #default="{ row }">
+          <template v-if="item.custom">
+            <slot :name="item.field" :row="row"></slot>
+          </template>
+          <template v-else>{{ row[item.field] }}</template>
+        </template>
+      </vxe-table-column>
+      <vxe-table-column v-if="tableOptList.length > 0" align="center" title="操作" field="operate" width="100px">
+        <template #default="{ row }">
+          <div class="u-table__operation">
+            <el-tooltip
+              v-for="(item, index) in tableOptList"
+              :key="index"
+              :content="item"
+              effect="dark"
+              placement="top-end"
+            >
+              <i :class="item | optIcon" @click="handleEvent(item, row)"></i>
+            </el-tooltip>
+          </div>
+        </template>
+      </vxe-table-column>
+    </vxe-table>
+    <!-- 分页器 -->
+    <div class="pagination-section" v-show="pagination">
+      <el-pagination
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+        :page-sizes="[10, 20, 30]"
+        layout="total, sizes, prev, pager, next, jumper"
+        :page-size="pageSize"
+        :current-page="currentPage"
+        :total="total"
+      >
+      </el-pagination>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    // 表格数据
+    tableData: Array,
+    // 是否有复选框
+    selection: {
+      type: Boolean,
+      default: true
+    },
+    tableColumn: Array,
+    // 是否分页
+    pagination: {
+      type: Boolean,
+      default: true
+    },
+    paginationConfig: {
+      type: Object,
+      default: () => {
+        return {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        };
+      }
+    },
+    gridOptions: {
+      type: Object,
+      default: () => {}
+    },
+    tableOptList: {
+      type: Array,
+      default: () => []
+    }
+  },
+  components: {},
+  data() {
+    return {};
+  },
+  computed: {
+    pageSize() {
+      return this.paginationConfig.pageSize;
+    },
+    currentPage() {
+      return this.paginationConfig.currentPage;
+    },
+    total() {
+      return this.paginationConfig.total;
+    }
+  },
+  methods: {
+    // 条数
+    handleSizeChange(val) {
+      this.pageSize = val;
+      this.currentPage = 1;
+      this.submitPaginationChange(1, val);
+    },
+    // 页码改变
+    handleCurrentChange(val) {
+      this.submitPaginationChange(val, this.paginationConfig.pageSize);
+    },
+    submitPaginationChange(currentPage, pageSize) {
+      this.$emit('paginationChange', {
+        pageSize,
+        currentPage
+      });
+    },
+    // 发送操作事件类型
+    handleEvent(type, row) {
+      this.$emit('submitTableOpt', type, row);
+    },
+    // 改变单个复选框
+    handleToggleCheck(row) {
+      this.$refs.vxeGrid.toggleCheckboxRow(row);
+    },
+    // 改变全选复选框
+    handleToggleAllCheck() {
+      this.$refs.vxeGrid.toggleAllCheckboxRow();
+    },
+    // 自定义序号
+    // 自定义原因: 树形表格翻页序号还是从1开始
+    seqMethod({ level, seq, $seq }) {
+      let index = '';
+      if (level > 0) {
+        index = `${$seq}.${seq}`;
+        if (this.pagination) {
+          const dotIndex = index.indexOf('.');
+          if (dotIndex > -1) {
+            let integerNum = (this.currentPage - 1) * this.pageSize + Number(index.substring(0, dotIndex));
+            index = integerNum + '' + index.substr(dotIndex);
+          }
+        }
+      } else {
+        index = seq;
+        if (this.pagination) {
+          index = (this.currentPage - 1) * this.pageSize + seq;
+        }
+      }
+      return index;
+    }
+  },
+  created() {},
+  mounted() {}
+};
+</script>
+
+<style lang='scss' scoped>
+.pagination-section {
+  text-align: right;
+  margin-top: 10px;
+}
+/deep/ .vxe-table .vxe-table--header-wrapper {
+  color: rgba(0, 0, 0, 0.65);
+  font-family: 'Microsoft YaHei', '微软雅黑', 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', Arial,
+    sans-serif;
+  -webkit-font-smoothing: antialiased;
+}
+/deep/ .vxe-table--render-default {
+  color: rgba(0, 0, 0, 0.85);
+}
+/deep/ .vxe-table--render-default .vxe-cell {
+  white-space: normal;
+}
+/deep/ .vxe-header--column {
+  font-weight: 400;
+}
+/deep/ .vxe-table--render-default .vxe-cell--checkbox .vxe-checkbox--icon:before {
+  border: 1px solid rgba(0, 0, 0, 0.15);
+}
+/deep/ .vxe-body--row:hover {
+  background-color: rgba(24, 144, 255, 0.08);
+}
+
+/deep/ .vxe-table--render-default .vxe-table--empty-block {
+  min-height: 60px;
+  color: rgba(0, 0, 0, 0.65);
+}
+</style>

+ 12 - 12
src/pages/appfun-auth-manage/app-role-manage/index.vue

@@ -53,18 +53,18 @@ export default {
           valueName: 'applyName',
           labelName: 'applyName'
         },
-        {
-          label: '单位名称',
-          name: 'orgCode',
-          op: '=',
-          value: '',
-          apiName: 'getOrgTree',
-          nodeKey: 'code',
-          type: 'APP',
-          component: 'SelectOrgTree',
-          placeholder: '请选择单位名称',
-          filterable: true
-        }
+        // {
+        //   label: '单位名称',
+        //   name: 'orgCode',
+        //   op: '=',
+        //   value: '',
+        //   apiName: 'getOrgTree',
+        //   nodeKey: 'code',
+        //   type: 'APP',
+        //   component: 'SelectOrgTree',
+        //   placeholder: '请选择单位名称',
+        //   filterable: true
+        // }
       ],
       tableOptList: ['权限配置']
     };

+ 11 - 11
src/pages/appfun-auth-manage/org-quotas-manage/index.vue

@@ -51,17 +51,17 @@ export default {
           valueName: 'applyName',
           labelName: 'applyName'
         },
-        {
-          label: '单位名称',
-          name: 'orgCode',
-          op: '=',
-          value: '',
-          apiName: 'getOrgTree',
-          nodeKey: 'code',
-          type: 'APP',
-          component: 'SelectOrgTree',
-          placeholder: '请选择单位名称'
-        }
+        // {
+        //   label: '单位名称',
+        //   name: 'orgCode',
+        //   op: '=',
+        //   value: '',
+        //   apiName: 'getOrgTree',
+        //   nodeKey: 'code',
+        //   type: 'APP',
+        //   component: 'SelectOrgTree',
+        //   placeholder: '请选择单位名称'
+        // }
       ],
       tableHeader: [
         {

+ 10 - 7
src/pages/appfun-auth-manage/role-auth-manage/persionView.vue

@@ -105,10 +105,11 @@ export default {
           state: [{ label: '长期有效', value: null }]
         }
       ],
-      roleConditon: {
+      roleCondition: {
         appName: '',
         roleName: '',
-        userId: ''
+        userId: '',
+        orgId: ''
       },
       tableData: [],
       selections: [],
@@ -137,12 +138,13 @@ export default {
     },
     // 人员列表行点击
     handleRowClick(row) {
-      this.roleConditon.userId = row.id;
+      this.roleCondition.userId = row.id;
+      this.roleCondition.orgId = row.orgId;
       this.handleSearchRoleList();
     },
     receiveRoleSearch(val) {
       for (const key in val) {
-        this.roleConditon[key] = val[key].value;
+        this.roleCondition[key] = val[key].value;
       }
       this.handleSearchRoleList();
     },
@@ -151,11 +153,11 @@ export default {
     },
     handleSearchRoleList() {
       const that = this;
-      const { roleConditon } = that;
+      const { roleCondition } = that;
       this.tableData = [];
       this.selections = [];
       this.deleteIds = [];
-      roleAuthInfoApi.getStaffRoleList(roleConditon).then((res) => {
+      roleAuthInfoApi.getStaffRoleList(roleCondition).then((res) => {
         that.tableData = res;
         that.$nextTick(() => {
           res.forEach((row) => {
@@ -197,7 +199,8 @@ export default {
       const queryParams = {
         saveIds: this.selections,
         deleteIds: this.deleteIds,
-        userId: this.roleConditon.userId
+        userId: this.roleCondition.userId,
+        orgId: this.roleCondition.orgId
       };
       roleAuthInfoApi
         .saveRoleStaff(queryParams)

+ 3 - 1
src/pages/appfun-auth-manage/role-auth-manage/roleView.vue

@@ -49,7 +49,9 @@
           <!-- <dg-table-column type="index" label="序号" width="70"></dg-table-column> -->
           <dg-table-column prop="name" align="center" width="120" label="姓名"></dg-table-column>
           <dg-table-column prop="idcard" align="center" label="身份证号码"></dg-table-column>
-          <dg-table-column prop="orgName" align="center" label="单位名称"></dg-table-column>
+          <!-- <dg-table-column prop="orgName" align="center" label="单位名称"></dg-table-column> -->
+          <dg-table-column prop="userType" align="center" label="用户类型" enum='UserTypeEnum'></dg-table-column>
+
           <dg-table-column prop="policeCategory" align="center" code="T_MD_POLICE_TYPE" label="警种"></dg-table-column>
           <dg-table-column prop="policeBusiness" align="center" label="业务域标签"></dg-table-column>
           <dg-table-column label="权限有效期" width="120" align="center">

+ 26 - 33
src/pages/auth-object-manage/object-prop-manage/add-dialog.vue → src/pages/auth-object-manage/object-prop-manage/add-appser-dialog.vue

@@ -1,12 +1,3 @@
-<!--
- * @Author: Liugh
- * @Date: 2021-05-19 16:09:07
- * @LastEditTime: 2021-05-20 11:13:49
- * @LastEditors: Do not edit
- * @FilePath: \auth-web\src\pages\data-auth-module\auth-object-manage\object-prop-manage\add-dialog.vue
- * @Description: 
--->
-
 <template>
   <main class="add-dialog">
     <dg-row class="property-wapper">
@@ -19,7 +10,6 @@
         :tableHeader="tableHeader"
         :tableUrl="tableUrl[attrBelongType]"
         :condition="condition"
-        v-if="type !== 'service'"
       >
       </new-table>
     </dg-row>
@@ -31,37 +21,40 @@
 </template>
 
 <script>
-import { appRestApi } from '@/api/application';
 import { relateSourceTableHeader, relateSourceCondition } from '../../auth-subject-manage/DataConfig';
-import { addRelateApp, getRelateIds } from '@/api/data-auth';
+import { addAttrRelateSource, ObjNotRelAppTableUrl, ObjNotRelServiceTableUrl } from '@/api/data-auth';
 import searchBar from '@/components/search-bar';
 import { searchOpt } from '@/mixins/page-opt';
 import newTable from '@/components/new-table';
-import { tableUrl as serTableUrl } from '@/api/ser-resource-manage';
-import _ from 'lodash';
 export default {
-  name: 'add-dialog', // 组件名称
+  name: 'add-dialog',
   props: {
-    // 接收父组件的数据
     attrBelongType: String,
     parentNode: Object
   },
-  components: { searchBar, newTable }, // 注册局部组件
+  components: { searchBar, newTable },
   mixins: [searchOpt],
   data() {
     const vm = this;
     return {
       tableHeader: relateSourceTableHeader[vm.attrBelongType],
       tableUrl: {
-        APP: appRestApi.table,
-        SER: serTableUrl
-      },
-      otherParams: {
-        attrBelongType: this.parentNode.attrBelongType,
-        attrId: this.parentNode.id,
-        attrType: 'OBJ'
+        APP: ObjNotRelAppTableUrl,
+        SER: ObjNotRelServiceTableUrl
       },
-      conditionForm: relateSourceCondition[vm.attrBelongType]
+      conditionForm: [
+        ...relateSourceCondition[vm.attrBelongType],
+        {
+          name: 'attrId',
+          value: this.parentNode.id
+        }
+      ],
+      condition: {
+        attrId: {
+          value: this.parentNode.id,
+          op: '='
+        }
+      }
     };
   },
   computed: {}, // 计算属性
@@ -78,10 +71,15 @@ export default {
      */
     handleSave() {
       const params = {
-        ...this.otherParams,
-        relIds: this.$refs.table.newChooseArr.map((item) => item.id || item)
+        attrId: this.parentNode.id,
+        relList: this.$refs.table.newChooseArr.map((item) => {
+          return {
+            id: item.id,
+            code: this.attrBelongType == 'FUN' ? item.applyCode : item.serviceCode
+          };
+        })
       };
-      addRelateApp(params).then((res) => {
+      addAttrRelateSource(params).then((res) => {
         this.$message.success('保存成功');
         this.$emit('success');
       });
@@ -89,11 +87,6 @@ export default {
   },
   created() {},
   mounted() {
-    getRelateIds(this.otherParams).then((res) => {
-      this.$nextTick(() => {
-        this.$refs.table.newChooseArr = res.data.content;
-      });
-    });
   }
 };
 </script>

+ 115 - 0
src/pages/auth-object-manage/object-prop-manage/add-fun-dialog.vue

@@ -0,0 +1,115 @@
+<!--
+关联功能资源
+@Author: linqian
+@Date: 2021-10-18 14:08
+-->
+<template>
+  <div>
+    <!-- 搜索栏 -->
+    <search-bar :conditionForm="conditionForm" @submitSearch="receiveSearch"></search-bar>
+    <!-- 列表 -->
+    <vxe-table-basic
+      :gridOptions="gridOptions"
+      :tableColumn="tableColumn"
+      :tableData="tableData"
+      :paginationConfig="paginationConfig"
+      @paginationChange="getPagination"
+    ></vxe-table-basic>
+    <div v-footer>
+      <dg-button @click="handleClose">取消</dg-button>
+      <dg-button type="primary" @click="handleSave">保存</dg-button>
+    </div>
+  </div>
+</template>
+
+<script>
+import searchBar from '@/components/search-bar';
+import { searchOpt } from '@/mixins/page-opt';
+import { appRestApi } from '@/api/application';
+import vxeTableBasic from '@/components/vxe-table-basic';
+import { getRedAppFuncList } from '@/api/list-manage';
+export default {
+  components: { searchBar, vxeTableBasic },
+  mixins: [searchOpt],
+  props: {
+    parentNode: Object,
+    operateType: String,
+    attrBelongType: String
+  },
+  data() {
+    return {
+      conditionForm: [
+        {
+          label: '应用系统名称',
+          name: 'applyCode',
+          op: 'like',
+          value: '',
+          component: 'SelectApp',
+          apiUrl: appRestApi.table,
+          valueName: 'applyCode',
+          labelName: 'applyName'
+        }
+      ],
+      gridOptions: {
+        treeConfig: { children: 'child', indent: 40 }
+      },
+      tableColumn: [
+        {
+          align: 'left',
+          headerAlign: 'center',
+          title: '应用功能名称',
+          field: 'label',
+          treeNode: true
+        }
+      ],
+      tableData: [],
+      paginationConfig: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      }
+    };
+  },
+  computed: {},
+  methods: {
+    getPagination({ pageSize, currentPage }) {
+      this.paginationConfig.pageSize = pageSize;
+      this.paginationConfig.currentPage = currentPage;
+      this.getList();
+    },
+    /**
+     * 获取列表
+     */
+    getList() {
+      const params = {
+        page: this.paginationConfig.currentPage - 1,
+        size: this.paginationConfig.pageSize,
+        searchCondition: this.condition
+      };
+      getRedAppFuncList(params).then((res) => {
+        const { content, totalElements } = res.data;
+        this.tableData = content;
+        this.paginationConfig.total = totalElements;
+      });
+    },
+    receiveSearch(value) {
+      this.condition = value;
+      this.paginationConfig.currentPage = 1;
+      this.getList();
+    },
+    handleClose() {
+      this.$emit('close');
+    },
+    handleSubmit() {
+      this.$emit('success');
+    }
+  },
+  created() {
+    this.getList();
+  },
+  mounted() {}
+};
+</script>
+
+<style lang='scss'>
+</style>

+ 19 - 27
src/pages/auth-object-manage/object-prop-manage/app-ser-list.vue

@@ -1,13 +1,5 @@
-<!--
- * @Author: Liugh
- * @Date: 2021-05-19 15:48:57
- * @LastEditTime: 2021-05-20 11:15:03
- * @LastEditors: Do not edit
- * @FilePath: \auth-web\src\pages\data-auth-module\auth-object-manage\object-prop-manage\application-list.vue
- * @Description: 
--->
 <template>
-  <dg-card :header="cardTitle[attrBelongType]" shadow="never">
+  <div>
     <template v-if="operateType == 'detail'">
       <!-- 搜索栏 -->
       <search-bar :conditionForm="conditionForm" @submitSearch="receiveSearch"></search-bar>
@@ -21,19 +13,19 @@
         :condition="condition"
         :tableOptList="tableOptList"
         @submitTableOpt="receviceOpt"
+        lazyl
       >
       </new-table>
     </template>
     <p v-else>请选择属性值</p>
-  </dg-card>
+  </div>
 </template>
 
 <script>
 import newTable from '@/components/new-table';
-import { ObjAppTableUrl } from '@/api/data-auth';
-import { tableUrl as serTableUrl } from '@/api/ser-resource-manage';
+import { ObjRelAppTableUrl, ObjRelServiceTableUrl, delAttrRelResource } from '@/api/data-auth';
 import { relateSourceTableHeader, relateSourceCondition } from '../../auth-subject-manage/DataConfig';
-import addDialog from './add-dialog';
+import addDialog from './add-appser-dialog';
 import operateBar from '@/components/operate-bar';
 import searchBar from '@/components/search-bar';
 import { searchOpt } from '@/mixins/page-opt';
@@ -45,16 +37,15 @@ export default {
     operateType: String,
     attrBelongType: String
   },
-  components: { newTable, operateBar, searchBar }, // 注册局部组件
+  components: { newTable, operateBar, searchBar },
   mixins: [searchOpt],
   data() {
     const vm = this;
     return {
-      // 参数名称及默认值
       tableHeader: relateSourceTableHeader[vm.attrBelongType],
       tableUrl: {
-        APP: ObjAppTableUrl,
-        SER: serTableUrl
+        APP: ObjRelAppTableUrl,
+        SER: ObjRelServiceTableUrl
       },
       condition: {
         attrId: {
@@ -71,15 +62,11 @@ export default {
         }
       ],
       pageOptList: ['新增'],
-      tableOptList: ['删除'],
-      cardTitle: {
-        APP: '关联应用资源',
-        SER: '关联服务资源'
-      }
+      tableOptList: ['删除']
     };
   },
-  computed: {}, // 计算属性
-  watch: {}, // 侦听器(扩展的计算属性)
+  computed: {},
+  watch: {},
   methods: {
     receviceOpt(opt, row) {
       if (opt == '新增') {
@@ -107,15 +94,20 @@ export default {
             vm.handleSearch();
           }
         },
-        area: ['1000px', '760px']
+        area: ['1200px', '760px']
       });
     },
     handleDelete(row) {
-      this.$dgConfirm(`是否确定删除这条数据!`, '提示', {}).then(() => {});
+      this.$dgConfirm(`是否确定删除这条数据!`, '提示', {}).then(() => {
+        delAttrRelResource(row.attrRelId).then((res) => {
+          this.$message.success('删除成功');
+          this.handleSearch();
+        });
+      });
     }
   },
   created() {},
-  mounted() {} // 组件挂载完成后
+  mounted() {}
 };
 </script>
 <style lang="scss" scoped>

+ 0 - 40
src/pages/auth-object-manage/object-prop-manage/data-source-list.vue

@@ -1,40 +0,0 @@
-<!--
-数据资源列表
-@Author: linqian
-@Date: 2021-05-26 15:18
--->
-<template>
-    <div>
-         <dg-card class="box-card" header="关联数据资源" shadow="never">
-             暂无
-         </dg-card>
-    </div>
-</template>
-
-<script>
-    export default {
-        components: {
-
-        },
-        data () {
-            return {
-
-            };
-        },
-        computed: {
-
-        },
-        methods: {
-
-        },
-        created() {
-
-        },
-        mounted() {
-
-        }
-}
-</script>
-
-<style lang='scss'>
-</style>

+ 152 - 151
src/pages/auth-object-manage/object-prop-manage/function-list.vue

@@ -1,163 +1,164 @@
 <!--
- * @Author: Liugh
- * @Date: 2021-05-19 15:43:35
- * @LastEditTime: 2021-05-20 11:14:56
- * @LastEditors: Do not edit
- * @FilePath: \auth-web\src\pages\data-auth-module\auth-object-manage\object-prop-manage\function-list.vue
- * @Description: 
+关联功能资源
+@Author: linqian
+@Date: 2021-10-18 14:08
 -->
 <template>
-    <dg-card class="box-card" header="关联功能资源" shadow="never">
-        暂无
-        <!-- <el-form ref="form" :model="cardForm" label-suffix=":" inline>
-            <el-form-item label="姓名">
-                <el-input clearable placeholder="请输入姓名" v-model="cardForm.name"></el-input>
-            </el-form-item>
-            <el-form-item label="身份证号码">
-                <el-input clearable placeholder="请输入身份证号码" v-model="cardForm.name"></el-input>
-            </el-form-item>
-            <el-form-item label="单位名称">
-                <dg-tree-select
-                    v-model="cardForm.institution"
-                    placeholder="请选择单位名称"
-                    :data="options"
-                    clearable
-                    filterable
-                    multiple
-                ></dg-tree-select>
-            </el-form-item>
-            <el-form-item>
-                <dg-button type="primary" icon="el-icon-search" @click="doSearchPersion">查询</dg-button>
-                <dg-button type="primary" icon="el-icon-plus" @click="add">添加</dg-button>
-            </el-form-item>
-        </el-form>
-        <Table
-            ref="table"
-            :url="tableUrl"
-            :headerData="cardFunctionList"
-            :condition="reportForm"
-            :lazyLoad="true"
-            @handleRowClick="handleRowClick"
-        >
-        </Table> -->
-    </dg-card>
+  <div>
+    功能开发中暂不开放!
+    <!-- <template v-if="operateType == 'detail'"> -->
+      <!-- 搜索栏 -->
+      <!-- <search-bar :conditionForm="conditionForm" @submitSearch="receiveSearch"></search-bar> -->
+      <!-- 操作栏 -->
+      <!-- <operate-bar :pageOptList="pageOptList" @submitPageOpt="receviceOpt"></operate-bar> -->
+      <!-- 列表 -->
+      <!-- <vxe-table-basic
+        :gridOptions="gridOptions"
+        :tableColumn="tableColumn"
+        :tableOptList="tableOptList"
+        :tableData="tableData"
+        :paginationConfig="paginationConfig"
+        @paginationChange="getPagination"
+        @submitTableOpt="receviceOpt"
+      ></vxe-table-basic> -->
+    <!-- </template> -->
+    <!-- <p v-else>请选择属性值</p> -->
+  </div>
 </template>
 
 <script>
-import Table from "@/components/table";
-import * as dynamicManageApi from "@/api/dynamic-manage";
-import { cardFunctionList } from "../../auth-subject-manage/DataConfig";
-import addDialog from "./add-dialog";
-const editorArea = ["1200px", "660px"];
+import operateBar from '@/components/operate-bar';
+import searchBar from '@/components/search-bar';
+import { searchOpt } from '@/mixins/page-opt';
+import { appRestApi } from '@/api/application';
+import vxeTableBasic from '@/components/vxe-table-basic';
+import { getRedAppFuncList, delRedAppFunc } from '@/api/list-manage';
+import addFunDialog from './add-fun-dialog.vue';
 export default {
-    name: "personnelList", // 组件名称
-    props: {
-        // 接收父组件的数据
+  components: { operateBar, searchBar, vxeTableBasic },
+  mixins: [searchOpt],
+  props: {
+    parentNode: Object,
+    operateType: String,
+    attrBelongType: String
+  },
+  data() {
+    return {
+      conditionForm: [
+        {
+          label: '应用系统名称',
+          name: 'appName',
+          op: 'like',
+          value: '',
+          component: 'SelectApp',
+          apiUrl: appRestApi.table,
+          valueName: 'applyName',
+          labelName: 'applyName'
+        }
+      ],
+      pageOptList: ['新增'],
+      gridOptions: {
+        treeConfig: { children: 'child', indent: 40 }
+      },
+      tableColumn: [
+        {
+          align: 'left',
+          headerAlign: 'center',
+          title: '应用功能名称',
+          field: 'label',
+          treeNode: true
+        }
+      ],
+      tableOptList: ['删除'],
+      tableData: [],
+      paginationConfig: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      }
+    };
+  },
+  computed: {},
+  methods: {
+    receviceOpt(opt, row) {
+      if (opt == '新增') {
+        this.handleAdd();
+      } else if (opt == '删除') {
+        this.handleRemove(row);
+      }
     },
-    data() {
-        // 组件内部参数
-        return {
-            // 参数名称及默认值
-            cardFunctionList,
-            tableUrl: dynamicManageApi.tableUrl,
-            reportForm: {},
-            cardForm: {},
-            options: [
-                {
-                    id: "fruits",
-                    label: "Fruits",
-                    children: [
-                        {
-                            id: "apple",
-                            label: "Apple",
-                            isNew: true
-                        },
-                        {
-                            id: "grapes",
-                            label: "Grapes",
-                            disabled: true
-                        },
-                        {
-                            id: "pear",
-                            label: "Pear"
-                        },
-                        {
-                            id: "strawberry",
-                            label: "Strawberry 🍓"
-                        },
-                        {
-                            id: "watermelon",
-                            label: "Watermelon 🍉"
-                        }
-                    ]
-                },
-                {
-                    id: "vegetables",
-                    label: "Vegetables",
-                    children: [
-                        {
-                            id: "corn",
-                            label: "Corn 🌽"
-                        },
-                        {
-                            id: "carrot",
-                            label: "Carrot 🥕"
-                        },
-                        {
-                            id: "eggplant",
-                            label: "Eggplant 🍆"
-                        },
-                        {
-                            id: "tomato",
-                            label: "Tomato 🍅"
-                        }
-                    ]
-                }
-            ]
+    /**
+     * 新增
+     */
+    handleAdd() {
+      const vm = this;
+      const layer = this.$dgLayer({
+        title: '新增',
+        content: addFunDialog,
+        props: {},
+        on: {
+          success() {
+            vm.reloadTable();
+            layer.close(layer.dialogIndex);
+          }
+        },
+        cancel: function (index) {
+          // 关闭对应弹窗的ID
+          layer.close(index);
+          return false;
+        },
+        area: ['900px', '800px']
+      });
+    },
+    /**
+     * 删除
+     */
+    handleRemove() {
+      this.$dgConfirm(`是否确定删除这条数据!`, '提示', {}).then(() => {
+        const params = {
+          // isTreeNode: row.isTreeNode,
+          // resourceId: row.id,
+          // resourceType: row.type
         };
+        delRedAppFunc(params).then((res) => {
+          this.$message.success('删除成功!');
+          this.getList();
+        });
+      });
     },
-    computed: {}, // 计算属性
-    watch: {}, // 侦听器(扩展的计算属性)
-    components: { Table }, // 注册局部组件
-    methods: {
-        /**
-         * @description: 查询
-         */
-        doSearchPersion() {},
-        /**
-         * @description: 单击表格行
-         */
-        handleRowClick() {},
-        /**
-         * @description: 添加
-         */
-        add() {
-            const layer = this.$dgLayer({
-                title: "添加功能资源",
-                shade: [0.4, "#FFF"],
-                content: addDialog,
-                props: {
-                    type: "personnel"
-                },
-                btn: ["保存", "关闭"],
-                yes: () => {
-                    console.log("我点击了保存");
-                },
-                btn2: () => {
-                    layer.close(layer.dialogIndex);
-                },
-                area: editorArea
-            });
-        }
-    }, // 内部方法
-    beforeCreate() {}, // 组件创建前
-    created() {}, // 组件创建完成后
-    beforeMount() {}, // 组件挂载前
-    mounted() {}, // 组件挂载完成后
-    beforeUpdate() {}, // 组件更新前
-    updated() {}, // 组件挂载完成后
-    beforeDestroy() {}, // 组件销毁前
-    destroyed() {} // 组件销毁完成后
+    getPagination({ pageSize, currentPage }) {
+      this.paginationConfig.pageSize = pageSize;
+      this.paginationConfig.currentPage = currentPage;
+      this.getList();
+    },
+    /**
+     * 获取列表
+     */
+    getList() {
+      const params = {
+        page: this.paginationConfig.currentPage - 1,
+        size: this.paginationConfig.pageSize,
+        searchCondition: this.condition
+      };
+      getRedAppFuncList(params).then((res) => {
+        const { content, totalElements } = res.data;
+        this.tableData = content;
+        this.paginationConfig.total = totalElements;
+      });
+    },
+    receiveSearch(value) {
+      this.condition = value;
+      this.paginationConfig.currentPage = 1;
+      this.getList();
+    },
+    reloadTable() {}
+  },
+  created() {
+    this.getList();
+  },
+  mounted() {}
 };
 </script>
-<style lang="scss" scoped></style>
+
+<style lang='scss'>
+</style>

+ 92 - 79
src/pages/auth-object-manage/object-prop-manage/index.vue

@@ -8,93 +8,106 @@
 -->
 
 <template>
-    <main class="subject-property">
-        <dg-row gutter="1rem">
-            <dg-col :span="5">
-                <tree ref="tree" title="客体属性类" type="OBJ" @submitNodeOperate="getNodeOperate" />
-            </dg-col>
-            <!-- 属性详情 -->
-            <dg-col :span="10">
-                <prop-detail
-                    :parentNode="parentNode"
-                    type="OBJ"
-                    :key="key"
-                    :operateType="operateType"
-                    @savePropSuccess="refreshTree"
-                ></prop-detail>
-            </dg-col>
-            <dg-col :span="9">
-                <!-- TODO 根据点击属性类型判断显示什么表格 -->
-                <component
-                    :is="componentValue"
-                    :parentNode="parentNode"
-                    :operateType="operateType"
-                    :attrBelongType="attrBelongType"
-                    :key="key"
-                ></component>
-            </dg-col>
-        </dg-row>
-    </main>
+  <main class="subject-property">
+    <dg-row gutter="1rem">
+      <dg-col :span="5">
+        <tree ref="tree" title="客体属性类" type="OBJ" @submitNodeOperate="getNodeOperate" />
+      </dg-col>
+      <!-- 属性详情 -->
+      <dg-col :span="7">
+        <prop-detail
+          :parentNode="parentNode"
+          type="OBJ"
+          :key="key"
+          :operateType="operateType"
+          @savePropSuccess="refreshTree"
+        ></prop-detail>
+      </dg-col>
+      <dg-col :span="12">
+        <!-- TODO 根据点击属性类型判断显示什么表格 -->
+        <dg-card class="box-card" :header="componentType[attrBelongType].title" shadow="never">
+          <div style="height: calc(100vh - 15.5rem)">
+            <dg-scrollbar>
+              <component
+                :is="componentValue"
+                :parentNode="parentNode"
+                :operateType="operateType"
+                :attrBelongType="attrBelongType"
+                :key="key"
+              ></component>
+            </dg-scrollbar>
+          </div>
+        </dg-card>
+      </dg-col>
+    </dg-row>
+  </main>
 </template>
 
 <script>
-import Tree from "../../auth-subject-manage/subject-prop-manage/prop-tree";
-import propDetail from "../../auth-subject-manage/subject-prop-manage/prop-detail";
-import functionList from "./function-list";
-import appSerList from "./app-ser-list";
-import dataSourceList from "./data-source-list";
+import Tree from '../../auth-subject-manage/subject-prop-manage/prop-tree';
+import propDetail from '../../auth-subject-manage/subject-prop-manage/prop-detail';
+import functionList from './function-list';
+import appSerList from './app-ser-list';
 export default {
-    name: "subject-property", // 组件名称
-    props: {
-        // 接收父组件的数据
-    },
-    data() {
-        // 组件内部参数
-        return {
-            // 参数名称及默认值
-            componentType: {
-                FUN: "function-list",
-                SER: "app-ser-list",
-                APP: "app-ser-list",
-                DATA: "data-source-list"
-            },
-            componentValue: "app-ser-list",
-            parentNode: {},
-            key: 0,
-            // 操作类型,新增属性还是编辑
-            operateType: "",
-            attrBelongType: "APP"
-        };
-    },
-    computed: {}, // 计算属性
-    watch: {}, // 侦听器(扩展的计算属性)
-    components: { Tree, functionList, appSerList, propDetail, dataSourceList }, // 注册局部组件
-    methods: {
-        /**
-         * 获取树操作
-         */
-        getNodeOperate(data) {
-            const { attrBelongType, operateType } = data;
-            this.attrBelongType = attrBelongType;
-            this.operateType = operateType;
-            this.parentNode = data;
-            this.componentValue = this.componentType[attrBelongType];
-            this.key++;
+  name: 'subject-property', // 组件名称
+  props: {
+    // 接收父组件的数据
+  },
+  data() {
+    // 组件内部参数
+    return {
+      // 参数名称及默认值
+      componentType: {
+        FUN: {
+          cmp: 'function-list',
+          title: '关联功能资源列表'
         },
-        /**
-         * 刷新属性树
-         */
-        refreshTree() {
-            this.$refs.tree.init();
+        SER: {
+          cmp: 'app-ser-list',
+          title: '关联服务资源列表'
         },
-        /**
-         * @description: 表单查询
-         */
-        handleSearch() {}
+        APP: {
+          cmp: 'app-ser-list',
+          title: '关联应用资源列表'
+        }
+      },
+      componentValue: 'app-ser-list',
+      parentNode: {},
+      key: 0,
+      // 操作类型,新增属性还是编辑
+      operateType: '',
+      attrBelongType: 'APP'
+    };
+  },
+  computed: {}, // 计算属性
+  watch: {}, // 侦听器(扩展的计算属性)
+  components: { Tree, functionList, appSerList, propDetail }, // 注册局部组件
+  methods: {
+    /**
+     * 获取树操作
+     */
+    getNodeOperate(data) {
+      const { type, operateType } = data;
+      this.attrBelongType = type.split("-")[0];
+      this.operateType = operateType;
+      this.parentNode = data;
+      this.componentValue = this.componentType[this.attrBelongType].cmp;
+      this.key++;
+    },
+    /**
+     * 刷新属性树
+     */
+    refreshTree() {
+      this.$refs.tree.init();
     },
-    created() {} // 组件创建完成后
+    /**
+     * @description: 表单查询
+     */
+    handleSearch() {}
+  },
+  created() {} // 组件创建完成后
 };
 </script>
 <style lang="scss" scoped>
-@import "../../auth-subject-manage/index.scss";
+@import '../../auth-subject-manage/index.scss';
 </style>

+ 11 - 11
src/pages/auth-object-manage/service-resource-manage/DataConfig.js

@@ -13,17 +13,17 @@ const conditionForm = [
       placeholder: '请输入服务资源名称'
     }
   },
-  {
-    label: '服务提供方式',
-    name: 'serviceProvideWay',
-    op: '=',
-    value: '',
-    component: 'DgSelect',
-    attr: {
-      placeholder: '请选择服务提供方式',
-      enum: 'ServiceProvideWayEnum'
-    }
-  },
+  // {
+  //   label: '服务提供方式',
+  //   name: 'serviceProvideWay',
+  //   op: '=',
+  //   value: '',
+  //   component: 'DgSelect',
+  //   attr: {
+  //     placeholder: '请选择服务提供方式',
+  //     enum: 'ServiceProvideWayEnum'
+  //   }
+  // },
   {
     label: '服务提供应用系统名称',
     name: 'appName',

+ 12 - 9
src/pages/auth-subject-manage/DataConfig.js

@@ -65,7 +65,6 @@ const UserTableData = [
   // },
   {
     label: '单位名称',
-    custom: true,
     prop: 'orgName'
   },
   {
@@ -341,45 +340,49 @@ const relateSourceCondition =  {
   APP: [
     {
       label: '应用系统名称',
-      name: 'applyName',
+      name: 'id',
       op: '=',
       value: '',
       component: 'SelectApp',
       apiUrl: appRestApi.table,
-      valueName: 'applyName',
+      valueName: 'id',
       labelName: 'applyName'
     },
     {
       label: '应用系统编码',
-      name: 'applyCode',
+      name: 'code',
       op: 'like',
       value: '',
-      component: 'ElInput'
+      component: 'ElInput',
+      attr: {
+        style: "width: 150px"
+      }
+
     }
   ],
   SER: [
     {
       label: '服务资源名称',
-      name: 'serviceName',
+      name: 'name',
       op: 'like',
       value: '',
       component: 'ElInput'
     },
     {
       label: '服务资源标识符',
-      name: 'serviceCode',
+      name: 'code',
       op: 'like',
       value: '',
       component: 'ElInput'
     },
     {
       label: '应用系统名称',
-      name: 'appName',
+      name: 'appCode',
       op: 'like',
       value: '',
       component: 'SelectApp',
       apiUrl: appRestApi.table,
-      valueName: 'applyName',
+      valueName: 'applyCode',
       labelName: 'applyName'
     }
   ]

+ 6 - 10
src/pages/auth-subject-manage/index.scss

@@ -30,16 +30,15 @@
   }
 }
 .subject-property /deep/ {
-  .box-card {
-    .el-card__header {
-      display: block;
-    }
-    height: calc(100vh - 12rem);
-  }
+  // .box-card {
+  //   .el-card__header {
+  //     display: block;
+  //   }
+  //   height: calc(100vh - 12rem);
+  // }
   .subject-property__form-item {
     display: flex;
     align-items: center;
-    // margin-bottom: 10px;
     .icon {
       margin-left: 10px;
       cursor: pointer;
@@ -49,7 +48,4 @@
   .subject-property__form-item:last-child {
     margin-bottom: 0;
   }
-  .prop-value-item {
-    // margin-bottom: 10px;
-  }
 }

+ 66 - 29
src/pages/auth-subject-manage/subject-prop-manage/prop-detail.vue

@@ -6,7 +6,7 @@
 <template>
   <div>
     <dg-card class="box-card" shadow="never" header="属性详情">
-      <div style="height: calc(100vh - 17rem)">
+      <div style="height: calc(100vh - 15.5rem)">
         <dg-scrollbar>
           <el-form
             ref="ruleForm"
@@ -19,15 +19,22 @@
               <el-input v-model="rootName" placeholder="请输入属性类别" disabled></el-input>
             </el-form-item>
             <el-form-item label="属性类别编码">
-              <el-input v-model="rootName" placeholder="请输入属性类别编码" disabled></el-input>
+              <el-input v-model="rootCode" placeholder="请输入属性类别编码" disabled></el-input>
             </el-form-item>
             <el-form-item label="属性名称" prop="name">
               <el-input v-model="form.name" placeholder="请输入属性名称" :disabled="readOnly"></el-input>
             </el-form-item>
             <el-form-item label="属性编码" prop="code" class="attr-code">
-              <el-input v-model="form.code" placeholder="请输入属性编码" :disabled="readOnly">
-                <template slot="prepend">APP-RA-</template>
-              </el-input>
+              <template v-if="parentNode.pid && !parentNode.child">
+                <el-input v-model="attrCode" placeholder="请输入属性编码" :disabled="readOnly">
+                  <template slot="prepend">{{ rootCode }}-</template>
+                </el-input>
+              </template>
+              <template v-else>
+                <el-input v-model="form.code" placeholder="请输入属性编码" :disabled="readOnly">
+                  <template slot="prepend">{{ rootCode }}-</template>
+                </el-input>
+              </template>
               <!-- <dg-row>
                 <dg-col :span="5"><el-input value="APP-RA" :disabled="true"></el-input></dg-col>
                 <dg-col :span="2" style="text-align: center"><i class="el-icon-minus"></i></dg-col>
@@ -36,8 +43,8 @@
                 </dg-col>
               </dg-row> -->
             </el-form-item>
-            <el-form-item label="是否内置">
-                <el-input :value="form.isDefault" disabled></el-input>
+            <el-form-item label="是否内置" v-if="operateType !== 'add'">
+              <el-input :value="form.builtIn == 1 ? '是' : '否'" disabled></el-input>
             </el-form-item>
             <template v-for="(item, index) in form.child">
               <dg-row :key="index">
@@ -115,8 +122,7 @@ export default {
   data() {
     return {
       form: {
-        attrBelongType: this.parentNode.attrBelongType,
-        attrType: this.type,
+        attrSubType: '',
         child: [
           {
             name: '',
@@ -126,18 +132,32 @@ export default {
         remark: '',
         name: '',
         code: '',
-        pid: this.parentNode.id,
-        isDefault: 1
+        pid: '',
+        builtIn: this.parentNode.builtIn,
+        ptype: '',
+        id: ''
       },
       rules: {
         name: [{ required: true, message: '属性名称不能为空', trigger: 'change' }],
         code: [{ required: true, message: '属性编码不能为空', trigger: 'change' }]
       },
       rootName: '',
-      readOnly: this.parentNode.pid && !this.parentNode.child
+      rootCode: '',
+      attrCode: ''
     };
   },
-  computed: {},
+  computed: {
+    readOnly() {
+      const { pid, child, builtIn, ptype } = this.parentNode;
+      if (pid && !child) {
+        // eslint-disable-next-line vue/no-side-effects-in-computed-properties
+        const index = ptype.indexOf('-');
+        // eslint-disable-next-line vue/no-side-effects-in-computed-properties
+        this.attrCode = ptype.substring(index + 1);
+      }
+      return pid && (!child || builtIn == 1);
+    }
+  },
   methods: {
     /**
      * 添加属性值
@@ -161,19 +181,30 @@ export default {
       this.$refs.ruleForm.validate((valid) => {
         if (valid) {
           // 属性值不能重复
-          let flag = false;
-          this.form.child.sort((a, b) => {
-            if (a.name == b.name) {
-              flag = true;
-              return;
-            }
-          });
-          if (flag) {
-            this.$message.warning('属性值不能重复');
-            return;
-          }
-
-          saveProp(this.form).then((res) => {
+          // let flag = false;
+          // this.form.child.sort((a, b) => {
+          //   if (a.name == b.name) {
+          //     flag = true;
+          //     return;
+          //   }
+          // });
+          // if (flag) {
+          //   this.$message.warning('属性值不能重复');
+          //   return;
+          // }
+          const { child, ...otherParams } = this.form;
+          const params = {
+            ...otherParams,
+            child: child.map((item) => {
+              const { id, code, name } = item;
+              return {
+                id,
+                code,
+                name
+              };
+            })
+          };
+          saveProp(params).then((res) => {
             const { result, msg } = res.data;
             if (result == '200') {
               this.$message.success('保存成功');
@@ -187,8 +218,11 @@ export default {
     }
   },
   created() {
+    const { attrSubType, type, id, code, name } = this.parentNode;
+
     if (this.parentNode.pname) {
       const pName = this.parentNode.pname.split('-');
+      const pType = this.parentNode.ptype.split('-');
       delete this.parentNode.operateType;
       this.form = _.cloneDeep(this.parentNode);
       if (pName.length > 1) {
@@ -198,12 +232,15 @@ export default {
             ...this.parentNode
           }
         ];
-        this.rootName = pName[0];
-      } else {
-        this.rootName = pName[0];
       }
+      this.rootName = pName[0];
+      this.rootCode = pType[0];
     } else {
       this.rootName = this.parentNode.name;
+      this.rootCode = this.parentNode.code;
+      this.form.attrSubType = attrSubType;
+      this.form.pid = id;
+      this.form.ptype = type;
     }
   },
   mounted() {}

+ 3 - 2
src/pages/auth-subject-manage/subject-prop-manage/prop-tree.vue

@@ -98,7 +98,7 @@ export default {
         deleteProp(params).then((res) => {
           this.$message.success('删除成功');
           this.init();
-          this.setDefault();
+          // this.setDefault();
         });
       });
     },
@@ -107,6 +107,7 @@ export default {
         getPropTreeByType(this.type).then((res) => {
           this.treeData = res.data.content;
           resolve(res.data.content);
+          this.setDefault();
         });
       });
     },
@@ -120,7 +121,7 @@ export default {
   },
   async created() {
     await this.init();
-    this.setDefault();
+    // this.setDefault();
   },
   mounted() {}
 };

+ 2 - 2
src/pages/auth-subject-manage/user-prop-manage/index.vue

@@ -14,10 +14,10 @@
     <!-- 表格 -->
     <new-table ref="table" :tableUrl="tableUrl" :tableHeader="UserTableData" :condition="condition">
       <!-- 单位名称 -->
-      <template #orgName="{ row }">
+      <!-- <template #orgName="{ row }">
         <span v-if="row.userType + '' === '30'"></span>
         <span v-else>{{ row.orgName }}</span>
-      </template>
+      </template> -->
       <!-- 人员类型 -->
       <template #manType="slotProps">
         <!-- 辅警 20 -->

+ 2 - 2
src/pages/statistics-manage/auth-behavior-statistic/index.vue

@@ -69,8 +69,8 @@ export default {
   computed: {},
   methods: {},
   created() {
-    const startTime = this.$moment().subtract('1', 'year').format('YYYYMMDDHHmmss');
-    const endTime = this.$moment().format('YYYYMMDDHHmmss');
+    const startTime = this.$moment().subtract('1', 'year').format('YYYYMMDD') + '000000';
+    const endTime = this.$moment().format('YYYYMMDD') + '235959';
     this.conditionForm[0].value = [startTime, endTime];
   },
   mounted() {

+ 2 - 2
src/router/index.js

@@ -101,13 +101,13 @@ export const asyncRouterMap = [
   {
     path: '/service-auth-manage',
     component: Layout,
-    meta: { title: '服务授权管理', icon: 'icon-fwsqgl', noCache: true, permission: ['QXGL_SQGL_SJSQGL_RYSQ'] },
+    meta: { title: '服务授权管理', icon: 'icon-fwsqgl', noCache: true, permission: ['QXGL_SQGL_FWSQGL'] },
     children: [
       {
         path: 'init',
         component: () => import('@/pages/service-auth-manage'),
         name: 'service-auth-manage',
-        meta: { title: '服务授权管理', noCache: true, permission: ['QXGL_SQGL_SJSQGL_RYSQ'] }
+        meta: { title: '服务授权管理', noCache: true, permission: ['QXGL_SQGL_FWSQGL'] }
       }
     ]
   },

+ 6 - 6
src/router/modules/appfun-auth-manage.js

@@ -17,12 +17,12 @@ const componentRouter = {
       name: 'app-role-manage',
       meta: { title: '应用角色管理', icon: '', noCache: true, permission: ['YHGLPT_QXGL_QXPZ'] }
     },
-    {
-      path: 'org-quotas-manage',
-      component: () => import('@/pages/appfun-auth-manage/org-quotas-manage'),
-      name: 'org-quotas-managee',
-      meta: { title: '机构配额管理', noCache: true, permission: ['YHGLPT_SQGL_JGPEGL'] }
-    },
+    // {
+    //   path: 'org-quotas-manage',
+    //   component: () => import('@/pages/appfun-auth-manage/org-quotas-manage'),
+    //   name: 'org-quotas-managee',
+    //   meta: { title: '机构配额管理', noCache: true, permission: ['YHGLPT_SQGL_JGPEGL'] }
+    // },
     {
       path: 'role-auth-manage',
       component: () => import('@/pages/appfun-auth-manage/role-auth-manage'),

+ 33 - 33
src/router/modules/log-manage.js

@@ -37,29 +37,29 @@ const componentsRouter = [
   //     }
   //   ]
   // },
-  {
-    path: '/auth-risk-detection',
-    component: Layout,
-    redirect: '/index',
-    meta: {
-      title: '鉴权风险检测',
-      icon: 'icon-warning2',
-      noCache: true,
-      permission: ['QXGL_RZGL_JQFXJC']
-    },
-    children: [
-      {
-        path: 'index',
-        component: () => import('@/pages/log-manage/auth-risk-detection/index'),
-        name: 'auth-risk-detection',
-        meta: {
-          title: '鉴权风险检测',
-          noCache: true,
-          permission: ['QXGL_RZGL_JQFXJC']
-        }
-      }
-    ]
-  },
+  // {
+  //   path: '/auth-risk-detection',
+  //   component: Layout,
+  //   redirect: '/index',
+  //   meta: {
+  //     title: '鉴权风险检测',
+  //     icon: 'icon-warning2',
+  //     noCache: true,
+  //     permission: ['QXGL_RZGL_JQFXJC']
+  //   },
+  //   children: [
+  //     {
+  //       path: 'index',
+  //       component: () => import('@/pages/log-manage/auth-risk-detection/index'),
+  //       name: 'auth-risk-detection',
+  //       meta: {
+  //         title: '鉴权风险检测',
+  //         noCache: true,
+  //         permission: ['QXGL_RZGL_JQFXJC']
+  //       }
+  //     }
+  //   ]
+  // },
   {
     path: '/log-manage',
     component: Layout,
@@ -87,16 +87,16 @@ const componentsRouter = [
           permission: ['QXGL_RZGL_QXRZGL_JQFWRZ']
         }
       },
-      {
-        path: 'auth-risk-log',
-        component: () => import('@/pages/log-manage/permiss-log-manage/auth-risk-log'),
-        name: 'auth-risk-log',
-        meta: {
-          title: '鉴权风险日志',
-          noCache: true,
-          permission: ['QXGL_RZGL_QXRZGL_JQFXRZ']
-        }
-      },
+      // {
+      //   path: 'auth-risk-log',
+      //   component: () => import('@/pages/log-manage/permiss-log-manage/auth-risk-log'),
+      //   name: 'auth-risk-log',
+      //   meta: {
+      //     title: '鉴权风险日志',
+      //     noCache: true,
+      //     permission: ['QXGL_RZGL_QXRZGL_JQFXRZ']
+      //   }
+      // },
       {
         path: 'auth-scope-log',
         component: () => import('@/pages/log-report/scope-author-audit'),

+ 0 - 40
static/UEditor/dialogs/anchor/anchor.html

@@ -1,40 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
-    "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-    <head>
-        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-        <title></title>
-        <style type="text/css">
-            *{color: #838383;margin: 0;padding: 0}
-            html,body {font-size: 12px;overflow: hidden; }
-            .content{padding:5px 0 0 15px;}
-            input{width:210px;height:21px;line-height:21px;margin-left: 4px;}
-        </style>
-    </head>
-    <body>
-        <div class="content">
-            <span><var id="lang_input_anchorName"></var></span><input id="anchorName"  value="" />
-        </div>
-        <script type="text/javascript" src="../internal.js"></script>
-        <script type="text/javascript">
-            var anchorInput = $G('anchorName'),
-                node = editor.selection.getRange().getClosedNode();
-            if(node && node.tagName == 'IMG' && (node = node.getAttribute('anchorname'))){
-                anchorInput.value = node;
-            }
-            anchorInput.onkeydown = function(evt){
-                evt = evt || window.event;
-                if(evt.keyCode == 13){
-                    editor.execCommand('anchor', anchorInput.value);
-                    dialog.close();
-                    domUtils.preventDefault(evt)
-                }
-            };
-            dialog.onok = function (){
-                editor.execCommand('anchor', anchorInput.value);
-                dialog.close();
-            };
-            $focus(anchorInput);
-        </script>
-    </body>
-</html>

+ 0 - 681
static/UEditor/dialogs/attachment/attachment.css

@@ -1,681 +0,0 @@
-@charset "utf-8";
-/* dialog样式 */
-.wrapper {
-    zoom: 1;
-    width: 630px;
-    *width: 626px;
-    height: 380px;
-    margin: 0 auto;
-    padding: 10px;
-    position: relative;
-    font-family: sans-serif;
-}
-
-/*tab样式框大小*/
-.tabhead {
-    float:left;
-}
-.tabbody {
-    width: 100%;
-    height: 346px;
-    position: relative;
-    clear: both;
-}
-
-.tabbody .panel {
-    position: absolute;
-    width: 0;
-    height: 0;
-    background: #fff;
-    overflow: hidden;
-    display: none;
-}
-
-.tabbody .panel.focus {
-    width: 100%;
-    height: 346px;
-    display: block;
-}
-
-/* 上传附件 */
-.tabbody #upload.panel {
-    width: 0;
-    height: 0;
-    overflow: hidden;
-    position: absolute !important;
-    clip: rect(1px, 1px, 1px, 1px);
-    background: #fff;
-    display: block;
-}
-
-.tabbody #upload.panel.focus {
-    width: 100%;
-    height: 346px;
-    display: block;
-    clip: auto;
-}
-
-#upload .queueList {
-    margin: 0;
-    width: 100%;
-    height: 100%;
-    position: absolute;
-    overflow: hidden;
-}
-
-#upload p {
-    margin: 0;
-}
-
-.element-invisible {
-    width: 0 !important;
-    height: 0 !important;
-    border: 0;
-    padding: 0;
-    margin: 0;
-    overflow: hidden;
-    position: absolute !important;
-    clip: rect(1px, 1px, 1px, 1px);
-}
-
-#upload .placeholder {
-    margin: 10px;
-    border: 2px dashed #e6e6e6;
-    *border: 0px dashed #e6e6e6;
-    height: 172px;
-    padding-top: 150px;
-    text-align: center;
-    background: url(./images/image.png) center 70px no-repeat;
-    color: #cccccc;
-    font-size: 18px;
-    position: relative;
-    top:0;
-    *top: 10px;
-}
-
-#upload .placeholder .webuploader-pick {
-    font-size: 18px;
-    background: #00b7ee;
-    border-radius: 3px;
-    line-height: 44px;
-    padding: 0 30px;
-    *width: 120px;
-    color: #fff;
-    display: inline-block;
-    margin: 0 auto 20px auto;
-    cursor: pointer;
-    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
-}
-
-#upload .placeholder .webuploader-pick-hover {
-    background: #00a2d4;
-}
-
-
-#filePickerContainer {
-    text-align: center;
-}
-
-#upload .placeholder .flashTip {
-    color: #666666;
-    font-size: 12px;
-    position: absolute;
-    width: 100%;
-    text-align: center;
-    bottom: 20px;
-}
-
-#upload .placeholder .flashTip a {
-    color: #0785d1;
-    text-decoration: none;
-}
-
-#upload .placeholder .flashTip a:hover {
-    text-decoration: underline;
-}
-
-#upload .placeholder.webuploader-dnd-over {
-    border-color: #999999;
-}
-
-#upload .filelist {
-    list-style: none;
-    margin: 0;
-    padding: 0;
-    overflow-x: hidden;
-    overflow-y: auto;
-    position: relative;
-    height: 300px;
-}
-
-#upload .filelist:after {
-    content: '';
-    display: block;
-    width: 0;
-    height: 0;
-    overflow: hidden;
-    clear: both;
-}
-
-#upload .filelist li {
-    width: 113px;
-    height: 113px;
-    background: url(./images/bg.png);
-    text-align: center;
-    margin: 9px 0 0 9px;
-    *margin: 6px 0 0 6px;
-    position: relative;
-    display: block;
-    float: left;
-    overflow: hidden;
-    font-size: 12px;
-}
-
-#upload .filelist li p.log {
-    position: relative;
-    top: -45px;
-}
-
-#upload .filelist li p.title {
-    position: absolute;
-    top: 0;
-    left: 0;
-    width: 100%;
-    overflow: hidden;
-    white-space: nowrap;
-    text-overflow: ellipsis;
-    top: 5px;
-    text-indent: 5px;
-    text-align: left;
-}
-
-#upload .filelist li p.progress {
-    position: absolute;
-    width: 100%;
-    bottom: 0;
-    left: 0;
-    height: 8px;
-    overflow: hidden;
-    z-index: 50;
-    margin: 0;
-    border-radius: 0;
-    background: none;
-    -webkit-box-shadow: 0 0 0;
-}
-
-#upload .filelist li p.progress span {
-    display: none;
-    overflow: hidden;
-    width: 0;
-    height: 100%;
-    background: #1483d8 url(./images/progress.png) repeat-x;
-
-    -webit-transition: width 200ms linear;
-    -moz-transition: width 200ms linear;
-    -o-transition: width 200ms linear;
-    -ms-transition: width 200ms linear;
-    transition: width 200ms linear;
-
-    -webkit-animation: progressmove 2s linear infinite;
-    -moz-animation: progressmove 2s linear infinite;
-    -o-animation: progressmove 2s linear infinite;
-    -ms-animation: progressmove 2s linear infinite;
-    animation: progressmove 2s linear infinite;
-
-    -webkit-transform: translateZ(0);
-}
-
-@-webkit-keyframes progressmove {
-    0% {
-        background-position: 0 0;
-    }
-    100% {
-        background-position: 17px 0;
-    }
-}
-
-@-moz-keyframes progressmove {
-    0% {
-        background-position: 0 0;
-    }
-    100% {
-        background-position: 17px 0;
-    }
-}
-
-@keyframes progressmove {
-    0% {
-        background-position: 0 0;
-    }
-    100% {
-        background-position: 17px 0;
-    }
-}
-
-#upload .filelist li p.imgWrap {
-    position: relative;
-    z-index: 2;
-    line-height: 113px;
-    vertical-align: middle;
-    overflow: hidden;
-    width: 113px;
-    height: 113px;
-
-    -webkit-transform-origin: 50% 50%;
-    -moz-transform-origin: 50% 50%;
-    -o-transform-origin: 50% 50%;
-    -ms-transform-origin: 50% 50%;
-    transform-origin: 50% 50%;
-
-    -webit-transition: 200ms ease-out;
-    -moz-transition: 200ms ease-out;
-    -o-transition: 200ms ease-out;
-    -ms-transition: 200ms ease-out;
-    transition: 200ms ease-out;
-}
-#upload .filelist li p.imgWrap.notimage {
-    margin-top: 0;
-    width: 111px;
-    height: 111px;
-    border: 1px #eeeeee solid;
-}
-#upload .filelist li p.imgWrap.notimage i.file-preview {
-    margin-top: 15px;
-}
-
-#upload .filelist li img {
-    width: 100%;
-}
-
-#upload .filelist li p.error {
-    background: #f43838;
-    color: #fff;
-    position: absolute;
-    bottom: 0;
-    left: 0;
-    height: 28px;
-    line-height: 28px;
-    width: 100%;
-    z-index: 100;
-    display:none;
-}
-
-#upload .filelist li .success {
-    display: block;
-    position: absolute;
-    left: 0;
-    bottom: 0;
-    height: 40px;
-    width: 100%;
-    z-index: 200;
-    background: url(./images/success.png) no-repeat right bottom;
-    background-image: url(./images/success.gif) \9;
-}
-
-#upload .filelist li.filePickerBlock {
-    width: 113px;
-    height: 113px;
-    background: url(./images/image.png) no-repeat center 12px;
-    border: 1px solid #eeeeee;
-    border-radius: 0;
-}
-#upload .filelist li.filePickerBlock div.webuploader-pick  {
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    opacity: 0;
-    background: none;
-    font-size: 0;
-}
-
-#upload .filelist div.file-panel {
-    position: absolute;
-    height: 0;
-    filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#80000000', endColorstr='#80000000') \0;
-    background: rgba(0, 0, 0, 0.5);
-    width: 100%;
-    top: 0;
-    left: 0;
-    overflow: hidden;
-    z-index: 300;
-}
-
-#upload .filelist div.file-panel span {
-    width: 24px;
-    height: 24px;
-    display: inline;
-    float: right;
-    text-indent: -9999px;
-    overflow: hidden;
-    background: url(./images/icons.png) no-repeat;
-    background: url(./images/icons.gif) no-repeat \9;
-    margin: 5px 1px 1px;
-    cursor: pointer;
-    -webkit-tap-highlight-color: rgba(0,0,0,0);
-    -webkit-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-
-#upload .filelist div.file-panel span.rotateLeft {
-    display:none;
-    background-position: 0 -24px;
-}
-
-#upload .filelist div.file-panel span.rotateLeft:hover {
-    background-position: 0 0;
-}
-
-#upload .filelist div.file-panel span.rotateRight {
-    display:none;
-    background-position: -24px -24px;
-}
-
-#upload .filelist div.file-panel span.rotateRight:hover {
-    background-position: -24px 0;
-}
-
-#upload .filelist div.file-panel span.cancel {
-    background-position: -48px -24px;
-}
-
-#upload .filelist div.file-panel span.cancel:hover {
-    background-position: -48px 0;
-}
-
-#upload .statusBar {
-    height: 45px;
-    border-bottom: 1px solid #dadada;
-    margin: 0 10px;
-    padding: 0;
-    line-height: 45px;
-    vertical-align: middle;
-    position: relative;
-}
-
-#upload .statusBar .progress {
-    border: 1px solid #1483d8;
-    width: 198px;
-    background: #fff;
-    height: 18px;
-    position: absolute;
-    top: 12px;
-    display: none;
-    text-align: center;
-    line-height: 18px;
-    color: #6dbfff;
-    margin: 0 10px 0 0;
-}
-#upload .statusBar .progress span.percentage {
-    width: 0;
-    height: 100%;
-    left: 0;
-    top: 0;
-    background: #1483d8;
-    position: absolute;
-}
-#upload .statusBar .progress span.text {
-    position: relative;
-    z-index: 10;
-}
-
-#upload .statusBar .info {
-    display: inline-block;
-    font-size: 14px;
-    color: #666666;
-}
-
-#upload .statusBar .btns {
-    position: absolute;
-    top: 7px;
-    right: 0;
-    line-height: 30px;
-}
-
-#filePickerBtn {
-    display: inline-block;
-    float: left;
-}
-#upload .statusBar .btns .webuploader-pick,
-#upload .statusBar .btns .uploadBtn,
-#upload .statusBar .btns .uploadBtn.state-uploading,
-#upload .statusBar .btns .uploadBtn.state-paused {
-    background: #ffffff;
-    border: 1px solid #cfcfcf;
-    color: #565656;
-    padding: 0 18px;
-    display: inline-block;
-    border-radius: 3px;
-    margin-left: 10px;
-    cursor: pointer;
-    font-size: 14px;
-    float: left;
-    -webkit-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none;
-}
-#upload .statusBar .btns .webuploader-pick-hover,
-#upload .statusBar .btns .uploadBtn:hover,
-#upload .statusBar .btns .uploadBtn.state-uploading:hover,
-#upload .statusBar .btns .uploadBtn.state-paused:hover {
-    background: #f0f0f0;
-}
-
-#upload .statusBar .btns .uploadBtn,
-#upload .statusBar .btns .uploadBtn.state-paused{
-    background: #00b7ee;
-    color: #fff;
-    border-color: transparent;
-}
-#upload .statusBar .btns .uploadBtn:hover,
-#upload .statusBar .btns .uploadBtn.state-paused:hover{
-    background: #00a2d4;
-}
-
-#upload .statusBar .btns .uploadBtn.disabled {
-    pointer-events: none;
-    filter:alpha(opacity=60);
-    -moz-opacity:0.6;
-    -khtml-opacity: 0.6;
-    opacity: 0.6;
-}
-
-
-
-/* 图片管理样式 */
-#online {
-    width: 100%;
-    height: 336px;
-    padding: 10px 0 0 0;
-}
-#online #fileList{
-    width: 100%;
-    height: 100%;
-    overflow-x: hidden;
-    overflow-y: auto;
-    position: relative;
-}
-#online ul {
-    display: block;
-    list-style: none;
-    margin: 0;
-    padding: 0;
-}
-#online li {
-    float: left;
-    display: block;
-    list-style: none;
-    padding: 0;
-    width: 113px;
-    height: 113px;
-    margin: 0 0 9px 9px;
-    *margin: 0 0 6px 6px;
-    background-color: #eee;
-    overflow: hidden;
-    cursor: pointer;
-    position: relative;
-}
-#online li.clearFloat {
-    float: none;
-    clear: both;
-    display: block;
-    width:0;
-    height:0;
-    margin: 0;
-    padding: 0;
-}
-#online li img {
-    cursor: pointer;
-}
-#online li div.file-wrapper {
-    cursor: pointer;
-    position: absolute;
-    display: block;
-    width: 111px;
-    height: 111px;
-    border: 1px solid #eee;
-    background: url("./images/bg.png") repeat;
-}
-#online li div span.file-title{
-    display: block;
-    padding: 0 3px;
-    margin: 3px 0 0 0;
-    font-size: 12px;
-    height: 13px;
-    color: #555555;
-    text-align: center;
-    width: 107px;
-    white-space: nowrap;
-    word-break: break-all;
-    overflow: hidden;
-    text-overflow: ellipsis;
-}
-#online li .icon {
-    cursor: pointer;
-    width: 113px;
-    height: 113px;
-    position: absolute;
-    top: 0;
-    left: 0;
-    z-index: 2;
-    border: 0;
-    background-repeat: no-repeat;
-}
-#online li .icon:hover {
-    width: 107px;
-    height: 107px;
-    border: 3px solid #1094fa;
-}
-#online li.selected .icon {
-    background-image: url(images/success.png);
-    background-image: url(images/success.gif) \9;
-    background-position: 75px 75px;
-}
-#online li.selected .icon:hover {
-    width: 107px;
-    height: 107px;
-    border: 3px solid #1094fa;
-    background-position: 72px 72px;
-}
-
-
-/* 在线文件的文件预览图标 */
-i.file-preview {
-    display: block;
-    margin: 10px auto;
-    width: 70px;
-    height: 70px;
-    background-image: url("./images/file-icons.png");
-    background-image: url("./images/file-icons.gif") \9;
-    background-position: -140px center;
-    background-repeat: no-repeat;
-}
-i.file-preview.file-type-dir{
-    background-position: 0 center;
-}
-i.file-preview.file-type-file{
-    background-position: -140px center;
-}
-i.file-preview.file-type-filelist{
-    background-position: -210px center;
-}
-i.file-preview.file-type-zip,
-i.file-preview.file-type-rar,
-i.file-preview.file-type-7z,
-i.file-preview.file-type-tar,
-i.file-preview.file-type-gz,
-i.file-preview.file-type-bz2{
-    background-position: -280px center;
-}
-i.file-preview.file-type-xls,
-i.file-preview.file-type-xlsx{
-    background-position: -350px center;
-}
-i.file-preview.file-type-doc,
-i.file-preview.file-type-docx{
-    background-position: -420px center;
-}
-i.file-preview.file-type-ppt,
-i.file-preview.file-type-pptx{
-    background-position: -490px center;
-}
-i.file-preview.file-type-vsd{
-    background-position: -560px center;
-}
-i.file-preview.file-type-pdf{
-    background-position: -630px center;
-}
-i.file-preview.file-type-txt,
-i.file-preview.file-type-md,
-i.file-preview.file-type-json,
-i.file-preview.file-type-htm,
-i.file-preview.file-type-xml,
-i.file-preview.file-type-html,
-i.file-preview.file-type-js,
-i.file-preview.file-type-css,
-i.file-preview.file-type-php,
-i.file-preview.file-type-jsp,
-i.file-preview.file-type-asp{
-    background-position: -700px center;
-}
-i.file-preview.file-type-apk{
-    background-position: -770px center;
-}
-i.file-preview.file-type-exe{
-    background-position: -840px center;
-}
-i.file-preview.file-type-ipa{
-    background-position: -910px center;
-}
-i.file-preview.file-type-mp4,
-i.file-preview.file-type-swf,
-i.file-preview.file-type-mkv,
-i.file-preview.file-type-avi,
-i.file-preview.file-type-flv,
-i.file-preview.file-type-mov,
-i.file-preview.file-type-mpg,
-i.file-preview.file-type-mpeg,
-i.file-preview.file-type-ogv,
-i.file-preview.file-type-webm,
-i.file-preview.file-type-rm,
-i.file-preview.file-type-rmvb{
-    background-position: -980px center;
-}
-i.file-preview.file-type-ogg,
-i.file-preview.file-type-wav,
-i.file-preview.file-type-wmv,
-i.file-preview.file-type-mid,
-i.file-preview.file-type-mp3{
-    background-position: -1050px center;
-}
-i.file-preview.file-type-jpg,
-i.file-preview.file-type-jpeg,
-i.file-preview.file-type-gif,
-i.file-preview.file-type-bmp,
-i.file-preview.file-type-png,
-i.file-preview.file-type-psd{
-    background-position: -140px center;
-}

+ 0 - 60
static/UEditor/dialogs/attachment/attachment.html

@@ -1,60 +0,0 @@
-<!doctype html>
-<html>
-<head>
-    <meta charset="UTF-8">
-    <title>ueditor图片对话框</title>
-    <script type="text/javascript" src="../internal.js"></script>
-
-    <!-- jquery -->
-    <script type="text/javascript" src="../../third-party/jquery-1.10.2.min.js"></script>
-
-    <!-- webuploader -->
-    <script src="../../third-party/webuploader/webuploader.min.js"></script>
-    <link rel="stylesheet" type="text/css" href="../../third-party/webuploader/webuploader.css">
-
-    <!-- attachment dialog -->
-    <link rel="stylesheet" href="attachment.css" type="text/css" />
-</head>
-<body>
-
-    <div class="wrapper">
-        <div id="tabhead" class="tabhead">
-            <span class="tab focus" data-content-id="upload"><var id="lang_tab_upload"></var></span>
-            <span class="tab" data-content-id="online"><var id="lang_tab_online"></var></span>
-        </div>
-        <div id="tabbody" class="tabbody">
-            <!-- 上传图片 -->
-            <div id="upload" class="panel focus">
-                <div id="queueList" class="queueList">
-                    <div class="statusBar element-invisible">
-                        <div class="progress">
-                            <span class="text">0%</span>
-                            <span class="percentage"></span>
-                        </div><div class="info"></div>
-                        <div class="btns">
-                            <div id="filePickerBtn"></div>
-                            <div class="uploadBtn"><var id="lang_start_upload"></var></div>
-                        </div>
-                    </div>
-                    <div id="dndArea" class="placeholder">
-                        <div class="filePickerContainer">
-                            <div id="filePickerReady"></div>
-                        </div>
-                    </div>
-                    <ul class="filelist element-invisible">
-                        <li id="filePickerBlock" class="filePickerBlock"></li>
-                    </ul>
-                </div>
-            </div>
-
-            <!-- 在线图片 -->
-            <div id="online" class="panel">
-                <div id="fileList"><var id="lang_imgLoading"></var></div>
-            </div>
-
-        </div>
-    </div>
-    <script type="text/javascript" src="attachment.js"></script>
-
-</body>
-</html>

+ 0 - 760
static/UEditor/dialogs/attachment/attachment.js

@@ -1,760 +0,0 @@
-/**
- * User: Jinqn
- * Date: 14-04-08
- * Time: 下午16:34
- * 上传图片对话框逻辑代码,包括tab: 远程图片/上传图片/在线图片/搜索图片
- */
-
-(function () {
-
-    var uploadFile,
-        onlineFile;
-
-    window.onload = function () {
-        initTabs();
-        initButtons();
-    };
-
-    /* 初始化tab标签 */
-    function initTabs() {
-        var tabs = $G('tabhead').children;
-        for (var i = 0; i < tabs.length; i++) {
-            domUtils.on(tabs[i], "click", function (e) {
-                var target = e.target || e.srcElement;
-                setTabFocus(target.getAttribute('data-content-id'));
-            });
-        }
-
-        setTabFocus('upload');
-    }
-
-    /* 初始化tabbody */
-    function setTabFocus(id) {
-        if(!id) return;
-        var i, bodyId, tabs = $G('tabhead').children;
-        for (i = 0; i < tabs.length; i++) {
-            bodyId = tabs[i].getAttribute('data-content-id')
-            if (bodyId == id) {
-                domUtils.addClass(tabs[i], 'focus');
-                domUtils.addClass($G(bodyId), 'focus');
-            } else {
-                domUtils.removeClasses(tabs[i], 'focus');
-                domUtils.removeClasses($G(bodyId), 'focus');
-            }
-        }
-        switch (id) {
-            case 'upload':
-                uploadFile = uploadFile || new UploadFile('queueList');
-                break;
-            case 'online':
-                onlineFile = onlineFile || new OnlineFile('fileList');
-                break;
-        }
-    }
-
-    /* 初始化onok事件 */
-    function initButtons() {
-
-        dialog.onok = function () {
-            var list = [], id, tabs = $G('tabhead').children;
-            for (var i = 0; i < tabs.length; i++) {
-                if (domUtils.hasClass(tabs[i], 'focus')) {
-                    id = tabs[i].getAttribute('data-content-id');
-                    break;
-                }
-            }
-
-            switch (id) {
-                case 'upload':
-                    list = uploadFile.getInsertList();
-                    var count = uploadFile.getQueueCount();
-                    if (count) {
-                        $('.info', '#queueList').html('<span style="color:red;">' + '还有2个未上传文件'.replace(/[\d]/, count) + '</span>');
-                        return false;
-                    }
-                    break;
-                case 'online':
-                    list = onlineFile.getInsertList();
-                    break;
-            }
-
-            editor.execCommand('insertfile', list);
-        };
-    }
-
-
-    /* 上传附件 */
-    function UploadFile(target) {
-        this.$wrap = target.constructor == String ? $('#' + target) : $(target);
-        this.init();
-    }
-    UploadFile.prototype = {
-        init: function () {
-            this.fileList = [];
-            this.initContainer();
-            this.initUploader();
-        },
-        initContainer: function () {
-            this.$queue = this.$wrap.find('.filelist');
-        },
-        /* 初始化容器 */
-        initUploader: function () {
-            var _this = this,
-                $ = jQuery,    // just in case. Make sure it's not an other libaray.
-                $wrap = _this.$wrap,
-            // 图片容器
-                $queue = $wrap.find('.filelist'),
-            // 状态栏,包括进度和控制按钮
-                $statusBar = $wrap.find('.statusBar'),
-            // 文件总体选择信息。
-                $info = $statusBar.find('.info'),
-            // 上传按钮
-                $upload = $wrap.find('.uploadBtn'),
-            // 上传按钮
-                $filePickerBtn = $wrap.find('.filePickerBtn'),
-            // 上传按钮
-                $filePickerBlock = $wrap.find('.filePickerBlock'),
-            // 没选择文件之前的内容。
-                $placeHolder = $wrap.find('.placeholder'),
-            // 总体进度条
-                $progress = $statusBar.find('.progress').hide(),
-            // 添加的文件数量
-                fileCount = 0,
-            // 添加的文件总大小
-                fileSize = 0,
-            // 优化retina, 在retina下这个值是2
-                ratio = window.devicePixelRatio || 1,
-            // 缩略图大小
-                thumbnailWidth = 113 * ratio,
-                thumbnailHeight = 113 * ratio,
-            // 可能有pedding, ready, uploading, confirm, done.
-                state = '',
-            // 所有文件的进度信息,key为file id
-                percentages = {},
-                supportTransition = (function () {
-                    var s = document.createElement('p').style,
-                        r = 'transition' in s ||
-                            'WebkitTransition' in s ||
-                            'MozTransition' in s ||
-                            'msTransition' in s ||
-                            'OTransition' in s;
-                    s = null;
-                    return r;
-                })(),
-                // WebUploader实例
-                uploader,
-                actionUrl = editor.getActionUrl(editor.getOpt('fileActionName')),
-                fileMaxSize = editor.getOpt('fileMaxSize'),
-                acceptExtensions = (editor.getOpt('fileAllowFiles') || []).join('').replace(/\./g, ',').replace(/^[,]/, '');
-
-            if (!WebUploader.Uploader.support()) {
-                $('#filePickerReady').after($('<div>').html(lang.errorNotSupport)).hide();
-                return;
-            } else if (!editor.getOpt('fileActionName')) {
-                $('#filePickerReady').after($('<div>').html(lang.errorLoadConfig)).hide();
-                return;
-            }
-
-            uploader = _this.uploader = WebUploader.create({
-                pick: {
-                    id: '#filePickerReady',
-                    label: lang.uploadSelectFile
-                },
-                swf: '../../third-party/webuploader/Uploader.swf',
-                server: actionUrl,
-                fileVal: editor.getOpt('fileFieldName'),
-                duplicate: true,
-                fileSingleSizeLimit: fileMaxSize,
-                compress: false
-            });
-            uploader.addButton({
-                id: '#filePickerBlock'
-            });
-            uploader.addButton({
-                id: '#filePickerBtn',
-                label: lang.uploadAddFile
-            });
-
-            setState('pedding');
-
-            // 当有文件添加进来时执行,负责view的创建
-            function addFile(file) {
-                var $li = $('<li id="' + file.id + '">' +
-                        '<p class="title">' + file.name + '</p>' +
-                        '<p class="imgWrap"></p>' +
-                        '<p class="progress"><span></span></p>' +
-                        '</li>'),
-
-                    $btns = $('<div class="file-panel">' +
-                        '<span class="cancel">' + lang.uploadDelete + '</span>' +
-                        '<span class="rotateRight">' + lang.uploadTurnRight + '</span>' +
-                        '<span class="rotateLeft">' + lang.uploadTurnLeft + '</span></div>').appendTo($li),
-                    $prgress = $li.find('p.progress span'),
-                    $wrap = $li.find('p.imgWrap'),
-                    $info = $('<p class="error"></p>').hide().appendTo($li),
-
-                    showError = function (code) {
-                        switch (code) {
-                            case 'exceed_size':
-                                text = lang.errorExceedSize;
-                                break;
-                            case 'interrupt':
-                                text = lang.errorInterrupt;
-                                break;
-                            case 'http':
-                                text = lang.errorHttp;
-                                break;
-                            case 'not_allow_type':
-                                text = lang.errorFileType;
-                                break;
-                            default:
-                                text = lang.errorUploadRetry;
-                                break;
-                        }
-                        $info.text(text).show();
-                    };
-
-                if (file.getStatus() === 'invalid') {
-                    showError(file.statusText);
-                } else {
-                    $wrap.text(lang.uploadPreview);
-                    if ('|png|jpg|jpeg|bmp|gif|'.indexOf('|'+file.ext.toLowerCase()+'|') == -1) {
-                        $wrap.empty().addClass('notimage').append('<i class="file-preview file-type-' + file.ext.toLowerCase() + '"></i>' +
-                        '<span class="file-title" title="' + file.name + '">' + file.name + '</span>');
-                    } else {
-                        if (browser.ie && browser.version <= 7) {
-                            $wrap.text(lang.uploadNoPreview);
-                        } else {
-                            uploader.makeThumb(file, function (error, src) {
-                                if (error || !src) {
-                                    $wrap.text(lang.uploadNoPreview);
-                                } else {
-                                    var $img = $('<img src="' + src + '">');
-                                    $wrap.empty().append($img);
-                                    $img.on('error', function () {
-                                        $wrap.text(lang.uploadNoPreview);
-                                    });
-                                }
-                            }, thumbnailWidth, thumbnailHeight);
-                        }
-                    }
-                    percentages[ file.id ] = [ file.size, 0 ];
-                    file.rotation = 0;
-
-                    /* 检查文件格式 */
-                    if (!file.ext || acceptExtensions.indexOf(file.ext.toLowerCase()) == -1) {
-                        showError('not_allow_type');
-                        uploader.removeFile(file);
-                    }
-                }
-
-                file.on('statuschange', function (cur, prev) {
-                    if (prev === 'progress') {
-                        $prgress.hide().width(0);
-                    } else if (prev === 'queued') {
-                        $li.off('mouseenter mouseleave');
-                        $btns.remove();
-                    }
-                    // 成功
-                    if (cur === 'error' || cur === 'invalid') {
-                        showError(file.statusText);
-                        percentages[ file.id ][ 1 ] = 1;
-                    } else if (cur === 'interrupt') {
-                        showError('interrupt');
-                    } else if (cur === 'queued') {
-                        percentages[ file.id ][ 1 ] = 0;
-                    } else if (cur === 'progress') {
-                        $info.hide();
-                        $prgress.css('display', 'block');
-                    } else if (cur === 'complete') {
-                    }
-
-                    $li.removeClass('state-' + prev).addClass('state-' + cur);
-                });
-
-                $li.on('mouseenter', function () {
-                    $btns.stop().animate({height: 30});
-                });
-                $li.on('mouseleave', function () {
-                    $btns.stop().animate({height: 0});
-                });
-
-                $btns.on('click', 'span', function () {
-                    var index = $(this).index(),
-                        deg;
-
-                    switch (index) {
-                        case 0:
-                            uploader.removeFile(file);
-                            return;
-                        case 1:
-                            file.rotation += 90;
-                            break;
-                        case 2:
-                            file.rotation -= 90;
-                            break;
-                    }
-
-                    if (supportTransition) {
-                        deg = 'rotate(' + file.rotation + 'deg)';
-                        $wrap.css({
-                            '-webkit-transform': deg,
-                            '-mos-transform': deg,
-                            '-o-transform': deg,
-                            'transform': deg
-                        });
-                    } else {
-                        $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')');
-                    }
-
-                });
-
-                $li.insertBefore($filePickerBlock);
-            }
-
-            // 负责view的销毁
-            function removeFile(file) {
-                var $li = $('#' + file.id);
-                delete percentages[ file.id ];
-                updateTotalProgress();
-                $li.off().find('.file-panel').off().end().remove();
-            }
-
-            function updateTotalProgress() {
-                var loaded = 0,
-                    total = 0,
-                    spans = $progress.children(),
-                    percent;
-
-                $.each(percentages, function (k, v) {
-                    total += v[ 0 ];
-                    loaded += v[ 0 ] * v[ 1 ];
-                });
-
-                percent = total ? loaded / total : 0;
-
-                spans.eq(0).text(Math.round(percent * 100) + '%');
-                spans.eq(1).css('width', Math.round(percent * 100) + '%');
-                updateStatus();
-            }
-
-            function setState(val, files) {
-
-                if (val != state) {
-
-                    var stats = uploader.getStats();
-
-                    $upload.removeClass('state-' + state);
-                    $upload.addClass('state-' + val);
-
-                    switch (val) {
-
-                        /* 未选择文件 */
-                        case 'pedding':
-                            $queue.addClass('element-invisible');
-                            $statusBar.addClass('element-invisible');
-                            $placeHolder.removeClass('element-invisible');
-                            $progress.hide(); $info.hide();
-                            uploader.refresh();
-                            break;
-
-                        /* 可以开始上传 */
-                        case 'ready':
-                            $placeHolder.addClass('element-invisible');
-                            $queue.removeClass('element-invisible');
-                            $statusBar.removeClass('element-invisible');
-                            $progress.hide(); $info.show();
-                            $upload.text(lang.uploadStart);
-                            uploader.refresh();
-                            break;
-
-                        /* 上传中 */
-                        case 'uploading':
-                            $progress.show(); $info.hide();
-                            $upload.text(lang.uploadPause);
-                            break;
-
-                        /* 暂停上传 */
-                        case 'paused':
-                            $progress.show(); $info.hide();
-                            $upload.text(lang.uploadContinue);
-                            break;
-
-                        case 'confirm':
-                            $progress.show(); $info.hide();
-                            $upload.text(lang.uploadStart);
-
-                            stats = uploader.getStats();
-                            if (stats.successNum && !stats.uploadFailNum) {
-                                setState('finish');
-                                return;
-                            }
-                            break;
-
-                        case 'finish':
-                            $progress.hide(); $info.show();
-                            if (stats.uploadFailNum) {
-                                $upload.text(lang.uploadRetry);
-                            } else {
-                                $upload.text(lang.uploadStart);
-                            }
-                            break;
-                    }
-
-                    state = val;
-                    updateStatus();
-
-                }
-
-                if (!_this.getQueueCount()) {
-                    $upload.addClass('disabled')
-                } else {
-                    $upload.removeClass('disabled')
-                }
-
-            }
-
-            function updateStatus() {
-                var text = '', stats;
-
-                if (state === 'ready') {
-                    text = lang.updateStatusReady.replace('_', fileCount).replace('_KB', WebUploader.formatSize(fileSize));
-                } else if (state === 'confirm') {
-                    stats = uploader.getStats();
-                    if (stats.uploadFailNum) {
-                        text = lang.updateStatusConfirm.replace('_', stats.successNum).replace('_', stats.successNum);
-                    }
-                } else {
-                    stats = uploader.getStats();
-                    text = lang.updateStatusFinish.replace('_', fileCount).
-                        replace('_KB', WebUploader.formatSize(fileSize)).
-                        replace('_', stats.successNum);
-
-                    if (stats.uploadFailNum) {
-                        text += lang.updateStatusError.replace('_', stats.uploadFailNum);
-                    }
-                }
-
-                $info.html(text);
-            }
-
-            uploader.on('fileQueued', function (file) {
-                fileCount++;
-                fileSize += file.size;
-
-                if (fileCount === 1) {
-                    $placeHolder.addClass('element-invisible');
-                    $statusBar.show();
-                }
-
-                addFile(file);
-            });
-
-            uploader.on('fileDequeued', function (file) {
-                fileCount--;
-                fileSize -= file.size;
-
-                removeFile(file);
-                updateTotalProgress();
-            });
-
-            uploader.on('filesQueued', function (file) {
-                if (!uploader.isInProgress() && (state == 'pedding' || state == 'finish' || state == 'confirm' || state == 'ready')) {
-                    setState('ready');
-                }
-                updateTotalProgress();
-            });
-
-            uploader.on('all', function (type, files) {
-                switch (type) {
-                    case 'uploadFinished':
-                        setState('confirm', files);
-                        break;
-                    case 'startUpload':
-                        /* 添加额外的GET参数 */
-                        var params = utils.serializeParam(editor.queryCommandValue('serverparam')) || '',
-                            url = utils.formatUrl(actionUrl + (actionUrl.indexOf('?') == -1 ? '?':'&') + 'encode=utf-8&' + params);
-                        uploader.option('server', url);
-                        setState('uploading', files);
-                        break;
-                    case 'stopUpload':
-                        setState('paused', files);
-                        break;
-                }
-            });
-
-            uploader.on('uploadBeforeSend', function (file, data, header) {
-                //这里可以通过data对象添加POST参数
-                header['X_Requested_With'] = 'XMLHttpRequest';
-                // HaoChuan9421
-                if(editor.options.headers && Object.prototype.toString.apply(editor.options.headers) === "[object Object]"){
-                    for(var key in editor.options.headers){
-                        header[key] = editor.options.headers[key]
-                    }
-                }
-            });
-
-            uploader.on('uploadProgress', function (file, percentage) {
-                var $li = $('#' + file.id),
-                    $percent = $li.find('.progress span');
-
-                $percent.css('width', percentage * 100 + '%');
-                percentages[ file.id ][ 1 ] = percentage;
-                updateTotalProgress();
-            });
-
-            uploader.on('uploadSuccess', function (file, ret) {
-                var $file = $('#' + file.id);
-                try {
-                    var responseText = (ret._raw || ret),
-                        json = utils.str2json(responseText);
-                    if (json.state == 'SUCCESS') {
-                        _this.fileList.push(json);
-                        $file.append('<span class="success"></span>');
-                    } else {
-                        $file.find('.error').text(json.state).show();
-                    }
-                } catch (e) {
-                    $file.find('.error').text(lang.errorServerUpload).show();
-                }
-            });
-
-            uploader.on('uploadError', function (file, code) {
-            });
-            uploader.on('error', function (code, file) {
-                if (code == 'Q_TYPE_DENIED' || code == 'F_EXCEED_SIZE') {
-                    addFile(file);
-                }
-            });
-            uploader.on('uploadComplete', function (file, ret) {
-            });
-
-            $upload.on('click', function () {
-                if ($(this).hasClass('disabled')) {
-                    return false;
-                }
-
-                if (state === 'ready') {
-                    uploader.upload();
-                } else if (state === 'paused') {
-                    uploader.upload();
-                } else if (state === 'uploading') {
-                    uploader.stop();
-                }
-            });
-
-            $upload.addClass('state-' + state);
-            updateTotalProgress();
-        },
-        getQueueCount: function () {
-            var file, i, status, readyFile = 0, files = this.uploader.getFiles();
-            for (i = 0; file = files[i++]; ) {
-                status = file.getStatus();
-                if (status == 'queued' || status == 'uploading' || status == 'progress') readyFile++;
-            }
-            return readyFile;
-        },
-        getInsertList: function () {
-            var i, link, data, list = [],
-                prefix = editor.getOpt('fileUrlPrefix');
-            for (i = 0; i < this.fileList.length; i++) {
-                data = this.fileList[i];
-                link = data.url;
-                list.push({
-                    title: data.original || link.substr(link.lastIndexOf('/') + 1),
-                    url: prefix + link
-                });
-            }
-            return list;
-        }
-    };
-
-
-    /* 在线附件 */
-    function OnlineFile(target) {
-        this.container = utils.isString(target) ? document.getElementById(target) : target;
-        this.init();
-    }
-    OnlineFile.prototype = {
-        init: function () {
-            this.initContainer();
-            this.initEvents();
-            this.initData();
-        },
-        /* 初始化容器 */
-        initContainer: function () {
-            this.container.innerHTML = '';
-            this.list = document.createElement('ul');
-            this.clearFloat = document.createElement('li');
-
-            domUtils.addClass(this.list, 'list');
-            domUtils.addClass(this.clearFloat, 'clearFloat');
-
-            this.list.appendChild(this.clearFloat);
-            this.container.appendChild(this.list);
-        },
-        /* 初始化滚动事件,滚动到地步自动拉取数据 */
-        initEvents: function () {
-            var _this = this;
-
-            /* 滚动拉取图片 */
-            domUtils.on($G('fileList'), 'scroll', function(e){
-                var panel = this;
-                if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) {
-                    _this.getFileData();
-                }
-            });
-            /* 选中图片 */
-            domUtils.on(this.list, 'click', function (e) {
-                var target = e.target || e.srcElement,
-                    li = target.parentNode;
-
-                if (li.tagName.toLowerCase() == 'li') {
-                    if (domUtils.hasClass(li, 'selected')) {
-                        domUtils.removeClasses(li, 'selected');
-                    } else {
-                        domUtils.addClass(li, 'selected');
-                    }
-                }
-            });
-        },
-        /* 初始化第一次的数据 */
-        initData: function () {
-
-            /* 拉取数据需要使用的值 */
-            this.state = 0;
-            this.listSize = editor.getOpt('fileManagerListSize');
-            this.listIndex = 0;
-            this.listEnd = false;
-
-            /* 第一次拉取数据 */
-            this.getFileData();
-        },
-        /* 向后台拉取图片列表数据 */
-        getFileData: function () {
-            var _this = this;
-
-            if(!_this.listEnd && !this.isLoadingData) {
-                this.isLoadingData = true;
-                ajax.request(editor.getActionUrl(editor.getOpt('fileManagerActionName')), {
-                    timeout: 100000,
-                    data: utils.extend({
-                            start: this.listIndex,
-                            size: this.listSize
-                        }, editor.queryCommandValue('serverparam')),
-                    method: 'get',
-                    onsuccess: function (r) {
-                        try {
-                            var json = eval('(' + r.responseText + ')');
-                            if (json.state == 'SUCCESS') {
-                                _this.pushData(json.list);
-                                _this.listIndex = parseInt(json.start) + parseInt(json.list.length);
-                                if(_this.listIndex >= json.total) {
-                                    _this.listEnd = true;
-                                }
-                                _this.isLoadingData = false;
-                            }
-                        } catch (e) {
-                            if(r.responseText.indexOf('ue_separate_ue') != -1) {
-                                var list = r.responseText.split(r.responseText);
-                                _this.pushData(list);
-                                _this.listIndex = parseInt(list.length);
-                                _this.listEnd = true;
-                                _this.isLoadingData = false;
-                            }
-                        }
-                    },
-                    onerror: function () {
-                        _this.isLoadingData = false;
-                    }
-                });
-            }
-        },
-        /* 添加图片到列表界面上 */
-        pushData: function (list) {
-            var i, item, img, filetype, preview, icon, _this = this,
-                urlPrefix = editor.getOpt('fileManagerUrlPrefix');
-            for (i = 0; i < list.length; i++) {
-                if(list[i] && list[i].url) {
-                    item = document.createElement('li');
-                    icon = document.createElement('span');
-                    filetype = list[i].url.substr(list[i].url.lastIndexOf('.') + 1);
-
-                    if ( "png|jpg|jpeg|gif|bmp".indexOf(filetype) != -1 ) {
-                        preview = document.createElement('img');
-                        domUtils.on(preview, 'load', (function(image){
-                            return function(){
-                                _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight);
-                            };
-                        })(preview));
-                        preview.width = 113;
-                        preview.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) );
-                    } else {
-                        var ic = document.createElement('i'),
-                            textSpan = document.createElement('span');
-                        textSpan.innerHTML = list[i].url.substr(list[i].url.lastIndexOf('/') + 1);
-                        preview = document.createElement('div');
-                        preview.appendChild(ic);
-                        preview.appendChild(textSpan);
-                        domUtils.addClass(preview, 'file-wrapper');
-                        domUtils.addClass(textSpan, 'file-title');
-                        domUtils.addClass(ic, 'file-type-' + filetype);
-                        domUtils.addClass(ic, 'file-preview');
-                    }
-                    domUtils.addClass(icon, 'icon');
-                    item.setAttribute('data-url', urlPrefix + list[i].url);
-                    if (list[i].original) {
-                        item.setAttribute('data-title', list[i].original);
-                    }
-
-                    item.appendChild(preview);
-                    item.appendChild(icon);
-                    this.list.insertBefore(item, this.clearFloat);
-                }
-            }
-        },
-        /* 改变图片大小 */
-        scale: function (img, w, h, type) {
-            var ow = img.width,
-                oh = img.height;
-
-            if (type == 'justify') {
-                if (ow >= oh) {
-                    img.width = w;
-                    img.height = h * oh / ow;
-                    img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px';
-                } else {
-                    img.width = w * ow / oh;
-                    img.height = h;
-                    img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px';
-                }
-            } else {
-                if (ow >= oh) {
-                    img.width = w * ow / oh;
-                    img.height = h;
-                    img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px';
-                } else {
-                    img.width = w;
-                    img.height = h * oh / ow;
-                    img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px';
-                }
-            }
-        },
-        getInsertList: function () {
-            var i, lis = this.list.children, list = [];
-            for (i = 0; i < lis.length; i++) {
-                if (domUtils.hasClass(lis[i], 'selected')) {
-                    var url = lis[i].getAttribute('data-url');
-                    var title = lis[i].getAttribute('data-title') || url.substr(url.lastIndexOf('/') + 1);
-                    list.push({
-                        title: title,
-                        url: url
-                    });
-                }
-            }
-            return list;
-        }
-    };
-
-
-})();

BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_chm.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_default.png


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_doc.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_exe.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_jpg.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_mp3.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_mv.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_pdf.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_ppt.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_psd.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_rar.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_txt.gif


BIN
static/UEditor/dialogs/attachment/fileTypeImages/icon_xls.gif


BIN
static/UEditor/dialogs/attachment/images/alignicon.gif


BIN
static/UEditor/dialogs/attachment/images/alignicon.png


BIN
static/UEditor/dialogs/attachment/images/bg.png


BIN
static/UEditor/dialogs/attachment/images/file-icons.gif


BIN
static/UEditor/dialogs/attachment/images/file-icons.png


BIN
static/UEditor/dialogs/attachment/images/icons.gif


BIN
static/UEditor/dialogs/attachment/images/icons.png


BIN
static/UEditor/dialogs/attachment/images/image.png


BIN
static/UEditor/dialogs/attachment/images/progress.png


BIN
static/UEditor/dialogs/attachment/images/success.gif


BIN
static/UEditor/dialogs/attachment/images/success.png


+ 0 - 94
static/UEditor/dialogs/background/background.css

@@ -1,94 +0,0 @@
-.wrapper{ width: 424px;margin: 10px auto; zoom:1;position: relative}
-.tabbody{height:225px;}
-.tabbody .panel { position: absolute;width:100%; height:100%;background: #fff; display: none;}
-.tabbody .focus { display: block;}
-
-body{font-size: 12px;color: #888;overflow: hidden;}
-input,label{vertical-align:middle}
-.clear{clear: both;}
-.pl{padding-left: 18px;padding-left: 23px\9;}
-
-#imageList {width: 420px;height: 215px;margin-top: 10px;overflow: hidden;overflow-y: auto;}
-#imageList div {float: left;width: 100px;height: 95px;margin: 5px 10px;}
-#imageList img {cursor: pointer;border: 2px solid white;}
-
-.bgarea{margin: 10px;padding: 5px;height: 84%;border: 1px solid #A8A297;}
-.content div{margin: 10px 0 10px 5px;}
-.content .iptradio{margin: 0px 5px 5px 0px;}
-.txt{width:280px;}
-
-.wrapcolor{height: 19px;}
-div.color{float: left;margin: 0;}
-#colorPicker{width: 17px;height: 17px;border: 1px solid #CCC;display: inline-block;border-radius: 3px;box-shadow: 2px 2px 5px #D3D6DA;margin: 0;float: left;}
-div.alignment,#custom{margin-left: 23px;margin-left: 28px\9;}
-#custom input{height: 15px;min-height: 15px;width:20px;}
-#repeatType{width:100px;}
-
-
-/* 图片管理样式 */
-#imgManager {
-    width: 100%;
-    height: 225px;
-}
-#imgManager #imageList{
-    width: 100%;
-    overflow-x: hidden;
-    overflow-y: auto;
-}
-#imgManager ul {
-    display: block;
-    list-style: none;
-    margin: 0;
-    padding: 0;
-}
-#imgManager li {
-    float: left;
-    display: block;
-    list-style: none;
-    padding: 0;
-    width: 113px;
-    height: 113px;
-    margin: 9px 0 0 19px;
-    background-color: #eee;
-    overflow: hidden;
-    cursor: pointer;
-    position: relative;
-}
-#imgManager li.clearFloat {
-    float: none;
-    clear: both;
-    display: block;
-    width:0;
-    height:0;
-    margin: 0;
-    padding: 0;
-}
-#imgManager li img {
-    cursor: pointer;
-}
-#imgManager li .icon {
-    cursor: pointer;
-    width: 113px;
-    height: 113px;
-    position: absolute;
-    top: 0;
-    left: 0;
-    z-index: 2;
-    border: 0;
-    background-repeat: no-repeat;
-}
-#imgManager li .icon:hover {
-    width: 107px;
-    height: 107px;
-    border: 3px solid #1094fa;
-}
-#imgManager li.selected .icon {
-    background-image: url(images/success.png);
-    background-position: 75px 75px;
-}
-#imgManager li.selected .icon:hover {
-    width: 107px;
-    height: 107px;
-    border: 3px solid #1094fa;
-    background-position: 72px 72px;
-}

+ 0 - 56
static/UEditor/dialogs/background/background.html

@@ -1,56 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
-    <script type="text/javascript" src="../internal.js"></script>
-    <link rel="stylesheet" type="text/css" href="background.css">
-</head>
-<body>
-    <div id="bg_container" class="wrapper">
-        <div id="tabHeads" class="tabhead">
-            <span class="focus" data-content-id="normal"><var id="lang_background_normal"></var></span>
-            <!--<span class="" data-content-id="imgManager"><var id="lang_background_local"></var></span>-->
-        </div>
-        <div id="tabBodys" class="tabbody">
-            <div id="normal" class="panel focus">
-                <fieldset class="bgarea">
-                    <legend><var id="lang_background_set"></var></legend>
-                    <div class="content">
-                        <div>
-                            <label><input id="nocolorRadio" class="iptradio" type="radio" name="t" value="none" checked="checked"><var id="lang_background_none"></var></label>
-                            <label><input id="coloredRadio" class="iptradio" type="radio" name="t" value="color"><var id="lang_background_colored"></var></label>
-                        </div>
-                        <div class="wrapcolor pl">
-                            <div class="color">
-                                <var id="lang_background_color"></var>:
-                            </div>
-                            <div id="colorPicker"></div>
-                            <div class="clear"></div>
-                        </div>
-                        <div class="wrapcolor pl">
-                            <label><var id="lang_background_netimg"></var>:</label><input class="txt" type="text" id="url">
-                        </div>
-                        <div id="alignment" class="alignment">
-                            <var id="lang_background_align"></var>:<select id="repeatType">
-                                <option value="center"></option>
-                                <option value="repeat-x"></option>
-                                <option value="repeat-y"></option>
-                                <option value="repeat"></option>
-                                <option value="self"></option>
-                            </select>
-                        </div>
-                        <div id="custom" >
-                            <var id="lang_background_position"></var>:x:<input type="text" size="1" id="x" maxlength="4" value="0">px&nbsp;&nbsp;y:<input type="text" size="1" id="y" maxlength="4" value="0">px
-                        </div>
-                    </div>
-                </fieldset>
-
-            </div>
-            <!--<div id="imgManager" class="panel">-->
-                <!--<div id="imageList" style=""></div>-->
-            <!--</div>-->
-        </div>
-    </div>
-    <script type="text/javascript" src="background.js"></script>
-</body>
-</html>

+ 0 - 376
static/UEditor/dialogs/background/background.js

@@ -1,376 +0,0 @@
-(function () {
-
-    var onlineImage,
-        backupStyle = editor.queryCommandValue('background');
-
-    window.onload = function () {
-        initTabs();
-        initColorSelector();
-    };
-
-    /* 初始化tab标签 */
-    function initTabs(){
-        var tabs = $G('tabHeads').children;
-        for (var i = 0; i < tabs.length; i++) {
-            domUtils.on(tabs[i], "click", function (e) {
-                var target = e.target || e.srcElement;
-                for (var j = 0; j < tabs.length; j++) {
-                    if(tabs[j] == target){
-                        tabs[j].className = "focus";
-                        var contentId = tabs[j].getAttribute('data-content-id');
-                        $G(contentId).style.display = "block";
-                        if(contentId == 'imgManager') {
-                            initImagePanel();
-                        }
-                    }else {
-                        tabs[j].className = "";
-                        $G(tabs[j].getAttribute('data-content-id')).style.display = "none";
-                    }
-                }
-            });
-        }
-    }
-
-    /* 初始化颜色设置 */
-    function initColorSelector () {
-        var obj = editor.queryCommandValue('background');
-        if (obj) {
-            var color = obj['background-color'],
-                repeat = obj['background-repeat'] || 'repeat',
-                image = obj['background-image'] || '',
-                position = obj['background-position'] || 'center center',
-                pos = position.split(' '),
-                x = parseInt(pos[0]) || 0,
-                y = parseInt(pos[1]) || 0;
-
-            if(repeat == 'no-repeat' && (x || y)) repeat = 'self';
-
-            image = image.match(/url[\s]*\(([^\)]*)\)/);
-            image = image ? image[1]:'';
-            updateFormState('colored', color, image, repeat, x, y);
-        } else {
-            updateFormState();
-        }
-
-        var updateHandler = function () {
-            updateFormState();
-            updateBackground();
-        }
-        domUtils.on($G('nocolorRadio'), 'click', updateBackground);
-        domUtils.on($G('coloredRadio'), 'click', updateHandler);
-        domUtils.on($G('url'), 'keyup', function(){
-            if($G('url').value && $G('alignment').style.display == "none") {
-                utils.each($G('repeatType').children, function(item){
-                    item.selected = ('repeat' == item.getAttribute('value') ? 'selected':false);
-                });
-            }
-            updateHandler();
-        });
-        domUtils.on($G('repeatType'), 'change', updateHandler);
-        domUtils.on($G('x'), 'keyup', updateBackground);
-        domUtils.on($G('y'), 'keyup', updateBackground);
-
-        initColorPicker();
-    }
-
-    /* 初始化颜色选择器 */
-    function initColorPicker() {
-        var me = editor,
-            cp = $G("colorPicker");
-
-        /* 生成颜色选择器ui对象 */
-        var popup = new UE.ui.Popup({
-            content: new UE.ui.ColorPicker({
-                noColorText: me.getLang("clearColor"),
-                editor: me,
-                onpickcolor: function (t, color) {
-                    updateFormState('colored', color);
-                    updateBackground();
-                    UE.ui.Popup.postHide();
-                },
-                onpicknocolor: function (t, color) {
-                    updateFormState('colored', 'transparent');
-                    updateBackground();
-                    UE.ui.Popup.postHide();
-                }
-            }),
-            editor: me,
-            onhide: function () {
-            }
-        });
-
-        /* 设置颜色选择器 */
-        domUtils.on(cp, "click", function () {
-            popup.showAnchor(this);
-        });
-        domUtils.on(document, 'mousedown', function (evt) {
-            var el = evt.target || evt.srcElement;
-            UE.ui.Popup.postHide(el);
-        });
-        domUtils.on(window, 'scroll', function () {
-            UE.ui.Popup.postHide();
-        });
-    }
-
-    /* 初始化在线图片列表 */
-    function initImagePanel() {
-        onlineImage = onlineImage || new OnlineImage('imageList');
-    }
-
-    /* 更新背景色设置面板 */
-    function updateFormState (radio, color, url, align, x, y) {
-        var nocolorRadio = $G('nocolorRadio'),
-            coloredRadio = $G('coloredRadio');
-
-        if(radio) {
-            nocolorRadio.checked = (radio == 'colored' ? false:'checked');
-            coloredRadio.checked = (radio == 'colored' ? 'checked':false);
-        }
-        if(color) {
-            domUtils.setStyle($G("colorPicker"), "background-color", color);
-        }
-
-        if(url && /^\//.test(url)) {
-            var a = document.createElement('a');
-            a.href = url;
-            browser.ie && (a.href = a.href);
-            url = browser.ie ? a.href:(a.protocol + '//' + a.host + a.pathname + a.search + a.hash);
-        }
-
-        if(url || url === '') {
-            $G('url').value = url;
-        }
-        if(align) {
-            utils.each($G('repeatType').children, function(item){
-                item.selected = (align == item.getAttribute('value') ? 'selected':false);
-            });
-        }
-        if(x || y) {
-            $G('x').value = parseInt(x) || 0;
-            $G('y').value = parseInt(y) || 0;
-        }
-
-        $G('alignment').style.display = coloredRadio.checked && $G('url').value ? '':'none';
-        $G('custom').style.display = coloredRadio.checked && $G('url').value && $G('repeatType').value == 'self' ? '':'none';
-    }
-
-    /* 更新背景颜色 */
-    function updateBackground () {
-        if ($G('coloredRadio').checked) {
-            var color = domUtils.getStyle($G("colorPicker"), "background-color"),
-                bgimg = $G("url").value,
-                align = $G("repeatType").value,
-                backgroundObj = {
-                    "background-repeat": "no-repeat",
-                    "background-position": "center center"
-                };
-
-            if (color) backgroundObj["background-color"] = color;
-            if (bgimg) backgroundObj["background-image"] = 'url(' + bgimg + ')';
-            if (align == 'self') {
-                backgroundObj["background-position"] = $G("x").value + "px " + $G("y").value + "px";
-            } else if (align == 'repeat-x' || align == 'repeat-y' || align == 'repeat') {
-                backgroundObj["background-repeat"] = align;
-            }
-
-            editor.execCommand('background', backgroundObj);
-        } else {
-            editor.execCommand('background', null);
-        }
-    }
-
-
-    /* 在线图片 */
-    function OnlineImage(target) {
-        this.container = utils.isString(target) ? document.getElementById(target) : target;
-        this.init();
-    }
-    OnlineImage.prototype = {
-        init: function () {
-            this.reset();
-            this.initEvents();
-        },
-        /* 初始化容器 */
-        initContainer: function () {
-            this.container.innerHTML = '';
-            this.list = document.createElement('ul');
-            this.clearFloat = document.createElement('li');
-
-            domUtils.addClass(this.list, 'list');
-            domUtils.addClass(this.clearFloat, 'clearFloat');
-
-            this.list.id = 'imageListUl';
-            this.list.appendChild(this.clearFloat);
-            this.container.appendChild(this.list);
-        },
-        /* 初始化滚动事件,滚动到地步自动拉取数据 */
-        initEvents: function () {
-            var _this = this;
-
-            /* 滚动拉取图片 */
-            domUtils.on($G('imageList'), 'scroll', function(e){
-                var panel = this;
-                if (panel.scrollHeight - (panel.offsetHeight + panel.scrollTop) < 10) {
-                    _this.getImageData();
-                }
-            });
-            /* 选中图片 */
-            domUtils.on(this.container, 'click', function (e) {
-                var target = e.target || e.srcElement,
-                    li = target.parentNode,
-                    nodes = $G('imageListUl').childNodes;
-
-                if (li.tagName.toLowerCase() == 'li') {
-                    updateFormState('nocolor', null, '');
-                    for (var i = 0, node; node = nodes[i++];) {
-                        if (node == li && !domUtils.hasClass(node, 'selected')) {
-                            domUtils.addClass(node, 'selected');
-                            updateFormState('colored', null, li.firstChild.getAttribute("_src"), 'repeat');
-                        } else {
-                            domUtils.removeClasses(node, 'selected');
-                        }
-                    }
-                    updateBackground();
-                }
-            });
-        },
-        /* 初始化第一次的数据 */
-        initData: function () {
-
-            /* 拉取数据需要使用的值 */
-            this.state = 0;
-            this.listSize = editor.getOpt('imageManagerListSize');
-            this.listIndex = 0;
-            this.listEnd = false;
-
-            /* 第一次拉取数据 */
-            this.getImageData();
-        },
-        /* 重置界面 */
-        reset: function() {
-            this.initContainer();
-            this.initData();
-        },
-        /* 向后台拉取图片列表数据 */
-        getImageData: function () {
-            var _this = this;
-
-            if(!_this.listEnd && !this.isLoadingData) {
-                this.isLoadingData = true;
-                var url = editor.getActionUrl(editor.getOpt('imageManagerActionName')),
-                    isJsonp = utils.isCrossDomainUrl(url);
-                ajax.request(url, {
-                    'timeout': 100000,
-                    'dataType': isJsonp ? 'jsonp':'',
-                    'data': utils.extend({
-                            start: this.listIndex,
-                            size: this.listSize
-                        }, editor.queryCommandValue('serverparam')),
-                    'method': 'get',
-                    'onsuccess': function (r) {
-                        try {
-                            var json = isJsonp ? r:eval('(' + r.responseText + ')');
-                            if (json.state == 'SUCCESS') {
-                                _this.pushData(json.list);
-                                _this.listIndex = parseInt(json.start) + parseInt(json.list.length);
-                                if(_this.listIndex >= json.total) {
-                                    _this.listEnd = true;
-                                }
-                                _this.isLoadingData = false;
-                            }
-                        } catch (e) {
-                            if(r.responseText.indexOf('ue_separate_ue') != -1) {
-                                var list = r.responseText.split(r.responseText);
-                                _this.pushData(list);
-                                _this.listIndex = parseInt(list.length);
-                                _this.listEnd = true;
-                                _this.isLoadingData = false;
-                            }
-                        }
-                    },
-                    'onerror': function () {
-                        _this.isLoadingData = false;
-                    }
-                });
-            }
-        },
-        /* 添加图片到列表界面上 */
-        pushData: function (list) {
-            var i, item, img, icon, _this = this,
-                urlPrefix = editor.getOpt('imageManagerUrlPrefix');
-            for (i = 0; i < list.length; i++) {
-                if(list[i] && list[i].url) {
-                    item = document.createElement('li');
-                    img = document.createElement('img');
-                    icon = document.createElement('span');
-
-                    domUtils.on(img, 'load', (function(image){
-                        return function(){
-                            _this.scale(image, image.parentNode.offsetWidth, image.parentNode.offsetHeight);
-                        }
-                    })(img));
-                    img.width = 113;
-                    img.setAttribute('src', urlPrefix + list[i].url + (list[i].url.indexOf('?') == -1 ? '?noCache=':'&noCache=') + (+new Date()).toString(36) );
-                    img.setAttribute('_src', urlPrefix + list[i].url);
-                    domUtils.addClass(icon, 'icon');
-
-                    item.appendChild(img);
-                    item.appendChild(icon);
-                    this.list.insertBefore(item, this.clearFloat);
-                }
-            }
-        },
-        /* 改变图片大小 */
-        scale: function (img, w, h, type) {
-            var ow = img.width,
-                oh = img.height;
-
-            if (type == 'justify') {
-                if (ow >= oh) {
-                    img.width = w;
-                    img.height = h * oh / ow;
-                    img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px';
-                } else {
-                    img.width = w * ow / oh;
-                    img.height = h;
-                    img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px';
-                }
-            } else {
-                if (ow >= oh) {
-                    img.width = w * ow / oh;
-                    img.height = h;
-                    img.style.marginLeft = '-' + parseInt((img.width - w) / 2) + 'px';
-                } else {
-                    img.width = w;
-                    img.height = h * oh / ow;
-                    img.style.marginTop = '-' + parseInt((img.height - h) / 2) + 'px';
-                }
-            }
-        },
-        getInsertList: function () {
-            var i, lis = this.list.children, list = [], align = getAlign();
-            for (i = 0; i < lis.length; i++) {
-                if (domUtils.hasClass(lis[i], 'selected')) {
-                    var img = lis[i].firstChild,
-                        src = img.getAttribute('_src');
-                    list.push({
-                        src: src,
-                        _src: src,
-                        floatStyle: align
-                    });
-                }
-
-            }
-            return list;
-        }
-    };
-
-    dialog.onok = function () {
-        updateBackground();
-        editor.fireEvent('saveScene');
-    };
-    dialog.oncancel = function () {
-        editor.execCommand('background', backupStyle);
-    };
-
-})();

BIN
static/UEditor/dialogs/background/images/bg.png


BIN
static/UEditor/dialogs/background/images/success.png


+ 0 - 65
static/UEditor/dialogs/charts/chart.config.js

@@ -1,65 +0,0 @@
-/*
- * 图表配置文件
- * */
-
-
-//不同类型的配置
-var typeConfig = [
-    {
-        chart: {
-            type: 'line'
-        },
-        plotOptions: {
-            line: {
-                dataLabels: {
-                    enabled: false
-                },
-                enableMouseTracking: true
-            }
-        }
-    }, {
-        chart: {
-            type: 'line'
-        },
-        plotOptions: {
-            line: {
-                dataLabels: {
-                    enabled: true
-                },
-                enableMouseTracking: false
-            }
-        }
-    }, {
-        chart: {
-            type: 'area'
-        }
-    }, {
-        chart: {
-            type: 'bar'
-        }
-    }, {
-        chart: {
-            type: 'column'
-        }
-    }, {
-        chart: {
-            plotBackgroundColor: null,
-            plotBorderWidth: null,
-            plotShadow: false
-        },
-        plotOptions: {
-            pie: {
-                allowPointSelect: true,
-                cursor: 'pointer',
-                dataLabels: {
-                    enabled: true,
-                    color: '#000000',
-                    connectorColor: '#000000',
-                    formatter: function() {
-                        return '<b>'+ this.point.name +'</b>: '+ ( Math.round( this.point.percentage*100 ) / 100 ) +' %';
-                    }
-                }
-            }
-        }
-    }
-];

+ 0 - 165
static/UEditor/dialogs/charts/charts.css

@@ -1,165 +0,0 @@
-html, body {
-    width: 100%;
-    height: 100%;
-    margin: 0;
-    padding: 0;
-    overflow-x: hidden;
-}
-
-.main {
-    width: 100%;
-    overflow: hidden;
-}
-
-.table-view {
-    height: 100%;
-    float: left;
-    margin: 20px;
-    width: 40%;
-}
-
-.table-view .table-container {
-    width: 100%;
-    margin-bottom: 50px;
-    overflow: scroll;
-}
-
-.table-view th {
-    padding: 5px 10px;
-    background-color: #F7F7F7;
-}
-
-.table-view td {
-    width: 50px;
-    text-align: center;
-    padding:0;
-}
-
-.table-container input {
-    width: 40px;
-    padding: 5px;
-    border: none;
-    outline: none;
-}
-
-.table-view caption {
-    font-size: 18px;
-    text-align: left;
-}
-
-.charts-view {
-    /*margin-left: 49%!important;*/
-    width: 50%;
-    margin-left: 49%;
-    height: 400px;
-}
-
-.charts-container {
-    border-left: 1px solid #c3c3c3;
-}
-
-.charts-format fieldset {
-    padding-left: 20px;
-    margin-bottom: 50px;
-}
-
-.charts-format legend {
-    padding-left: 10px;
-    padding-right: 10px;
-}
-
-.format-item-container {
-    padding: 20px;
-}
-
-.format-item-container label {
-    display: block;
-    margin: 10px 0;
-}
-
-.charts-format .data-item {
-    border: 1px solid black;
-    outline: none;
-    padding: 2px 3px;
-}
-
-/* 图表类型 */
-
-.charts-type {
-    margin-top: 50px;
-    height: 300px;
-}
-
-.scroll-view {
-    border: 1px solid #c3c3c3;
-    border-left: none;
-    border-right: none;
-    overflow: hidden;
-}
-
-.scroll-container {
-    margin: 20px;
-    width: 100%;
-    overflow: hidden;
-}
-
-.scroll-bed {
-    width: 10000px;
-    _margin-top: 20px;
-    -webkit-transition: margin-left .5s ease;
-    -moz-transition: margin-left .5s ease;
-    transition: margin-left .5s ease;
-}
-
-.view-box {
-    display: inline-block;
-    *display: inline;
-    *zoom: 1;
-    margin-right: 20px;
-    border: 2px solid white;
-    line-height: 0;
-    overflow: hidden;
-    cursor: pointer;
-}
-
-.view-box img {
-    border: 1px solid #cecece;
-}
-
-.view-box.selected {
-    border-color: #7274A7;
-}
-
-.button-container {
-    margin-bottom: 20px;
-    text-align: center;
-}
-
-.button-container a {
-    display: inline-block;
-    width: 100px;
-    height: 25px;
-    line-height: 25px;
-    border: 1px solid #c2ccd1;
-    margin-right: 30px;
-    text-decoration: none;
-    color: black;
-    -webkit-border-radius: 2px;
-    -moz-border-radius: 2px;
-    border-radius: 2px;
-}
-
-.button-container a:HOVER {
-    background: #fcfcfc;
-}
-
-.button-container a:ACTIVE {
-    border-top-color: #c2ccd1;
-    box-shadow:inset 0 5px 4px -4px rgba(49, 49, 64, 0.1);
-}
-
-.edui-charts-not-data {
-    height: 100px;
-    line-height: 100px;
-    text-align: center;
-}

+ 0 - 89
static/UEditor/dialogs/charts/charts.html

@@ -1,89 +0,0 @@
-<!DOCTYPE html>
-<html>
-    <head>
-        <title>chart</title>
-        <meta chartset="utf-8">
-        <link rel="stylesheet" type="text/css" href="charts.css">
-        <script type="text/javascript" src="../internal.js"></script>
-    </head>
-    <body>
-        <div class="main">
-            <div class="table-view">
-                <h3><var id="lang_data_source"></var></h3>
-                <div id="tableContainer" class="table-container"></div>
-                <h3><var id="lang_chart_format"></var></h3>
-                <form name="data-form">
-                    <div class="charts-format">
-                        <fieldset>
-                            <legend><var id="lang_data_align"></var></legend>
-                            <div class="format-item-container">
-                                <label>
-                                    <input type="radio" class="format-ctrl not-pie-item" name="charts-format" value="1" checked="checked">
-                                    <var id="lang_chart_align_same"></var>
-                                </label>
-                                <label>
-                                    <input type="radio" class="format-ctrl not-pie-item" name="charts-format" value="-1">
-                                    <var id="lang_chart_align_reverse"></var>
-                                </label>
-                                <br>
-                            </div>
-                        </fieldset>
-                        <fieldset>
-                            <legend><var id="lang_chart_title"></var></legend>
-                            <div class="format-item-container">
-                                <label>
-                                    <var id="lang_chart_main_title"></var><input type="text" name="title" class="data-item">
-                                </label>
-                                <label>
-                                    <var id="lang_chart_sub_title"></var><input type="text" name="sub-title" class="data-item not-pie-item">
-                                </label>
-                                <label>
-                                    <var id="lang_chart_x_title"></var><input type="text" name="x-title" class="data-item not-pie-item">
-                                </label>
-                                <label>
-                                    <var id="lang_chart_y_title"></var><input type="text" name="y-title" class="data-item not-pie-item">
-                                </label>
-                            </div>
-                        </fieldset>
-                        <fieldset>
-                            <legend><var id="lang_chart_tip"></var></legend>
-                            <div class="format-item-container">
-                                <label>
-                                    <var id="lang_cahrt_tip_prefix"></var>
-                                    <input type="text" id="tipInput" name="tip" class="data-item" disabled="disabled">
-                                </label>
-                                <p><var id="lang_cahrt_tip_description"></var></p>
-                            </div>
-                        </fieldset>
-                        <fieldset>
-                            <legend><var id="lang_chart_data_unit"></var></legend>
-                            <div class="format-item-container">
-                                <label><var id="lang_chart_data_unit_title"></var><input type="text" name="unit" class="data-item"></label>
-                                <p><var id="lang_chart_data_unit_description"></var></p>
-                            </div>
-                        </fieldset>
-                    </div>
-                </form>
-            </div>
-            <div class="charts-view">
-                <div id="chartsContainer" class="charts-container"></div>
-                <div id="chartsType" class="charts-type">
-                    <h3><var id="lang_chart_type"></var></h3>
-                    <div class="scroll-view">
-                        <div class="scroll-container">
-                            <div id="scrollBed" class="scroll-bed"></div>
-                        </div>
-                        <div id="buttonContainer" class="button-container">
-                            <a href="#" data-title="prev"><var id="lang_prev_btn"></var></a>
-                            <a href="#" data-title="next"><var id="lang_next_btn"></var></a>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <script src="../../third-party/jquery-1.10.2.min.js"></script>
-        <script src="../../third-party/highcharts/highcharts.js"></script>
-        <script src="chart.config.js"></script>
-        <script src="charts.js"></script>
-    </body>
-</html>

+ 0 - 519
static/UEditor/dialogs/charts/charts.js

@@ -1,519 +0,0 @@
-/*
- * 图片转换对话框脚本
- **/
-
-var tableData = [],
-    //编辑器页面table
-    editorTable = null,
-    chartsConfig = window.typeConfig,
-    resizeTimer = null,
-    //初始默认图表类型
-    currentChartType = 0;
-
-window.onload = function () {
-
-    editorTable = domUtils.findParentByTagName( editor.selection.getRange().startContainer, 'table', true);
-
-    //未找到表格, 显示错误页面
-    if ( !editorTable ) {
-        document.body.innerHTML = "<div class='edui-charts-not-data'>未找到数据</div>";
-        return;
-    }
-
-    //初始化图表类型选择
-    initChartsTypeView();
-    renderTable( editorTable );
-    initEvent();
-    initUserConfig( editorTable.getAttribute( "data-chart" ) );
-    $( "#scrollBed .view-box:eq("+ currentChartType +")" ).trigger( "click" );
-    updateViewType( currentChartType );
-
-    dialog.addListener( "resize", function () {
-
-        if ( resizeTimer != null ) {
-            window.clearTimeout( resizeTimer );
-        }
-
-        resizeTimer = window.setTimeout( function () {
-
-            resizeTimer = null;
-
-            renderCharts();
-
-        }, 500 );
-
-    } );
-
-};
-
-function initChartsTypeView () {
-
-    var contents = [];
-
-    for ( var i = 0, len = chartsConfig.length; i<len; i++ ) {
-
-        contents.push( '<div class="view-box" data-chart-type="'+ i +'"><img width="300" src="images/charts'+ i +'.png"></div>' );
-
-    }
-
-    $( "#scrollBed" ).html( contents.join( "" ) );
-
-}
-
-//渲染table, 以便用户修改数据
-function renderTable ( table ) {
-
-    var tableHtml = [];
-
-    //构造数据
-    for ( var i = 0, row; row = table.rows[ i ]; i++ ) {
-
-        tableData[ i ] = [];
-        tableHtml[ i ] = [];
-
-        for ( var j = 0, cell; cell = row.cells[ j ]; j++ ) {
-
-            var value = getCellValue( cell );
-
-            if ( i > 0 && j > 0 ) {
-                value = +value;
-            }
-
-            if ( i === 0 || j === 0 ) {
-                tableHtml[ i ].push( '<th>'+ value +'</th>' );
-            } else {
-                tableHtml[ i ].push( '<td><input type="text" class="data-item" value="'+ value +'"></td>' );
-            }
-
-            tableData[ i ][ j ] = value;
-
-        }
-
-        tableHtml[ i ] = tableHtml[ i ].join( "" );
-
-    }
-
-    //draw 表格
-    $( "#tableContainer" ).html( '<table id="showTable" border="1"><tbody><tr>'+ tableHtml.join( "</tr><tr>" ) +'</tr></tbody></table>' );
-
-}
-
-/*
- * 根据表格已有的图表属性初始化当前图表属性
- */
-function initUserConfig ( config ) {
-
-    var parsedConfig = {};
-
-    if ( !config ) {
-        return;
-    }
-
-    config = config.split( ";" );
-
-    $.each( config, function ( index, item ) {
-
-        item = item.split( ":" );
-        parsedConfig[ item[ 0 ] ] = item[ 1 ];
-
-    } );
-
-    setUserConfig( parsedConfig );
-
-}
-
-function initEvent () {
-
-    var cacheValue = null,
-        //图表类型数
-        typeViewCount = chartsConfig.length- 1,
-        $chartsTypeViewBox = $( '#scrollBed .view-box' );
-
-    $( ".charts-format" ).delegate( ".format-ctrl", "change", function () {
-
-        renderCharts();
-
-    } )
-
-    $( ".table-view" ).delegate( ".data-item", "focus", function () {
-
-        cacheValue = this.value;
-
-    } ).delegate( ".data-item", "blur", function () {
-
-        if ( this.value !== cacheValue ) {
-            renderCharts();
-        }
-
-        cacheValue = null;
-
-    } );
-
-    $( "#buttonContainer" ).delegate( "a", "click", function (e) {
-
-        e.preventDefault();
-
-        if ( this.getAttribute( "data-title" ) === 'prev' ) {
-
-            if ( currentChartType > 0 ) {
-                currentChartType--;
-                updateViewType( currentChartType );
-            }
-
-        } else {
-
-            if ( currentChartType < typeViewCount ) {
-                currentChartType++;
-                updateViewType( currentChartType );
-            }
-
-        }
-
-    } );
-
-    //图表类型变化
-    $( '#scrollBed' ).delegate( ".view-box", "click", function (e) {
-
-        var index = $( this ).attr( "data-chart-type" );
-        $chartsTypeViewBox.removeClass( "selected" );
-        $( $chartsTypeViewBox[ index ] ).addClass( "selected" );
-
-        currentChartType = index | 0;
-
-        //饼图, 禁用部分配置
-        if ( currentChartType === chartsConfig.length - 1 ) {
-
-            disableNotPieConfig();
-
-        //启用完整配置
-        } else {
-
-            enableNotPieConfig();
-
-        }
-
-        renderCharts();
-
-    } );
-
-}
-
-function renderCharts () {
-
-    var data = collectData();
-
-    $('#chartsContainer').highcharts( $.extend( {}, chartsConfig[ currentChartType ], {
-
-        credits: {
-            enabled: false
-        },
-        exporting: {
-            enabled: false
-        },
-        title: {
-            text: data.title,
-            x: -20 //center
-        },
-        subtitle: {
-            text: data.subTitle,
-            x: -20
-        },
-        xAxis: {
-            title: {
-                text: data.xTitle
-            },
-            categories: data.categories
-        },
-        yAxis: {
-            title: {
-                text: data.yTitle
-            },
-            plotLines: [{
-                value: 0,
-                width: 1,
-                color: '#808080'
-            }]
-        },
-        tooltip: {
-            enabled: true,
-            valueSuffix: data.suffix
-        },
-        legend: {
-            layout: 'vertical',
-            align: 'right',
-            verticalAlign: 'middle',
-            borderWidth: 1
-        },
-        series: data.series
-
-    } ));
-
-}
-
-function updateViewType ( index ) {
-
-    $( "#scrollBed" ).css( 'marginLeft', -index*324+'px' );
-
-}
-
-function collectData () {
-
-    var form = document.forms[ 'data-form' ],
-        data = null;
-
-    if ( currentChartType !== chartsConfig.length - 1 ) {
-
-        data = getSeriesAndCategories();
-        $.extend( data, getUserConfig() );
-
-    //饼图数据格式
-    } else {
-        data = getSeriesForPieChart();
-        data.title = form[ 'title' ].value;
-        data.suffix = form[ 'unit' ].value;
-    }
-
-    return data;
-
-}
-
-/**
- * 获取用户配置信息
- */
-function getUserConfig () {
-
-    var form = document.forms[ 'data-form' ],
-        info = {
-            title: form[ 'title' ].value,
-            subTitle: form[ 'sub-title' ].value,
-            xTitle: form[ 'x-title' ].value,
-            yTitle: form[ 'y-title' ].value,
-            suffix: form[ 'unit' ].value,
-            //数据对齐方式
-            tableDataFormat: getTableDataFormat (),
-            //饼图提示文字
-            tip: $( "#tipInput" ).val()
-        };
-
-    return info;
-
-}
-
-function setUserConfig ( config ) {
-
-    var form = document.forms[ 'data-form' ];
-
-    config.title && ( form[ 'title' ].value = config.title );
-    config.subTitle && ( form[ 'sub-title' ].value = config.subTitle );
-    config.xTitle && ( form[ 'x-title' ].value = config.xTitle );
-    config.yTitle && ( form[ 'y-title' ].value = config.yTitle );
-    config.suffix && ( form[ 'unit' ].value = config.suffix );
-    config.dataFormat == "-1" && ( form[ 'charts-format' ][ 1 ].checked = true );
-    config.tip && ( form[ 'tip' ].value = config.tip );
-    currentChartType = config.chartType || 0;
-
-}
-
-function getSeriesAndCategories () {
-
-    var form = document.forms[ 'data-form' ],
-        series = [],
-        categories = [],
-        tmp = [],
-        tableData = getTableData();
-
-    //反转数据
-    if ( getTableDataFormat() === "-1" ) {
-
-        for ( var i = 0, len = tableData.length; i < len; i++ ) {
-
-            for ( var j = 0, jlen = tableData[ i ].length; j < jlen; j++ ) {
-
-                if ( !tmp[ j ] ) {
-                    tmp[ j ] = [];
-                }
-
-                tmp[ j ][ i ] = tableData[ i ][ j ];
-
-            }
-
-        }
-
-        tableData = tmp;
-
-    }
-
-    categories = tableData[0].slice( 1 );
-
-    for ( var i = 1, data; data = tableData[ i ]; i++ ) {
-
-        series.push( {
-            name: data[ 0 ],
-            data: data.slice( 1 )
-        } );
-
-    }
-
-    return {
-        series: series,
-        categories: categories
-    };
-
-}
-
-/*
- * 获取数据源数据对齐方式
- */
-function getTableDataFormat () {
-
-    var form = document.forms[ 'data-form' ],
-        items = form['charts-format'];
-
-    return items[ 0 ].checked ? items[ 0 ].value : items[ 1 ].value;
-
-}
-
-/*
- * 禁用非饼图类型的配置项
- */
-function disableNotPieConfig() {
-
-    updateConfigItem( 'disable' );
-
-}
-
-/*
- * 启用非饼图类型的配置项
- */
-function enableNotPieConfig() {
-
-    updateConfigItem( 'enable' );
-
-}
-
-function updateConfigItem ( value ) {
-
-    var table = $( "#showTable" )[ 0 ],
-        isDisable = value === 'disable' ? true : false;
-
-    //table中的input处理
-    for ( var i = 2 , row; row = table.rows[ i ]; i++ ) {
-
-        for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) {
-
-            $( "input", cell ).attr( "disabled", isDisable );
-
-        }
-
-    }
-
-    //其他项处理
-    $( "input.not-pie-item" ).attr( "disabled", isDisable );
-    $( "#tipInput" ).attr( "disabled", !isDisable )
-
-}
-
-/*
- * 获取饼图数据
- * 饼图的数据只取第一行的
- **/
-function getSeriesForPieChart () {
-
-    var series = {
-            type: 'pie',
-            name: $("#tipInput").val(),
-            data: []
-        },
-        tableData = getTableData();
-
-
-    for ( var j = 1, jlen = tableData[ 0 ].length; j < jlen; j++ ) {
-
-        var title = tableData[ 0 ][ j ],
-            val = tableData[ 1 ][ j ];
-
-        series.data.push( [ title, val ] );
-
-    }
-
-    return {
-        series: [ series ]
-    };
-
-}
-
-function getTableData () {
-
-    var table = document.getElementById( "showTable" ),
-        xCount = table.rows[0].cells.length - 1,
-        values = getTableInputValue();
-
-    for ( var i = 0, value; value = values[ i ]; i++ ) {
-
-        tableData[ Math.floor( i / xCount ) + 1 ][ i % xCount + 1 ] = values[ i ];
-
-    }
-
-    return tableData;
-
-}
-
-function getTableInputValue () {
-
-    var table = document.getElementById( "showTable" ),
-        inputs = table.getElementsByTagName( "input" ),
-        values = [];
-
-    for ( var i = 0, input; input = inputs[ i ]; i++ ) {
-        values.push( input.value | 0 );
-    }
-
-    return values;
-
-}
-
-function getCellValue ( cell ) {
-
-    var value = utils.trim( ( cell.innerText || cell.textContent || '' ) );
-
-    return value.replace( new RegExp( UE.dom.domUtils.fillChar, 'g' ), '' ).replace( /^\s+|\s+$/g, '' );
-
-}
-
-
-//dialog确认事件
-dialog.onok = function () {
-
-    //收集信息
-    var form = document.forms[ 'data-form' ],
-        info = getUserConfig();
-
-    //添加图表类型
-    info.chartType = currentChartType;
-
-    //同步表格数据到编辑器
-    syncTableData();
-
-    //执行图表命令
-    editor.execCommand( 'charts', info );
-
-};
-
-/*
- * 同步图表编辑视图的表格数据到编辑器里的原始表格
- */
-function syncTableData () {
-
-    var tableData = getTableData();
-
-    for ( var i = 1, row; row = editorTable.rows[ i ]; i++ ) {
-
-        for ( var j = 1, cell; cell = row.cells[ j ]; j++ ) {
-
-            cell.innerHTML = tableData[ i ] [ j ];
-
-        }
-
-    }
-
-}

BIN
static/UEditor/dialogs/charts/images/charts0.png


BIN
static/UEditor/dialogs/charts/images/charts1.png


BIN
static/UEditor/dialogs/charts/images/charts2.png


BIN
static/UEditor/dialogs/charts/images/charts3.png


BIN
static/UEditor/dialogs/charts/images/charts4.png


BIN
static/UEditor/dialogs/charts/images/charts5.png


+ 0 - 43
static/UEditor/dialogs/emotion/emotion.css

@@ -1,43 +0,0 @@
-.jd img{
-    background:transparent url(images/jxface2.gif?v=1.1) no-repeat scroll left top;
-    cursor:pointer;width:35px;height:35px;display:block;
-}
-.pp img{
-    background:transparent url(images/fface.gif?v=1.1) no-repeat scroll left top;
-    cursor:pointer;width:25px;height:25px;display:block;
-}
-.ldw img{
-    background:transparent url(images/wface.gif?v=1.1) no-repeat scroll left top;
-    cursor:pointer;width:35px;height:35px;display:block;
-}
-.tsj img{
-    background:transparent url(images/tface.gif?v=1.1) no-repeat scroll left top;
-    cursor:pointer;width:35px;height:35px;display:block;
-}
-.cat img{
-    background:transparent url(images/cface.gif?v=1.1) no-repeat scroll left top;
-    cursor:pointer;width:35px;height:35px;display:block;
-}
-.bb img{
-    background:transparent url(images/bface.gif?v=1.1) no-repeat scroll left top;
-    cursor:pointer;width:35px;height:35px;display:block;
-}
-.youa img{
-    background:transparent url(images/yface.gif?v=1.1) no-repeat scroll left top;
-    cursor:pointer;width:35px;height:35px;display:block;
-}
-
-.smileytable td {height: 37px;}
-#tabPanel{margin-left:5px;overflow: hidden;}
-#tabContent {float:left;background:#FFFFFF;}
-#tabContent div{display: none;width:480px;overflow:hidden;}
-#tabIconReview.show{left:17px;display:block;}
-.menuFocus{background:#ACCD3C;}
-.menuDefault{background:#FFFFFF;}
-#tabIconReview{position:absolute;left:406px;left:398px \9;top:41px;z-index:65533;width:90px;height:76px;}
-img.review{width:90px;height:76px;border:2px solid #9cb945;background:#FFFFFF;background-position:center;background-repeat:no-repeat;}
-
-.wrapper .tabbody{position:relative;float:left;clear:both;padding:10px;width: 95%;}
-.tabbody table{width: 100%;}
-.tabbody td{border:1px solid #BAC498;}
-.tabbody td span{display: block;zoom:1;padding:0 4px;}

+ 0 - 54
static/UEditor/dialogs/emotion/emotion.html

@@ -1,54 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-    <title></title>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-    <meta name="robots" content="noindex, nofollow"/>
-    <script type="text/javascript" src="../internal.js"></script>
-    <link rel="stylesheet" type="text/css" href="emotion.css">
-</head>
-<body>
-<div id="tabPanel" class="wrapper">
-    <div id="tabHeads" class="tabhead">
-        <span><var id="lang_input_choice"></var></span>
-        <span><var id="lang_input_Tuzki"></var></span>
-        <span><var id="lang_input_lvdouwa"></var></span>
-        <span><var id="lang_input_BOBO"></var></span>
-        <span><var id="lang_input_babyCat"></var></span>
-        <span><var id="lang_input_bubble"></var></span>
-        <span><var id="lang_input_youa"></var></span>
-    </div>
-    <div id="tabBodys" class="tabbody">
-        <div id="tab0"></div>
-        <div id="tab1"></div>
-        <div id="tab2"></div>
-        <div id="tab3"></div>
-        <div id="tab4"></div>
-        <div id="tab5"></div>
-        <div id="tab6"></div>
-    </div>
-</div>
-<div id="tabIconReview">
-    <img id='faceReview' class='review' src="../../themes/default/images/spacer.gif"/>
-</div>
-<script type="text/javascript" src="emotion.js"></script>
-<script type="text/javascript">
-    var emotion = {
-        tabNum:7, //切换面板数量
-        SmilmgName:{ tab0:['j_00', 84], tab1:['t_00', 40], tab2:['w_00', 52], tab3:['B_00', 63], tab4:['C_00', 20], tab5:['i_f', 50], tab6:['y_00', 40] }, //图片前缀名
-        imageFolders:{ tab0:'jx2/', tab1:'tsj/', tab2:'ldw/', tab3:'bobo/', tab4:'babycat/', tab5:'face/', tab6:'youa/'}, //图片对应文件夹路径
-        imageCss:{tab0:'jd', tab1:'tsj', tab2:'ldw', tab3:'bb', tab4:'cat', tab5:'pp', tab6:'youa'}, //图片css类名
-        imageCssOffset:{tab0:35, tab1:35, tab2:35, tab3:35, tab4:35, tab5:25, tab6:35}, //图片偏移
-        SmileyInfor:{
-            tab0:['Kiss', 'Love', 'Yeah', '啊!', '背扭', '顶', '抖胸', '88', '汗', '瞌睡', '鲁拉', '拍砖', '揉脸', '生日快乐', '大笑', '瀑布汗~', '惊讶', '臭美', '傻笑', '抛媚眼', '发怒', '打酱油', '俯卧撑', '气愤', '?', '吻', '怒', '胜利', 'HI', 'KISS', '不说', '不要', '扯花', '大心', '顶', '大惊', '飞吻', '鬼脸', '害羞', '口水', '狂哭', '来', '发财了', '吃西瓜', '套牢', '害羞', '庆祝', '我来了', '敲打', '晕了', '胜利', '臭美', '被打了', '贪吃', '迎接', '酷', '微笑', '亲吻', '调皮', '惊恐', '耍酷', '发火', '害羞', '汗水', '大哭', '', '加油', '困', '你NB', '晕倒', '开心', '偷笑', '大哭', '滴汗', '叹气', '超赞', '??', '飞吻', '天使', '撒花', '生气', '被砸', '吓傻', '随意吐'],
-            tab1:['Kiss', 'Love', 'Yeah', '啊!', '背扭', '顶', '抖胸', '88', '汗', '瞌睡', '鲁拉', '拍砖', '揉脸', '生日快乐', '摊手', '睡觉', '瘫坐', '无聊', '星星闪', '旋转', '也不行', '郁闷', '正Music', '抓墙', '撞墙至死', '歪头', '戳眼', '飘过', '互相拍砖', '砍死你', '扔桌子', '少林寺', '什么?', '转头', '我爱牛奶', '我踢', '摇晃', '晕厥', '在笼子里', '震荡'],
-            tab2:['大笑', '瀑布汗~', '惊讶', '臭美', '傻笑', '抛媚眼', '发怒', '我错了', 'money', '气愤', '挑逗', '吻', '怒', '胜利', '委屈', '受伤', '说啥呢?', '闭嘴', '不', '逗你玩儿', '飞吻', '眩晕', '魔法', '我来了', '睡了', '我打', '闭嘴', '打', '打晕了', '刷牙', '爆揍', '炸弹', '倒立', '刮胡子', '邪恶的笑', '不要不要', '爱恋中', '放大仔细看', '偷窥', '超高兴', '晕', '松口气', '我跑', '享受', '修养', '哭', '汗', '啊~', '热烈欢迎', '打酱油', '俯卧撑', '?'],
-            tab3:['HI', 'KISS', '不说', '不要', '扯花', '大心', '顶', '大惊', '飞吻', '鬼脸', '害羞', '口水', '狂哭', '来', '泪眼', '流泪', '生气', '吐舌', '喜欢', '旋转', '再见', '抓狂', '汗', '鄙视', '拜', '吐血', '嘘', '打人', '蹦跳', '变脸', '扯肉', '吃To', '吃花', '吹泡泡糖', '大变身', '飞天舞', '回眸', '可怜', '猛抽', '泡泡', '苹果', '亲', '', '骚舞', '烧香', '睡', '套娃娃', '捅捅', '舞倒', '西红柿', '爱慕', '摇', '摇摆', '杂耍', '招财', '被殴', '被球闷', '大惊', '理想', '欧打', '呕吐', '碎', '吐痰'],
-            tab4:['发财了', '吃西瓜', '套牢', '害羞', '庆祝', '我来了', '敲打', '晕了', '胜利', '臭美', '被打了', '贪吃', '迎接', '酷', '顶', '幸运', '爱心', '躲', '送花', '选择'],
-            tab5:['微笑', '亲吻', '调皮', '惊讶', '耍酷', '发火', '害羞', '汗水', '大哭', '得意', '鄙视', '困', '夸奖', '晕倒', '疑问', '媒婆', '狂吐', '青蛙', '发愁', '亲吻', '', '爱心', '心碎', '玫瑰', '礼物', '哭', '奸笑', '可爱', '得意', '呲牙', '暴汗', '楚楚可怜', '困', '哭', '生气', '惊讶', '口水', '彩虹', '夜空', '太阳', '钱钱', '灯泡', '咖啡', '蛋糕', '音乐', '爱', '胜利', '赞', '鄙视', 'OK'],
-            tab6:['男兜', '女兜', '开心', '乖乖', '偷笑', '大笑', '抽泣', '大哭', '无奈', '滴汗', '叹气', '狂晕', '委屈', '超赞', '??', '疑问', '飞吻', '天使', '撒花', '生气', '被砸', '口水', '泪奔', '吓傻', '吐舌头', '点头', '随意吐', '旋转', '困困', '鄙视', '狂顶', '篮球', '再见', '欢迎光临', '恭喜发财', '稍等', '我在线', '恕不议价', '库房有货', '货在路上']
-        }
-    };
-</script>
-</body>
-</html>

+ 0 - 186
static/UEditor/dialogs/emotion/emotion.js

@@ -1,186 +0,0 @@
-window.onload = function () {
-    editor.setOpt({
-        emotionLocalization:false
-    });
-
-    emotion.SmileyPath = editor.options.emotionLocalization === true ? 'images/' : "http://img.baidu.com/hi/";
-    emotion.SmileyBox = createTabList( emotion.tabNum );
-    emotion.tabExist = createArr( emotion.tabNum );
-
-    initImgName();
-    initEvtHandler( "tabHeads" );
-};
-
-function initImgName() {
-    for ( var pro in emotion.SmilmgName ) {
-        var tempName = emotion.SmilmgName[pro],
-                tempBox = emotion.SmileyBox[pro],
-                tempStr = "";
-
-        if ( tempBox.length ) return;
-        for ( var i = 1; i <= tempName[1]; i++ ) {
-            tempStr = tempName[0];
-            if ( i < 10 ) tempStr = tempStr + '0';
-            tempStr = tempStr + i + '.gif';
-            tempBox.push( tempStr );
-        }
-    }
-}
-
-function initEvtHandler( conId ) {
-    var tabHeads = $G( conId );
-    for ( var i = 0, j = 0; i < tabHeads.childNodes.length; i++ ) {
-        var tabObj = tabHeads.childNodes[i];
-        if ( tabObj.nodeType == 1 ) {
-            domUtils.on( tabObj, "click", (function ( index ) {
-                return function () {
-                    switchTab( index );
-                };
-            })( j ) );
-            j++;
-        }
-    }
-    switchTab( 0 );
-    $G( "tabIconReview" ).style.display = 'none';
-}
-
-function InsertSmiley( url, evt ) {
-    var obj = {
-        src:editor.options.emotionLocalization ? editor.options.UEDITOR_HOME_URL + "dialogs/emotion/" + url : url
-    };
-    obj._src = obj.src;
-    editor.execCommand( 'insertimage', obj );
-    if ( !evt.ctrlKey ) {
-        dialog.popup.hide();
-    }
-}
-
-function switchTab( index ) {
-
-    autoHeight( index );
-    if ( emotion.tabExist[index] == 0 ) {
-        emotion.tabExist[index] = 1;
-        createTab( 'tab' + index );
-    }
-    //获取呈现元素句柄数组
-    var tabHeads = $G( "tabHeads" ).getElementsByTagName( "span" ),
-            tabBodys = $G( "tabBodys" ).getElementsByTagName( "div" ),
-            i = 0, L = tabHeads.length;
-    //隐藏所有呈现元素
-    for ( ; i < L; i++ ) {
-        tabHeads[i].className = "";
-        tabBodys[i].style.display = "none";
-    }
-    //显示对应呈现元素
-    tabHeads[index].className = "focus";
-    tabBodys[index].style.display = "block";
-}
-
-function autoHeight( index ) {
-    var iframe = dialog.getDom( "iframe" ),
-            parent = iframe.parentNode.parentNode;
-    switch ( index ) {
-        case 0:
-            iframe.style.height = "380px";
-            parent.style.height = "392px";
-            break;
-        case 1:
-            iframe.style.height = "220px";
-            parent.style.height = "232px";
-            break;
-        case 2:
-            iframe.style.height = "260px";
-            parent.style.height = "272px";
-            break;
-        case 3:
-            iframe.style.height = "300px";
-            parent.style.height = "312px";
-            break;
-        case 4:
-            iframe.style.height = "140px";
-            parent.style.height = "152px";
-            break;
-        case 5:
-            iframe.style.height = "260px";
-            parent.style.height = "272px";
-            break;
-        case 6:
-            iframe.style.height = "230px";
-            parent.style.height = "242px";
-            break;
-        default:
-
-    }
-}
-
-
-function createTab( tabName ) {
-    var faceVersion = "?v=1.1", //版本号
-            tab = $G( tabName ), //获取将要生成的Div句柄
-            imagePath = emotion.SmileyPath + emotion.imageFolders[tabName], //获取显示表情和预览表情的路径
-            positionLine = 11 / 2, //中间数
-            iWidth = iHeight = 35, //图片长宽
-            iColWidth = 3, //表格剩余空间的显示比例
-            tableCss = emotion.imageCss[tabName],
-            cssOffset = emotion.imageCssOffset[tabName],
-            textHTML = ['<table class="smileytable">'],
-            i = 0, imgNum = emotion.SmileyBox[tabName].length, imgColNum = 11, faceImage,
-            sUrl, realUrl, posflag, offset, infor;
-
-    for ( ; i < imgNum; ) {
-        textHTML.push( '<tr>' );
-        for ( var j = 0; j < imgColNum; j++, i++ ) {
-            faceImage = emotion.SmileyBox[tabName][i];
-            if ( faceImage ) {
-                sUrl = imagePath + faceImage + faceVersion;
-                realUrl = imagePath + faceImage;
-                posflag = j < positionLine ? 0 : 1;
-                offset = cssOffset * i * (-1) - 1;
-                infor = emotion.SmileyInfor[tabName][i];
-
-                textHTML.push( '<td  class="' + tableCss + '"   border="1" width="' + iColWidth + '%" style="border-collapse:collapse;" align="center"  bgcolor="transparent" onclick="InsertSmiley(\'' + realUrl.replace( /'/g, "\\'" ) + '\',event)" onmouseover="over(this,\'' + sUrl + '\',\'' + posflag + '\')" onmouseout="out(this)">' );
-                textHTML.push( '<span>' );
-                textHTML.push( '<img  style="background-position:left ' + offset + 'px;" title="' + infor + '" src="' + emotion.SmileyPath + (editor.options.emotionLocalization ? '0.gif" width="' : 'default/0.gif" width="') + iWidth + '" height="' + iHeight + '"></img>' );
-                textHTML.push( '</span>' );
-            } else {
-                textHTML.push( '<td width="' + iColWidth + '%"   bgcolor="#FFFFFF">' );
-            }
-            textHTML.push( '</td>' );
-        }
-        textHTML.push( '</tr>' );
-    }
-    textHTML.push( '</table>' );
-    textHTML = textHTML.join( "" );
-    tab.innerHTML = textHTML;
-}
-
-function over( td, srcPath, posFlag ) {
-    td.style.backgroundColor = "#ACCD3C";
-    $G( 'faceReview' ).style.backgroundImage = "url(" + srcPath + ")";
-    if ( posFlag == 1 ) $G( "tabIconReview" ).className = "show";
-    $G( "tabIconReview" ).style.display = 'block';
-}
-
-function out( td ) {
-    td.style.backgroundColor = "transparent";
-    var tabIconRevew = $G( "tabIconReview" );
-    tabIconRevew.className = "";
-    tabIconRevew.style.display = 'none';
-}
-
-function createTabList( tabNum ) {
-    var obj = {};
-    for ( var i = 0; i < tabNum; i++ ) {
-        obj["tab" + i] = [];
-    }
-    return obj;
-}
-
-function createArr( tabNum ) {
-    var arr = [];
-    for ( var i = 0; i < tabNum; i++ ) {
-        arr[i] = 0;
-    }
-    return arr;
-}
-

BIN
static/UEditor/dialogs/emotion/images/0.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0001.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0002.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0003.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0004.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0005.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0006.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0007.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0008.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0009.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0010.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0011.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0012.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0013.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0014.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0015.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0016.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0017.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0018.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0019.gif


BIN
static/UEditor/dialogs/emotion/images/babycat/C_0020.gif


BIN
static/UEditor/dialogs/emotion/images/bface.gif


BIN
static/UEditor/dialogs/emotion/images/bobo/b_0001.gif


BIN
static/UEditor/dialogs/emotion/images/bobo/b_0002.gif


BIN
static/UEditor/dialogs/emotion/images/bobo/b_0003.gif


BIN
static/UEditor/dialogs/emotion/images/bobo/b_0004.gif


BIN
static/UEditor/dialogs/emotion/images/bobo/b_0005.gif


BIN
static/UEditor/dialogs/emotion/images/bobo/b_0006.gif


BIN
static/UEditor/dialogs/emotion/images/bobo/b_0007.gif


BIN
static/UEditor/dialogs/emotion/images/bobo/b_0008.gif


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно