26 文件已重命名
84个文件已添加
18个文件已修改
| | |
| | | "file-saver": "2.0.5", |
| | | "fuse.js": "6.4.3", |
| | | "highlight.js": "9.18.5", |
| | | "jquery": "^3.6.4", |
| | | "js-beautify": "1.13.0", |
| | | "js-cookie": "3.0.1", |
| | | "jsencrypt": "3.0.0-rc.1", |
| | |
| | | "quill": "1.3.7", |
| | | "screenfull": "5.0.2", |
| | | "sortablejs": "1.10.2", |
| | | "stylus": "^0.59.0", |
| | | "stylus-loader": "^7.1.0", |
| | | "viewerjs": "^1.11.3", |
| | | "vue": "2.6.12", |
| | | "vue-count-to": "1.0.13", |
| | | "vue-cropper": "0.5.5", |
New file |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-08-10 09:02 |
| | | * @Description : 腾讯地图引入 |
| | | * @libraries 需要用的库,逗号,分割 |
| | | */ |
| | | export function tMap(libraries) { |
| | | return new Promise(function(resolve, reject) { |
| | | window.init = function() { |
| | | resolve(qq)// 注意这里 |
| | | } |
| | | const script = document.createElement('script') |
| | | script.type = 'text/javascript' |
| | | script.src = 'http://map.qq.com/api/js?v=2.exp&callback=init&key=Z4RBZ-RP5K4-VBYUT-D5DYM-DWG23-OPBJJ&libraries=' + libraries |
| | | script.onerror = reject |
| | | document.head.appendChild(script) |
| | | }) |
| | | } |
| | | |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-08-10 09:03 |
| | | * @Description : 地址查询 |
| | | */ |
| | | export function getAddress() { |
| | | return request({ |
| | | url: '/static/json/address.json', |
| | | method: 'get' |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * @Author wh |
| | | * @Date 2022/7/13 15:23 |
| | | * @Description // 获取上次登录信息 |
| | | **/ |
| | | export function getLastLogin(param) { |
| | | return request.get(globalConf.baseUrl + '/v1/base/pc/sys/login/log/getLastLogin', { params: param }) |
| | | } |
| | | /** |
| | | * 待办事项 |
| | | * @param param |
| | | */ |
| | | export function getMyWaitList(param) { |
| | | return request({ |
| | | url: globalConf.baseUrl + '/v1/base/pc/sys/menu/getMyWaitList', |
| | | method: 'get', |
| | | params: param |
| | | }) |
| | | } |
New file |
| | |
| | | import request from '@/utils/request' |
| | | |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-25 11:42 |
| | | * @Description :获取验证码 |
| | | */ |
| | | export function getVerify(param) { |
| | | return request({ |
| | | // url: globalConf.baseUrl + '/v1/base/web/getVerify', |
| | | url: globalConf.baseUrl + '/captcha/jigsaw', |
| | | method: 'get', |
| | | params: param |
| | | }) |
| | | } |
| | | |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-25 11:42 |
| | | * @Description :校验验证码 |
| | | */ |
| | | export function checkVerify(param) { |
| | | return request({ |
| | | url: globalConf.baseUrl + '/captcha/jigsaw_validate', |
| | | method: 'post', |
| | | params: param |
| | | }) |
| | | } |
| | |
| | | import Vue from 'vue' |
| | | import SvgIcon from '@/components/SvgIcon'// svg component |
| | | import SvgIcon from '@/components/RuoYi/SvgIcon'// svg component |
| | | |
| | | // register globally |
| | | Vue.component('svg-icon', SvgIcon) |
New file |
| | |
| | | <template> |
| | | <transition :name="transitionName"> |
| | | <div v-show="visible" :style="customStyle" class="back-to-ceiling" @click="backToTop"> |
| | | <svg width="16" height="16" viewBox="0 0 17 17" xmlns="http://www.w3.org/2000/svg" class="Icon Icon--backToTopArrow" aria-hidden="true" style="height: 16px; width: 16px;"> |
| | | <title>回到顶部</title> |
| | | <g> |
| | | <path d="M12.036 15.59c0 .55-.453.995-.997.995H5.032c-.55 0-.997-.445-.997-.996V8.584H1.03c-1.1 0-1.36-.633-.578-1.416L7.33.29c.39-.39 1.026-.385 1.412 0l6.878 6.88c.782.78.523 1.415-.58 1.415h-3.004v7.004z" fill-rule="evenodd" /> |
| | | </g> |
| | | </svg> |
| | | </div> |
| | | </transition> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'BackToTop', |
| | | props: { |
| | | visibilityHeight: { |
| | | type: Number, |
| | | default: 400 |
| | | }, |
| | | backPosition: { |
| | | type: Number, |
| | | default: 0 |
| | | }, |
| | | customStyle: { |
| | | type: Object, |
| | | default: function() { |
| | | return { |
| | | right: '50px', |
| | | bottom: '50px', |
| | | width: '40px', |
| | | height: '40px', |
| | | 'border-radius': '4px', |
| | | 'line-height': '45px', |
| | | background: '#e7eaf1' |
| | | } |
| | | } |
| | | }, |
| | | transitionName: { |
| | | type: String, |
| | | default: 'fade' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | visible: false, |
| | | interval: null, |
| | | isMoving: false |
| | | } |
| | | }, |
| | | mounted() { |
| | | window.addEventListener('scroll', this.handleScroll) |
| | | }, |
| | | beforeDestroy() { |
| | | window.removeEventListener('scroll', this.handleScroll) |
| | | if (this.interval) { |
| | | clearInterval(ths.interval) |
| | | }i |
| | | }, |
| | | methods: { |
| | | handleScroll() { |
| | | this.visible = window.pageYOffset > this.visibilityHeight |
| | | }, |
| | | backToTop() { |
| | | if (this.isMoving) return |
| | | const start = window.pageYOffset |
| | | let i = 0 |
| | | this.isMoving = true |
| | | this.interval = setInterval(() => { |
| | | const next = Math.floor(this.easeInOutQuad(10 * i, start, -start, 500)) |
| | | if (next <= this.backPosition) { |
| | | window.scrollTo(0, this.backPosition) |
| | | clearInterval(this.interval) |
| | | this.isMoving = false |
| | | } else { |
| | | window.scrollTo(0, next) |
| | | } |
| | | i++ |
| | | }, 16.7) |
| | | }, |
| | | easeInOutQuad(t, b, c, d) { |
| | | if ((t /= d / 2) < 1) return c / 2 * t * t + b |
| | | return -c / 2 * (--t * (t - 2) - 1) + b |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .back-to-ceiling { |
| | | position: fixed; |
| | | display: inline-block; |
| | | text-align: center; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .back-to-ceiling:hover { |
| | | background: #d5dbe7; |
| | | } |
| | | |
| | | .fade-enter-active, |
| | | .fade-leave-active { |
| | | transition: opacity .5s; |
| | | } |
| | | |
| | | .fade-enter, |
| | | .fade-leave-to { |
| | | opacity: 0 |
| | | } |
| | | |
| | | .back-to-ceiling .Icon { |
| | | fill: #9aaabf; |
| | | background: none; |
| | | } |
| | | </style> |
| | |
| | | <template> |
| | | <el-breadcrumb class="app-breadcrumb" separator="/"> |
| | | <transition-group name="breadcrumb"> |
| | | <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path"> |
| | | <span v-if="item.redirect === 'noRedirect' || index == levelList.length - 1" class="no-redirect">{{ item.meta.title }}</span> |
| | | <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a> |
| | | </el-breadcrumb-item> |
| | | </transition-group> |
| | | </el-breadcrumb> |
| | | <div> |
| | | <span class="title">{{ title }}</span> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { title } from '@/settings' |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | levelList: null |
| | | } |
| | | }, |
| | | watch: { |
| | | $route(route) { |
| | | // if you go to the redirect page, do not update the breadcrumbs |
| | | if (route.path.startsWith('/redirect/')) { |
| | | return |
| | | } |
| | | this.getBreadcrumb() |
| | | title: title |
| | | } |
| | | }, |
| | | created() { |
| | | this.getBreadcrumb() |
| | | }, |
| | | methods: { |
| | | getBreadcrumb() { |
| | | // only show routes with meta.title |
| | | let matched = this.$route.matched.filter(item => item.meta && item.meta.title) |
| | | const first = matched[0] |
| | | |
| | | if (!this.isDashboard(first)) { |
| | | matched = [{ path: '/index', meta: { title: '首页' }}].concat(matched) |
| | | } |
| | | |
| | | this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false) |
| | | }, |
| | | isDashboard(route) { |
| | | const name = route && route.name |
| | | if (!name) { |
| | | return false |
| | | } |
| | | return name.trim() === 'Index' |
| | | }, |
| | | handleLink(item) { |
| | | const { redirect, path } = item |
| | | if (redirect) { |
| | | this.$router.push(redirect) |
| | | return |
| | | } |
| | | this.$router.push(path) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .app-breadcrumb.el-breadcrumb { |
| | | display: inline-block; |
| | | font-size: 14px; |
| | | line-height: 50px; |
| | | margin-left: 8px; |
| | | |
| | | .no-redirect { |
| | | color: #97a8be; |
| | | cursor: text; |
| | | } |
| | | <style scoped> |
| | | .title { |
| | | line-height: 72px; |
| | | font-size: 24px; |
| | | color: #333; |
| | | font-weight: bold; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <el-tooltip effect="dark" content="退出" placement="bottom"> |
| | | <div class="quit" @click="logout()"> |
| | | <img class="icon" src="@/assets/images/quit.png" alt=""> |
| | | </div> |
| | | </el-tooltip> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | export default { |
| | | methods: { |
| | | logout() { |
| | | this.$confirm('确定退出?', '', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.$store.dispatch('user/logout').then(() => { |
| | | this.$router.push('/login') |
| | | }) |
| | | }).catch(() => { |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .quit{ |
| | | height: 70px; |
| | | display: flex; |
| | | align-items: center; |
| | | .icon{ |
| | | width: 25px; |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | <?xml version="1.0" standalone="no"?> |
| | | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > |
| | | <!-- |
| | | 2013-9-30: Created. |
| | | --> |
| | | <svg> |
| | | <metadata> |
| | | Created by iconfont |
| | | </metadata> |
| | | <defs> |
| | | |
| | | <font id="iconfont" horiz-adv-x="1024" > |
| | | <font-face |
| | | font-family="iconfont" |
| | | font-weight="500" |
| | | font-stretch="normal" |
| | | units-per-em="1024" |
| | | ascent="896" |
| | | descent="-128" |
| | | /> |
| | | <missing-glyph /> |
| | | |
| | | <glyph glyph-name="communityfill" unicode="" d="M704 163.2c51.2 0 96 41.6 96 96v412.8c0 51.2-41.6 96-96 96h-547.2c-51.2 0-96-41.6-96-96v-412.8c0-51.2 41.6-96 96-96h35.2v-160c0-12.8 9.6-25.6 22.4-32h9.6c9.6 0 19.2 3.2 25.6 12.8l131.2 179.2h323.2zM864 643.2c-19.2 0-32-12.8-32-32s16-32 32-32 32-12.8 32-32v-348.8c0-19.2-16-25.6-32-25.6h-32c-19.2 0-32-12.8-32-32v-3.2c0-3.2-3.2-6.4-3.2-9.6v-60.8l-73.6 57.6c-3.2 3.2-9.6 3.2-16 3.2h-163.2c-19.2 0-32-12.8-32-32s12.8-32 32-32h153.6l115.2-89.6c6.4-3.2 12.8-6.4 19.2-6.4 3.2 0 9.6 0 12.8 3.2 9.6 6.4 19.2 16 19.2 28.8v108.8c54.4 0 96 38.4 96 89.6v348.8c0 51.2-44.8 96-96 96z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="community" unicode="" d="M704 163.2c51.2 0 96 41.6 96 96v412.8c0 51.2-41.6 96-96 96h-547.2c-51.2 0-96-41.6-96-96v-412.8c0-51.2 41.6-96 96-96h35.2v-160c0-12.8 9.6-25.6 22.4-32h9.6c9.6 0 19.2 3.2 25.6 12.8l131.2 179.2h323.2zM233.6 224c-3.2 3.2-9.6 3.2-12.8 3.2h-64c-16 0-32 12.8-32 32v412.8c0 16 12.8 32 32 32h547.2c16 0 32-12.8 32-32v-412.8c0-16-12.8-32-32-32h-348.8c-3.2-3.2-3.2-3.2-6.4-3.2s-3.2-3.2-6.4-3.2l-3.2-3.2s-3.2 0-3.2-3.2l-80-115.2v92.8c0 16-9.6 25.6-22.4 32zM864 643.2c-19.2 0-32-12.8-32-32s16-32 32-32 32-12.8 32-32v-348.8c0-19.2-16-25.6-32-25.6h-32c-19.2 0-32-12.8-32-32v-3.2c0-3.2-3.2-6.4-3.2-9.6v-60.8l-73.6 57.6c-3.2 3.2-9.6 3.2-16 3.2h-163.2c-19.2 0-32-12.8-32-32s12.8-32 32-32h153.6l115.2-89.6c6.4-3.2 12.8-6.4 19.2-6.4 3.2 0 9.6 0 12.8 3.2 9.6 6.4 19.2 16 19.2 28.8v108.8c54.4 0 96 38.4 96 89.6v348.8c0 51.2-44.8 96-96 96z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="lingdang" unicode="󰇵" d="M593.862 95.418l-169.191 0c-9.444 0-18.438-3.932-24.695-10.902-6.314-6.971-9.441-16.324-8.548-25.676 2.86-29.192 16.324-56.239 38.01-76.018 21.773-20.017 50.161-31.038 79.89-31.038 29.696 0 58.085 11.022 79.83 30.978 21.715 19.84 35.178 46.886 38.068 76.256 0.596 9.474-2.535 18.707-8.639 25.499-6.286 6.971-15.28 10.902-24.724 10.902zM555.02 20.174c-25.082-22.877-66.605-22.818-91.567-0.06-7.596 6.971-13.404 15.429-17.158 24.723l125.823 0c-3.723-9.353-9.474-17.751-17.097-24.663zM818.609 235.657l-62.763 82.928 0 49.268 0 105.715c0 70.745-24.216 136.337-68.183 184.682-26.003 28.626-57.31 49.715-93.055 62.822-3.306 18.944-12.721 36.252-26.926 49.208-32.051 29.251-85.104 29.251-117.096 0-14.357-13.046-23.77-30.383-26.987-49.268-35.714-13.046-67.022-34.135-93.026-62.791-43.938-48.434-68.184-114.026-68.184-184.653l0.179-154.686-62.315-82.451c-8.757-9.353-13.582-21.507-13.582-34.256l0-40.332c0-27.644 22.461-50.043 50.043-50.043l544.812 0c27.611 0 50.011 22.4 50.011 50.043l0 40.332c-0.001 12.75-4.796 24.904-12.927 33.483zM535.776 734.118c-7.387 0.656-19.302 1.906-26.569 1.906-7.298 0-19.689-1.252-27.048-1.906 12.42 20.254 44.384 16.502 53.617 0zM237.427 161.844l-0.12 40.035 62.315 82.45c8.698 9.354 13.524 21.447 13.524 34.256l0 154.983c0 58.056 19.54 111.554 54.986 150.635 17.574 19.362 38.307 34.375 61.541 44.682 48.852 21.745 110.302 21.745 159.096 0 23.321-10.425 43.994-25.438 61.539-44.682 35.449-39.081 54.959-92.579 54.959-150.635l0-154.984c0-12.867 4.826-25.081 12.956-33.54l62.791-82.868 0.509-39.795-544.096-0.536z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="like" unicode="" d="M332.8 646.4c38.4 0 83.2-19.2 108.8-44.8L467.2 576 512 531.2 556.8 576l25.6 25.6c32 32 70.4 44.8 108.8 44.8 19.2 0 38.4-6.4 57.6-12.8 44.8-25.6 70.4-57.6 76.8-108.8 6.4-44.8-6.4-89.6-38.4-121.6L512 121.6 236.8 403.2C204.8 435.2 185.6 480 192 524.8c6.4 44.8 38.4 83.2 76.8 108.8C288 640 313.6 646.4 332.8 646.4L332.8 646.4M332.8 710.4C300.8 710.4 268.8 704 243.2 691.2 108.8 620.8 89.6 454.4 185.6 358.4l281.6-281.6C480 64 499.2 57.6 512 57.6s32 6.4 38.4 19.2l281.6 281.6c96 96 76.8 262.4-57.6 332.8-25.6 12.8-57.6 19.2-89.6 19.2-57.6 0-115.2-25.6-153.6-64L512 620.8 486.4 646.4C448 684.8 390.4 710.4 332.8 710.4L332.8 710.4z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="likefill" unicode="" d="M780.8 691.2c-83.2 44.8-179.2 19.2-243.2-44.8L512 620.8 486.4 646.4c-64 64-166.4 83.2-243.2 44.8C108.8 620.8 89.6 454.4 185.6 358.4l32-32 153.6-153.6 102.4-102.4c25.6-25.6 57.6-25.6 83.2 0l102.4 102.4 153.6 153.6 32 32C934.4 454.4 915.2 620.8 780.8 691.2z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="plane" unicode="" d="M704 32c-6.4 0-12.8 0-19.2 6.4l-153.6 102.4L454.4 64c-6.4-6.4-25.6-12.8-32-6.4-12.8 6.4-19.2 19.2-19.2 32l0 140.8c0 6.4 0 12.8 6.4 19.2L652.8 512c12.8 12.8 32 12.8 44.8 0 12.8-12.8 12.8-32 0-44.8l-236.8-256 0-51.2 44.8 38.4c12.8 12.8 25.6 12.8 38.4 6.4l140.8-89.6 108.8 531.2L256 384l121.6-76.8C390.4 300.8 396.8 275.2 384 262.4c-6.4-12.8-32-19.2-44.8-12.8L172.8 358.4C166.4 364.8 160 371.2 160 384c0 12.8 6.4 19.2 19.2 25.6l640 320c12.8 6.4 25.6 6.4 32 0 12.8-6.4 12.8-19.2 12.8-32l-128-640c0-12.8-6.4-19.2-19.2-25.6C710.4 32 710.4 32 704 32z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="planefill" unicode="" d="M851.2 729.6c-12.8 6.4-25.6 6.4-32 0l-640-320C166.4 409.6 160 396.8 160 384s6.4-25.6 12.8-25.6l153.6-96c12.8-6.4 25.6-6.4 38.4 6.4L704 576l12.8-6.4-307.2-326.4c-6.4-6.4-6.4-12.8-6.4-19.2l0-140.8c0-12.8 6.4-25.6 19.2-32 12.8-6.4 25.6 0 32 6.4l76.8 76.8 153.6-102.4c6.4-6.4 12.8-6.4 19.2-6.4 6.4 0 6.4 0 12.8 0 12.8 6.4 19.2 12.8 19.2 25.6l128 640C864 710.4 864 723.2 851.2 729.6z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="huiyuan" unicode="" d="M940.032-112.64l-855.04 0c-54.272 0-84.992 32.768-84.992 91.136 0 111.616 99.328 273.408 278.528 273.408 11.264 0 19.456-9.216 19.456-19.456s-9.216-19.456-19.456-19.456c-153.6 0-238.592-138.24-238.592-234.496 0-46.08 24.576-51.2 45.056-51.2l855.04 0c21.504 0 45.056 6.144 45.056 51.2 0 95.232-84.992 234.496-238.592 234.496-11.264 0-19.456 9.216-19.456 19.456s9.216 19.456 19.456 19.456C925.696 251.904 1025.024 90.112 1025.024-21.504 1025.024-78.848 994.304-112.64 940.032-112.64zM513.024 266.24c-153.6 0-279.552 137.216-279.552 307.2S359.424 880.64 513.024 880.64s279.552-137.216 279.552-307.2S666.624 266.24 513.024 266.24zM513.024 840.704c-132.096 0-239.616-119.808-239.616-267.264S380.928 306.176 513.024 306.176s239.616 119.808 239.616 267.264S645.12 840.704 513.024 840.704z" horiz-adv-x="1026" /> |
| | | |
| | | |
| | | <glyph glyph-name="biaoxingfill" unicode="" d="M957.258525 491.76684c-3.78431 11.352931-13.589115 19.609609-25.458088 21.501764l-270.406182 41.799429L540.640349 813.605241c-5.332437 11.180917-16.513355 18.40551-28.898371 18.40551 0 0 0 0 0 0-12.385016 0-23.565933-7.052579-28.898371-18.40551l-121.78599-258.021166L90.135394 514.816731c-11.868974-1.720141-21.673778-9.976818-25.630102-21.32975s-1.032085-23.909961 7.396607-32.510667L268.342012 258.859735 221.38216-25.995632c-2.064169-12.040988 3.096254-24.25399 13.073072-31.306568 9.976818-7.052579 23.221905-7.740635 33.88678-1.892155L510.193852 73.772552l241.335797-133.826978c4.816395-2.580212 10.148833-3.956325 15.48127-3.956325 0.172014 0 0.516042 0 0.688056 0 17.717453 0 31.994625 14.277171 31.994625 31.994625 0 3.956325-0.688056 7.740635-2.064169 11.352931l-44.895683 278.662859 196.956157 201.256509C958.118596 467.856879 961.042836 480.413909 957.258525 491.76684z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="biaoxing" unicode="" d="M767.010919-63.838737c-5.332437 0-10.664875 1.376113-15.48127 3.956325l-241.335797 133.826978-241.851839-132.966907c-10.664875-5.84848-23.909961-5.160423-33.88678 1.892155-9.976818 7.052579-15.137242 19.26558-13.073072 31.306568L268.342012 258.859735 71.901898 460.976314c-8.256677 8.428691-11.180917 20.985721-7.396607 32.166639 3.612296 11.352931 13.245087 19.609609 24.942046 21.673778l154.984714 26.662187c17.545439 2.92424 34.058794-8.77272 36.983034-26.146145s-8.77272-33.88678-26.146145-36.983034l-95.123803-16.341341 165.30556-170.121955c7.052579-7.224593 10.320847-17.545439 8.600706-27.522258l-38.875189-235.659331 199.536368 109.745003c9.63279 5.332437 21.32975 5.332437 30.96254 0l199.19234-110.433059-38.015118 235.831346c-1.548127 9.976818 1.548127 20.297665 8.77272 27.522258l164.617504 168.2298L634.732068 494.347052c-10.492861 1.548127-19.609609 8.428691-24.081975 18.061482L511.397951 724.84596l-100.112212-211.74937c-7.568621-15.997312-26.662187-22.877877-42.659499-15.309256-15.997312 7.568621-22.877877 26.662187-15.309256 42.659499l129.182597 273.502436c5.332437 11.180917 16.513355 18.40551 28.898371 18.40551 0 0 0 0 0 0 12.385016 0 23.737947-7.224593 28.898371-18.40551l120.753906-258.537208 270.406182-41.799429c11.868974-1.892155 21.673778-10.148833 25.458088-21.501764 3.78431-11.352931 0.860071-23.909961-7.568621-32.510667l-196.956157-201.256509 45.927768-284.855367c1.892155-12.040988-3.268268-24.25399-13.245087-31.306568C779.911977-61.946582 773.547455-63.838737 767.010919-63.838737z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="dianpufill" unicode="" d="M952.786158 543.199059c0 0.516042-0.172014 0.860071-0.172014 1.376113-0.344028 1.892155-0.860071 3.612296-1.548127 5.332437L875.895851 736.714934c-12.901058 38.531161-48.852007 62.613136-93.919704 62.613136L255.440954 799.32807c-44.207626 0-78.610449-23.565933-90.995464-60.720981L83.770872 548.015454c-0.344028-1.204099-0.860071-2.752226-1.204099-4.472367-5.84848-18.061482-8.77272-36.466991-8.77272-55.044515 0-65.193348 35.778935-124.71023 93.231648-155.328742 23.565933-12.729044 51.432219-19.093566 82.738787-19.093566 0 0 0 0 0.172014 0 52.464304 0.172014 101.144297 23.221905 134.34302 62.613136 33.026709-39.219217 81.19066-62.097094 133.654964-62.441122 51.948261 0.344028 100.112212 23.393919 132.966907 62.613136 33.198723-39.563245 81.878717-62.441122 134.687049-62.441122 31.994625 0.172014 60.204939 6.880564 84.1149 19.953637 56.592642 30.96254 91.683521 90.135394 91.683521 154.640685C961.386864 507.764153 958.29061 526.341676 952.786158 543.199059zM766.322862 512.064505 254.408869 512.064505c-17.717453 0-31.994625 14.277171-31.994625 31.994625s14.277171 31.994625 31.994625 31.994625l512.086007 0c17.717453 0 31.994625-14.277171 31.994625-31.994625S784.040316 512.064505 766.322862 512.064505zM894.989417 256.107509c0 17.717453-14.277171 31.994625-31.994625 31.994625-3.268268 0-6.192508-0.860071-9.288762-1.892155l0 0c-23.737947-9.460776-54.012431-14.449185-76.890307-13.245087-50.400134 2.752226-88.931295 12.729044-125.914329 44.207626-36.466991-31.134554-83.082815-48.852007-132.622879-49.36805-50.22812 0.344028-97.187972 12.901058-133.826978 44.207626-36.983034-31.478582-84.1149-46.787838-134.34302-46.787838l-0.172014 0c-30.618512 0-47.991937 5.84848-75.858223 16.169326-0.688056 0.344028-1.548127 0.516042-2.408198 0.860071-1.376113 0.516042-2.408198 0.860071-3.78431 1.376113 0 0-4.644381 0.860071-7.052579 0.860071 0 0 0 0 0 0-17.717453 0-31.994625-14.449185-31.994625-31.994625l0.172014-171.498068c0-45.067697 36.81102-81.878717 82.050731-81.878717l602.221401 0.344028c45.067697 0.172014 81.878717 36.983034 81.878717 82.050731L894.989417 256.107509z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="dianpu" unicode="" d="M952.786158 543.199059c0 0.516042-0.172014 0.860071-0.172014 1.376113-0.344028 1.892155-0.860071 3.612296-1.548127 5.332437L875.895851 736.714934c-13.073072 38.703175-50.22812 62.441122-93.919704 62.613136L255.440954 799.32807c-44.207626 0-78.610449-23.565933-90.995464-60.720981L83.770872 548.015454c-0.344028-1.204099-0.860071-2.752226-1.204099-4.472367-5.84848-18.061482-8.77272-36.466991-8.77272-55.044515 0-65.193348 35.778935-124.71023 93.231648-155.328742 0 0 0 0 0 0s0 0 0 0l0 0c0 0 0 0 0 0 23.565933-12.55703 51.432219-18.921552 82.738787-18.921552 52.464304 0.172014 101.144297 23.221905 134.34302 62.78515 33.026709-39.219217 81.19066-62.097094 133.654964-62.441122 51.948261 0.344028 100.112212 23.393919 132.966907 62.613136 33.198723-39.563245 81.878717-62.441122 134.687049-62.441122 31.994625 0.172014 60.204939 6.880564 84.1149 19.953637 56.592642 30.96254 91.683521 90.135394 91.683521 154.640685C961.386864 507.764153 958.29061 526.341676 952.786158 543.199059zM839.084831 390.622543c-14.449185-7.912649-32.510667-12.040988-53.668402-12.040988-39.047203 0-74.48211 19.781623-95.295817 53.324374-1.548127 3.096254-3.956325 8.428691-8.600706 13.417101-5.332437 5.84848-14.793214 12.901058-30.618512 12.901058-12.729044 0-24.25399-5.160423-30.790526-13.245087-4.300353-4.816395-6.70855-9.63279-8.428691-13.245087-20.469679-33.198723-55.732572-53.15236-93.919704-53.324374-38.703175 0.172014-73.966068 20.125651-94.607761 53.496388-1.376113 2.92424-3.78431 7.912649-7.568621 12.040988-14.965228 17.889467-48.679993 17.029397-61.753066 1.376113-4.816395-5.332437-7.396607-10.664875-8.944734-14.277171-20.641693-33.198723-56.248614-52.980346-94.951789-53.15236-20.641693 0-38.359147 3.956325-52.636318 11.524945l0 0c0 0 0 0 0 0-36.639006 19.437594-59.344868 57.452713-59.344868 98.908114 0 12.213002 2.064169 24.598018 6.192508 36.639006 0.344028 0.860071 0.516042 1.892155 0.688056 2.752226l79.470519 187.839409c1.548127 4.816395 6.536536 19.437594 31.306568 19.437594l526.707206 0c10.148833-0.688056 27.694272-2.408198 33.88678-20.641693l74.310096-185.259197c0.344028-1.376113 0.688056-2.580212 1.032085-3.612296 4.128339-12.040988 6.192508-24.25399 6.192508-36.466991C897.397615 448.075256 875.03578 410.404166 839.084831 390.622543zM862.994793 288.102133c-17.717453 0-31.994625-14.277171-31.994625-31.994625l0-174.594322c0-9.976818-8.084663-18.061482-18.061482-18.061482l-602.049387-0.344028c-9.976818 0-18.061482 8.084663-18.061482 17.889467l-0.172014 171.498068c0 17.717453-14.449185 31.994625-31.994625 31.994625 0 0 0 0 0 0-17.717453 0-31.994625-14.449185-31.994625-31.994625l0.172014-171.498068c0-45.067697 36.81102-81.878717 82.050731-81.878717l602.221401 0.344028c45.067697 0.172014 81.878717 36.81102 81.878717 82.050731l0 174.594322C894.989417 273.652948 880.712246 288.102133 862.994793 288.102133zM768.043004 512.064505 255.956996 512.064505c-17.717453 0-31.994625 14.277171-31.994625 31.994625 0 17.717453 14.277171 31.994625 31.994625 31.994625l511.913993 0c17.717453 0 31.994625-14.277171 31.994625-31.994625C800.037628 526.341676 785.588443 512.064505 768.043004 512.064505z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="gouwuchefill" unicode="" d="M352.972955 64.139761c-35.434907 0-63.989249-28.554342-63.989249-63.989249 0-35.434907 28.554342-63.989249 63.989249-63.989249s63.989249 28.554342 63.989249 63.989249C416.962204 35.585419 388.407862 64.139761 352.972955 64.139761L352.972955 64.139761zM801.069713 64.139761c-35.434907 0-63.989249-28.554342-63.989249-63.989249 0-35.434907 28.554342-63.989249 63.989249-63.989249s63.989249 28.554342 63.989249 63.989249C865.058962 35.585419 836.332605 64.139761 801.069713 64.139761L801.069713 64.139761zM937.304888 707.472535C920.963548 726.050059 898.429699 736.026877 874.003696 736.026877L232.907106 736.026877l-2.236183 13.073072c-5.676466 46.615824-46.615824 82.910801-93.231648 82.910801L97.015958 832.010751c-17.717453 0-31.994625-14.277171-31.994625-31.994625s14.277171-31.994625 31.994625-31.994625l40.251302 0c13.933143 0 28.210314-12.729044 29.930455-28.210314l30.96254-178.550647 54.356459-382.043339c5.676466-46.615824 46.099782-83.082815 92.371577-83.082815l520.17067 0c17.717453 0 31.994625 14.277171 31.994625 31.994625s-14.277171 31.994625-31.994625 31.994625L344.716278 160.123635c-13.589115 0-27.006215 12.55703-28.898371 27.522258l-5.332437 37.327062 507.61364 31.306568c46.099782 0 86.695112 36.466991 92.027549 81.362674L960.870821 625.937846C964.483118 656.728372 956.054426 686.486813 937.304888 707.472535z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="gouwuche" unicode="" d="M352.456912 63.967747c-35.434907 0-63.989249-28.554342-63.989249-63.989249 0-35.434907 28.554342-63.989249 63.989249-63.989249s63.989249 28.554342 63.989249 63.989249C416.446162 35.413405 387.891819 63.967747 352.456912 63.967747L352.456912 63.967747zM800.55367 63.967747c-35.434907 0-63.989249-28.554342-63.989249-63.989249 0-35.434907 28.554342-63.989249 63.989249-63.989249s63.989249 28.554342 63.989249 63.989249C864.54292 35.413405 835.816563 63.967747 800.55367 63.967747L800.55367 63.967747zM864.026877 95.962372 344.200235 95.962372c-46.099782 0-86.695112 36.466991-92.199563 83.082815l-54.356459 382.043339L166.853687 739.639174c-1.892155 15.653284-16.169326 28.382328-29.930455 28.382328L95.983874 768.021502c-17.717453 0-31.994625 14.277171-31.994625 31.994625s14.277171 31.994625 31.994625 31.994625l40.767344 0c46.615824 0 87.727196-36.466991 93.403662-83.082815l30.790526-177.86259L315.473879 187.301865c1.720141-14.793214 15.309256-27.350244 28.726356-27.350244l519.826642 0c17.717453 0 31.994625-14.277171 31.994625-31.994625S881.744331 95.962372 864.026877 95.962372zM384.279523 223.94087c-16.685369 0-30.618512 12.729044-31.82261 29.586427-1.376113 17.545439 11.868974 33.026709 29.586427 34.230808l434.163615 31.994625c15.997312 0.172014 29.414413 12.55703 31.134554 26.834201l50.400134 288.295649c1.204099 10.664875-1.720141 22.533848-8.084663 29.758441-4.128339 4.644381-9.288762 7.052579-15.309256 7.052579L319.946246 671.6936c-17.717453 0-31.994625 14.277171-31.994625 31.994625S302.400806 736.026877 319.946246 736.026877l554.05745 0c24.426004 0 46.959852-10.148833 63.301193-28.554342 18.749538-21.157736 27.178229-50.744163 23.565933-81.706703l-50.400134-288.467663c-5.504452-44.895683-45.927768-81.362674-92.027549-81.362674l-431.755417-31.82261C385.82765 224.112884 384.967579 223.94087 384.279523 223.94087z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="kefufill" unicode="" d="M608.929951 224.284898c-34.230808 0-60.892995 2.580212-68.461616 3.440282-17.545439 2.064169-30.274483 17.717453-28.210314 35.262893 1.892155 17.545439 17.545439 30.102469 35.262893 28.210314 79.642533-8.77272 201.772552-1.204099 223.102301 43.175542 7.568621 15.825298 26.662187 22.705863 42.659499 14.965228 15.997312-7.568621 22.705863-26.834201 14.965228-42.659499C794.361162 236.669914 683.412061 224.284898 608.929951 224.284898zM896.021502 256.107509c-17.717453 0-31.994625 14.277171-31.994625 31.994625l0 110.261045-42.831514 15.309256c-12.729044 4.472367-21.32975 16.685369-21.32975 30.102469 0 158.769024-129.182597 287.951621-287.951621 287.951621-158.769024 0-287.951621-129.182597-287.951621-287.951621 0-10.320847-4.988409-19.953637-13.417101-25.974131l-18.577524-13.245087 0-116.281539c0-17.717453-14.277171-31.994625-31.994625-31.994625s-31.994625 14.277171-31.994625 31.994625l0 132.794893c0 10.320847 4.988409 19.953637 13.417101 25.974131l18.921552 13.589115c8.77272 186.291282 163.069377 335.255501 351.596842 335.255501C698.377289 795.715774 851.469847 650.019822 863.338821 466.480766l43.51957-15.48127c12.729044-4.472367 21.32975-16.685369 21.32975-30.102469l0-132.794893C928.016126 270.38468 913.738955 256.107509 896.021502 256.107509zM639.892491 112.303712 639.892491 121.936503c28.0383 21.845792 50.400134 43.003528 63.645221 72.761969-29.070385-4.644381-61.581052-2.92424-87.727196-2.92424-31.994625 0-59.344868-0.860071-76.030237 1.032085-35.090879 3.956325-60.376953 38.703175-56.592642 73.794053 3.956325 35.090879 35.778935 60.720981 70.697799 56.592642 71.213842-7.568621 149.82429 0.688056 181.302873 13.933143 1.376113 29.242399 1.032085 60.032925 1.032085 83.426844 0 136.923232-83.254829 218.113892-216.737779 221.038132-0.688056 0-18.749538 0-19.437594 0-133.48295-2.752226-213.469511-84.974971-213.469511-222.070217 0-84.630942 1.376113-222.758273 97.359987-297.756425l0-9.63279c-127.978498-19.953637-226.026541-72.589955-226.026541-142.083655 0-17.717453 14.793214-34.230808 32.510667-34.230808l628.023518 0c17.717453 0 39.907274 16.513355 39.907274 34.230808C858.522426 39.713758 768.043004 92.178061 639.892491 112.303712z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="kefu" unicode="" d="M190.591634-64.526793c-17.717453 0-31.994625 14.277171-31.994625 31.994625 0 69.493701 82.050731 119.721821 226.370569 139.847472l0 9.63279c-97.876029 74.998152-97.876029 213.985554-97.876029 298.616496 0 139.675458 82.222745 223.102301 219.834033 223.102301l7.396607 0c137.611288 0 219.834033-83.426844 219.834033-223.102301 0-10.320847-0.172014-20.641693-0.344028-31.306568-0.516042-17.717453-14.965228-31.650596-32.854695-31.134554-17.717453 0.516042-31.650596 15.137242-31.134554 32.854695 0.344028 9.976818 0.344028 19.781623 0.344028 29.586427 0 105.616664-52.464304 159.113052-155.844784 159.113052l-7.396607 0c-103.38048 0-155.844784-53.496388-155.844784-159.113052 0-102.176382 6.364522-206.244919 83.082815-255.096926 9.288762-5.84848 14.793214-15.997312 14.793214-27.006215L448.956828 78.932975c0-16.341341-12.385016-30.102469-28.554342-31.82261-128.494541-13.589115-197.816227-51.260205-197.816227-79.642533C222.586259-50.077608 208.137074-64.526793 190.591634-64.526793zM833.752394-64.526793c-17.717453 0-31.994625 14.277171-31.994625 31.994625 0 28.554342-69.321687 66.053418-197.816227 79.642533-16.341341 1.720141-28.726356 15.48127-28.726356 31.82261l0 54.700487c0 17.717453 14.277171 31.994625 31.994625 31.994625s31.994625-14.277171 31.994625-31.994625l0-26.318159c144.319839-19.953637 226.370569-70.353771 226.370569-139.847472C865.747018-50.077608 851.469847-64.526793 833.752394-64.526793zM612.198219 222.564757c-44.035612 0-76.890307 4.472367-77.750378 4.644381-15.825298 4.816395-25.286074 20.813707-21.845792 37.155048 3.268268 16.169326 18.40551 26.834201 34.918864 25.286074 79.814547-8.77272 201.600538-1.204099 222.930287 43.175542 7.568621 15.825298 26.662187 22.705863 42.659499 14.965228 15.997312-7.568621 22.705863-26.834201 14.965228-42.659499C794.705191 235.63783 687.368386 222.564757 612.198219 222.564757zM896.021502 256.107509c-17.717453 0-31.994625 14.277171-31.994625 31.994625l0 111.809172-42.831514 15.309256c-12.729044 4.472367-21.32975 16.685369-21.32975 30.102469 0 160.489165-129.182597 291.219889-287.951621 291.219889-158.769024 0-287.951621-130.730724-287.951621-291.219889 0-10.320847-4.988409-19.953637-13.417101-25.974131l-18.577524-13.245087 0-118.00168c0-17.717453-14.277171-31.994625-31.994625-31.994625s-31.994625 14.277171-31.994625 31.994625l0 134.34302c0 10.320847 4.988409 19.953637 13.417101 25.974131l18.921552 13.589115C169.089871 650.019822 323.386528 800.360155 511.913993 800.360155c186.463296 0 339.555854-147.072065 351.252814-332.331262l43.51957-15.48127c12.729044-4.472367 21.32975-16.685369 21.32975-30.102469l0-134.34302C928.016126 270.38468 913.738955 256.107509 896.021502 256.107509z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="liuyanfill" unicode="" d="M832.032253 768.021502l-639.892491 0c-52.980346 0-95.983874-43.003528-95.983874-95.983874l0-511.913993c0-52.980346 43.003528-95.983874 95.983874-95.983874l210.717285 0 86.695112-86.695112c6.192508-6.192508 14.449185-9.460776 22.705863-9.460776s16.341341 3.096254 22.705863 9.460776l86.695112 86.695112 210.717285 0c52.980346 0 95.983874 43.003528 95.983874 95.983874L928.360155 672.037628C928.016126 725.017974 884.840585 768.021502 832.032253 768.021502zM335.943558 384.086007c-26.490173 0-47.991937 21.501764-47.991937 47.991937s21.501764 47.991937 47.991937 47.991937 47.991937-21.501764 47.991937-47.991937S362.433731 384.086007 335.943558 384.086007zM527.911305 384.086007c-26.490173 0-47.991937 21.501764-47.991937 47.991937s21.501764 47.991937 47.991937 47.991937 47.991937-21.501764 47.991937-47.991937S554.401478 384.086007 527.911305 384.086007zM720.051067 384.086007c-26.490173 0-47.991937 21.501764-47.991937 47.991937s21.501764 47.991937 47.991937 47.991937c26.490173 0 47.991937-21.501764 47.991937-47.991937S746.369226 384.086007 720.051067 384.086007z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="liuyan" unicode="" d="M511.913993-32.016126c-8.256677 0-16.341341 3.096254-22.705863 9.460776l-95.983874 95.983874c-12.55703 12.55703-12.55703 32.682681 0 45.239711s32.682681 12.55703 45.239711 0l73.450025-73.450025 73.450025 73.450025c6.020494 6.020494 14.105157 9.460776 22.705863 9.460776l223.962372 0c17.717453 0 31.994625 14.277171 31.994625 31.994625L864.026877 672.037628c0 17.545439-14.277171 31.994625-31.994625 31.994625l-639.892491 0c-17.545439 0-31.994625-14.449185-31.994625-31.994625l0-511.913993c0-17.717453 14.449185-31.994625 31.994625-31.994625l95.983874 0c17.717453 0 31.994625-14.277171 31.994625-31.994625s-14.277171-31.994625-31.994625-31.994625l-95.983874 0c-52.980346 0-95.983874 43.003528-95.983874 95.983874L96.155888 672.037628c0 52.980346 43.003528 95.983874 95.983874 95.983874l639.892491 0c52.980346 0 95.983874-43.003528 95.983874-95.983874l0-511.913993c0-52.980346-43.003528-95.983874-95.983874-95.983874L621.142953 64.139761 534.619856-22.55535C528.427348-28.747858 520.17067-32.016126 511.913993-32.016126zM335.943558 384.086007c-26.490173 0-47.991937 21.501764-47.991937 47.991937s21.501764 47.991937 47.991937 47.991937 47.991937-21.501764 47.991937-47.991937S362.433731 384.086007 335.943558 384.086007zM527.911305 384.086007c-26.490173 0-47.991937 21.501764-47.991937 47.991937s21.501764 47.991937 47.991937 47.991937 47.991937-21.501764 47.991937-47.991937S554.401478 384.086007 527.911305 384.086007zM720.051067 384.086007c-26.490173 0-47.991937 21.501764-47.991937 47.991937s21.501764 47.991937 47.991937 47.991937c26.490173 0 47.991937-21.501764 47.991937-47.991937S746.369226 384.086007 720.051067 384.086007z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="pengyoufill" unicode="" d="M518.966571 242.174366l0 6.70855c89.791366 64.161263 89.447337 175.282379 89.275323 265.589787l0 13.589115c0 130.730724-78.782463 208.653116-210.717285 208.653116l-6.70855 0c-126.602385 0-196.2681-74.138082-196.2681-208.653116 0-67.945574 0-205.728876 103.552495-279.178901l0-5.332437c-120.065849-17.029397-232.735092-66.225433-232.735092-144.663867 0-109.056946 107.680833-162.037292 329.062993-162.037292 283.30724 0 342.824122 88.071225 342.824122 162.037292C737.252478 182.829498 598.437091 226.86511 518.966571 242.174366zM929.564253 128.301025c-17.545439 0-31.82261 14.277171-31.994625 31.82261-0.344028 23.393919-101.660339 88.415253-197.300185 99.768184-16.169326 1.892155-28.210314 15.653284-28.210314 31.82261l0 66.225433c0 9.804804 4.472367 18.921552 12.040988 24.942046 54.012431 43.175542 94.951789 137.26726 94.951789 218.801949 0 109.917017-74.310096 132.966907-136.579204 132.966907-17.717453 0-31.994625 14.277171-31.994625 31.994625s14.277171 31.994625 31.994625 31.994625c123.678145 0 200.568453-75.514195 200.568453-197.128171 0-94.779775-44.207626-200.396439-106.992777-258.365194l0-24.598018c91.855535-19.609609 225.682513-83.942886 225.682513-158.59701 0-17.545439-14.277171-31.650596-31.82261-31.82261C929.736267 128.301025 929.736267 128.301025 929.564253 128.301025z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="pengyou" unicode="" d="M401.30892-64.182765c-226.542584 0-336.631614 52.980346-336.631614 162.209306 0 76.718293 114.389384 127.118428 229.982866 144.663867l0 6.536536c-86.351083 66.053418-97.876029 184.055098-97.876029 281.071057 0 132.106837 77.750378 211.061314 208.137074 211.061314l6.880564 0c130.386696 0 208.137074-78.954477 208.137074-211.061314 0-97.015958-11.524945-214.845624-97.876029-281.071057l0-6.536536c115.593482-17.545439 229.982866-67.77356 229.982866-144.663867C752.045691 23.88846 691.152696-64.182765 401.30892-64.182765zM404.921216 677.198051c-95.639845 0-144.147825-49.540064-144.147825-147.072065 0-91.339493 9.804804-190.763649 83.082815-237.379473 9.288762-5.84848 14.793214-15.997312 14.793214-27.006215l0-51.260205c0-16.341341-12.385016-30.102469-28.554342-31.82261-121.097934-12.729044-201.428523-59.344868-201.428523-84.630942 0-65.193348 91.683521-98.220057 272.642365-98.220057 182.162943 0 286.747522 35.778935 286.747522 98.220057 0 25.286074-80.33059 71.901898-201.428523 84.630942-16.341341 1.720141-28.554342 15.48127-28.554342 31.82261l0 51.260205c0 11.008903 5.676466 21.157736 14.793214 27.006215 73.105997 46.615824 83.082815 146.211994 83.082815 237.379473 0 97.532001-48.507979 147.072065-144.147825 147.072065L404.921216 677.198051 404.921216 677.198051zM899.117756 132.257349c-17.717453 0-31.994625 14.277171-31.994625 31.994625 0 24.426004-91.167479 83.942886-196.956157 95.123803-16.341341 1.720141-28.726356 15.48127-28.726356 31.82261L641.440618 357.595834c0 11.008903 5.676466 21.157736 14.793214 27.006215 82.738787 52.636318 91.683521 169.777927 91.683521 217.769864 0 110.433059-74.654124 133.654964-137.26726 133.654964-17.717453 0-31.994625 14.277171-31.994625 31.994625s14.277171 31.994625 31.994625 31.994625c124.194188 0 201.256509-75.686209 201.256509-197.644213 0-55.732572-10.664875-188.699479-106.476734-261.289434l0-22.18982c102.176382-18.577524 225.682513-79.986561 225.682513-154.640685C931.284394 146.53452 916.835209 132.257349 899.117756 132.257349z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="shouyefill" unicode="" d="M982.028557 491.594826 573.32303 812.057114c-34.918864 27.694272-89.619352 27.694272-124.538216 0L43.175542 491.422812c-13.933143-11.008903-16.169326-31.134554-5.332437-44.895683s31.134554-16.169326 44.895683-5.332437l13.073072 10.320847 0-387.547791c0-54.872501 56.936671-95.983874 107.852847-95.983874l639.892491 0c50.22812 0 84.1149 38.531161 84.1149 95.983874L927.672098 452.547623l14.449185-11.352931c5.84848-4.644381 12.729044-6.880564 19.781623-6.880564 9.460776 0 18.921552 4.128339 25.286074 12.213002C998.369898 460.460272 995.789686 480.585923 982.028557 491.594826zM607.897867 98.886612l0-66.741475-63.989249 0-63.989249 0-63.989249 0 0 66.741475 0 112.325214c0 37.155048 30.102469 77.234336 95.983874 77.234336 66.053418 0 95.983874-40.079288 95.983874-77.234336L607.897867 98.886612 607.897867 98.886612z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="shouye" unicode="" d="M979.792374 491.422812 574.183101 812.057114c-34.918864 27.694272-89.619352 27.694272-124.538216 0L44.207626 491.422812c-13.933143-11.008903-16.169326-31.134554-5.332437-44.895683s30.618512-16.169326 44.551655-5.332437l12.55703 10.320847 0-387.547791c0-54.872501 57.968755-95.983874 108.712918-95.983874l639.892491 0c50.22812 0 83.254829 38.531161 83.254829 95.983874L927.844112 450.139425l11.69696-8.944734c5.84848-4.644381 13.073072-6.880564 20.125651-6.880564 9.460776 0 18.921552 4.128339 25.286074 12.213002C995.9617 460.288258 993.725517 480.413909 979.792374 491.422812zM479.919368 31.973123 479.919368 209.491685c0 8.77272 15.997312 13.245087 31.994625 13.245087s31.994625-4.472367 31.994625-13.245087l0-177.346548L479.919368 31.973123 479.919368 31.973123zM864.026877 63.967747c0-21.157736-5.84848-31.994625-19.26558-31.994625L608.585923 31.973123c0 0.516042-0.688056 0.860071-0.688056 1.376113L607.897867 209.491685c0 37.155048-29.930455 77.234336-95.983874 77.234336s-95.983874-40.079288-95.983874-77.234336l0-176.142449c0-0.516042 0.860071-0.860071 0.860071-1.376113L204.868806 31.973123c-20.125651 0-44.723669 17.373425-44.723669 31.994625L160.145137 502.259701 488.864102 761.828994c11.868974 9.288762 33.198723 9.288762 44.895683 0l330.095078-261.11742L863.854863 63.967747z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="tongzhifill" unicode="" d="M889.828994 146.362506c-1.204099 1.720141-119.205779 165.821603-119.205779 287.435579 0 168.401814-76.202251 254.752898-162.725349 286.919536L607.897867 736.026877c0 52.980346-43.175542 95.983874-95.983874 95.983874S415.930119 788.835209 415.930119 736.026877l0-15.309256c-86.523098-32.166639-162.725349-118.517722-162.725349-286.919536 0-121.269948-118.00168-285.199395-119.205779-286.919536-5.332437-7.568621-7.396607-16.857383-5.332437-25.974131 2.064169-8.944734 7.912649-16.685369 15.997312-20.985721 5.676466-3.096254 107.336805-57.280699 233.423148-84.458928 21.32975-66.397447 73.966068-111.29313 133.654964-111.29313s112.325214 44.895683 133.654964 111.29313c126.086343 27.178229 227.746682 81.018646 233.423148 83.942886 8.256677 4.472367 13.933143 12.040988 16.169326 20.985721C897.225601 129.333109 895.333445 138.793885 889.828994 146.362506zM479.919368 736.026877c0 17.545439 14.449185 31.994625 31.994625 31.994625 17.545439 0 31.994625-14.449185 31.994625-31.994625l0-0.860071c-7.224593 0.516042-14.277171 0.860071-21.32975 0.860071l-21.32975 0c-7.052579 0-14.105157-0.344028-21.32975-0.860071L479.919368 736.026877 479.919368 736.026877zM511.913993-32.016126c-22.361834 0-43.175542 13.417101-57.968755 35.262893 19.26558-2.064169 38.531161-3.268268 57.968755-3.268268s38.875189 1.376113 57.968755 3.268268C555.089535-18.599026 534.275827-32.016126 511.913993-32.016126z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="tongzhi" unicode="" d="M889.828994 146.362506c-1.204099 1.548127-119.205779 166.165631-119.205779 287.435579 0 168.401814-76.202251 254.752898-162.725349 286.919536L607.897867 736.026877c0 52.980346-43.175542 95.983874-95.983874 95.983874S415.930119 788.835209 415.930119 736.026877l0-16.685369c-10.836889-7.912649-16.169326-21.845792-11.868974-35.262893 5.332437-16.857383 23.393919-25.974131 40.251302-20.641693 17.717453 5.676466 36.983034 8.428691 56.936671 8.428691l21.32975 0c115.249454 0 184.055098-89.103309 184.055098-238.239543 0-108.024861 72.933983-235.315303 110.261045-293.456073-57.452713-26.146145-183.023014-76.202251-304.809004-76.202251-121.441962 0-247.356291 50.400134-304.809004 76.546279 37.327062 57.968755 110.089031 184.915169 110.089031 293.112044 0 62.441122 11.524945 114.217369 34.574836 153.952629 8.77272 15.309256 3.612296 34.918864-11.69696 43.691584-15.48127 8.944734-34.918864 3.612296-43.691584-11.69696-28.554342-49.540064-43.175542-112.1532-43.175542-185.947253 0-121.269948-118.00168-285.199395-119.205779-286.919536-5.332437-7.568621-7.396607-16.857383-5.332437-25.974131 2.064169-8.944734 7.912649-16.685369 15.997312-20.985721 5.676466-3.096254 107.336805-57.280699 233.423148-84.458928 21.32975-66.397447 73.966068-111.29313 133.654964-111.29313s112.325214 44.895683 133.654964 111.29313c126.086343 27.178229 227.746682 81.018646 233.423148 83.942886 8.084663 4.472367 13.933143 12.040988 16.169326 20.985721C897.225601 129.333109 895.333445 138.793885 889.828994 146.362506zM501.249118 736.026877c-7.224593 0-14.277171-1.032085-21.32975-1.548127L479.919368 736.026877c0 17.545439 14.449185 31.994625 31.994625 31.994625 17.545439 0 31.994625-14.449185 31.994625-31.994625l0-0.860071c-7.224593 0.516042-14.277171 0.860071-21.32975 0.860071L501.249118 736.026877zM511.913993-32.016126c-22.361834 0-43.175542 13.417101-57.968755 35.262893 19.26558-2.064169 38.531161-3.268268 57.968755-3.268268s38.875189 1.376113 57.968755 3.268268C555.089535-18.599026 534.275827-32.016126 511.913993-32.016126z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="xihuanfill" unicode="" d="M736.048379 768.021502c-65.881404 0-128.494541-24.942046-176.314463-70.525785-4.644381-4.300353-28.726356-28.726356-47.30388-47.647909l-47.30388 47.131866c-47.819923 45.755753-110.605073 71.041828-177.00252 71.041828-141.223585 0-255.956996-114.905426-255.956996-255.956996 0-82.394759 41.111372-144.319839 76.546279-182.506971l316.849992-320.11826c25.11406-25.11406 52.980346-41.455401 86.695112-41.455401 33.714766 0 61.581052 16.341341 86.695112 41.455401l316.677977 319.946246 2.236183 2.408198c38.187133 47.647909 74.310096 92.715606 74.310096 180.098774C992.005375 653.116076 877.09995 768.021502 736.048379 768.021502z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="xihuan" unicode="" d="M511.913993-32.016126c-28.898371 0-57.968755 12.729044-86.695112 41.455401L106.30472 331.965732C68.117588 379.61364 31.994625 424.681337 31.994625 512.064505c0 141.223585 114.905426 255.956996 255.956996 255.956996 53.15236 0 104.068537-16.169326 147.244079-46.615824 14.449185-10.148833 17.889467-30.102469 7.740635-44.551655-10.148833-14.449185-30.102469-17.889467-44.551655-7.740635-32.338653 22.877877-70.525785 34.918864-110.433059 34.918864-105.960692 0-191.967747-86.179069-191.967747-191.967747 0-61.409037 20.297665-90.135394 59.172854-138.643373l315.645893-318.742147c15.997312-15.997312 28.898371-22.361834 41.283387-22.533848 12.729044-0.172014 24.942046 6.192508 41.455401 22.705863l316.677977 319.946246c25.974131 28.210314 57.968755 75.858223 57.968755 137.439274 0 105.960692-86.179069 191.967747-191.967747 191.967747-47.991937 0-94.091718-17.889467-129.526625-50.22812l-133.998992-134.171006c-12.55703-12.55703-32.682681-12.55703-45.239711 0s-12.55703 32.682681 0 45.239711l135.031077 135.203091c48.335965 44.207626 109.745003 67.945574 173.734252 67.945574 141.223585 0 255.956996-114.905426 255.956996-255.956996 0-82.394759-41.111372-144.319839-75.686209-181.646901L598.781119 9.611288C569.882748-19.287082 540.984378-32.016126 511.913993-32.016126z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="xinxifill" unicode="" d="M511.913993 828.914497C264.90173 828.914497 63.989249 656.556358 63.989249 444.806988c0-116.453553 62.957164-226.026541 174.07828-301.368722l84.1149-51.948261c-3.612296-23.565933-18.749538-74.48211-33.370737-115.93751-4.300353-12.040988-0.860071-25.458088 8.428691-34.230808 6.020494-5.504452 13.761129-8.428691 21.673778-8.428691 4.472367 0 8.77272 0.860071 13.073072 2.752226 36.466991 16.169326 147.416093 68.977658 187.49538 125.398287 243.571981 3.440282 440.356123 174.422308 440.356123 383.935495C960.010751 656.556358 759.09827 828.914497 511.913993 828.914497zM580.203595 352.091382 384.967579 352.091382c-17.717453 0-31.994625 14.277171-31.994625 31.994625s14.277171 31.994625 31.994625 31.994625l195.236015 0c17.717453 0 31.994625-14.277171 31.994625-31.994625S597.921048 352.091382 580.203595 352.091382zM640.924576 480.069881 384.967579 480.069881c-17.717453 0-31.994625 14.277171-31.994625 31.994625s14.277171 31.994625 31.994625 31.994625l255.956996 0c17.717453 0 31.994625-14.277171 31.994625-31.994625C672.9192 494.347052 658.642029 480.069881 640.924576 480.069881z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="xinxi" unicode="" d="M639.892491 480.069881 383.935495 480.069881c-17.717453 0-31.994625 14.277171-31.994625 31.994625s14.277171 31.994625 31.994625 31.994625L639.892491 544.05913c17.717453 0 31.994625-14.277171 31.994625-31.994625S657.609945 480.069881 639.892491 480.069881zM579.17151 352.091382 383.935495 352.091382c-17.717453 0-31.994625 14.277171-31.994625 31.994625S366.390055 416.080632 383.935495 416.080632l195.236015 0c17.717453 0 31.994625-14.277171 31.994625-31.994625S596.888964 352.091382 579.17151 352.091382zM962.246934 448.075256c0 211.74937-200.912481 383.935495-447.924744 383.935495S66.225433 659.824626 66.225433 448.075256c0-116.453553 62.957164-226.026541 172.874181-300.680665 14.621199-9.976818 34.574836-6.192508 44.379641 8.428691 9.976818 14.621199 6.192508 34.574836-8.428691 44.379641-92.027549 62.441122-144.835881 152.74853-144.835881 247.700319 0 176.486477 172.186125 319.946246 383.935495 319.946246s383.935495-143.631782 383.935495-319.946246-172.186125-319.946246-383.935495-319.946246c-2.064169 0-3.612296-0.688056-5.504452-1.204099-15.137242 2.752226-30.446498-5.160423-35.778935-20.125651-6.192508-17.373425-46.44381-46.615824-94.091718-73.794053 17.373425 58.140769 9.116748 70.697799 3.440282 78.954477-6.70855 9.976818-17.889467 15.997312-29.930455 15.997312-17.717453 0-31.994625-14.277171-31.994625-31.994625 0-5.84848 1.548127-11.180917 4.300353-15.997312-3.268268-18.233496-17.201411-60.892995-33.026709-99.768184-4.988409-12.040988-2.064169-25.974131 7.396607-35.090879 6.020494-5.84848 14.105157-8.944734 22.18982-8.944734 4.300353 0 8.77272 0.860071 13.073072 2.752226 36.466991 16.341341 147.588107 69.149672 187.667395 125.570301C765.290778 67.924072 962.246934 238.390055 962.246934 448.075256z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="yonghufill" unicode="" d="M631.119772 276.577188l0.344028 16.685369c79.298505 55.388544 117.829666 153.092558 117.829666 297.756425 0 139.503444-87.211154 222.758273-233.423148 222.758273l-7.912649 0c-146.03998 0-233.423148-83.254829-233.423148-222.758273 0-143.975811 38.875189-241.679825 118.86175-297.412397l0-16.857383c-133.138922-17.889467-266.621871-70.869814-266.621871-151.88846 0-113.357299 129.526625-170.810012 385.139593-170.810012s385.139593 57.452713 385.139593 170.810012C897.053586 205.707374 763.914665 258.68772 631.119772 276.577188z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="yonghu" unicode="" d="M511.913993-45.605241c-255.612968 0-385.311608 57.452713-385.311608 170.810012 0 80.846632 133.654964 133.998992 266.621871 151.88846L393.224257 293.950613c-79.986561 55.904586-118.86175 153.436587-118.86175 297.240383 0 139.33143 87.211154 222.586259 233.423148 222.586259l7.912649 0c146.211994 0 233.423148-83.254829 233.423148-222.586259 0-54.184445 0-214.67361-117.829666-297.412397l-0.344028-16.685369c132.966907-18.061482 266.105829-71.041828 266.105829-151.716445C897.225601 11.847472 767.526961-45.605241 511.913993-45.605241zM507.957668 754.432387c-79.470519 0-174.250294-28.382328-174.250294-163.241391 0-129.698639 34.230808-213.469511 104.584579-255.784982 8.944734-5.332437 14.277171-14.965228 14.277171-25.286074l0-59.344868c0-15.309256-11.524945-28.0383-26.662187-29.414413-144.319839-14.449185-239.959684-67.429531-239.959684-95.983874 0-92.199563 177.346548-111.637158 325.966739-111.637158 148.792206 0 325.966739 19.26558 325.966739 111.637158 0 28.726356-95.639845 81.534688-239.959684 95.983874-15.48127 1.548127-27.006215 14.621199-26.662187 30.102469l1.376113 59.344868c0.172014 10.148833 5.676466 19.437594 14.277171 24.770032 70.525785 42.487485 103.208466 123.678145 103.208466 255.784982 0 135.031077-94.779775 163.241391-174.250294 163.241391L507.957668 754.432387 507.957668 754.432387z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="zantongfill" unicode="" d="M864.198891 512.064505l-189.215522 0c13.761129 31.994625 29.586427 114.733412 20.297665 189.731564C688.056442 761.828994 652.965564 807.928775 601.705359 825.302201c-38.015118 12.901058-78.26642 6.70855-99.940198-15.48127-25.802117-26.318159-37.843104-75.858223-50.744163-128.322526-8.428691-34.402822-17.029397-69.837729-27.866286-88.243239-31.134554-52.980346-96.67193-81.362674-109.572988-81.362674l-89.619352 0c-17.717453 0-31.994625-14.449185-31.994625-32.166639l0-447.924744c0-17.717453 14.277171-31.994625 31.994625-31.994625l86.523098 0c26.834201 0 126.430371-63.989249 241.851839-63.989249l215.877709 0c35.606921 0 96.843944 13.761129 119.721821 51.776247 23.049891 38.531161 71.901898 388.75189 71.901898 427.455065C959.838737 468.888964 907.546447 512.064505 864.198891 512.064505zM95.983874 511.892491c-17.717453 0-31.994625-14.277171-31.994625-31.994625l0-447.924744c0-17.717453 14.277171-31.994625 31.994625-31.994625s31.994625 14.277171 31.994625 31.994625L127.978498 479.897867C127.978498 497.61532 113.701327 511.892491 95.983874 511.892491z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="zantong" unicode="" d="M95.983874-0.021502c-17.717453 0-31.994625 14.277171-31.994625 31.994625L63.989249 480.069881c0 17.717453 14.277171 31.994625 31.994625 31.994625s31.994625-14.277171 31.994625-31.994625l0-447.924744C127.978498 14.255669 113.701327-0.021502 95.983874-0.021502zM864.198891 512.064505 674.811356 512.064505c13.761129 31.994625 29.586427 114.733412 20.469679 190.075592C688.056442 762.001008 652.793549 807.928775 601.533345 825.474215c-38.015118 12.901058-78.26642 6.536536-99.940198-15.48127-25.802117-26.318159-37.843104-75.858223-50.744163-128.322526-8.428691-34.230808-17.029397-69.837729-27.866286-88.243239-31.134554-52.980346-96.327902-77.062322-109.400974-81.362674l-89.791366 0c-17.717453 0-31.994625-14.277171-31.994625-31.994625l0-447.924744c0-17.717453 14.277171-31.994625 31.994625-31.994625l86.523098 0c26.834201-14.449185 126.430371-63.989249 241.851839-63.989249l215.877709 0c35.606921 0 96.843944 13.761129 119.721821 51.776247 23.049891 38.531161 71.901898 388.75189 71.901898 427.455065C959.838737 468.716949 907.546447 512.064505 864.198891 512.064505zM833.236351 20.792206c-4.816395-8.084663-36.466991-20.641693-64.84932-20.641693L552.337309 0.150512c-114.217369 0-215.189652 63.989249-216.221737 63.989249l0 0c-4.816395 0-10.148833 0-16.169326 0l-63.989249 0L255.956996 448.075256l63.989249 0c2.580212 0 4.988409 0.860071 7.396607 1.548127 0.516042 0.172014 1.032085 0 1.548127 0.172014 0.172014 0.172014 0.860071 0.344028 1.720141 0.516042 0.860071 0.344028 1.720141 0.344028 2.580212 0.860071 19.437594 6.364522 102.52041 37.327062 145.179909 109.917017 15.48127 26.318159 24.942046 64.84932 34.74685 105.44465 9.116748 37.843104 20.641693 84.974971 34.058794 98.564085 3.096254 2.580212 18.061482 6.020494 36.81102-1.376113 15.309256-6.020494 41.971443-23.049891 47.647909-69.665715 12.55703-102.52041-31.478582-200.052411-31.82261-201.084495-4.644381-9.976818-3.78431-21.157736 2.064169-30.274483 5.84848-9.116748 15.997312-14.449185 26.834201-14.449185l235.315303 0c8.77272 0 31.650596-14.965228 31.650596-32.854695C895.849488 372.561062 846.481438 51.066689 833.236351 20.792206z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="leimupinleifenleileibie2" unicode="" d="M320 832 192 832C121.6 832 64 774.4 64 704l0-128c0-70.4 57.6-128 128-128l128 0c70.4 0 128 57.6 128 128L448 704C448 774.4 390.4 832 320 832zM768 832l-128 0C569.6 832 512 774.4 512 704l0-128c0-70.4 57.6-128 128-128l128 0c70.4 0 128 57.6 128 128L896 704C896 774.4 838.4 832 768 832zM320 384 192 384c-70.4 0-128-57.6-128-128l0-128c0-70.4 57.6-128 128-128l128 0c70.4 0 128 57.6 128 128l0 128C448 326.4 390.4 384 320 384zM768 384l-128 0c-70.4 0-128-57.6-128-128l0-128c0-70.4 57.6-128 128-128l128 0c70.4 0 128 57.6 128 128l0 128C896 326.4 838.4 384 768 384z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="leimupinleifenleileibie" unicode="" d="M320 384 192 384c-70.4 0-128-57.6-128-128l0-128c0-70.4 57.6-128 128-128l128 0c70.4 0 128 57.6 128 128l0 128C448 326.4 390.4 384 320 384zM384 128c0-35.2-28.8-64-64-64L192 64c-35.2 0-64 28.8-64 64l0 128c0 35.2 28.8 64 64 64l128 0c35.2 0 64-28.8 64-64L384 128zM768 832l-128 0C569.6 832 512 774.4 512 704l0-128c0-70.4 57.6-128 128-128l128 0c70.4 0 128 57.6 128 128L896 704C896 774.4 838.4 832 768 832zM832 576c0-35.2-28.8-64-64-64l-128 0C604.8 512 576 540.8 576 576L576 704c0 35.2 28.8 64 64 64l128 0c35.2 0 64-28.8 64-64L832 576zM768 384l-128 0c-70.4 0-128-57.6-128-128l0-128c0-70.4 57.6-128 128-128l128 0c70.4 0 128 57.6 128 128l0 128C896 326.4 838.4 384 768 384zM832 128c0-35.2-28.8-64-64-64l-128 0c-35.2 0-64 28.8-64 64l0 128c0 35.2 28.8 64 64 64l128 0c35.2 0 64-28.8 64-64L832 128zM320 832 192 832C121.6 832 64 774.4 64 704l0-128c0-70.4 57.6-128 128-128l128 0c70.4 0 128 57.6 128 128L448 704C448 774.4 390.4 832 320 832zM384 576c0-35.2-28.8-64-64-64L192 512C156.8 512 128 540.8 128 576L128 704c0 35.2 28.8 64 64 64l128 0c35.2 0 64-28.8 64-64L384 576z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="edit" unicode="" d="M678.854949 858.074075 151.913033 858.074075C67.776878 858.074075 0 790.060281 0 706.161013L0 23.913062C0-60.223137 68.013787-128 151.913033-128L834.161006-128C918.297234-128 986.074039-59.986205 986.074039 23.913062L986.074039 543.123046 910.22219 467.271197 910.22219 23.913062C910.22219-18.194593 876.305262-52.148151 834.161006-52.148151L151.913033-52.148151C109.805422-52.148151 75.851849-18.231172 75.851849 23.913062L75.851849 706.161013C75.851849 748.268668 109.76885 782.222219 151.913033 782.222219L603.003099 782.222219 678.854949 858.074075ZM320.679497 197.145066 550.775881 262.471958 386.423442 425.819414 320.679497 197.145066ZM935.236535 644.587381 770.882048 807.936965 409.297774 448.578077 573.650213 285.244409 935.236535 644.587381ZM1011.623351 781.801538 908.897353 883.888662C891.877742 900.806437 863.36629 899.885305 845.211136 881.847962L795.896832 832.853058 960.252416 669.504541 1009.563575 718.514293C1027.718729 736.552704 1028.639817 764.881642 1011.623351 781.801538Z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="917caidan_fenlei" unicode="" d="M856.653 780.63c26.343-0.03 47.774-21.743 47.774-48.404v-219.733c0-12.992-4.978-25.159-14.015-34.257l-0.03-0.03-0.03-0.03c-9.083-9.176-20.693-14.025-33.577-14.025h-217.85c-26.275 0-47.65 21.714-47.65 48.405V732.288c0 26.657 21.376 48.343 47.65 48.343h217.728m-523.092-0.063v-0.003h51.166c13.013 0 25.234-5.06 34.41-14.246 8.959-8.968 13.884-20.789 13.87-33.285v-217.97c0-26.273-21.687-47.649-48.343-47.649H164.931c-12.992 0-25.158 4.977-34.256 14.014-9.215 9.154-14.086 20.786-14.086 33.638v217.85c0 26.275 21.715 47.651 48.405 47.651h168.567M382.09 309.21c26.277 0 47.654-21.714 47.654-48.405v-219.732c0-12.993-4.977-25.158-14.012-34.255-9.156-9.216-20.789-14.088-33.642-14.088H164.24c-26.275 0-47.65 21.715-47.65 48.405V260.868c0 26.656 21.376 48.342 47.65 48.342h217.85m473.995-3.327c13.003 0 25.212-5.053 34.378-14.231 8.98-8.989 13.915-20.859 13.9-33.424v-217.846c0-26.275-21.685-47.652-48.341-47.652H636.289c-12.992 0-25.159 4.977-34.256 14.014-9.215 9.154-14.086 20.786-14.086 33.638V258.231c0 26.276 21.714 47.652 48.405 47.652h219.733m0.628 525.913H638.926c-54.494 0-98.817-44.634-98.817-99.508v-219.732c0-54.933 44.323-99.57 98.817-99.57h217.85c26.43 0 51.291 10.358 69.937 29.193 18.646 18.771 28.88 43.758 28.88 70.314V732.228c0 54.868-44.324 99.505-98.88 99.568z m-471.986-0.063H164.994c-54.87 0-99.57-44.323-99.57-98.817v-217.85c0-26.43 10.359-51.228 29.193-69.937 18.771-18.645 43.758-28.879 70.314-28.879h219.733c54.873 0 99.508 44.32 99.508 98.814V732.976c0.062 54.431-44.575 98.754-99.445 98.754v0.003z m-2.637-471.358H164.24c-54.493 0-98.816-44.637-98.816-99.507v-219.733c0-54.87 44.323-99.57 98.817-99.57H382.09c26.431 0 51.229 10.358 69.94 29.193 18.646 18.772 28.88 43.758 28.88 70.314V260.805c0 54.933-44.324 99.57-98.82 99.57z m473.995-3.327H636.352c-54.87 0-99.57-44.324-99.57-98.817v-217.85c0-26.43 10.359-51.228 29.192-69.936 18.773-18.647 43.76-28.88 70.315-28.88h219.733c54.87 0 99.507 44.323 99.507 98.817V258.169c0.063 54.556-44.574 98.88-99.444 98.88z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="weixuanzhong-01" unicode="" d="M511.805 832.079c-247.423 0-447.999-200.576-447.999-448s200.576-448 447.999-448c247.424 0 448.001 200.576 448.001 448 0 247.423-200.577 448-448.001 448z m0-856c-225.332 0-407.999 182.668-407.999 408s182.667 408 407.999 408c225.332 0 408.001-182.667 408.001-408s-182.669-408-408.001-408z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="xuanzhong" unicode="" d="M512 832C262.4 832 64 633.6 64 384s198.4-448 448-448 448 198.4 448 448S761.6 832 512 832z m236.8-326.4L454.4 211.2c-12.8-12.8-32-12.8-44.8 0L275.2 352c-12.8 12.8-12.8 32 0 44.8 12.8 12.8 32 12.8 44.8 0l115.2-115.2L704 556.8c12.8 12.8 32 12.8 44.8 0 12.8-12.8 12.8-38.4 0-51.2z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="shujudaping" unicode="" d="M94.3 694.9V137h828.5V694.9H94.3z m794.6-524.1H128.1V661.1h760.8v-490.3z m-169.1 355c-18.7 0-33.8-15.1-33.8-33.8 0-4.1 0.7-8 2-11.6L558.6 379.8c-6.2 6.6-15 10.8-24.8 10.8-9.3 0-17.8-3.8-23.9-9.9l-63.6 63.6c1.9 4.2 3 9 3 13.9 0 18.7-15.1 33.8-33.8 33.8-18.7 0-33.8-15.1-33.8-33.8 0-4.3 0.8-8.4 2.3-12.2l-79.2-66c-6.2 6.5-14.9 10.6-24.5 10.6-18.7 0-33.8-15.1-33.8-33.8s15.1-33.8 33.8-33.8c18.7 0 33.8 15.1 33.8 33.8 0 4.3-0.8 8.4-2.3 12.2l79.2 66c6.2-6.5 14.9-10.6 24.5-10.6 9.3 0 17.8 3.8 23.9 9.9l63.6-63.6c-1.9-4.2-3-9-3-13.9 0-18.7 15.1-33.8 33.8-33.8 18.7 0 33.8 15.1 33.8 33.8 0 4.1-0.7 8-2 11.6L695.1 469c6.2-6.6 15-10.8 24.8-10.8 18.7 0 33.8 15.1 33.8 33.8s-15.2 33.8-33.9 33.8zM280.2 339.9c-9.3 0-16.9 7.6-16.9 16.9s7.6 16.9 16.9 16.9c9.3 0 16.9-7.6 16.9-16.9s-7.5-16.9-16.9-16.9z m135.3 101.4c-9.3 0-16.9 7.6-16.9 16.9s7.6 16.9 16.9 16.9 16.9-7.6 16.9-16.9-7.6-16.9-16.9-16.9z m118.4-101.4c-9.3 0-16.9 7.6-16.9 16.9s7.6 16.9 16.9 16.9 16.9-7.6 16.9-16.9-7.6-16.9-16.9-16.9z m185.9 135.2c-9.3 0-16.9 7.6-16.9 16.9 0 9.3 7.6 16.9 16.9 16.9 9.3 0 16.9-7.6 16.9-16.9 0-9.3-7.5-16.9-16.9-16.9z m-120.4-355l35.9-101.4H364.8l35.9 101.4H365l-50.9-135.3h372l-50.9 135.3h-35.8zM872 644.2H145v-16.9h727v16.9z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="yigouxuan" unicode="" d="M196.923077 896h630.153846a196.923077 196.923077 0 0 0 196.923077-196.923077v-630.153846a196.923077 196.923077 0 0 0-196.923077-196.923077H196.923077a196.923077 196.923077 0 0 0-196.923077 196.923077V699.076923a196.923077 196.923077 0 0 0 196.923077 196.923077z m0-78.769231a118.153846 118.153846 0 0 1-118.153846-118.153846v-630.153846a118.153846 118.153846 0 0 1 118.153846-118.153846h630.153846a118.153846 118.153846 0 0 1 118.153846 118.153846V699.076923a118.153846 118.153846 0 0 1-118.153846 118.153846H196.923077z m584.900923-258.205538a36.509538 36.509538 0 0 0 1.260308-51.633231l-299.480616-313.107692c-0.118154-0.157538-0.393846-0.236308-0.630154-0.472616l-0.393846-0.551384c-2.166154-2.126769-4.726154-3.229538-7.207384-4.726154-1.575385-0.866462-2.796308-2.166154-4.411077-2.835692a35.800615 35.800615 0 0 0-27.490462-0.07877c-1.260308 0.512-2.284308 1.614769-3.544615 2.284308-2.756923 1.457231-5.592615 2.835692-8.034462 5.12-0.196923 0.157538-0.275692 0.433231-0.512 0.669538-0.196923 0.118154-0.393846 0.196923-0.551384 0.354462l-150.843077 156.593231a36.430769 36.430769 0 0 0 0.945231 51.633231 36.391385 36.391385 0 0 0 51.63323-0.945231l124.455385-129.102769 273.092923 285.61723a36.548923 36.548923 0 0 0 51.712 1.181539z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="weigouxuan" unicode="" d="M196.923077 817.230769a118.153846 118.153846 0 0 1-118.153846-118.153846v-630.153846a118.153846 118.153846 0 0 1 118.153846-118.153846h630.153846a118.153846 118.153846 0 0 1 118.153846 118.153846V699.076923a118.153846 118.153846 0 0 1-118.153846 118.153846H196.923077z m0 78.769231h630.153846a196.923077 196.923077 0 0 0 196.923077-196.923077v-630.153846a196.923077 196.923077 0 0 0-196.923077-196.923077H196.923077a196.923077 196.923077 0 0 0-196.923077 196.923077V699.076923a196.923077 196.923077 0 0 0 196.923077 196.923077z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="phone_light" unicode="" d="M358.4 87.466667h14.933333c40.533333 0 155.733333 14.933333 275.2 174.933333 130.133333 172.8 100.266667 302.933333 91.733334 330.666667-12.8 55.466667-64 93.866667-119.466667 91.733333-66.133333-2.133333-117.333333-57.6-115.2-123.733333 0-27.733333 10.666667-53.333333 29.866667-74.666667l2.133333-2.133333c6.4-6.4 12.8-12.8 19.2-17.066667 29.866667-34.133333 6.4-81.066667-19.2-113.066667-34.133333-46.933333-72.533333-64-110.933333-49.066666-21.333333 17.066667-46.933333 25.6-74.666667 23.466666-32 0-61.866667-14.933333-83.2-38.4s-34.133333-53.333333-32-85.333333c0-32 14.933333-61.866667 38.4-83.2 21.333333-21.333333 51.2-32 81.066667-32-2.133333-2.133333 0-2.133333 2.133333-2.133333zM277.333333 204.8c0 21.333333 6.4 40.533333 21.333334 55.466667 14.933333 14.933333 32 23.466667 53.333333 23.466666s38.4-8.533333 49.066667-17.066666c2.133333-2.133333 2.133333-2.133333 4.266666-2.133334 34.133333-12.8 98.133333-23.466667 164.266667 61.866667 66.133333 87.466667 36.266667 142.933333 14.933333 170.666667l-4.266666 4.266666c-4.266667 2.133333-8.533333 6.4-14.933334 12.8-12.8 14.933333-19.2 29.866667-19.2 49.066667-2.133333 42.666667 32 78.933333 74.666667 78.933333 36.266667 0 68.266667-23.466667 76.8-59.733333v-2.133333c6.4-21.333333 34.133333-134.4-83.2-292.266667C492.8 128 384 128 364.8 130.133333h-10.666667c-21.333333 0-40.533333 6.4-55.466666 21.333334-12.8 12.8-21.333333 32-21.333334 53.333333zM512 832C264.533333 832 64 631.466667 64 384c0-85.333333 23.466667-166.4 68.266667-238.933333 6.4-10.666667 19.2-12.8 29.866666-6.4 8.533333 8.533333 12.8 21.333333 6.4 32C128 234.666667 106.666667 309.333333 106.666667 384 106.666667 608 288 789.333333 512 789.333333s405.333333-181.333333 405.333333-405.333333-181.333333-405.333333-405.333333-405.333333c-55.466667 0-106.666667 10.666667-157.866667 32-10.666667 4.266667-23.466667 0-27.733333-10.666667-4.266667-10.666667 0-23.466667 10.666667-27.733333 55.466667-23.466667 113.066667-34.133333 172.8-34.133334 247.466667 0 448 200.533333 448 448C960 631.466667 759.466667 832 512 832z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="Myassessment" unicode="" d="M567.6 93.5c0-11 10.7-20 23.9-20h362.7c13.2 0 23.9 9 23.9 20s-10.7 20-23.9 20H591.4c-13.1 0-23.8-9-23.8-20zM954.2-15.8H419.1c-13.2 0-23.9-9-23.9-20s10.7-20 23.9-20h535.1c13.2 0 23.9 9 23.9 20-0.1 11-10.8 20-23.9 20zM104.9-66.3c-11.3 0-22.1 4.3-30.2 12.1-10.9 10.4-15.7 25.4-12.8 40.1 8.7 45.1 55 273 110.5 343l0.2 0.3 0.7 0.8c1.2 1.6 2.5 3.3 4.3 5.1l0.1 0.1c0.3 0.3 0.7 0.6 1 0.9 0.4 0.4 0.9 1 1.4 1.5l454.1 454.1C667.9 825.4 712.8 844 760.4 844c47.7 0 92.5-18.6 126.2-52.3l21.2-21.2c33.7-33.7 52.3-78.6 52.3-126.2 0-47.7-18.6-92.5-52.3-126.2L836.7 447l-0.7-0.7-382.3-382.2c-0.5-0.5-1.1-1-1.5-1.4-0.3-0.3-0.6-0.7-1-1.1l-0.1-0.1c-1.7-1.7-3.3-2.9-4.4-3.7C379.8 1.7 159-54.3 115.3-65c-3.4-0.8-6.9-1.3-10.4-1.3z m100.2 372.2l-0.1-0.2-0.9-1.2c-41.3-51.2-84.2-229.2-103-326.2-0.3-1.3 0.2-2.6 1.1-3.5 0.7-0.7 1.7-1.1 2.7-1.1 0.3 0 0.6 0 0.9 0.1 94 23 266.3 73.1 315.6 114.9l1.3 1 0.7 0.8 0.7 0.7c0.3 0.3 0.7 0.6 1 0.9l0.3 0.2L806 473l0.1 0.2 2.2 2.1 71.2 71.2c26.2 26.2 40.6 60.9 40.6 97.9 0 37-14.4 71.8-40.6 97.9l-21.2 21.2c-26.2 26.2-60.9 40.6-97.9 40.6-37 0-71.8-14.4-97.9-40.6l-454-454-0.1-0.1c-0.4-0.4-0.8-0.9-1.1-1.3l-0.6-0.6-0.6-0.6c-0.2-0.2-0.3-0.3-0.5-0.4-0.1-0.1-0.2-0.2-0.3-0.4l-0.2-0.2zM651.6 789.7c-7.4-8.2-6.3-21.3 2.5-29.2L896 542.9c8.8-7.9 21.9-7.7 29.3 0.6 7.4 8.2 6.3 21.3-2.5 29.2L680.9 790.3c-8.8 7.9-21.9 7.6-29.3-0.6zM175.7 308.8c-7.4-8.2-6.3-21.3 2.5-29.2L420.1 62c8.8-7.9 21.9-7.7 29.3 0.6 7.4 8.2 6.3 21.3-2.5 29.2L205 309.4c-8.8 7.9-21.9 7.7-29.3-0.6z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="Myquestionandansw" unicode="" d="M844.6 133.8c0 21.4-24.4 38.7-54.4 38.7s-54.4-17.3-54.4-38.7c0-5.4 1.5-10.5 4.3-15.1h-63.6c0 56.4 51.2 102.2 114.3 102.2 63.1 0 114.3-45.7 114.3-102.2h-64.8c2.8 4.7 4.3 9.8 4.3 15.1zM664.6 117.5c0-7.4 14.1-13.3 31.4-13.3 17.4 0 31.4 6 31.4 13.3 0 7.3-14.1 13.3-31.4 13.3-17.3 0-31.4-5.9-31.4-13.3z m0 0M830.8 118.8s-0.3-10.4-9-15.1l-42.2-39.1s-26.7-24.5-27.1-45.1v-36.1h54.2s-0.7 17.7 0 33.1c0.2 11.9 63.3 63.2 63.3 63.2s24.4 19.1 24.1 39.1c-0.3 20.1-63.3 0-63.3 0z m0 0M737.5-85.9c0-21.5 17.5-39 39-39s39 17.5 39 39-17.5 39-39 39c-21.5-0.1-39-17.5-39-39z m0 0M546.1-90H211.4c-30.3 0-58.5 13.7-79.5 38.5-20.2 23.9-31.4 55.4-31.4 88.7V751.7c0 33.4 11.1 64.9 31.4 88.7 21 24.8 49.3 38.4 79.5 38.4h606.1c30.3 0 58.5-13.7 79.5-38.4 20.2-23.9 31.4-55.4 31.4-88.7v-434.8h-40V751.7c0 48.1-31.8 87.2-70.9 87.2H211.4c-39.1 0-70.9-39.1-70.9-87.2v-714.5c0-48.1 31.8-87.2 70.9-87.2h334.7v-40zM746.4 577.4H294.2c-16.3 0-29.5 8.9-29.5 20v0.1c0 11 13.2 19.9 29.5 19.9h452.2c16.3 0 29.5-8.9 29.5-19.9v-0.1c-0.1-11.1-13.2-20-29.5-20zM264.7 383.3v0.1c0 11 13.2 19.9 29.5 19.9h452.2c16.3 0 29.5-8.9 29.5-19.9v-0.1c0-11-13.2-19.9-29.5-19.9H294.2c-16.3 0-29.5 8.9-29.5 19.9z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="tuichu" unicode="" d="M224 192c-8 0-16 3.2-22.4 9.6l-160 160c-12.8 12.8-12.8 32 0 44.8l160 160c12.8 12.8 32 12.8 44.8 0 12.8-12.8 12.8-32 0-44.8L108.8 384l137.6-137.6c12.8-12.8 12.8-32 0-44.8-6.4-6.4-14.4-9.6-22.4-9.6z m416 160H80c-17.6 0-32 14.4-32 32s14.4 32 32 32h560c17.6 0 32-14.4 32-32s-14.4-32-32-32z m192-384H480c-52.8 0-96 43.2-96 96V192c0 17.6 14.4 32 32 32s32-14.4 32-32v-128c0-17.6 14.4-32 32-32h352c17.6 0 32 14.4 32 32V704c0 17.6-14.4 32-32 32H480c-17.6 0-32-14.4-32-32v-128c0-17.6-14.4-32-32-32s-32 14.4-32 32V704c0 52.8 43.2 96 96 96h352c52.8 0 96-43.2 96-96v-640c0-52.8-43.2-96-96-96z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="caidan" unicode="" d="M333.275 704.951h597.418c16.511 0 29.871 14.328 29.871 32s-13.36 32-29.871 32H333.275c-16.496 0-29.871-14.328-29.871-32s13.375-32 29.871-32zM930.693 416.5H333.275c-16.496 0-29.871-14.328-29.871-32s13.375-32 29.871-32h597.418c16.511 0 29.871 14.328 29.871 32s-13.36 32-29.871 32z m0-352.451H333.275c-16.496 0-29.871-14.313-29.871-32 0-17.687 13.375-32 29.871-32h597.418c16.511 0 29.871 14.313 29.871 32 0 17.687-13.36 32-29.871 32zM128.197 798.693c-35.211 0-63.76-28.549-63.76-63.76s28.549-63.76 63.76-63.76 63.761 28.549 63.761 63.76-28.55 63.76-63.761 63.76z m-0.118-350.659c-35.146 0-63.642-28.681-63.642-64.055 0-35.373 28.496-64.053 63.642-64.053s63.642 28.681 63.642 64.053c0 35.374-28.496 64.055-63.642 64.055z m-0.382-354.243c-34.935 0-63.26-28.325-63.26-63.261s28.325-63.26 63.26-63.26 63.261 28.324 63.261 63.26-28.326 63.261-63.261 63.261z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_alipay_line" unicode="" d="M322.749752 150.762935c74.987878 0 149.936871 47.355541 208.79642 123.163087-83.736123 40.35715-154.673755 69.230758-231.311203 61.753459-20.720927-2.034333-59.624982-11.099802-80.896449-29.652343-63.759139-54.903447-25.614377-155.264203 103.411232-155.264203zM160.016437 831.978894h703.966103c53.016471 0 95.995331-42.97886 95.995331-95.995331v-703.966103c0-53.016471-42.97886-95.995331-95.995331-95.995331H160.016437c-53.016471 0-95.995331 42.97886-95.995331 95.995331V735.983563c0 53.016471 42.97886 95.995331 95.995331 95.995331z m735.964888-600.388073V735.983563c0 17.672498-14.326287 31.998785-31.998785 31.998785H160.016437c-17.672498 0-31.998785-14.326287-31.998785-31.998785v-703.966103c0-17.672498 14.326287-31.998785 31.998785-31.998785h703.966103c17.672498 0 31.998785 14.326287 31.998785 31.998785V111.397369c-64.164369 26.708292-209.505571 87.783299-292.64613 127.259382-73.051783-88.768743-167.301354-142.641721-265.137613-142.641721-165.469636 0-221.660402 142.991692-143.308917 237.131768 17.076934 20.521383 46.147016 40.116673 91.247191 51.093679 70.545706 17.113773 182.841282-10.679223 288.069904-44.970214 18.914792 34.440393 34.853809 72.354911 46.715975 112.724341H296.610418v32.458249h167.223583v58.144258H261.292028v32.457226h202.541973v82.95534s0 13.977339 14.329356 13.97734h81.733513v-96.93268h200.257953v-32.457226H559.89687v-58.144258h163.467025c-15.637142-63.282279-39.414685-121.517611-69.210291-172.657338 49.595558-17.72264 94.132914-34.505885 127.311571-45.469588 56.590879-18.723434 92.449575-29.05064 114.51615-34.735106z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_addressbook" unicode="" d="M863.98254 831.978894H224.014007c-53.017494 0-95.995331-42.97886-95.995332-95.995331v-159.991877h-31.998784c-17.671475 0-31.998785-14.325263-31.998785-31.998785s14.32731-31.998785 31.998785-31.998785h31.998784v-255.988232h-31.998784c-17.671475 0-31.998785-14.325263-31.998785-31.998785s14.32731-31.998785 31.998785-31.998785h31.998784v-159.991877c0-53.017494 42.97886-95.995331 95.995332-95.995331h639.969556c53.017494 0 95.995331 42.97886 95.995331 95.995331V735.983563c-0.001023 53.016471-42.97886 95.995331-95.996354 95.995331z m31.998785-799.961434c0-17.673521-14.32731-31.998785-31.998785-31.998785H224.014007c-17.671475 0-31.998785 14.325263-31.998785 31.998785V192.009338h63.996546c17.671475 0 31.998785 14.325263 31.998785 31.998784 0 17.672498-14.32731 31.998785-31.998785 31.998785h-63.996546V511.994116h63.996546c17.671475 0 31.998785 14.325263 31.998785 31.998785s-14.32731 31.998785-31.998785 31.998785h-63.996546V735.983563c0 17.672498 14.32731 31.998785 31.998785 31.998785h639.969556c17.671475 0 31.998785-14.325263 31.998785-31.998785v-703.966103zM702.803627 331.160561c-2.945075 1.183965-5.835915 1.769296-8.600888 1.769297-9.31618 0-17.663288-6.072299-27.530007-18.430768-1.461281-1.837858-2.738367-3.52529-5.234211-6.896061-14.299681-19.305695-21.717627-24.88169-36.490076-20.212344-19.639293 6.17156-37.428448 17.811668-63.325258 44.131103-24.885783 25.297153-32.943296 36.541241-39.920198 51.995211a132.419915 132.419915 0 0 1-1.827624 3.966335c-7.554046 15.692401-1.355881 25.541723 20.494776 44.105521a619.619066 619.619066 0 0 1 3.472078 2.970658 170.380482 170.380482 0 0 1 1.655709 1.441838c15.421224 13.542434 21.182438 29.688159 16.139586 39.58967-12.866029 25.258267-52.41886 83.198887-65.965388 95.577823-8.679683 7.942903-21.99085 6.418176-40.267099-7.153934-5.464455-4.062526-12.710486-11.083429-19.72218-20.907169-11.042497-15.47546-18.10024-33.564443-19.374256-54.298674-4.046153-65.875337 32.448016-148.60248 93.112677-209.950709 57.149605-57.768705 121.326253-86.84902 191.100386-86.84902 5.077645 0 10.187013 0.161682 15.335267 0.480954 21.49864 1.349741 40.185234 9.556657 56.06797 22.405289 5.655813 4.578272 10.561543 9.441023 14.682397 14.277168 2.508123 2.940982 4.29277 5.354961 5.328356 6.945179 2.476401 3.460822 5.273097 8.553817 6.870477 13.929244 2.124384 7.16212 1.421372 12.386098-2.484587 16.114003-14.795984 14.083763-79.847559 59.470463-93.517907 64.999386z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_at" unicode="" d="M450.451202 216.348676C525.144368 196.334853 609.444333 253.381104 635.088386 349.075583c25.63996 95.694479-18.844184 187.248661-93.538373 207.262484-74.693166 20.013823-158.993131-37.031405-184.637184-132.725884-25.640983-95.695502 18.84316-187.249685 93.538373-207.263507z m214.549448 324.971349l16.402575 61.217247c4.573155 17.069771 22.12081 27.200502 39.188534 22.626323 17.071817-4.574179 27.201525-22.119787 22.626323-39.190581L703.898565 439.223742c2.210341-15.998369 2.950192-32.494065 2.102894-49.253774 4.584412-29.328979 16.789385-55.654554 34.311457-75.278497 16.850783-18.87386 33.345456-26.687826 43.674708-26.687825 10.329253 0 26.823925 7.812943 43.674709 26.687825 22.575158 25.281803 36.32123 61.684898 36.32123 101.306291 0 194.394409-157.589155 351.983563-351.983563 351.983563-212.066907 0-383.981325-171.914418-383.981325-383.981325s171.914418-383.981325 383.981325-383.981325c153.238057 0 287.122323 82.857103 359.294063 206.212572a32.397874 32.397874 0 0 0 0.953721 1.777483c8.837272 15.304568 28.408003 20.547988 43.712571 11.712763 15.301498-8.836249 20.546965-28.405957 11.711739-43.710524l4.604878 7.978718c-81.794911-147.854443-239.346203-247.967558-420.277995-247.967558-247.411903 0-447.978894 200.566992-447.978895 447.978894s200.568015 447.977871 447.979918 447.977871c229.739405 0 415.980109-186.240705 415.980109-415.980109 0-106.033965-64.467267-191.990662-143.993508-191.990663-41.332361 0-78.595033 23.217794-104.855116 60.404742-47.546899-99.082646-148.956543-155.680688-245.243517-129.880069-110.957091 29.730115-173.095313 157.616784-138.789996 285.642622C329.400219 568.201256 447.158203 647.885086 558.113247 618.154971c44.508703-11.926634 81.163531-39.646975 106.887403-76.834946z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_coinpurse_line" unicode="" d="M703.990662 352.001215c-35.344996 0-63.996546-28.652574-63.996546-63.996546s28.652574-63.996546 63.996546-63.996547h127.994116c35.344996 0 63.996546 28.652574 63.996547 63.996547s-28.652574 63.996546-63.996547 63.996546H703.990662z m0 63.99757h127.994116c70.688969 0 127.994116-57.305147 127.994116-127.994116s-57.305147-127.994116-127.994116-127.994116H703.990662c-70.688969 0-127.994116 57.305147-127.994116 127.994116s57.305147 127.994116 127.994116 127.994116zM339.429643 639.988232h396.559804V740.198561c0 3.774977-0.668219 7.520277-1.972934 11.06194-6.109138 16.582677-24.505114 25.073048-41.087791 18.962888L339.429643 639.988232z m-185.66356-0.200568L670.803819 830.275089c49.748031 18.328437 104.934934-7.142677 123.263371-56.890708a95.990215 95.990215 0 0 0 5.918803-33.18582v-100.211352h31.998785c53.016471 0 95.995331-42.97886 95.995331-95.995331v-63.996547c0-17.672498-14.326287-31.998785-31.998784-31.998785s-31.998785 14.326287-31.998785 31.998785v63.996547c0 17.672498-14.326287 31.998785-31.998785 31.998784H160.016437c-17.672498 0-31.998785-14.326287-31.998785-31.998784v-511.975441c0-17.672498 14.326287-31.998785 31.998785-31.998785h671.967318c17.672498 0 31.998785 14.326287 31.998785 31.998785v63.996546c0 17.672498 14.326287 31.998785 31.998785 31.998785s31.998785-14.326287 31.998784-31.998785v-63.996546c0-53.016471-42.97886-95.995331-95.995331-95.995331H160.016437c-53.016471 0-95.995331 42.97886-95.995331 95.995331V543.992901c0 50.916647 39.641859 92.574419 89.744977 95.794763z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_details" unicode="" d="M510.651282 543.992901c-26.508747 0-47.998177 21.48943-47.998177 47.998177s21.48943 47.998177 47.998177 47.998177 47.997154-21.48943 47.997154-47.998177-21.48943-47.998177-47.997154-47.998177z m-31.998784-63.99757h31.998784c17.672498 0 31.998785-14.326287 31.998785-31.998785v-287.985993h47.998177c8.836249 0 15.999392-7.163143 15.999393-15.999393s-7.163143-15.999392-15.999393-15.999392H430.655344c-8.836249 0-15.999392 7.163143-15.999393 15.999392s7.163143 15.999392 15.999393 15.999393h47.998177V447.99757h-31.998785c-8.836249 0-15.999392 7.163143-15.999392 15.999392s7.163143 15.999392 15.999392 15.999392h31.997762z m31.998784-495.976048c220.909295 0 399.980717 179.071422 399.980718 399.980717S731.560578 783.980717 510.651282 783.980717 110.670565 604.909295 110.670565 384s179.071422-399.980717 399.980717-399.980717zM62.672388 384c0 247.406786 200.572108 447.978894 447.978894 447.978894s447.978894-200.572108 447.978895-447.978894-200.573131-447.977871-447.978895-447.977871S62.672388 136.594237 62.672388 384z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_delete" unicode="" d="M800.162002 579.340967c1.850138 17.575284 17.596773 30.322609 35.172058 28.473495 17.575284-1.850138 30.322609-17.596773 28.473494-35.172058l-57.966202-550.673811c-5.143137-48.856731-46.341445-85.946464-95.467306-85.946464H313.625954c-49.126884 0-90.325192 37.089733-95.468329 85.946464L160.192446 572.641381c-1.850138 17.575284 10.898211 33.32192 28.472471 35.172057 17.575284 1.850138 33.32192-10.898211 35.172058-28.473494l57.965179-550.672788c1.714038-16.285918 15.446807-28.64848 31.822776-28.648481h396.74707c16.375969 0 30.108738 12.363585 31.822776 28.648481l57.967226 550.673811z m-192.176904-99.345636c17.672498 0 31.998785-14.326287 31.998785-31.998785v-223.989447c0-17.672498-14.326287-31.998785-31.998785-31.998785s-31.998785 14.326287-31.998785 31.998785V447.99757c0 17.671475 14.326287 31.997762 31.998785 31.997761z m-191.990662 0c17.672498 0 31.998785-14.326287 31.998785-31.998785v-223.989447c0-17.672498-14.326287-31.998785-31.998785-31.998785s-31.998785 14.326287-31.998785 31.998785V447.99757c0 17.671475 14.326287 31.997762 31.998785 31.997761z m-31.998785 223.989447h255.987209v47.998178c0 8.836249-7.163143 15.999392-15.999393 15.999392H399.995043c-8.836249 0-15.999392-7.163143-15.999392-15.999392v-47.998178z m-63.996546 0V767.981325c0 35.344996 28.652574 63.996546 63.997569 63.996546h255.987209c35.343973 0 63.996546-28.652574 63.996546-63.996546v-63.996547h223.99968c17.672498 0 31.998785-14.326287 31.998785-31.998785s-14.326287-31.998785-31.998785-31.998784H96.019891c-17.672498 0-31.998785 14.326287-31.998785 31.998784s14.326287 31.998785 31.998785 31.998785h223.979214z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_GPS" unicode="" d="M512-47.979502c223.989447 224.729298 335.984171 399.577534 335.984171 524.546757 0 187.452299-150.424988 339.412246-335.984171 339.412247S176.015829 664.019555 176.015829 476.567255c0-124.9682 111.994724-299.81746 335.984171-524.546757z m45.327348-45.177945c-25.009603-25.092491-65.645093-25.092491-90.654696 0-235.249909 236.027621-354.653369 422.443311-354.653369 569.724702C112.019283 699.219241 290.950512 879.976048 512 879.976048s399.980717-180.756807 399.980717-403.408793c0-147.281391-119.40346-333.697081-354.653369-569.724702z m-45.327348 445.158662c70.688969 0 127.994116 57.305147 127.994116 127.994116s-57.305147 127.994116-127.994116 127.994116-127.994116-57.305147-127.994116-127.994116 57.305147-127.994116 127.994116-127.994116z m0-63.996546c-106.033965 0-191.990662 85.956697-191.990662 191.990662s85.956697 191.990662 191.990662 191.990662 191.990662-85.956697 191.990662-191.990662-85.957721-191.990662-191.990662-191.990662z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_horn" unicode="" d="M702.383048 225.615737c40.534182 40.534182 65.605184 96.531544 65.605184 158.384263s-25.071002 117.850082-65.605184 158.384263c-12.496615 12.495592-12.496615 32.756031 0 45.252647 12.495592 12.496615 32.756031 12.496615 45.252647 0 52.114938-52.114938 84.349083-124.111692 84.349083-203.63691s-32.234145-151.521972-84.349083-203.63691c-12.495592-12.496615-32.756031-12.496615-45.252647 0-12.496615 12.496615-12.496615 32.757055 0 45.252647z m113.130594-113.131617C885.000226 181.970704 927.979086 277.966035 927.979086 384s-42.97886 202.029296-112.465444 271.51588c-12.495592 12.496615-12.495592 32.756031 0 45.252647 12.496615 12.496615 32.756031 12.496615 45.252646 0C941.834652 619.700163 991.976656 507.70544 991.976656 384s-50.142004-235.700163-131.209344-316.768527c-12.496615-12.496615-32.757055-12.496615-45.25367 0-12.495592 12.496615-12.495592 32.757055 0 45.252647zM312.24449 543.992901H112.019283c-8.836249 0-15.999392-7.163143-15.999392-15.999393v-287.985993c0-8.836249 7.163143-15.999392 15.999392-15.999393H312.245514c25.459858 0 49.875944-10.113335 67.87897-28.116361l163.874301-163.874301V735.983563L380.12346 572.109262a95.992261 95.992261 0 0 0-67.87897-28.116361z m41.371247 92.112907L498.746138 781.23621c40.316218 40.316218 109.249193 11.762905 109.249193-45.252647v-703.966103c0-57.015551-68.933999-85.568864-109.249193-45.252647L353.615737 131.894192a95.994308 95.994308 0 0 1-67.878971 28.116361H96.019891c-35.344996 0-63.996546 28.652574-63.996547 63.996546V543.992901c0 35.344996 28.652574 63.996546 63.996547 63.996546h189.716875a95.996354 95.996354 0 0 1 67.878971 28.116361z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_im_voice" unicode="" d="M512 891.624343c-280.357246 0-507.624343-227.275283-507.624343-507.624343s227.267097-507.624343 507.624343-507.624343 507.624343 227.275283 507.624343 507.624343S792.356222 891.624343 512 891.624343z m0-983.5221c-262.832104 0-475.897757 213.069747-475.897757 475.897757S249.167896 859.897757 512 859.897757s475.897757-213.069747 475.897757-475.897757-213.065653-475.897757-475.897757-475.897757zM512 288.820244c69.944002 0 126.906342 56.915267 126.906342 127.107933V574.157921c0 70.191642-56.819077 127.107933-126.906342 127.107933-69.944002 0-126.906342-56.915267-126.906342-127.107933v-158.229744c0-70.191642 56.819077-127.107933 126.906342-127.107933zM718.221782 447.453171c-17.521049 0-31.726585-14.205537-31.726586-31.726586 0-96.371908-78.123288-174.49622-174.496219-174.496219S337.502757 319.353654 337.502757 415.726585c0 17.521049-14.205537 31.726585-31.726585 31.726586s-31.726585-14.205537-31.726586-31.726586c0-120.66315 89.804329-220.335221 206.222805-235.857752v-97.270371c0-17.521049 14.205537-31.726585 31.726586-31.726585s31.726585 14.205537 31.726585 31.726585v97.270371c116.418476 15.522532 206.222805 115.194602 206.222805 235.857752 0 17.521049-14.205537 31.726585-31.726585 31.726586z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_notice" unicode="" d="M320.009338 495.994724c0-63.996546 0-94.871741-31.998785-191.990663-21.331841-65.37801-63.996546-129.375579-127.994116-191.990662h703.966103c-63.996546 63.996546-106.661252 127.994116-127.994116 191.990662-31.998785 95.995331-31.998785 127.994116-31.998785 191.990663 0 127.994116-31.998785 223.989447-191.990662 223.989447-154.75562 0-191.989639-95.995331-191.989639-223.989447z m282.523585-447.978895H421.467077c13.178137-37.284161 48.735981-63.996546 90.532923-63.996546s77.354785 26.712385 90.532923 63.996546z m3.220344 724.683961c114.993011-31.42164 162.233941-127.552048 162.233942-276.705066 0-89.716324 4.64888-99.556437 28.713972-171.752736 17.921161-53.764508 55.119365-109.561301 112.532982-166.975942 40.316218-40.316218 11.762905-109.249193-45.252646-109.249193H668.791999c-14.823614-73.028247-79.389118-127.994116-156.791999-127.994116S370.031615-25.011394 355.208001 48.015829H160.016437c-57.352219 0-85.751013 69.63087-44.756343 109.74038 57.057507 55.825446 94.02035 111.270223 111.967094 166.273955 15.731286 47.745421 25.325805 105.065917 28.78458 171.96456 0 146.069797 49.270147 243.450684 162.078399 275.986705 9.200546 43.417859 47.750537 75.996858 93.909833 75.996858 45.903469 0 84.282568-32.219819 93.753267-75.278497z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="icon_phone" unicode="" d="M594.366939 129.93456c-159.949922 44.407396-286.332331 171.396625-332.337107 334.574055-7.93574 33.57263 0.589424 58.139142 20.833491 76.930114 2.334161 2.166339 8.812713 7.6574 7.883551 6.846941 5.597485 4.881171 10.837836 9.142218 19.834744 16.252149 2.812045 2.220574 2.812045 2.220574 5.558599 4.393054 21.046339 16.672728 30.17116 25.720801 34.406624 34.540677 5.409197 11.263531-8.538467 51.386344-40.708144 92.706425-37.842887 48.608068-70.305229 71.802326-98.924033 71.802326-20.010753 0-40.808428-24.629957-69.484538-82.763982-15.160281-30.733978-16.61133-108.283192-8.523117-161.977091 5.968945-39.624463 27.458375-117.279077 46.62797-162.884764 78.380138-186.474019 248.529353-320.266188 449.951829-352.145246 98.261954-15.363919 197.22692-8.435113 225.184669 15.370059 27.800159 23.671119 41.494043 42.909276 41.494043 51.451836 0 23.763217-29.543873 70.203922-71.062476 103.345739-40.60479 32.412201-79.886445 46.413076-90.551342 41.162492-7.424086-3.65525-15.161305-10.838859-25.971511-24.202215-3.03001-3.746324-21.337981-27.621081-27.841092-35.579333-25.540699-32.458249-44.096311-39.199791-86.37216-29.823236z m36.237319 69.600171l0.445139 0.553609c5.430686 6.613628 23.953551 30.772864 27.774576 35.496446 16.142655 19.956517 29.889751 32.719192 47.458895 41.370223 39.706327 19.550265 100.614535-2.158153 158.744467-48.560996 55.264675-44.11473 95.134731-106.787118 95.134731-153.361877 0-32.958646-22.99062-65.260329-64.002686-100.17963-46.997384-40.016389-160.744008-47.980781-276.618085-29.862121-223.393883 35.356252-412.053684 183.703929-499.004011 390.5663-21.25714 50.572816-44.165896 133.357264-50.913577 178.150446-9.928117 65.907059-8.283664 153.812131 14.411221 199.821001C123.704416 793.946696 155.817812 831.978894 210.914664 831.978894c53.312206 0 100.621698-33.802874 149.422148-96.484471 45.666062-58.655911 66.9846-119.983675 47.899939-159.724795-9.901511-20.61962-23.690562-34.290991-52.357461-57.001225-2.832512-2.241041-2.832512-2.241041-5.615905-4.439102-8.232498-6.506181-12.850679-10.261715-17.455557-14.277168-0.048095-0.041956-5.324262-4.513804-6.405897-5.518691-4.00522-3.716648-4.495384-5.129834-2.434445-13.976316 39.618323-140.435473 149.21851-250.560616 285.85547-288.543695 16.519232-3.64604 10.199293-5.965875 20.781302 7.5213z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="weibiaoti-" unicode="" d="M943.962529 699.85324c0 35.871975-26.079625 64.449649-59.453552 65.249024l-20.483997 0.399688c-3.09758 0-74.741608 1.898517-149.982825 34.473068-79.837627 34.473068-130.198283 72.943013-132.296644 74.541764l-12.39032 9.492584c-10.291959 7.893833-22.282592 11.990632-34.772833 11.990632h-0.099922c-12.690086 0-24.78064-4.196721-35.272444-12.190476l-11.990632-9.29274c-5.69555-4.296643-55.956284-41.567525-132.596409-74.541764-74.541764-32.174863-148.983607-34.473068-149.583138-34.473068l-20.883685-0.399688c-32.674473-0.699454-59.253708-29.976581-59.253708-65.249024v-374.607338c0-101.720531 54.257611-215.131928 148.883685-311.056987 71.843872-72.943013 156.677596-124.502732 226.822794-137.992194l0.799376-0.199844 29.776737-2.997658 2.198282-0.099922h0.99922c36.671351 0 80.736924 13.389539 127.400468 38.969555 46.064012 25.180328 92.128025 60.552693 133.395785 102.419985 94.626073 95.925059 148.883685 209.436378 148.883684 311.056987l-0.099922 374.507416z m-180.558938-649.492584c-36.271663-37.870414-76.740047-69.745511-117.108509-92.427791-40.967994-23.081967-79.637783-35.172521-111.912568-35.172522h-0.899298l-1.998438 0.099922-26.179548 2.697893-0.699453 0.199844c-61.651835 12.090554-136.093677 58.654176-199.144419 124.502732-83.135051 86.632319-130.697892 188.952381-130.697892 280.680718V669.077283c0 31.775176 23.381733 58.254489 52.059329 58.854021l18.385636 0.399687c0.599532 0 65.948478 1.998439 131.397346 31.075723C443.953162 789.083528 488.018735 822.757221 493.014832 826.654176l10.491803 8.393443c9.192818 7.194379 19.884465 10.991413 30.975801 10.991413h0.099922c10.991413 0 21.583138-3.697112 30.576112-10.891491l10.891491-8.593287c1.898517-1.498829 46.064012-36.171741 116.209212-67.247462 66.0484-29.377049 128.999219-31.075722 131.697111-31.075723l17.985949-0.399687c29.277127-0.699454 52.159251-26.479313 52.15925-58.854021l0.199844-337.935987c-0.199844-91.728337-47.762685-194.0484-130.897736-280.680718zM507.203747 207.13817300000005c-9.79235-9.79235-25.580016-9.79235-35.372365 0L333.339578 345.53005499999995c-9.79235 9.79235-9.79235 25.580016 0 35.372365 9.79235 9.79235 25.580016 9.79235 35.372366 0l138.491803-138.491803c9.79235-9.79235 9.79235-25.580016 0-35.272444zM784.287276 519.594067c9.79235-9.79235 9.79235-25.580016 0-35.372365L507.203747 207.13817300000005c-9.79235-9.79235-25.580016-9.79235-35.372365 0-9.79235 9.79235-9.79235 25.580016 0 35.372366l277.083528 277.083528c9.79235 9.692428 25.679938 9.692428 35.372366 0z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="zhihang" unicode="" d="M751.742464 138.713491H302.225344c-13.785192 0-24.973173 11.187982-24.973173 24.973174s11.187982 24.973173 24.973173 24.973173h449.51712c13.785192 0 24.973173-11.187982 24.973173-24.973173s-11.187982-24.973173-24.973173-24.973174zM751.742464 612.204858H302.225344c-13.785192 0-24.973173 11.187982-24.973173 24.973173s11.187982 24.973173 24.973173 24.973174h449.51712c13.785192 0 24.973173-11.187982 24.973173-24.973174s-11.187982-24.973173-24.973173-24.973173zM520.990342-76.954834H177.359477c-14.384548 0-26.071993 12.087016-26.071993 27.07092V818.982733c0 14.983904 11.687445 27.07092 26.071993 27.07092h687.061945c14.384548 0 26.071993-12.087016 26.071993-27.07092v-523.437713h49.946347V866.032192c0 16.582187-13.285728 29.967808-29.568237 29.967808H130.909375c-16.382402 0-29.568237-13.385621-29.568238-29.967808v-962.965564c0-16.582187 13.285728-29.967808 29.568238-29.967808H520.990342v49.946346zM915.566481 291.549312m-24.973173 0a24.973173 24.973173 0 1 1 49.946347 0 24.973173 24.973173 0 1 1-49.946347 0ZM525.984977-103.026827m-24.973173 0a24.973173 24.973173 0 1 1 49.946346 0 24.973173 24.973173 0 1 1-49.946346 0ZM735.659741-122.306116l-108.183787 71.822846c-11.48766 7.591845-14.584333 23.175105-6.992489 34.662765 7.591845 11.48766 23.175105 14.584333 34.662765 6.992488l108.183787-71.822846c11.48766-7.591845 14.584333-23.175105 6.992488-34.662765-7.691737-11.48766-23.175105-14.584333-34.662764-6.992488zM728.667252-87.643352l165.721978 249.731734c7.591845 11.48766 23.175105 14.584333 34.662765 6.992488 11.48766-7.591845 14.584333-23.175105 6.992488-34.662764l-165.721978-249.731734c-7.591845-11.48766-23.175105-14.584333-34.662764-6.992488-11.48766 7.691737-14.684226 23.175105-6.992489 34.662764zM745.748903 375.459175H296.231782c-13.785192 0-24.973173 11.187982-24.973173 24.973173s11.187982 24.973173 24.973173 24.973173h449.517121c13.785192 0 24.973173-11.187982 24.973173-24.973173s-11.187982-24.973173-24.973173-24.973173z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="baocun" unicode="" d="M894.863499 895.10079H114.849058c-16.385599 0-29.574007-13.388233-29.574007-29.973656v-963.153478c0-16.585423 13.288321-29.973656 29.574007-29.973656h780.014441c16.385599 0 29.574007 13.388233 29.574007 29.973656v963.153478c0 16.585423-13.188409 29.973656-29.574007 29.973656z m-20.382086-946.068494c0-14.986828-11.689726-27.076203-26.077081-27.076203H161.308225c-14.387355 0-26.077081 12.089375-26.07708 27.076203V818.068494c0 14.986828 11.689726 27.076203 26.07708 27.076203h687.196019c14.387355 0 26.077081-12.089375 26.077081-27.076203v-869.036198zM729.608742 59.734999h-449.604839c-13.787882 0-24.978047 11.190165-24.978047 24.978046s11.190165 24.978047 24.978047 24.978047h449.604839c13.787882 0 24.978047-11.190165 24.978047-24.978047s-11.090253-24.978047-24.978047-24.978046zM729.608742 263.555859h-449.604839c-13.787882 0-24.978047 11.190165-24.978047 24.978047s11.190165 24.978047 24.978047 24.978046h449.604839c13.787882 0 24.978047-11.190165 24.978047-24.978046s-11.090253-24.978047-24.978047-24.978047zM255.025856 895.500439v-259.771685c0-27.575763 22.38033-49.956093 49.956093-49.956093h399.648747c27.575763 0 49.956093 22.38033 49.956093 49.956093V895.500439h-499.560933z m449.60484-235.293199c0-13.787882-11.190165-24.978047-24.978047-24.978047h-349.692653c-13.787882 0-24.978047 11.190165-24.978047 24.978047V845.044785h399.648747v-184.837545z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="zhongzhi" unicode="" d="M300.153441 631.329234L45.877599 540.873402c-14.792777-5.297413-31.084822 2.49878-36.382235 17.291557-5.297413 14.792777 2.49878 31.084822 17.291556 36.382235l254.275842 90.455832c14.792777 5.297413 31.084822-2.49878 36.382236-17.291557 5.297413-14.792777-2.49878-31.184773-17.291557-36.382235zM113.244705 828.033187L64.36857 562.562811c-2.798633-15.392484-17.791313-25.687457-33.183797-22.888824-15.392484 2.798633-25.687457 17.791313-22.888824 33.183797L57.172084 838.32816C59.970717 853.720644 74.963397 864.015617 90.355881 861.117033c15.392484-2.798633 25.687457-17.691362 22.888824-33.083846zM84.958516 151.363592m-24.987799 0a24.987799 24.987799 0 1 1 49.975598 0 24.987799 24.987799 0 1 1-49.975598 0ZM512.749634 895.500244C308.649292 895.500244 132.435334 775.958614 50.275451 603.142997h56.072621C184.409956 747.472523 337.135383 845.524646 512.749634 845.524646c255.075451 0 461.774524-206.699073 461.774524-461.774524s-206.699073-461.774524-461.774524-461.774524c-175.614251 0-328.339678 98.052123-406.401562 242.381649H68.966325v-20.989751h-2.998536v-2.998536h-3.39834c86.557735-159.821962 255.675159-268.36896 450.180185-268.36896 282.661981 0 511.750122 229.088141 511.750122 511.750122S795.411615 895.500244 512.749634 895.500244z" horiz-adv-x="1025" /> |
| | | |
| | | |
| | | <glyph glyph-name="shanchu" unicode="" d="M1000 654H26c-13.8 0-25 11.2-25 25s11.2 25 25 25h974c13.8 0 25-11.2 25-25s-11.2-25-25-25zM855.7 702.6h-684c-27.6 0-50-22.4-50-50v-730c0-27.6 22.4-50 50-50h684c27.6 0 50 22.4 50 50v730c0 27.6-22.4 50-50 50z m0-755c0-13.8-11.2-25-25-25h-634c-13.8 0-25 11.2-25 25v705h684v-705zM788.7 784H237.4c-13.8 0-25 11.2-25 25s11.2 25 25 25h551.3c13.8 0 25-11.2 25-25s-11.2-25-25-25zM452.2 448.6v-322c0-13.8-11.2-25-25-25s-25 11.2-25 25v322c0 13.8 11.2 25 25 25s25-11.2 25-25zM625.2 448.6v-322c0-13.8-11.2-25-25-25s-25 11.2-25 25v322c0 13.8 11.2 25 25 25s25-11.2 25-25z" horiz-adv-x="1025" /> |
| | | |
| | | |
| | | <glyph glyph-name="sousuo" unicode="" d="M501.6 871.7C262.1 899.8 45.3 728.4 17.3 489s143.3-456.3 382.8-484.3S856.3 148 884.4 387.4 741 843.7 501.6 871.7z m-95.4-814.2C196 82.1 45.5 272.5 70.1 482.8s215 360.7 425.3 336.1 360.7-215 336.1-425.3-215-360.7-425.3-336.1zM1005.2-16l-220 181.9c-10.6 8.8-26.4 7.3-35.2-3.3l-2.1-2.5c-8.8-10.6-7.3-26.4 3.3-35.2l220-181.9c10.6-8.8 26.4-7.3 35.2 3.3l2.1 2.5c8.9 10.6 7.4 26.4-3.3 35.2z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="fanhui" unicode="" d="M511.002727 893.207635C228.973899 893.207635 0.398909 664.632645 0.398909 382.60381800000005s228.57499-510.603818 510.603818-510.603818 510.603818 228.57499 510.603818 510.603818-228.57499 510.603818-510.603818 510.603817z m0-971.343981c-254.50409 0-460.740164 206.236073-460.740164 460.740164s206.236073 460.740164 460.740164 460.740163 460.740164-206.236073 460.740164-460.740163-206.236073-460.740164-460.740164-460.740164zM753.53954 357.67199100000005h-544.511102c-13.762369 0-24.931827 11.169459-24.931827 24.931827s11.169459 24.931827 24.931827 24.931827h544.511102c13.762369 0 24.931827-11.169459 24.931827-24.931827s-11.169459-24.931827-24.931827-24.931827zM829.033113 363.05726500000003l-198.557071-166.544604c-10.571095-8.87573-26.228282-7.479548-35.104012 3.091546-8.87573 10.571095-7.479548 26.228282 3.091546 35.104013L797.020647 401.352552c10.571095 8.87573 26.228282 7.479548 35.104012-3.091547 8.87573-10.571095 7.479548-26.328009-3.091546-35.20374zM829.033113 402.250097l-198.557071 166.544605c-10.571095 8.87573-26.228282 7.479548-35.104012-3.091547-8.87573-10.571095-7.479548-26.228282 3.091546-35.104012l198.557071-166.644332c10.571095-8.87573 26.228282-7.479548 35.104012 3.091547 8.87573 10.571095 7.479548 26.328009-3.091546 35.203739z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="cuowu" unicode="" d="M875.086452 742.269942C676.053818 941.302575 353.260522 941.302575 154.128323 742.269942s-199.032634-521.825929 0-720.958129 521.825929-199.032634 720.958129 0 199.032634 521.825929 0 720.958129zM725.836868 170.561396c-9.757478-9.757478-25.488922-9.757478-35.246399 0L514.557604 346.594261 338.624306 170.561396c-9.757478-9.757478-25.488922-9.757478-35.2464 0s-9.757478 25.488922 0 35.2464l176.032865 176.032864-176.032865 175.933299c-9.757478 9.757478-9.757478 25.488922 0 35.246399 9.757478 9.757478 25.488922 9.757478 35.2464 0l176.032864-176.032865 176.032865 176.032865c9.757478 9.757478 25.488922 9.757478 35.246399 0 9.757478-9.757478 9.757478-25.488922 0-35.246399L549.804004 381.84066 725.836868 205.807796c9.657912-9.757478 9.657912-25.488922 0-35.2464z" horiz-adv-x="1028" /> |
| | | |
| | | |
| | | <glyph glyph-name="zhengque" unicode="" d="M513.099356 895.400351c-282.634394 0-511.700176-229.065782-511.700176-511.700175s229.065782-511.700176 511.700176-511.700176 511.700176 229.065782 511.700176 511.700176S795.73375 895.400351 513.099356 895.400351z m225.567831-399.865703L461.429631 218.397033c-9.794261-9.794261-25.585009-9.794261-35.37927 0L287.631466 356.91587c-9.794261 9.794261-9.794261 25.585009 0 35.37927 9.794261 9.794261 25.585009 9.794261 35.37927 0l120.829202-120.929144 259.547921 259.547922c9.794261 9.794261 25.585009 9.794261 35.37927 0 9.69432-9.794261 9.69432-25.585009-0.099942-35.37927z" horiz-adv-x="1025" /> |
| | | |
| | | |
| | | <glyph glyph-name="jingshi" unicode="" d="M878.815746 744.39056C679.198314 943.908184 355.618456 943.908184 156.100832 744.39056S-43.416792 221.293078 156.100832 21.675646s523.097482-199.517624 722.714914 0 199.517624 523.097482 0 722.714914z m-385.361453-48.507036c27.547206 0 49.904358-22.357152 49.904358-49.904358s-22.357152-49.904358-49.904358-49.904358-49.904358 22.357152-49.904358 49.904358 22.357152 49.904358 49.904358 49.904358z m148.714987-600.848472c0-13.773603-11.178576-24.952179-24.952179-24.952179h-199.617432c-13.773603 0-24.952179 11.178576-24.952179 24.952179s11.178576 24.952179 24.952179 24.95218H492.056971v395.242516h-74.457302c-13.773603 0-24.952179 11.178576-24.952179 24.952179s11.178576 24.952179 24.952179 24.952179h99.808716c13.773603 0 24.952179-11.178576 24.952179-24.952179v-420.194695h74.856537c13.773603 0 24.952179-11.178576 24.952179-24.95218z" horiz-adv-x="1030" /> |
| | | |
| | | |
| | | <glyph glyph-name="xitongpeizhi" unicode="" d="M214 209c-55.2 0-100-44.8-100-100s44.8-100 100-100 100 44.8 100 100-44.8 100-100 100z m0-150c-27.6 0-50 22.4-50 50s22.4 50 50 50 50-22.4 50-50-22.4-50-50-50zM239 167V871c0 13.8-11.2 25-25 25s-25-11.2-25-25v-704h50zM189 50v-153c0-13.8 11.2-25 25-25s25 11.2 25 25V50h-50zM517 452c-55.2 0-100-44.8-100-100s44.8-100 100-100 100 44.8 100 100-44.8 100-100 100z m0-150c-27.6 0-50 22.4-50 50s22.4 50 50 50 50-22.4 50-50-22.4-50-50-50zM542 430V871c0 13.8-11.2 25-25 25s-25-11.2-25-25v-441h50zM492 279v-382c0-13.8 11.2-25 25-25s25 11.2 25 25V279h-50zM910 659c0 55.2-44.8 100-100 100s-100-44.8-100-100 44.8-100 100-100 100 44.8 100 100z m-50 0c0-27.6-22.4-50-50-50s-50 22.4-50 50 22.4 50 50 50 50-22.4 50-50zM835 601v-704c0-13.8-11.2-25-25-25s-25 11.2-25 25V601h50zM785 718V871c0 13.8 11.2 25 25 25s25-11.2 25-25v-153h-50z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="shujuchaxun" unicode="" d="M477-78H108.8c-13.8 0-25 11.2-25 25V821c0 13.8 11.2 25 25 25h750c13.8 0 25-11.2 25-25v-469h50V846c0 27.6-22.4 50-50 50h-800c-27.6 0-50-22.4-50-50v-924c0-27.6 22.4-50 50-50H477v50zM909 354m-25 0a25 25 0 1 1 50 0 25 25 0 1 1-50 0ZM482-103m-25 0a25 25 0 1 1 50 0 25 25 0 1 1-50 0ZM767 647H169c-13.7 0-25 11.2-25 25 0 13.7 11.2 25 25 25h598c13.8 0 25-11.2 25-25s-11.2-25-25-25zM767 385.5H169c-13.7 0-25 11.3-25 25s11.2 25 25 25h598c13.8 0 25-11.3 25-25 0-13.8-11.2-25-25-25zM474 124H184c-13.7 0-25 11.3-25 25 0 13.8 11.2 25 25 25h290c13.7 0 25-11.3 25-25 0-13.8-11.2-25-25-25zM895.8-118.9l-97.5 110.8c-9.1 10.3-8.1 26.2 2.2 35.3 10.3 9.1 26.2 8.1 35.3-2.2l97.5-110.8c9.1-10.3 8.1-26.2-2.2-35.3-10.3-9.1-26.2-8.1-35.3 2.2zM795.7 295.3C708 336 604 297.9 563.3 210.2c-40.7-87.7-2.6-191.7 85.1-232.4 87.7-40.7 191.7-2.6 232.4 85.1 40.7 87.7 2.6 191.8-85.1 232.4zM669.5 23.2c-62.6 29-89.8 103.4-60.8 166S712 279 774.7 250c62.6-29 89.8-103.4 60.8-166-29.1-62.6-103.4-89.9-166-60.8z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="baobiaoshuchu" unicode="" d="M471.539512-102.52487799999994m-25.475122 0a25.475122 25.475122 0 1 1 50.950244 0 25.475122 25.475122 0 1 1-50.950244 0ZM913.108293 353.03024400000004m-25.475122 0a25.475122 25.475122 0 1 1 50.950244 0 25.475122 25.475122 0 1 1-50.950244 0ZM888.632195 896H313.194146l-41.959024-49.95122h592.421463c13.786537 0 24.97561-11.189073 24.97561-24.975609v-472.538537h49.95122V846.04878c0 27.573073-22.378146 49.95122-49.95122 49.95122zM39.461463-43.08292700000004c0-61.539902 22.378146-83.918049 49.95122-83.918049h380.628293v49.95122H114.388293c-13.786537 0-24.97561 11.189073-24.97561 24.97561V642.247805l-47.953171-19.980488M173.330732 755.637073L313.194146 896v-273.732683H39.461463zM579.933659 302.579512H261.244878c-13.786537 0-24.97561 11.189073-24.97561 24.97561s11.189073 24.97561 24.97561 24.97561h318.688781c13.786537 0 24.97561-11.189073 24.975609-24.97561s-11.189073-24.97561-24.975609-24.97561zM705.810732 513.373659H261.244878c-13.786537 0-24.97561 11.189073-24.97561 24.975609s11.189073 24.97561 24.97561 24.97561h444.565854c13.786537 0 24.97561-11.189073 24.975609-24.97561s-11.189073-24.97561-24.975609-24.975609zM751.266341 274.60682899999995c-110.392195 0-199.804878-89.412683-199.804878-199.804878s89.412683-199.804878 199.804878-199.804878 199.804878 89.412683 199.804879 199.804878-89.412683 199.804878-199.804879 199.804878z m0-349.658536c-82.71922 0-149.853659 67.134439-149.853658 149.853658s67.134439 149.853659 149.853658 149.853659 149.853659-67.134439 149.853659-149.853659-67.134439-149.853659-149.853659-149.853658zM845.674146 36.839023999999995H655.859512c-13.786537 0-24.97561 11.189073-24.97561 24.97561s11.189073 24.97561 24.97561 24.97561h189.814634c13.786537 0 24.97561-11.189073 24.97561-24.97561s-11.189073-24.97561-24.97561-24.97561zM829.090341 48.827316999999994L750.766829 109.26829299999997c-10.889366 8.391805-12.887415 24.076488-4.495609 35.065756 8.391805 10.889366 24.076488 12.887415 35.065756 4.49561l78.323512-60.440976c10.889366-8.391805 12.887415-24.076488 4.49561-35.065756-8.491707-10.989268-24.17639-12.987317-35.065757-4.49561zM862.457756 44.63141499999995L786.931512-15.110243999999966c-10.789463-8.59161-26.574049-6.693463-35.065756 4.096l-0.199805 0.199805c-8.59161 10.789463-6.693463 26.574049 4.096 35.065756l75.626147 59.741659c10.789463 8.59161 26.574049 6.693463 35.065756-4.096l0.199805-0.199805c8.491707-10.789463 6.693463-26.474146-4.195903-35.065756z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-" unicode="" d="M512 896C230.4 896 0 665.6 0 384s230.4-512 512-512 512 230.4 512 512S793.6 896 512 896z m292.571429-585.142857H219.428571v146.285714h585.142858v-146.285714z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-1" unicode="" d="M512 896C230.4 896 0 665.6 0 384s230.4-512 512-512 512 230.4 512 512S793.6 896 512 896z m-73.142857-797.257143l-270.628572 270.628572 102.4 102.4 168.228572-168.228572 314.514286 314.514286 102.4-102.4L438.857143 98.742857z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-2" unicode="" d="M512 896C230.4 896 0 665.6 0 384s230.4-512 512-512 512 230.4 512 512S793.6 896 512 896z m292.571429-585.142857h-219.428572v-219.428572h-146.285714v219.428572H219.428571v146.285714h219.428572V676.571429h146.285714v-219.428572h219.428572v-146.285714z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-3" unicode="" d="M1024 676.571429H0v-146.285715h146.285714v-585.142857c0-40.228571 32.914286-73.142857 73.142857-73.142857h585.142858c40.228571 0 73.142857 32.914286 73.142857 73.142857V530.285714h146.285714V676.571429zM365.714286 18.285714H292.571429V530.285714h73.142857v-512z m182.857143 0h-73.142858V530.285714h73.142858v-512z m182.857142 0h-73.142857V530.285714h73.142857v-512z m0 731.428572H292.571429V896h438.857142v-146.285714z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-4" unicode="" d="M658.285714 683.885714l153.6-153.6-658.285714-658.285714H0v153.6l658.285714 658.285714z m343.771429 87.771429L899.657143 874.057143c-14.628571 14.628571-36.571429 14.628571-51.2 0l-120.685714-120.685714 153.6-153.6 120.685714 120.685714c14.628571 14.628571 14.628571 36.571429 0 51.2z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-5" unicode="" d="M512 676.571429V896L219.428571 603.428571l292.571429-292.571428v219.428571c142.628571 0 256-113.371429 256-256s-113.371429-256-256-256-256 113.371429-256 256H109.714286c0-223.085714 179.2-402.285714 402.285714-402.285714s402.285714 179.2 402.285714 402.285714S735.085714 676.571429 512 676.571429z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-6" unicode="" d="M872.768683 327.516014c3.644128 18.220641 3.644128 36.441281 3.644128 58.30605s-3.644128 36.441281-3.644128 58.30605l112.967972 83.814946c14.576512 10.932384 18.220641 32.797153 10.932384 47.373666l-76.52669 134.83274c-10.932384 14.576512-29.153025 21.864769-47.373666 14.576513l-127.544484-54.661922c-29.153025 25.508897-61.950178 43.729537-98.391459 58.30605L628.6121 866.846975c-7.288256 14.576512-21.864769 29.153025-40.08541 29.153025h-153.05338c-18.220641 0-32.797153-14.576512-36.441282-32.797153l-18.22064-138.476868c-36.441281-14.576512-69.238434-32.797153-98.391459-58.30605L154.875445 724.725979c-18.220641 7.288256-36.441281 0-47.373666-14.576513L30.975089 575.316726c-10.932384-14.576512-3.644128-36.441281 10.932384-47.373666l112.967972-83.814946C151.231317 422.263345 147.587189 404.042705 147.587189 385.822064s3.644128-36.441281 3.644128-58.30605L38.263345 243.701068c-14.576512-10.932384-18.220641-32.797153-10.932384-47.373666l76.52669-134.83274c10.932384-14.576512 29.153025-21.864769 47.373666-14.576513l127.544484 54.661922c29.153025-25.508897 61.950178-43.729537 98.391459-58.30605l18.22064-138.476868c3.644128-18.220641 18.220641-32.797153 36.441281-32.797153H584.882562c18.220641 0 32.797153 14.576512 36.441281 32.797153l18.220641 138.476868c36.441281 14.576512 69.238434 32.797153 98.391459 58.30605l127.544484-54.661922c18.220641-7.288256 36.441281 0 47.373666 14.576513l76.52669 134.83274c10.932384 14.576512 3.644128 36.441281-10.932384 47.373666l-105.679716 83.814946zM512 203.615658c-102.035587 0-182.206406 80.170819-182.206406 182.206406s80.170819 182.206406 182.206406 182.206406 182.206406-80.170819 182.206406-182.206406-80.170819-182.206406-182.206406-182.206406z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-7" unicode="" d="M808.228571 384l-475.428571-479.085714-80.457143 80.457143 402.285714 398.628571-402.285714 398.628571L332.8 863.085714z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-8" unicode="" d="M512 87.771429L32.914286 563.2l80.457143 80.457143 398.628571-402.285714 398.628571 402.285714 80.457143-80.457143z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-9" unicode="" d="M146.285714 530.285714L512 896l365.714286-365.714286zM877.714286 237.714286L512-128 146.285714 237.714286z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-10" unicode="" d="M815.542857 468.114286l-277.942857-277.942857c-14.628571-14.628571-36.571429-14.628571-51.2 0l-277.942857 277.942857c-21.942857 21.942857-7.314286 62.171429 25.6 62.171428h555.885714c32.914286 0 47.542857-40.228571 25.6-62.171428z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | <glyph glyph-name="-11" unicode="" d="M292.571429 310.857143v-219.428572l-292.571429 292.571429 292.571429 292.571429v-219.428572h438.857142v-146.285714H292.571429zM877.714286 896h-292.571429c-80.457143 0-146.285714-65.828571-146.285714-146.285714v-146.285715h146.285714V749.714286h292.571429v-731.428572h-292.571429v146.285715h-146.285714v-146.285715c0-80.457143 65.828571-146.285714 146.285714-146.285714h292.571429c80.457143 0 146.285714 65.828571 146.285714 146.285714V749.714286c0 80.457143-65.828571 146.285714-146.285714 146.285714z" horiz-adv-x="1024" /> |
| | | |
| | | |
| | | |
| | | |
| | | </font> |
| | | </defs></svg> |
New file |
| | |
| | | @font-face {font-family: "iconfont"; |
| | | src: url('iconfont.eot?t=1554181418589'); /* IE9 */ |
| | | src: url('iconfont.eot?t=1554181418589#iefix') format('embedded-opentype'), /* IE6-IE8 */ |
| | | url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'), |
| | | url('iconfont.woff?t=1554181418589') format('woff'), |
| | | url('iconfont.ttf?t=1554181418589') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ |
| | | url('iconfont.svg?t=1554181418589#iconfont') format('svg'); /* iOS 4.1- */ |
| | | } |
| | | |
| | | .iconfont { |
| | | font-family: "iconfont" !important; |
| | | font-size: 16px; |
| | | font-style: normal; |
| | | -webkit-font-smoothing: antialiased; |
| | | -moz-osx-font-smoothing: grayscale; |
| | | } |
| | | |
| | | .icon-communityfill:before { |
| | | content: "\e740"; |
| | | } |
| | | |
| | | .icon-community:before { |
| | | content: "\e741"; |
| | | } |
| | | |
| | | .icon-lingdang:before { |
| | | content: "\f01f5"; |
| | | } |
| | | |
| | | .icon-like:before { |
| | | content: "\e69c"; |
| | | } |
| | | |
| | | .icon-likefill:before { |
| | | content: "\e69d"; |
| | | } |
| | | |
| | | .icon-plane:before { |
| | | content: "\e6b1"; |
| | | } |
| | | |
| | | .icon-planefill:before { |
| | | content: "\e6b2"; |
| | | } |
| | | |
| | | .icon-huiyuan:before { |
| | | content: "\e61d"; |
| | | } |
| | | |
| | | .icon-biaoxingfill:before { |
| | | content: "\e732"; |
| | | } |
| | | |
| | | .icon-biaoxing:before { |
| | | content: "\e733"; |
| | | } |
| | | |
| | | .icon-dianpufill:before { |
| | | content: "\e735"; |
| | | } |
| | | |
| | | .icon-dianpu:before { |
| | | content: "\e736"; |
| | | } |
| | | |
| | | .icon-gouwuchefill:before { |
| | | content: "\e73c"; |
| | | } |
| | | |
| | | .icon-gouwuche:before { |
| | | content: "\e73d"; |
| | | } |
| | | |
| | | .icon-kefufill:before { |
| | | content: "\e742"; |
| | | } |
| | | |
| | | .icon-kefu:before { |
| | | content: "\e743"; |
| | | } |
| | | |
| | | .icon-liuyanfill:before { |
| | | content: "\e744"; |
| | | } |
| | | |
| | | .icon-liuyan:before { |
| | | content: "\e745"; |
| | | } |
| | | |
| | | .icon-pengyoufill:before { |
| | | content: "\e746"; |
| | | } |
| | | |
| | | .icon-pengyou:before { |
| | | content: "\e747"; |
| | | } |
| | | |
| | | .icon-shouyefill:before { |
| | | content: "\e750"; |
| | | } |
| | | |
| | | .icon-shouye:before { |
| | | content: "\e751"; |
| | | } |
| | | |
| | | .icon-tongzhifill:before { |
| | | content: "\e758"; |
| | | } |
| | | |
| | | .icon-tongzhi:before { |
| | | content: "\e759"; |
| | | } |
| | | |
| | | .icon-xihuanfill:before { |
| | | content: "\e760"; |
| | | } |
| | | |
| | | .icon-xihuan:before { |
| | | content: "\e761"; |
| | | } |
| | | |
| | | .icon-xinxifill:before { |
| | | content: "\e762"; |
| | | } |
| | | |
| | | .icon-xinxi:before { |
| | | content: "\e763"; |
| | | } |
| | | |
| | | .icon-yonghufill:before { |
| | | content: "\e787"; |
| | | } |
| | | |
| | | .icon-yonghu:before { |
| | | content: "\e788"; |
| | | } |
| | | |
| | | .icon-zantongfill:before { |
| | | content: "\e793"; |
| | | } |
| | | |
| | | .icon-zantong:before { |
| | | content: "\e794"; |
| | | } |
| | | |
| | | .icon-leimupinleifenleileibie2:before { |
| | | content: "\e7f8"; |
| | | } |
| | | |
| | | .icon-leimupinleifenleileibie:before { |
| | | content: "\e7f9"; |
| | | } |
| | | |
| | | .icon-edit:before { |
| | | content: "\e61c"; |
| | | } |
| | | |
| | | .icon-917caidan_fenlei:before { |
| | | content: "\e685"; |
| | | } |
| | | |
| | | .icon-weixuanzhong-01:before { |
| | | content: "\e61a"; |
| | | } |
| | | |
| | | .icon-xuanzhong:before { |
| | | content: "\e62d"; |
| | | } |
| | | |
| | | .icon-shujudaping:before { |
| | | content: "\e748"; |
| | | } |
| | | |
| | | .icon-yigouxuan:before { |
| | | content: "\e63d"; |
| | | } |
| | | |
| | | .icon-weigouxuan:before { |
| | | content: "\e63e"; |
| | | } |
| | | |
| | | .icon-phone_light:before { |
| | | content: "\e7fe"; |
| | | } |
| | | |
| | | .icon-Myassessment:before { |
| | | content: "\e649"; |
| | | } |
| | | |
| | | .icon-Myquestionandansw:before { |
| | | content: "\e64a"; |
| | | } |
| | | |
| | | .icon-tuichu:before { |
| | | content: "\e6dd"; |
| | | } |
| | | |
| | | .icon-caidan:before { |
| | | content: "\e613"; |
| | | } |
| | | |
| | | .icon-icon_alipay_line:before { |
| | | content: "\eb90"; |
| | | } |
| | | |
| | | .icon-icon_addressbook:before { |
| | | content: "\eb8f"; |
| | | } |
| | | |
| | | .icon-icon_at:before { |
| | | content: "\eb91"; |
| | | } |
| | | |
| | | .icon-icon_coinpurse_line:before { |
| | | content: "\eb92"; |
| | | } |
| | | |
| | | .icon-icon_details:before { |
| | | content: "\eb93"; |
| | | } |
| | | |
| | | .icon-icon_delete:before { |
| | | content: "\eb94"; |
| | | } |
| | | |
| | | .icon-icon_GPS:before { |
| | | content: "\eb95"; |
| | | } |
| | | |
| | | .icon-icon_horn:before { |
| | | content: "\eb96"; |
| | | } |
| | | |
| | | .icon-icon_im_voice:before { |
| | | content: "\eb97"; |
| | | } |
| | | |
| | | .icon-icon_notice:before { |
| | | content: "\eb99"; |
| | | } |
| | | |
| | | .icon-icon_phone:before { |
| | | content: "\eb9a"; |
| | | } |
| | | |
| | | .icon-weibiaoti-:before { |
| | | content: "\e651"; |
| | | } |
| | | |
| | | .icon-zhihang:before { |
| | | content: "\e654"; |
| | | } |
| | | |
| | | .icon-baocun:before { |
| | | content: "\e655"; |
| | | } |
| | | |
| | | .icon-zhongzhi:before { |
| | | content: "\e657"; |
| | | } |
| | | |
| | | .icon-shanchu:before { |
| | | content: "\e658"; |
| | | } |
| | | |
| | | .icon-sousuo:before { |
| | | content: "\e659"; |
| | | } |
| | | |
| | | .icon-fanhui:before { |
| | | content: "\e65a"; |
| | | } |
| | | |
| | | .icon-cuowu:before { |
| | | content: "\e65b"; |
| | | } |
| | | |
| | | .icon-zhengque:before { |
| | | content: "\e65c"; |
| | | } |
| | | |
| | | .icon-jingshi:before { |
| | | content: "\e65e"; |
| | | } |
| | | |
| | | .icon-xitongpeizhi:before { |
| | | content: "\e65f"; |
| | | } |
| | | |
| | | .icon-shujuchaxun:before { |
| | | content: "\e660"; |
| | | } |
| | | |
| | | .icon-baobiaoshuchu:before { |
| | | content: "\e661"; |
| | | } |
| | | |
| | | .icon--:before { |
| | | content: "\e61e"; |
| | | } |
| | | |
| | | .icon--1:before { |
| | | content: "\e61f"; |
| | | } |
| | | |
| | | .icon--2:before { |
| | | content: "\e620"; |
| | | } |
| | | |
| | | .icon--3:before { |
| | | content: "\e621"; |
| | | } |
| | | |
| | | .icon--4:before { |
| | | content: "\e622"; |
| | | } |
| | | |
| | | .icon--5:before { |
| | | content: "\e623"; |
| | | } |
| | | |
| | | .icon--6:before { |
| | | content: "\e624"; |
| | | } |
| | | |
| | | .icon--7:before { |
| | | content: "\e625"; |
| | | } |
| | | |
| | | .icon--8:before { |
| | | content: "\e626"; |
| | | } |
| | | |
| | | .icon--9:before { |
| | | content: "\e627"; |
| | | } |
| | | |
| | | .icon--10:before { |
| | | content: "\e628"; |
| | | } |
| | | |
| | | .icon--11:before { |
| | | content: "\e629"; |
| | | } |
| | | |
New file |
| | |
| | | |
| | | <template> |
| | | <div class="fonts"> |
| | | <span><i :class="getIcon" :style="'font-size:'+getSize" />{{ content }}</span> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | |
| | | export default { |
| | | components: { |
| | | }, |
| | | props: { |
| | | content: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | icons: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | fontsize: { |
| | | type: String, |
| | | default: '14' |
| | | } |
| | | }, |
| | | computed: { |
| | | getIcon() { |
| | | return 'iconfont ' + this.icons |
| | | }, |
| | | getSize() { |
| | | return this.fontsize + 'px' |
| | | } |
| | | }, |
| | | methods: { |
| | | } |
| | | } |
| | | </script> |
| | | <style src="./index.css"></style> |
| | | <style scoped> |
| | | .fonts{ |
| | | color: black; |
| | | font-size: 13px; |
| | | } |
| | | </style> |
| | |
| | | <slot /> |
| | | </div> |
| | | </div> |
| | | <!-- eslint-disable-next-line --> |
| | | <div :style="{backgroundImage: `url(${image})`}" class="pan-thumb"></div> |
| | | <img :src="image" class="pan-thumb"> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | .pan-thumb { |
| | | width: 100%; |
| | | height: 100%; |
| | | background-position: center center; |
| | | background-size: cover; |
| | | background-size: 100%; |
| | | border-radius: 50%; |
| | | overflow: hidden; |
| | | position: absolute; |
| | |
| | | transition: all 0.3s ease-in-out; |
| | | } |
| | | |
| | | /* .pan-thumb:after { |
| | | .pan-thumb:after { |
| | | content: ''; |
| | | width: 8px; |
| | | height: 8px; |
| | |
| | | margin: -4px 0 0 -4px; |
| | | background: radial-gradient(ellipse at center, rgba(14, 14, 14, 1) 0%, rgba(125, 126, 125, 1) 100%); |
| | | box-shadow: 0 0 1px rgba(255, 255, 255, 0.9); |
| | | } */ |
| | | } |
| | | |
| | | .pan-info { |
| | | position: absolute; |
New file |
| | |
| | | <template> |
| | | <el-breadcrumb class="app-breadcrumb" separator="/"> |
| | | <transition-group name="breadcrumb"> |
| | | <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path"> |
| | | <span v-if="item.redirect === 'noRedirect' || index == levelList.length - 1" class="no-redirect">{{ item.meta.title }}</span> |
| | | <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a> |
| | | </el-breadcrumb-item> |
| | | </transition-group> |
| | | </el-breadcrumb> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | levelList: null |
| | | } |
| | | }, |
| | | watch: { |
| | | $route(route) { |
| | | // if you go to the redirect page, do not update the breadcrumbs |
| | | if (route.path.startsWith('/redirect/')) { |
| | | return |
| | | } |
| | | this.getBreadcrumb() |
| | | } |
| | | }, |
| | | created() { |
| | | this.getBreadcrumb() |
| | | }, |
| | | methods: { |
| | | getBreadcrumb() { |
| | | // only show routes with meta.title |
| | | let matched = this.$route.matched.filter(item => item.meta && item.meta.title) |
| | | const first = matched[0] |
| | | |
| | | if (!this.isDashboard(first)) { |
| | | matched = [{ path: '/index', meta: { title: '首页' }}].concat(matched) |
| | | } |
| | | |
| | | this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false) |
| | | }, |
| | | isDashboard(route) { |
| | | const name = route && route.name |
| | | if (!name) { |
| | | return false |
| | | } |
| | | return name.trim() === 'Index' |
| | | }, |
| | | handleLink(item) { |
| | | const { redirect, path } = item |
| | | if (redirect) { |
| | | this.$router.push(redirect) |
| | | return |
| | | } |
| | | this.$router.push(path) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .app-breadcrumb.el-breadcrumb { |
| | | display: inline-block; |
| | | font-size: 14px; |
| | | line-height: 50px; |
| | | margin-left: 8px; |
| | | |
| | | .no-redirect { |
| | | color: #97a8be; |
| | | cursor: text; |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div style="padding: 0 15px;" @click="toggleClick"> |
| | | <svg |
| | | :class="{'is-active':isActive}" |
| | | class="hamburger" |
| | | viewBox="0 0 1024 1024" |
| | | xmlns="http://www.w3.org/2000/svg" |
| | | width="64" |
| | | height="64" |
| | | > |
| | | <path d="M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z" /> |
| | | </svg> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'Hamburger', |
| | | props: { |
| | | isActive: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }, |
| | | methods: { |
| | | toggleClick() { |
| | | this.$emit('toggleClick') |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .hamburger { |
| | | display: inline-block; |
| | | vertical-align: middle; |
| | | width: 20px; |
| | | height: 20px; |
| | | } |
| | | |
| | | .hamburger.is-active { |
| | | transform: rotate(180deg); |
| | | } |
| | | </style> |
File was renamed from src/components/IconSelect/requireIcons.js |
| | |
| | | |
| | | const req = require.context('../../assets/icons/svg', false, /\.svg$/) |
| | | const req = require.context('../../../assets/icons/svg', false, /\.svg$/) |
| | | const requireAll = requireContext => requireContext.keys() |
| | | |
| | | const re = /\.\/(.*)\.svg/ |
New file |
| | |
| | | <template> |
| | | <div :style="{zIndex:zIndex,height:height,width:width}" class="pan-item"> |
| | | <div class="pan-info"> |
| | | <div class="pan-info-roles-container"> |
| | | <slot /> |
| | | </div> |
| | | </div> |
| | | <!-- eslint-disable-next-line --> |
| | | <div :style="{backgroundImage: `url(${image})`}" class="pan-thumb"></div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'PanThumb', |
| | | props: { |
| | | image: { |
| | | type: String, |
| | | required: true |
| | | }, |
| | | zIndex: { |
| | | type: Number, |
| | | default: 1 |
| | | }, |
| | | width: { |
| | | type: String, |
| | | default: '150px' |
| | | }, |
| | | height: { |
| | | type: String, |
| | | default: '150px' |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .pan-item { |
| | | width: 200px; |
| | | height: 200px; |
| | | border-radius: 50%; |
| | | display: inline-block; |
| | | position: relative; |
| | | cursor: default; |
| | | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); |
| | | } |
| | | |
| | | .pan-info-roles-container { |
| | | padding: 20px; |
| | | text-align: center; |
| | | } |
| | | |
| | | .pan-thumb { |
| | | width: 100%; |
| | | height: 100%; |
| | | background-position: center center; |
| | | background-size: cover; |
| | | border-radius: 50%; |
| | | overflow: hidden; |
| | | position: absolute; |
| | | transform-origin: 95% 40%; |
| | | transition: all 0.3s ease-in-out; |
| | | } |
| | | |
| | | /* .pan-thumb:after { |
| | | content: ''; |
| | | width: 8px; |
| | | height: 8px; |
| | | position: absolute; |
| | | border-radius: 50%; |
| | | top: 40%; |
| | | left: 95%; |
| | | margin: -4px 0 0 -4px; |
| | | background: radial-gradient(ellipse at center, rgba(14, 14, 14, 1) 0%, rgba(125, 126, 125, 1) 100%); |
| | | box-shadow: 0 0 1px rgba(255, 255, 255, 0.9); |
| | | } */ |
| | | |
| | | .pan-info { |
| | | position: absolute; |
| | | width: inherit; |
| | | height: inherit; |
| | | border-radius: 50%; |
| | | overflow: hidden; |
| | | box-shadow: inset 0 0 0 5px rgba(0, 0, 0, 0.05); |
| | | } |
| | | |
| | | .pan-info h3 { |
| | | color: #fff; |
| | | text-transform: uppercase; |
| | | position: relative; |
| | | letter-spacing: 2px; |
| | | font-size: 18px; |
| | | margin: 0 60px; |
| | | padding: 22px 0 0 0; |
| | | height: 85px; |
| | | font-family: 'Open Sans', Arial, sans-serif; |
| | | text-shadow: 0 0 1px #fff, 0 1px 2px rgba(0, 0, 0, 0.3); |
| | | } |
| | | |
| | | .pan-info p { |
| | | color: #fff; |
| | | padding: 10px 5px; |
| | | font-style: italic; |
| | | margin: 0 30px; |
| | | font-size: 12px; |
| | | border-top: 1px solid rgba(255, 255, 255, 0.5); |
| | | } |
| | | |
| | | .pan-info p a { |
| | | display: block; |
| | | color: #333; |
| | | width: 80px; |
| | | height: 80px; |
| | | background: rgba(255, 255, 255, 0.3); |
| | | border-radius: 50%; |
| | | color: #fff; |
| | | font-style: normal; |
| | | font-weight: 700; |
| | | text-transform: uppercase; |
| | | font-size: 9px; |
| | | letter-spacing: 1px; |
| | | padding-top: 24px; |
| | | margin: 7px auto 0; |
| | | font-family: 'Open Sans', Arial, sans-serif; |
| | | opacity: 0; |
| | | transition: transform 0.3s ease-in-out 0.2s, opacity 0.3s ease-in-out 0.2s, background 0.2s linear 0s; |
| | | transform: translateX(60px) rotate(90deg); |
| | | } |
| | | |
| | | .pan-info p a:hover { |
| | | background: rgba(255, 255, 255, 0.5); |
| | | } |
| | | |
| | | .pan-item:hover .pan-thumb { |
| | | transform: rotate(-110deg); |
| | | } |
| | | |
| | | .pan-item:hover .pan-info p a { |
| | | opacity: 1; |
| | | transform: translateX(0px) rotate(0deg); |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <svg-icon :icon-class="isFullscreen?'exit-fullscreen':'fullscreen'" @click="click" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import screenfull from 'screenfull' |
| | | |
| | | export default { |
| | | name: 'Screenfull', |
| | | data() { |
| | | return { |
| | | isFullscreen: false |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.init() |
| | | }, |
| | | beforeDestroy() { |
| | | this.destroy() |
| | | }, |
| | | methods: { |
| | | click() { |
| | | if (!screenfull.isEnabled) { |
| | | this.$message({ message: '你的浏览器不支持全屏', type: 'warning' }) |
| | | return false |
| | | } |
| | | screenfull.toggle() |
| | | }, |
| | | change() { |
| | | this.isFullscreen = screenfull.isFullscreen |
| | | }, |
| | | init() { |
| | | if (screenfull.isEnabled) { |
| | | screenfull.on('change', this.change) |
| | | } |
| | | }, |
| | | destroy() { |
| | | if (screenfull.isEnabled) { |
| | | screenfull.off('change', this.change) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .screenfull-svg { |
| | | display: inline-block; |
| | | cursor: pointer; |
| | | fill: #5a5e66;; |
| | | width: 20px; |
| | | height: 20px; |
| | | vertical-align: 10px; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" /> |
| | | <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners"> |
| | | <use :xlink:href="iconName" /> |
| | | </svg> |
| | | </template> |
| | | |
| | | <script> |
| | | import { isExternal } from '@/utils/validate' |
| | | |
| | | export default { |
| | | name: 'SvgIcon', |
| | | props: { |
| | | iconClass: { |
| | | type: String, |
| | | required: true |
| | | }, |
| | | className: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }, |
| | | computed: { |
| | | isExternal() { |
| | | return isExternal(this.iconClass) |
| | | }, |
| | | iconName() { |
| | | return `#icon-${this.iconClass}` |
| | | }, |
| | | svgClass() { |
| | | if (this.className) { |
| | | return 'svg-icon ' + this.className |
| | | } else { |
| | | return 'svg-icon' |
| | | } |
| | | }, |
| | | styleExternalIcon() { |
| | | return { |
| | | mask: `url(${this.iconClass}) no-repeat 50% 50%`, |
| | | '-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%` |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .svg-icon { |
| | | width: 1em; |
| | | height: 1em; |
| | | vertical-align: -0.15em; |
| | | fill: currentColor; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .svg-external-icon { |
| | | background-color: currentColor; |
| | | mask-size: cover!important; |
| | | display: inline-block; |
| | | } |
| | | </style> |
| | |
| | | }, |
| | | methods: { |
| | | click() { |
| | | if (!screenfull.isEnabled) { |
| | | this.$message({ message: '你的浏览器不支持全屏', type: 'warning' }) |
| | | if (!screenfull.enabled) { |
| | | this.$message({ |
| | | message: 'you browser can not work', |
| | | type: 'warning' |
| | | }) |
| | | return false |
| | | } |
| | | screenfull.toggle() |
| | |
| | | this.isFullscreen = screenfull.isFullscreen |
| | | }, |
| | | init() { |
| | | if (screenfull.isEnabled) { |
| | | if (screenfull.enabled) { |
| | | screenfull.on('change', this.change) |
| | | } |
| | | }, |
| | | destroy() { |
| | | if (screenfull.isEnabled) { |
| | | if (screenfull.enabled) { |
| | | screenfull.off('change', this.change) |
| | | } |
| | | } |
| | |
| | | <template> |
| | | <div v-if="isExternal" :style="styleExternalIcon" class="svg-external-icon svg-icon" v-on="$listeners" /> |
| | | <svg v-else :class="svgClass" aria-hidden="true" v-on="$listeners"> |
| | | <svg :class="svgClass" aria-hidden="true" v-on="$listeners"> |
| | | <use :xlink:href="iconName" /> |
| | | </svg> |
| | | </template> |
| | | |
| | | <script> |
| | | import { isExternal } from '@/utils/validate' |
| | | |
| | | export default { |
| | | name: 'SvgIcon', |
| | | props: { |
| | |
| | | } |
| | | }, |
| | | computed: { |
| | | isExternal() { |
| | | return isExternal(this.iconClass) |
| | | }, |
| | | iconName() { |
| | | return `#icon-${this.iconClass}` |
| | | }, |
| | |
| | | return 'svg-icon ' + this.className |
| | | } else { |
| | | return 'svg-icon' |
| | | } |
| | | }, |
| | | styleExternalIcon() { |
| | | return { |
| | | mask: `url(${this.iconClass}) no-repeat 50% 50%`, |
| | | '-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%` |
| | | } |
| | | } |
| | | } |
| | |
| | | vertical-align: -0.15em; |
| | | fill: currentColor; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .svg-external-icon { |
| | | background-color: currentColor; |
| | | mask-size: cover!important; |
| | | display: inline-block; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <a :class="className" class="link--mallki" href="#"> |
| | | {{ text }} |
| | | <span :data-letters="text" /> |
| | | <span :data-letters="text" /> |
| | | </a> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | className: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | text: { |
| | | type: String, |
| | | default: 'vue-element-admin' |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | /* Mallki */ |
| | | |
| | | .link--mallki { |
| | | font-weight: 800; |
| | | color: #4dd9d5; |
| | | font-family: 'Dosis', sans-serif; |
| | | -webkit-transition: color 0.5s 0.25s; |
| | | transition: color 0.5s 0.25s; |
| | | overflow: hidden; |
| | | position: relative; |
| | | display: inline-block; |
| | | line-height: 1; |
| | | outline: none; |
| | | text-decoration: none; |
| | | } |
| | | |
| | | .link--mallki:hover { |
| | | -webkit-transition: none; |
| | | transition: none; |
| | | color: transparent; |
| | | } |
| | | |
| | | .link--mallki::before { |
| | | content: ''; |
| | | width: 100%; |
| | | height: 6px; |
| | | margin: -3px 0 0 0; |
| | | background: #3888fa; |
| | | position: absolute; |
| | | left: 0; |
| | | top: 50%; |
| | | -webkit-transform: translate3d(-100%, 0, 0); |
| | | transform: translate3d(-100%, 0, 0); |
| | | -webkit-transition: -webkit-transform 0.4s; |
| | | transition: transform 0.4s; |
| | | -webkit-transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1); |
| | | transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1); |
| | | } |
| | | |
| | | .link--mallki:hover::before { |
| | | -webkit-transform: translate3d(100%, 0, 0); |
| | | transform: translate3d(100%, 0, 0); |
| | | } |
| | | |
| | | .link--mallki span { |
| | | position: absolute; |
| | | height: 50%; |
| | | width: 100%; |
| | | left: 0; |
| | | top: 0; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | .link--mallki span::before { |
| | | content: attr(data-letters); |
| | | color: red; |
| | | position: absolute; |
| | | left: 0; |
| | | width: 100%; |
| | | color: #3888fa; |
| | | -webkit-transition: -webkit-transform 0.5s; |
| | | transition: transform 0.5s; |
| | | } |
| | | |
| | | .link--mallki span:nth-child(2) { |
| | | top: 50%; |
| | | } |
| | | |
| | | .link--mallki span:first-child::before { |
| | | top: 0; |
| | | -webkit-transform: translate3d(0, 100%, 0); |
| | | transform: translate3d(0, 100%, 0); |
| | | } |
| | | |
| | | .link--mallki span:nth-child(2)::before { |
| | | bottom: 0; |
| | | -webkit-transform: translate3d(0, -100%, 0); |
| | | transform: translate3d(0, -100%, 0); |
| | | } |
| | | |
| | | .link--mallki:hover span::before { |
| | | -webkit-transition-delay: 0.3s; |
| | | transition-delay: 0.3s; |
| | | -webkit-transform: translate3d(0, 0, 0); |
| | | transform: translate3d(0, 0, 0); |
| | | -webkit-transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1); |
| | | transition-timing-function: cubic-bezier(0.2, 1, 0.3, 1); |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <router-link key="expand" class="user-link" to="/userInfo"> |
| | | <img v-if="logo" :src="logo" class="avatar" alt=""> |
| | | <div class="user-name">{{ name }}</div> |
| | | <el-divider direction="vertical" /> |
| | | <div> |
| | | <div v-if="deptName" class="dept-name">{{ deptName }}</div> |
| | | <div v-if="titleName" class="title-name">{{ titleName }}</div> |
| | | </div> |
| | | </router-link> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getFtpUrl } from '@/utils/base' |
| | | import storage from 'store' |
| | | export default { |
| | | name: 'UserInfo', |
| | | data() { |
| | | return { |
| | | name: '欢迎您:admin', |
| | | deptName: storage.get('user').deptName || '', |
| | | logo: '', |
| | | titleName: storage.get('user').titleName || '' |
| | | } |
| | | }, |
| | | created() { |
| | | this.name = this.$store.getters.name |
| | | if (this.$store.getters.info.headUrl) { |
| | | this.logo = this.getUrl(JSON.parse(this.$store.getters.info.headUrl)[0].path) |
| | | } else { |
| | | this.logo = 'https://tse1-mm.cn.bing.net/th/id/R-C.6e0766f48cac2b57efcfdf15bbb4124f?rik=XWu%2bR657LNpTRg&riu=http%3a%2f%2fwww.jcrb.com%2fxmtpd%2fmengman%2f201707%2fW020170712672258195967.jpg&ehk=FceMdlWHihzZotopRc8GtPnS6wuFZfWw%2bjA5BGB3qlA%3d&risl=&pid=ImgRaw&r=0' |
| | | } |
| | | }, |
| | | methods: { |
| | | getUrl(path) { |
| | | if (path.substr(0, 7).toLowerCase() == 'http://' || path.substr(0, 8).toLowerCase() == 'https://') { |
| | | return path |
| | | } else { |
| | | return getFtpUrl() + path |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .user-link { |
| | | display: flex; |
| | | align-items: center; |
| | | height: 72px; |
| | | margin-right: 10px; |
| | | font-size: 0; |
| | | } |
| | | |
| | | .avatar { |
| | | width: 45px; |
| | | height: 45px; |
| | | margin-right: 15px; |
| | | -webkit-border-radius: 50%; |
| | | -moz-border-radius: 50%; |
| | | border-radius: 50%; |
| | | } |
| | | |
| | | .user-name { |
| | | color: #333; |
| | | font-weight: 600; |
| | | font-size: 18px; |
| | | font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif; |
| | | } |
| | | .dept-name{ |
| | | font-size: 16px; |
| | | color: #333; |
| | | } |
| | | .title-name{ |
| | | font-size: 16px; |
| | | color: #E04E5F; |
| | | } |
| | | </style> |
| | |
| | | |
| | | <script> |
| | | import { mapGetters } from 'vuex' |
| | | import Breadcrumb from '@/components/Breadcrumb' |
| | | import TopNav from '@/components/TopNav' |
| | | import Hamburger from '@/components/Hamburger' |
| | | import Screenfull from '@/components/Screenfull' |
| | | import SizeSelect from '@/components/SizeSelect' |
| | | import Search from '@/components/HeaderSearch' |
| | | import Breadcrumb from '@/components/RuoYi/Breadcrumb' |
| | | import TopNav from '@/components/RuoYi/TopNav' |
| | | import Hamburger from '@/components/RuoYi/Hamburger' |
| | | import Screenfull from '@/components/RuoYi/Screenfull' |
| | | import SizeSelect from '@/components/RuoYi/SizeSelect' |
| | | import Search from '@/components/RuoYi/HeaderSearch' |
| | | import RuoYiGit from '@/components/RuoYi/Git' |
| | | import RuoYiDoc from '@/components/RuoYi/Doc' |
| | | |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import ThemePicker from '@/components/ThemePicker' |
| | | import ThemePicker from '@/components/RuoYi/ThemePicker' |
| | | |
| | | export default { |
| | | components: { ThemePicker }, |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import RightPanel from '@/components/RightPanel' |
| | | import RightPanel from '@/components/RuoYi/RightPanel' |
| | | import { AppMain, Navbar, Settings, Sidebar, TagsView } from './components' |
| | | import ResizeMixin from './mixin/ResizeHandler' |
| | | import { mapState } from 'vuex' |
| | |
| | | import { getConfigKey } from "@/api/system/config"; |
| | | import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi"; |
| | | // 分页组件 |
| | | import Pagination from "@/components/Pagination"; |
| | | import Pagination from "@/components/RuoYi/Pagination"; |
| | | // 自定义表格工具组件 |
| | | import RightToolbar from "@/components/RightToolbar" |
| | | import RightToolbar from "@/components/RuoYi/RightToolbar" |
| | | // 富文本组件 |
| | | import Editor from "@/components/Editor" |
| | | import Editor from "@/components/RuoYi/Editor" |
| | | // 文件上传组件 |
| | | import FileUpload from "@/components/FileUpload" |
| | | import FileUpload from "@/components/RuoYi/FileUpload" |
| | | // 图片上传组件 |
| | | import ImageUpload from "@/components/ImageUpload" |
| | | import ImageUpload from "@/components/RuoYi/ImageUpload" |
| | | // 图片预览组件 |
| | | import ImagePreview from "@/components/ImagePreview" |
| | | import ImagePreview from "@/components/RuoYi/ImagePreview" |
| | | // 字典标签组件 |
| | | import DictTag from '@/components/DictTag' |
| | | import DictTag from '@/components/RuoYi/DictTag' |
| | | // 头部标签组件 |
| | | import VueMeta from 'vue-meta' |
| | | // 字典数据组件 |
| | | import DictData from '@/components/DictData' |
| | | import DictData from '@/components/RuoYi/DictData' |
| | | |
| | | // 全局方法挂载 |
| | | Vue.prototype.getDicts = getDicts |
New file |
| | |
| | | /*------------------------------------- |
| | | zTree Style |
| | | |
| | | version: 3.5.19 |
| | | author: Hunter.z |
| | | email: hunter.z@263.net |
| | | website: http://code.google.com/p/jquerytree/ |
| | | |
| | | -------------------------------------*/ |
| | | |
| | | .ztree * {padding:0; margin:0; font-size:12px; font-family: Verdana, Arial, Helvetica, AppleGothic, sans-serif} |
| | | .ztree {margin:0; padding:5px; color:#333} |
| | | .ztree li{padding:0; margin:0; list-style:none; line-height:14px; text-align:left; white-space:nowrap; outline:0} |
| | | .ztree li ul{ margin:0; padding:0 0 0 18px} |
| | | .ztree li ul.line{ background:url(./img/line_conn.gif) 0 0 repeat-y;} |
| | | |
| | | .ztree li a {padding:1px 3px 0 0; margin:0; cursor:pointer; height:17px; color:#333; background-color: transparent; |
| | | text-decoration:none; vertical-align:top; display: inline-block} |
| | | .ztree li a:hover {text-decoration:underline} |
| | | .ztree li a.curSelectedNode {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} |
| | | .ztree li a.curSelectedNode_Edit {padding-top:0px; background-color:#FFE6B0; color:black; height:16px; border:1px #FFB951 solid; opacity:0.8;} |
| | | .ztree li a.tmpTargetNode_inner {padding-top:0px; background-color:#316AC5; color:white; height:16px; border:1px #316AC5 solid; |
| | | opacity:0.8; filter:alpha(opacity=80)} |
| | | .ztree li a.tmpTargetNode_prev {} |
| | | .ztree li a.tmpTargetNode_next {} |
| | | .ztree li a input.rename {height:14px; width:80px; padding:0; margin:0; |
| | | font-size:12px; border:1px #7EC4CC solid; *border:0px} |
| | | .ztree li span {line-height:16px; margin-right:2px} |
| | | .ztree li span.button {line-height:0; margin:0; width:16px; height:16px; display: inline-block; vertical-align:middle; |
| | | border:0 none; cursor: pointer;outline:none; |
| | | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; |
| | | background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")} |
| | | |
| | | .ztree li span.button.chk {width:13px; height:13px; margin:0 3px 0 0; cursor: auto} |
| | | .ztree li span.button.chk.checkbox_false_full {background-position:0 0} |
| | | .ztree li span.button.chk.checkbox_false_full_focus {background-position:0 -14px} |
| | | .ztree li span.button.chk.checkbox_false_part {background-position:0 -28px} |
| | | .ztree li span.button.chk.checkbox_false_part_focus {background-position:0 -42px} |
| | | .ztree li span.button.chk.checkbox_false_disable {background-position:0 -56px} |
| | | .ztree li span.button.chk.checkbox_true_full {background-position:-14px 0} |
| | | .ztree li span.button.chk.checkbox_true_full_focus {background-position:-14px -14px} |
| | | .ztree li span.button.chk.checkbox_true_part {background-position:-14px -28px} |
| | | .ztree li span.button.chk.checkbox_true_part_focus {background-position:-14px -42px} |
| | | .ztree li span.button.chk.checkbox_true_disable {background-position:-14px -56px} |
| | | .ztree li span.button.chk.radio_false_full {background-position:-28px 0} |
| | | .ztree li span.button.chk.radio_false_full_focus {background-position:-28px -14px} |
| | | .ztree li span.button.chk.radio_false_part {background-position:-28px -28px} |
| | | .ztree li span.button.chk.radio_false_part_focus {background-position:-28px -42px} |
| | | .ztree li span.button.chk.radio_false_disable {background-position:-28px -56px} |
| | | .ztree li span.button.chk.radio_true_full {background-position:-42px 0} |
| | | .ztree li span.button.chk.radio_true_full_focus {background-position:-42px -14px} |
| | | .ztree li span.button.chk.radio_true_part {background-position:-42px -28px} |
| | | .ztree li span.button.chk.radio_true_part_focus {background-position:-42px -42px} |
| | | .ztree li span.button.chk.radio_true_disable {background-position:-42px -56px} |
| | | |
| | | .ztree li span.button.switch {width:18px; height:18px} |
| | | .ztree li span.button.root_open{background-position:-92px -54px} |
| | | .ztree li span.button.root_close{background-position:-74px -54px} |
| | | .ztree li span.button.roots_open{background-position:-92px 0} |
| | | .ztree li span.button.roots_close{background-position:-74px 0} |
| | | .ztree li span.button.center_open{background-position:-92px -18px} |
| | | .ztree li span.button.center_close{background-position:-74px -18px} |
| | | .ztree li span.button.bottom_open{background-position:-92px -36px} |
| | | .ztree li span.button.bottom_close{background-position:-74px -36px} |
| | | .ztree li span.button.noline_open{background-position:-92px -72px} |
| | | .ztree li span.button.noline_close{background-position:-74px -72px} |
| | | .ztree li span.button.root_docu{ background:none;} |
| | | .ztree li span.button.roots_docu{background-position:-56px 0} |
| | | .ztree li span.button.center_docu{background-position:-56px -18px} |
| | | .ztree li span.button.bottom_docu{background-position:-56px -36px} |
| | | .ztree li span.button.noline_docu{ background:none;} |
| | | |
| | | .ztree li span.button.ico_open{margin-right:2px; background-position:-110px -16px; vertical-align:top; *vertical-align:middle} |
| | | .ztree li span.button.ico_close{margin-right:2px; background-position:-110px 0; vertical-align:top; *vertical-align:middle} |
| | | .ztree li span.button.ico_docu{margin-right:2px; background-position:-110px -32px; vertical-align:top; *vertical-align:middle} |
| | | .ztree li span.button.edit {margin-right:2px; background-position:-110px -48px; vertical-align:top; *vertical-align:middle} |
| | | .ztree li span.button.remove {margin-right:2px; background-position:-110px -64px; vertical-align:top; *vertical-align:middle} |
| | | |
| | | .ztree li span.button.ico_loading{margin-right:2px; background:url(./img/loading.gif) no-repeat scroll 0 0 transparent; vertical-align:top; *vertical-align:middle} |
| | | |
| | | ul.tmpTargetzTree {background-color:#FFE6B0; opacity:0.8; filter:alpha(opacity=80)} |
| | | |
| | | span.tmpzTreeMove_arrow {width:16px; height:16px; display: inline-block; padding:0; margin:2px 0 0 1px; border:0 none; position:absolute; |
| | | background-color:transparent; background-repeat:no-repeat; background-attachment: scroll; |
| | | background-position:-110px -80px; background-image:url("./img/zTreeStandard.png"); *background-image:url("./img/zTreeStandard.gif")} |
| | | |
| | | ul.ztree.zTreeDragUL {margin:0; padding:0; position:absolute; width:auto; height:auto;overflow:hidden; background-color:#cfcfcf; border:1px #00B83F dotted; opacity:0.8; filter:alpha(opacity=80)} |
| | | .zTreeMask {z-index:10000; background-color:#cfcfcf; opacity:0.0; filter:alpha(opacity=0); position:absolute} |
| | | |
| | | /* level style*/ |
| | | /*.ztree li span.button.level0 { |
| | | display:none; |
| | | } |
| | | .ztree li ul.level0 { |
| | | padding:0; |
| | | background:none; |
| | | }*/ |
New file |
| | |
| | | /*! |
| | | * jQuery JavaScript Library v1.4.4 |
| | | * http://jquery.com/ |
| | | * |
| | | * Copyright 2010, John Resig |
| | | * Dual licensed under the MIT or GPL Version 2 licenses. |
| | | * http://jquery.org/license |
| | | * |
| | | * Includes Sizzle.js |
| | | * http://sizzlejs.com/ |
| | | * Copyright 2010, The Dojo Foundation |
| | | * Released under the MIT, BSD, and GPL Licenses. |
| | | * |
| | | * Date: Thu Nov 11 19:04:53 2010 -0500 |
| | | */ |
| | | (function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h= |
| | | h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;k<J.length;k++){h=J[k];h.origType.replace(X,"")===a.type?f.push(h.selector):J.splice(k--,1)}f=c(a.target).closest(f,a.currentTarget);o=0;for(x=f.length;o<x;o++){r=f[o];for(k=0;k<J.length;k++){h=J[k];if(r.selector===h.selector&&(!A||A.test(h.namespace))){l=r.elem;e=null;if(h.preType==="mouseenter"|| |
| | | h.preType==="mouseleave"){a.type=h.preType;e=c(a.relatedTarget).closest(h.selector)[0]}if(!e||e!==l)C.push({elem:l,handleObj:h,level:r.level})}}}o=0;for(x=C.length;o<x;o++){f=C[o];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La, |
| | | "`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this, |
| | | e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a, |
| | | "margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+ |
| | | a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/, |
| | | C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j, |
| | | s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this, |
| | | j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length}, |
| | | toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j=== |
| | | -1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false; |
| | | if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K<Q;K++)if((j=arguments[K])!=null)for(s in j){v=G[s];z=j[s];if(G!==z)if(ga&&z&&(b.isPlainObject(z)||(H=b.isArray(z)))){if(H){H=false;v=v&&b.isArray(v)?v:[]}else v=v&&b.isPlainObject(v)?v:{};G[s]=b.extend(ga,v,z)}else if(z!==B)G[s]=z}return G};b.extend({noConflict:function(j){E.$=e;if(j)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(j){j===true&&b.readyWait--; |
| | | if(!b.readyWait||j!==true&&!b.isReady){if(!t.body)return setTimeout(b.ready,1);b.isReady=true;if(!(j!==true&&--b.readyWait>0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload", |
| | | b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&& |
| | | !F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&& |
| | | l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H<G;){if(s.apply(j[H++],v)===false)break}else if(K)for(z in j){if(s.call(j[z], |
| | | z,j[z])===false)break}else for(v=j[0];H<G&&s.call(v,H,v)!==false;v=j[++H]);return j},trim:O?function(j){return j==null?"":O.call(j)}:function(j){return j==null?"":j.toString().replace(k,"").replace(o,"")},makeArray:function(j,s){var v=s||[];if(j!=null){var z=b.type(j);j.length==null||z==="string"||z==="function"||z==="regexp"||b.isWindow(j)?M.call(v,j):b.merge(v,j)}return v},inArray:function(j,s){if(s.indexOf)return s.indexOf(j);for(var v=0,z=s.length;v<z;v++)if(s[v]===j)return v;return-1},merge:function(j, |
| | | s){var v=j.length,z=0;if(typeof s.length==="number")for(var H=s.length;z<H;z++)j[v++]=s[z];else for(;s[z]!==B;)j[v++]=s[z++];j.length=v;return j},grep:function(j,s,v){var z=[],H;v=!!v;for(var G=0,K=j.length;G<K;G++){H=!!s(j[G],G);v!==H&&z.push(j[G])}return z},map:function(j,s,v){for(var z=[],H,G=0,K=j.length;G<K;G++){H=s(j[G],G,v);if(H!=null)z[z.length]=H}return z.concat.apply([],z)},guid:1,proxy:function(j,s,v){if(arguments.length===2)if(typeof s==="string"){v=j;j=v[s];s=B}else if(s&&!b.isFunction(s)){v= |
| | | s;s=B}if(!s&&j)s=function(){return j.apply(v||this,arguments)};if(j)s.guid=j.guid=j.guid||s.guid||b.guid++;return s},access:function(j,s,v,z,H,G){var K=j.length;if(typeof s==="object"){for(var Q in s)b.access(j,Q,s[Q],z,H,v);return j}if(v!==B){z=!G&&z&&b.isFunction(v);for(Q=0;Q<K;Q++)H(j[Q],s,z?v.call(j[Q],Q,H(j[Q],s)):v,G);return j}return K?H(j[0],s):B},now:function(){return(new Date).getTime()},uaMatch:function(j){j=j.toLowerCase();j=L.exec(j)||g.exec(j)||i.exec(j)||j.indexOf("compatible")<0&&n.exec(j)|| |
| | | [];return{browser:j[1]||"",version:j[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(j,s){R["[object "+s+"]"]=s.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=m.version}if(b.browser.webkit)b.browser.safari=true;if(D)b.inArray=function(j,s){return D.call(s,j)};if(!/\s/.test("\u00a0")){k=/^[\s\xA0]+/;o=/[\s\xA0]+$/}f=b(t);if(t.addEventListener)u=function(){t.removeEventListener("DOMContentLoaded",u, |
| | | false);b.ready()};else if(t.attachEvent)u=function(){if(t.readyState==="complete"){t.detachEvent("onreadystatechange",u);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=t.documentElement,b=t.createElement("script"),d=t.createElement("div"),e="script"+c.now();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"), |
| | | k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false, |
| | | scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent= |
| | | false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom= |
| | | 1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display= |
| | | "none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h= |
| | | c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando); |
| | | else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h<l;h++){f=e[h].name;if(f.indexOf("data-")===0){f=f.substr(5);ka(this[0],f,d[f])}}}return d}else if(typeof a==="object")return this.each(function(){c.data(this, |
| | | a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(b===B){d=this.triggerHandler("getData"+k[1]+"!",[k[0]]);if(d===B&&this.length){d=c.data(this[0],a);d=ka(this[0],a,d)}return d===B&&k[1]?this.data(k[0]):d}else return this.each(function(){var o=c(this),x=[k[0],b];o.triggerHandler("setData"+k[1]+"!",x);c.data(this,a,b);o.triggerHandler("changeData"+k[1]+"!",x)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e= |
| | | c.data(a,b);if(!d)return e||[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===B)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this, |
| | | a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var sa=/[\n\t]/g,ha=/\s+/,Sa=/\r/g,Ta=/^(?:href|src|style)$/,Ua=/^(?:button|input)$/i,Va=/^(?:button|input|object|select|textarea)$/i,Wa=/^a(?:rea)?$/i,ta=/^(?:radio|checkbox)$/i;c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan", |
| | | colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(x){var r=c(this);r.addClass(a.call(this,x,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType=== |
| | | 1)if(f.className){for(var h=" "+f.className+" ",l=f.className,k=0,o=b.length;k<o;k++)if(h.indexOf(" "+b[k]+" ")<0)l+=" "+b[k];f.className=c.trim(l)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var x=c(this);x.removeClass(a.call(this,o,x.attr("class")))});if(a&&typeof a==="string"||a===B)for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(sa," "), |
| | | l=0,k=b.length;l<k;l++)h=h.replace(" "+b[l]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,l=c(this),k=b,o=a.split(ha);f=o[h++];){k=e?k:!l.hasClass(f);l[k?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this, |
| | | "__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(sa," ").indexOf(a)>-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one"; |
| | | if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var l=f[h];if(l.selected&&(c.support.optDisabled?!l.disabled:l.getAttribute("disabled")===null)&&(!l.parentNode.disabled||!c.nodeName(l.parentNode,"optgroup"))){a=c(l).val();if(b)return a;d.push(a)}}return d}if(ta.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Sa,"")}return B}var k=c.isFunction(a);return this.each(function(o){var x=c(this),r=a;if(this.nodeType===1){if(k)r= |
| | | a.call(this,o,x.val());if(r==null)r="";else if(typeof r==="number")r+="";else if(c.isArray(r))r=c.map(r,function(C){return C==null?"":C+""});if(c.isArray(r)&&ta.test(this.type))this.checked=c.inArray(x.val(),r)>=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true}, |
| | | attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&& |
| | | b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0}; |
| | | c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem, |
| | | arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid= |
| | | d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+ |
| | | c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h<A.length;h++){C=A[h];if(d.guid===C.guid){if(k||x.test(C.namespace)){e==null&&A.splice(h--,1);r.remove&&r.remove.call(a,C)}if(e!=null)break}}if(A.length===0||e!=null&&A.length===1){if(!r.teardown||r.teardown.call(a,o)===false)c.removeEvent(a,f,w.handle);delete I[f]}}else for(h=0;h<A.length;h++){C=A[h];if(k||x.test(C.namespace)){c.event.remove(a,r,C.handler,h);A.splice(h--,1)}}}if(c.isEmptyObject(I)){if(b= |
| | | w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,J);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType=== |
| | | 8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k=== |
| | | "click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+ |
| | | d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f<l;f++){var k=d[f];if(b||e.test(k.namespace)){a.handler=k.handler;a.data=k.data;a.handleObj=k;k=k.handler.apply(this,h);if(k!==B){a.result=k;if(k===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), |
| | | fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||t;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=t.documentElement;d=t.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| |
| | | d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==B)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ka,guid:a.handler.guid}))},remove:function(a){c.event.remove(this, |
| | | Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=t.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp= |
| | | c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ca;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ca;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ca;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U}; |
| | | var va=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},wa=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?wa:va,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?wa:va)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!== |
| | | "form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=B;return la("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=B;return la("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V, |
| | | xa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired= |
| | | B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type=== |
| | | "file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]=== |
| | | 0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h<k;h++)c.event.add(this[h],d,l,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d, |
| | | a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d= |
| | | 1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var ya={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var l,k=0,o,x,r=h||this.selector;h=h?this:c(this.context);if(typeof d=== |
| | | "object"&&!d.preventDefault){for(l in d)h[b](l,e,d[l],r);return this}if(c.isFunction(e)){f=e;e=B}for(d=(d||"").split(" ");(l=d[k++])!=null;){o=X.exec(l);x="";if(o){x=o[0];l=l.replace(X,"")}if(l==="hover")d.push("mouseenter"+x,"mouseleave"+x);else{o=l;if(l==="focus"||l==="blur"){d.push(ya[l]+x);l+=x}else l=(ya[l]||l)+x;if(b==="live"){x=0;for(var A=h.length;x<A;x++)c.event.add(h[x],"live."+Y(l,r),{data:e,selector:r,handler:f,origType:l,origHandler:f,preType:o})}else h.unbind("live."+Y(l,r),f)}}return this}}); |
| | | c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}}); |
| | | (function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1&&!q){y.sizcache=n;y.sizset=p}if(y.nodeName.toLowerCase()===i){F=y;break}y=y[g]}m[p]=F}}}function b(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1){if(!q){y.sizcache=n;y.sizset=p}if(typeof i!=="string"){if(y===i){F=true;break}}else if(k.filter(i, |
| | | [y]).length>0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3]; |
| | | break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr, |
| | | q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h= |
| | | l;g.sort(w);if(h)for(var i=1;i<g.length;i++)g[i]===g[i-1]&&g.splice(i--,1)}return g};k.matches=function(g,i){return k(g,null,null,i)};k.matchesSelector=function(g,i){return k(i,null,null,[g]).length>0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p<q;p++){var u,y=o.order[p];if(u=o.leftMatch[y].exec(g)){var F=u[1];u.splice(1,1);if(F.substr(F.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");m=o.find[y](u,i,n);if(m!=null){g=g.replace(o.match[y],"");break}}}}m||(m=i.getElementsByTagName("*")); |
| | | return{set:m,expr:g}};k.filter=function(g,i,n,m){for(var p,q,u=g,y=[],F=i,M=i&&i[0]&&k.isXML(i[0]);g&&i.length;){for(var N in o.filter)if((p=o.leftMatch[N].exec(g))!=null&&p[2]){var O,D,R=o.filter[N];D=p[1];q=false;p.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(F===y)y=[];if(o.preFilter[N])if(p=o.preFilter[N](p,F,n,y,m,M)){if(p===true)continue}else q=O=true;if(p)for(var j=0;(D=F[j])!=null;j++)if(D){O=R(D,p,j,F);var s=m^!!O;if(n&&O!=null)if(s)q=true;else F[j]=false;else if(s){y.push(D);q=true}}if(O!== |
| | | B){n||(F=y);g=g.replace(o.match[N],"");if(!q)return[];break}}}if(g===u)if(q==null)k.error(g);else break;u=g}return F};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var o=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/, |
| | | POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,i){var n=typeof i==="string",m=n&&!/\W/.test(i);n=n&&!m;if(m)i=i.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=n||q&&q.nodeName.toLowerCase()=== |
| | | i?q||false:q===i}n&&k.filter(i,g,true)},">":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p<q;p++){if(n=g[p]){n=n.parentNode;g[p]=n.nodeName.toLowerCase()===i?n:false}}else{for(;p<q;p++)if(n=g[p])g[p]=m?n.parentNode:n.parentNode===i;m&&k.filter(i,g,true)}},"":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=i=i.toLowerCase();q=a}q("parentNode",i,p,g,m,n)},"~":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m= |
| | | i=i.toLowerCase();q=a}q("previousSibling",i,p,g,m,n)}},find:{ID:function(g,i,n){if(typeof i.getElementById!=="undefined"&&!n)return(g=i.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,i){if(typeof i.getElementsByName!=="undefined"){for(var n=[],m=i.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&n.push(m[p]);return n.length===0?null:n}},TAG:function(g,i){return i.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,i,n,m,p,q){g=" "+g[1].replace(/\\/g, |
| | | "")+" ";if(q)return g;q=0;for(var u;(u=i[q])!=null;q++)if(u)if(p^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n, |
| | | m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled=== |
| | | true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"=== |
| | | g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return i<n[3]-0},gt:function(g,i,n){return i>n[3]-0},nth:function(g,i,n){return n[3]- |
| | | 0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n<m;n++)if(i[n]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,i){var n=i[1],m=g;switch(n){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(n=== |
| | | "first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":n=i[2];var p=i[3];if(n===1&&p===0)return true;var q=i[0],u=g.parentNode;if(u&&(u.sizcache!==q||!g.nodeIndex)){var y=0;for(m=u.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++y;u.sizcache=q}m=g.nodeIndex-p;return n===0?m===0:m%n===0&&m/n>=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()=== |
| | | i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]]; |
| | | if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m, |
| | | g);else if(typeof g.length==="number")for(var p=g.length;n<p;n++)m.push(g[n]);else for(;g[n];n++)m.push(g[n]);return m}}var w,I;if(t.documentElement.compareDocumentPosition)w=function(g,i){if(g===i){h=true;return 0}if(!g.compareDocumentPosition||!i.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(i)&4?-1:1};else{w=function(g,i){var n,m,p=[],q=[];n=g.parentNode;m=i.parentNode;var u=n;if(g===i){h=true;return 0}else if(n===m)return I(g,i);else if(n){if(!m)return 1}else return-1; |
| | | for(;u;){p.unshift(u);u=u.parentNode}for(u=m;u;){q.unshift(u);u=u.parentNode}n=p.length;m=q.length;for(u=0;u<n&&u<m;u++)if(p[u]!==q[u])return I(p[u],q[u]);return u===n?I(g,q[u],-1):I(p[u],i,1)};I=function(g,i,n){if(g===i)return n;for(g=g.nextSibling;g;){if(g===i)return-1;g=g.nextSibling}return 1}}k.getText=function(g){for(var i="",n,m=0;g[m];m++){n=g[m];if(n.nodeType===3||n.nodeType===4)i+=n.nodeValue;else if(n.nodeType!==8)i+=k.getText(n.childNodes)}return i};(function(){var g=t.createElement("div"), |
| | | i="script"+(new Date).getTime(),n=t.documentElement;g.innerHTML="<a name='"+i+"'/>";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g); |
| | | n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&& |
| | | function(){var g=k,i=t.createElement("div");i.innerHTML="<p class='TEST'></p>";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F|| |
| | | p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g= |
| | | t.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition? |
| | | function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n<u;n++)k(g,q[n],m);return k.filter(p,m)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=k.getText;c.isXMLDoc=k.isXML; |
| | | c.contains=k.contains})();var Za=/Until$/,$a=/^(?:parents|prevUntil|prevAll)/,ab=/,/,Na=/^.[^:#\[\.,]*$/,bb=Array.prototype.slice,cb=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var l=0;l<d;l++)if(b[l]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})}, |
| | | not:function(a){return this.pushStack(ma(this,a,false),"not",a)},filter:function(a){return this.pushStack(ma(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h= |
| | | h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(l?l.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context): |
| | | c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a, |
| | | 2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a, |
| | | b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&& |
| | | e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/<tbody/i,eb=/<|&#?\w+;/,Ca=/<(?:script|object|embed|option|style)/i,Da=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/\=([^="'>\s]+\/)>/g,P={option:[1, |
| | | "<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= |
| | | c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, |
| | | wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, |
| | | prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, |
| | | this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); |
| | | return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null; |
| | | else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d= |
| | | c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){var e,f,h,l=a[0],k=[];if(!c.support.checkClone&&arguments.length===3&&typeof l==="string"&&Da.test(l))return this.each(function(){c(this).domManip(a, |
| | | b,d,true)});if(c.isFunction(l))return this.each(function(x){var r=c(this);a[0]=l.call(this,x,b?r.html():B);r.domManip(a,b,d)});if(this[0]){e=l&&l.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);h=e.fragment;if(f=h.childNodes.length===1?h=h.firstChild:h.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var o=this.length;f<o;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")): |
| | | this[f]:this[f],f>0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append", |
| | | prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f<h;f++){var l=(f>0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument|| |
| | | b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1></$2>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]==="<table>"&&!x?r.childNodes:[];for(o=k.length- |
| | | 1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script")))); |
| | | d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i, |
| | | jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true, |
| | | zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b), |
| | | h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b); |
| | | if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f= |
| | | d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left; |
| | | e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, |
| | | ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b=== |
| | | "object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("<div>").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&& |
| | | !this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})}, |
| | | getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html", |
| | | script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data|| |
| | | !T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache= |
| | | false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset; |
| | | A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type", |
| | | b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&& |
| | | c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d|| |
| | | c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]= |
| | | encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess", |
| | | [b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"), |
| | | e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}}); |
| | | if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show", |
| | | 3),a,b,d);else{d=0;for(var e=this.length;d<e;d++){a=this[d];b=a.style.display;if(!c.data(a,"olddisplay")&&b==="none")b=a.style.display="";b===""&&c.css(a,"display")==="none"&&c.data(a,"olddisplay",qa(a.nodeName))}for(d=0;d<e;d++){a=this[d];b=a.style.display;if(b===""||b==="none")a.style.display=c.data(a,"olddisplay")||""}return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay", |
| | | d)}for(a=0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b, |
| | | d,e);if(c.isEmptyObject(a))return this.each(f.complete);return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),l,k=this.nodeType===1,o=k&&c(this).is(":hidden"),x=this;for(l in a){var r=c.camelCase(l);if(l!==r){a[r]=a[l];delete a[l];l=r}if(a[l]==="hide"&&o||a[l]==="show"&&!o)return h.complete.call(this);if(k&&(l==="height"||l==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(qa(this.nodeName)=== |
| | | "inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[l])){(h.specialEasing=h.specialEasing||{})[l]=a[l][1];a[l]=a[l][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(A,C){var J=new c.fx(x,h,A);if(vb.test(C))J[C==="toggle"?o?"show":"hide":C](a);else{var w=wb.exec(C),I=J.cur()||0;if(w){var L=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(x,A,(L||1)+g);I=(L|| |
| | | 1)/J.cur()*I;c.style(x,A,I+g)}if(w[1])L=(w[1]==="-="?-1:1)*L+I;J.custom(I,L,g)}else J.custom(I,C,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b, |
| | | d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a* |
| | | Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)} |
| | | var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true; |
| | | this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide|| |
| | | this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a= |
| | | c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(ba);ba=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a=== |
| | | b.elem}).length};var xb=/^t(?:able|d|h)$/i,Ia=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in t.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(l){c.offset.setOffset(this,a,l)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=fa(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&& |
| | | h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(x){c.offset.setOffset(this,a,x)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d,e=b.offsetParent,f=b.ownerDocument,h=f.documentElement,l=f.body;d=(f=f.defaultView)?f.getComputedStyle(b,null):b.currentStyle; |
| | | for(var k=b.offsetTop,o=b.offsetLeft;(b=b.parentNode)&&b!==l&&b!==h;){if(c.offset.supportsFixedPosition&&d.position==="fixed")break;d=f?f.getComputedStyle(b,null):b.currentStyle;k-=b.scrollTop;o-=b.scrollLeft;if(b===e){k+=b.offsetTop;o+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&xb.test(b.nodeName))){k+=parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}e=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"){k+= |
| | | parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}d=d}if(d.position==="relative"||d.position==="static"){k+=l.offsetTop;o+=l.offsetLeft}if(c.offset.supportsFixedPosition&&d.position==="fixed"){k+=Math.max(h.scrollTop,l.scrollTop);o+=Math.max(h.scrollLeft,l.scrollLeft)}return{top:k,left:o}};c.offset={initialize:function(){var a=t.body,b=t.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px", |
| | | height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells= |
| | | f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a, |
| | | "marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),l=c.css(a,"top"),k=c.css(a,"left"),o=e==="absolute"&&c.inArray("auto",[l,k])>-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a, |
| | | e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&& |
| | | c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase(); |
| | | c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+ |
| | | b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window); |
New file |
| | |
| | | |
| | | /* |
| | | * JQuery zTree core v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function ($) { |
| | | var settings = {}, roots = {}, caches = {}, |
| | | //default consts of core |
| | | _consts = { |
| | | className: { |
| | | BUTTON: "button", |
| | | LEVEL: "level", |
| | | ICO_LOADING: "ico_loading", |
| | | SWITCH: "switch", |
| | | NAME: 'node_name' |
| | | }, |
| | | event: { |
| | | NODECREATED: "ztree_nodeCreated", |
| | | CLICK: "ztree_click", |
| | | EXPAND: "ztree_expand", |
| | | COLLAPSE: "ztree_collapse", |
| | | ASYNC_SUCCESS: "ztree_async_success", |
| | | ASYNC_ERROR: "ztree_async_error", |
| | | REMOVE: "ztree_remove", |
| | | SELECTED: "ztree_selected", |
| | | UNSELECTED: "ztree_unselected" |
| | | }, |
| | | id: { |
| | | A: "_a", |
| | | ICON: "_ico", |
| | | SPAN: "_span", |
| | | SWITCH: "_switch", |
| | | UL: "_ul" |
| | | }, |
| | | line: { |
| | | ROOT: "root", |
| | | ROOTS: "roots", |
| | | CENTER: "center", |
| | | BOTTOM: "bottom", |
| | | NOLINE: "noline", |
| | | LINE: "line" |
| | | }, |
| | | folder: { |
| | | OPEN: "open", |
| | | CLOSE: "close", |
| | | DOCU: "docu" |
| | | }, |
| | | node: { |
| | | CURSELECTED: "curSelectedNode" |
| | | } |
| | | }, |
| | | //default setting of core |
| | | _setting = { |
| | | treeId: "", |
| | | treeObj: null, |
| | | view: { |
| | | addDiyDom: null, |
| | | autoCancelSelected: true, |
| | | dblClickExpand: true, |
| | | expandSpeed: "fast", |
| | | fontCss: {}, |
| | | nameIsHTML: false, |
| | | selectedMulti: true, |
| | | showIcon: true, |
| | | showLine: true, |
| | | showTitle: true, |
| | | txtSelectedEnable: false |
| | | }, |
| | | data: { |
| | | key: { |
| | | isParent: "isParent", |
| | | children: "children", |
| | | name: "name", |
| | | title: "", |
| | | url: "url", |
| | | icon: "icon" |
| | | }, |
| | | simpleData: { |
| | | enable: false, |
| | | idKey: "id", |
| | | pIdKey: "pId", |
| | | rootPId: null |
| | | }, |
| | | keep: { |
| | | parent: false, |
| | | leaf: false |
| | | } |
| | | }, |
| | | async: { |
| | | enable: false, |
| | | contentType: "application/x-www-form-urlencoded", |
| | | type: "post", |
| | | dataType: "text", |
| | | headers: {}, |
| | | xhrFields: {}, |
| | | url: "", |
| | | autoParam: [], |
| | | otherParam: [], |
| | | dataFilter: null |
| | | }, |
| | | callback: { |
| | | beforeAsync: null, |
| | | beforeClick: null, |
| | | beforeDblClick: null, |
| | | beforeRightClick: null, |
| | | beforeMouseDown: null, |
| | | beforeMouseUp: null, |
| | | beforeExpand: null, |
| | | beforeCollapse: null, |
| | | beforeRemove: null, |
| | | |
| | | onAsyncError: null, |
| | | onAsyncSuccess: null, |
| | | onNodeCreated: null, |
| | | onClick: null, |
| | | onDblClick: null, |
| | | onRightClick: null, |
| | | onMouseDown: null, |
| | | onMouseUp: null, |
| | | onExpand: null, |
| | | onCollapse: null, |
| | | onRemove: null |
| | | } |
| | | }, |
| | | //default root of core |
| | | //zTree use root to save full data |
| | | _initRoot = function (setting) { |
| | | var r = data.getRoot(setting); |
| | | if (!r) { |
| | | r = {}; |
| | | data.setRoot(setting, r); |
| | | } |
| | | data.nodeChildren(setting, r, []); |
| | | r.expandTriggerFlag = false; |
| | | r.curSelectedList = []; |
| | | r.noSelection = true; |
| | | r.createdNodes = []; |
| | | r.zId = 0; |
| | | r._ver = (new Date()).getTime(); |
| | | }, |
| | | //default cache of core |
| | | _initCache = function (setting) { |
| | | var c = data.getCache(setting); |
| | | if (!c) { |
| | | c = {}; |
| | | data.setCache(setting, c); |
| | | } |
| | | c.nodes = []; |
| | | c.doms = []; |
| | | }, |
| | | //default bindEvent of core |
| | | _bindEvent = function (setting) { |
| | | var o = setting.treeObj, |
| | | c = consts.event; |
| | | o.bind(c.NODECREATED, function (event, treeId, node) { |
| | | tools.apply(setting.callback.onNodeCreated, [event, treeId, node]); |
| | | }); |
| | | |
| | | o.bind(c.CLICK, function (event, srcEvent, treeId, node, clickFlag) { |
| | | tools.apply(setting.callback.onClick, [srcEvent, treeId, node, clickFlag]); |
| | | }); |
| | | |
| | | o.bind(c.EXPAND, function (event, treeId, node) { |
| | | tools.apply(setting.callback.onExpand, [event, treeId, node]); |
| | | }); |
| | | |
| | | o.bind(c.COLLAPSE, function (event, treeId, node) { |
| | | tools.apply(setting.callback.onCollapse, [event, treeId, node]); |
| | | }); |
| | | |
| | | o.bind(c.ASYNC_SUCCESS, function (event, treeId, node, msg) { |
| | | tools.apply(setting.callback.onAsyncSuccess, [event, treeId, node, msg]); |
| | | }); |
| | | |
| | | o.bind(c.ASYNC_ERROR, function (event, treeId, node, XMLHttpRequest, textStatus, errorThrown) { |
| | | tools.apply(setting.callback.onAsyncError, [event, treeId, node, XMLHttpRequest, textStatus, errorThrown]); |
| | | }); |
| | | |
| | | o.bind(c.REMOVE, function (event, treeId, treeNode) { |
| | | tools.apply(setting.callback.onRemove, [event, treeId, treeNode]); |
| | | }); |
| | | |
| | | o.bind(c.SELECTED, function (event, treeId, node) { |
| | | tools.apply(setting.callback.onSelected, [treeId, node]); |
| | | }); |
| | | o.bind(c.UNSELECTED, function (event, treeId, node) { |
| | | tools.apply(setting.callback.onUnSelected, [treeId, node]); |
| | | }); |
| | | }, |
| | | _unbindEvent = function (setting) { |
| | | var o = setting.treeObj, |
| | | c = consts.event; |
| | | o.unbind(c.NODECREATED) |
| | | .unbind(c.CLICK) |
| | | .unbind(c.EXPAND) |
| | | .unbind(c.COLLAPSE) |
| | | .unbind(c.ASYNC_SUCCESS) |
| | | .unbind(c.ASYNC_ERROR) |
| | | .unbind(c.REMOVE) |
| | | .unbind(c.SELECTED) |
| | | .unbind(c.UNSELECTED); |
| | | }, |
| | | //default event proxy of core |
| | | _eventProxy = function (event) { |
| | | var target = event.target, |
| | | setting = data.getSetting(event.data.treeId), |
| | | tId = "", node = null, |
| | | nodeEventType = "", treeEventType = "", |
| | | nodeEventCallback = null, treeEventCallback = null, |
| | | tmp = null; |
| | | |
| | | if (tools.eqs(event.type, "mousedown")) { |
| | | treeEventType = "mousedown"; |
| | | } else if (tools.eqs(event.type, "mouseup")) { |
| | | treeEventType = "mouseup"; |
| | | } else if (tools.eqs(event.type, "contextmenu")) { |
| | | treeEventType = "contextmenu"; |
| | | } else if (tools.eqs(event.type, "click")) { |
| | | if (tools.eqs(target.tagName, "span") && target.getAttribute("treeNode" + consts.id.SWITCH) !== null) { |
| | | tId = tools.getNodeMainDom(target).id; |
| | | nodeEventType = "switchNode"; |
| | | } else { |
| | | tmp = tools.getMDom(setting, target, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (tmp) { |
| | | tId = tools.getNodeMainDom(tmp).id; |
| | | nodeEventType = "clickNode"; |
| | | } |
| | | } |
| | | } else if (tools.eqs(event.type, "dblclick")) { |
| | | treeEventType = "dblclick"; |
| | | tmp = tools.getMDom(setting, target, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (tmp) { |
| | | tId = tools.getNodeMainDom(tmp).id; |
| | | nodeEventType = "switchNode"; |
| | | } |
| | | } |
| | | if (treeEventType.length > 0 && tId.length == 0) { |
| | | tmp = tools.getMDom(setting, target, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (tmp) { |
| | | tId = tools.getNodeMainDom(tmp).id; |
| | | } |
| | | } |
| | | // event to node |
| | | if (tId.length > 0) { |
| | | node = data.getNodeCache(setting, tId); |
| | | switch (nodeEventType) { |
| | | case "switchNode" : |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | if (!isParent) { |
| | | nodeEventType = ""; |
| | | } else if (tools.eqs(event.type, "click") |
| | | || (tools.eqs(event.type, "dblclick") && tools.apply(setting.view.dblClickExpand, [setting.treeId, node], setting.view.dblClickExpand))) { |
| | | nodeEventCallback = handler.onSwitchNode; |
| | | } else { |
| | | nodeEventType = ""; |
| | | } |
| | | break; |
| | | case "clickNode" : |
| | | nodeEventCallback = handler.onClickNode; |
| | | break; |
| | | } |
| | | } |
| | | // event to zTree |
| | | switch (treeEventType) { |
| | | case "mousedown" : |
| | | treeEventCallback = handler.onZTreeMousedown; |
| | | break; |
| | | case "mouseup" : |
| | | treeEventCallback = handler.onZTreeMouseup; |
| | | break; |
| | | case "dblclick" : |
| | | treeEventCallback = handler.onZTreeDblclick; |
| | | break; |
| | | case "contextmenu" : |
| | | treeEventCallback = handler.onZTreeContextmenu; |
| | | break; |
| | | } |
| | | var proxyResult = { |
| | | stop: false, |
| | | node: node, |
| | | nodeEventType: nodeEventType, |
| | | nodeEventCallback: nodeEventCallback, |
| | | treeEventType: treeEventType, |
| | | treeEventCallback: treeEventCallback |
| | | }; |
| | | return proxyResult |
| | | }, |
| | | //default init node of core |
| | | _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { |
| | | if (!n) return; |
| | | var r = data.getRoot(setting), |
| | | children = data.nodeChildren(setting, n); |
| | | n.level = level; |
| | | n.tId = setting.treeId + "_" + (++r.zId); |
| | | n.parentTId = parentNode ? parentNode.tId : null; |
| | | n.open = (typeof n.open == "string") ? tools.eqs(n.open, "true") : !!n.open; |
| | | var isParent = data.nodeIsParent(setting, n); |
| | | if (tools.isArray(children)) { |
| | | data.nodeIsParent(setting, n, true); |
| | | n.zAsync = true; |
| | | } else { |
| | | isParent = data.nodeIsParent(setting, n, isParent); |
| | | n.open = (isParent && !setting.async.enable) ? n.open : false; |
| | | n.zAsync = !isParent; |
| | | } |
| | | n.isFirstNode = isFirstNode; |
| | | n.isLastNode = isLastNode; |
| | | n.getParentNode = function () { |
| | | return data.getNodeCache(setting, n.parentTId); |
| | | }; |
| | | n.getPreNode = function () { |
| | | return data.getPreNode(setting, n); |
| | | }; |
| | | n.getNextNode = function () { |
| | | return data.getNextNode(setting, n); |
| | | }; |
| | | n.getIndex = function () { |
| | | return data.getNodeIndex(setting, n); |
| | | }; |
| | | n.getPath = function () { |
| | | return data.getNodePath(setting, n); |
| | | }; |
| | | n.isAjaxing = false; |
| | | data.fixPIdKeyValue(setting, n); |
| | | }, |
| | | _init = { |
| | | bind: [_bindEvent], |
| | | unbind: [_unbindEvent], |
| | | caches: [_initCache], |
| | | nodes: [_initNode], |
| | | proxys: [_eventProxy], |
| | | roots: [_initRoot], |
| | | beforeA: [], |
| | | afterA: [], |
| | | innerBeforeA: [], |
| | | innerAfterA: [], |
| | | zTreeTools: [] |
| | | }, |
| | | //method of operate data |
| | | data = { |
| | | addNodeCache: function (setting, node) { |
| | | data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = node; |
| | | }, |
| | | getNodeCacheId: function (tId) { |
| | | return tId.substring(tId.lastIndexOf("_") + 1); |
| | | }, |
| | | addAfterA: function (afterA) { |
| | | _init.afterA.push(afterA); |
| | | }, |
| | | addBeforeA: function (beforeA) { |
| | | _init.beforeA.push(beforeA); |
| | | }, |
| | | addInnerAfterA: function (innerAfterA) { |
| | | _init.innerAfterA.push(innerAfterA); |
| | | }, |
| | | addInnerBeforeA: function (innerBeforeA) { |
| | | _init.innerBeforeA.push(innerBeforeA); |
| | | }, |
| | | addInitBind: function (bindEvent) { |
| | | _init.bind.push(bindEvent); |
| | | }, |
| | | addInitUnBind: function (unbindEvent) { |
| | | _init.unbind.push(unbindEvent); |
| | | }, |
| | | addInitCache: function (initCache) { |
| | | _init.caches.push(initCache); |
| | | }, |
| | | addInitNode: function (initNode) { |
| | | _init.nodes.push(initNode); |
| | | }, |
| | | addInitProxy: function (initProxy, isFirst) { |
| | | if (!!isFirst) { |
| | | _init.proxys.splice(0, 0, initProxy); |
| | | } else { |
| | | _init.proxys.push(initProxy); |
| | | } |
| | | }, |
| | | addInitRoot: function (initRoot) { |
| | | _init.roots.push(initRoot); |
| | | }, |
| | | addNodesData: function (setting, parentNode, index, nodes) { |
| | | var children = data.nodeChildren(setting, parentNode), params; |
| | | if (!children) { |
| | | children = data.nodeChildren(setting, parentNode, []); |
| | | index = -1; |
| | | } else if (index >= children.length) { |
| | | index = -1; |
| | | } |
| | | |
| | | if (children.length > 0 && index === 0) { |
| | | children[0].isFirstNode = false; |
| | | view.setNodeLineIcos(setting, children[0]); |
| | | } else if (children.length > 0 && index < 0) { |
| | | children[children.length - 1].isLastNode = false; |
| | | view.setNodeLineIcos(setting, children[children.length - 1]); |
| | | } |
| | | data.nodeIsParent(setting, parentNode, true); |
| | | |
| | | if (index < 0) { |
| | | data.nodeChildren(setting, parentNode, children.concat(nodes)); |
| | | } else { |
| | | params = [index, 0].concat(nodes); |
| | | children.splice.apply(children, params); |
| | | } |
| | | }, |
| | | addSelectedNode: function (setting, node) { |
| | | var root = data.getRoot(setting); |
| | | if (!data.isSelectedNode(setting, node)) { |
| | | root.curSelectedList.push(node); |
| | | } |
| | | }, |
| | | addCreatedNode: function (setting, node) { |
| | | if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) { |
| | | var root = data.getRoot(setting); |
| | | root.createdNodes.push(node); |
| | | } |
| | | }, |
| | | addZTreeTools: function (zTreeTools) { |
| | | _init.zTreeTools.push(zTreeTools); |
| | | }, |
| | | exSetting: function (s) { |
| | | $.extend(true, _setting, s); |
| | | }, |
| | | fixPIdKeyValue: function (setting, node) { |
| | | if (setting.data.simpleData.enable) { |
| | | node[setting.data.simpleData.pIdKey] = node.parentTId ? node.getParentNode()[setting.data.simpleData.idKey] : setting.data.simpleData.rootPId; |
| | | } |
| | | }, |
| | | getAfterA: function (setting, node, array) { |
| | | for (var i = 0, j = _init.afterA.length; i < j; i++) { |
| | | _init.afterA[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | getBeforeA: function (setting, node, array) { |
| | | for (var i = 0, j = _init.beforeA.length; i < j; i++) { |
| | | _init.beforeA[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | getInnerAfterA: function (setting, node, array) { |
| | | for (var i = 0, j = _init.innerAfterA.length; i < j; i++) { |
| | | _init.innerAfterA[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | getInnerBeforeA: function (setting, node, array) { |
| | | for (var i = 0, j = _init.innerBeforeA.length; i < j; i++) { |
| | | _init.innerBeforeA[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | getCache: function (setting) { |
| | | return caches[setting.treeId]; |
| | | }, |
| | | getNodeIndex: function (setting, node) { |
| | | if (!node) return null; |
| | | var p = node.parentTId ? node.getParentNode() : data.getRoot(setting), |
| | | children = data.nodeChildren(setting, p); |
| | | for (var i = 0, l = children.length - 1; i <= l; i++) { |
| | | if (children[i] === node) { |
| | | return i; |
| | | } |
| | | } |
| | | return -1; |
| | | }, |
| | | getNextNode: function (setting, node) { |
| | | if (!node) return null; |
| | | var p = node.parentTId ? node.getParentNode() : data.getRoot(setting), |
| | | children = data.nodeChildren(setting, p); |
| | | for (var i = 0, l = children.length - 1; i <= l; i++) { |
| | | if (children[i] === node) { |
| | | return (i == l ? null : children[i + 1]); |
| | | } |
| | | } |
| | | return null; |
| | | }, |
| | | getNodeByParam: function (setting, nodes, key, value) { |
| | | if (!nodes || !key) return null; |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | if (node[key] == value) { |
| | | return nodes[i]; |
| | | } |
| | | var children = data.nodeChildren(setting, node); |
| | | var tmp = data.getNodeByParam(setting, children, key, value); |
| | | if (tmp) return tmp; |
| | | } |
| | | return null; |
| | | }, |
| | | getNodeCache: function (setting, tId) { |
| | | if (!tId) return null; |
| | | var n = caches[setting.treeId].nodes[data.getNodeCacheId(tId)]; |
| | | return n ? n : null; |
| | | }, |
| | | getNodePath: function (setting, node) { |
| | | if (!node) return null; |
| | | |
| | | var path; |
| | | if (node.parentTId) { |
| | | path = node.getParentNode().getPath(); |
| | | } else { |
| | | path = []; |
| | | } |
| | | |
| | | if (path) { |
| | | path.push(node); |
| | | } |
| | | |
| | | return path; |
| | | }, |
| | | getNodes: function (setting) { |
| | | return data.nodeChildren(setting, data.getRoot(setting)); |
| | | }, |
| | | getNodesByParam: function (setting, nodes, key, value) { |
| | | if (!nodes || !key) return []; |
| | | var result = []; |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | if (node[key] == value) { |
| | | result.push(node); |
| | | } |
| | | var children = data.nodeChildren(setting, node); |
| | | result = result.concat(data.getNodesByParam(setting, children, key, value)); |
| | | } |
| | | return result; |
| | | }, |
| | | getNodesByParamFuzzy: function (setting, nodes, key, value) { |
| | | if (!nodes || !key) return []; |
| | | var result = []; |
| | | value = value.toLowerCase(); |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | if (typeof node[key] == "string" && nodes[i][key].toLowerCase().indexOf(value) > -1) { |
| | | result.push(node); |
| | | } |
| | | var children = data.nodeChildren(setting, node); |
| | | result = result.concat(data.getNodesByParamFuzzy(setting, children, key, value)); |
| | | } |
| | | return result; |
| | | }, |
| | | getNodesByFilter: function (setting, nodes, filter, isSingle, invokeParam) { |
| | | if (!nodes) return (isSingle ? null : []); |
| | | var result = isSingle ? null : []; |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | if (tools.apply(filter, [node, invokeParam], false)) { |
| | | if (isSingle) { |
| | | return node; |
| | | } |
| | | result.push(node); |
| | | } |
| | | var children = data.nodeChildren(setting, node); |
| | | var tmpResult = data.getNodesByFilter(setting, children, filter, isSingle, invokeParam); |
| | | if (isSingle && !!tmpResult) { |
| | | return tmpResult; |
| | | } |
| | | result = isSingle ? tmpResult : result.concat(tmpResult); |
| | | } |
| | | return result; |
| | | }, |
| | | getPreNode: function (setting, node) { |
| | | if (!node) return null; |
| | | var p = node.parentTId ? node.getParentNode() : data.getRoot(setting), |
| | | children = data.nodeChildren(setting, p); |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | if (children[i] === node) { |
| | | return (i == 0 ? null : children[i - 1]); |
| | | } |
| | | } |
| | | return null; |
| | | }, |
| | | getRoot: function (setting) { |
| | | return setting ? roots[setting.treeId] : null; |
| | | }, |
| | | getRoots: function () { |
| | | return roots; |
| | | }, |
| | | getSetting: function (treeId) { |
| | | return settings[treeId]; |
| | | }, |
| | | getSettings: function () { |
| | | return settings; |
| | | }, |
| | | getZTreeTools: function (treeId) { |
| | | var r = this.getRoot(this.getSetting(treeId)); |
| | | return r ? r.treeTools : null; |
| | | }, |
| | | initCache: function (setting) { |
| | | for (var i = 0, j = _init.caches.length; i < j; i++) { |
| | | _init.caches[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | initNode: function (setting, level, node, parentNode, preNode, nextNode) { |
| | | for (var i = 0, j = _init.nodes.length; i < j; i++) { |
| | | _init.nodes[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | initRoot: function (setting) { |
| | | for (var i = 0, j = _init.roots.length; i < j; i++) { |
| | | _init.roots[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | isSelectedNode: function (setting, node) { |
| | | var root = data.getRoot(setting); |
| | | for (var i = 0, j = root.curSelectedList.length; i < j; i++) { |
| | | if (node === root.curSelectedList[i]) return true; |
| | | } |
| | | return false; |
| | | }, |
| | | nodeChildren: function (setting, node, newChildren) { |
| | | if (!node) { |
| | | return null; |
| | | } |
| | | var key = setting.data.key.children; |
| | | if (typeof newChildren !== 'undefined') { |
| | | node[key] = newChildren; |
| | | } |
| | | return node[key]; |
| | | }, |
| | | nodeIsParent: function (setting, node, newIsParent) { |
| | | if (!node) { |
| | | return false; |
| | | } |
| | | var key = setting.data.key.isParent; |
| | | if (typeof newIsParent !== 'undefined') { |
| | | if (typeof newIsParent === "string") { |
| | | newIsParent = tools.eqs(newIsParent, "true"); |
| | | } |
| | | newIsParent = !!newIsParent; |
| | | node[key] = newIsParent; |
| | | } else if (typeof node[key] == "string"){ |
| | | node[key] = tools.eqs(node[key], "true"); |
| | | } else { |
| | | node[key] = !!node[key]; |
| | | } |
| | | return node[key]; |
| | | }, |
| | | nodeName: function (setting, node, newName) { |
| | | var key = setting.data.key.name; |
| | | if (typeof newName !== 'undefined') { |
| | | node[key] = newName; |
| | | } |
| | | return "" + node[key]; |
| | | }, |
| | | nodeTitle: function (setting, node) { |
| | | var t = setting.data.key.title === "" ? setting.data.key.name : setting.data.key.title; |
| | | return "" + node[t]; |
| | | }, |
| | | removeNodeCache: function (setting, node) { |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children) { |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | data.removeNodeCache(setting, children[i]); |
| | | } |
| | | } |
| | | data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = null; |
| | | }, |
| | | removeSelectedNode: function (setting, node) { |
| | | var root = data.getRoot(setting); |
| | | for (var i = 0, j = root.curSelectedList.length; i < j; i++) { |
| | | if (node === root.curSelectedList[i] || !data.getNodeCache(setting, root.curSelectedList[i].tId)) { |
| | | root.curSelectedList.splice(i, 1); |
| | | setting.treeObj.trigger(consts.event.UNSELECTED, [setting.treeId, node]); |
| | | i--; |
| | | j--; |
| | | } |
| | | } |
| | | }, |
| | | setCache: function (setting, cache) { |
| | | caches[setting.treeId] = cache; |
| | | }, |
| | | setRoot: function (setting, root) { |
| | | roots[setting.treeId] = root; |
| | | }, |
| | | setZTreeTools: function (setting, zTreeTools) { |
| | | for (var i = 0, j = _init.zTreeTools.length; i < j; i++) { |
| | | _init.zTreeTools[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | transformToArrayFormat: function (setting, nodes) { |
| | | if (!nodes) return []; |
| | | var r = []; |
| | | if (tools.isArray(nodes)) { |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | _do(node); |
| | | } |
| | | } else { |
| | | _do(nodes); |
| | | } |
| | | return r; |
| | | |
| | | function _do(_node) { |
| | | r.push(_node); |
| | | var children = data.nodeChildren(setting, _node); |
| | | if (children) { |
| | | r = r.concat(data.transformToArrayFormat(setting, children)); |
| | | } |
| | | } |
| | | }, |
| | | transformTozTreeFormat: function (setting, sNodes) { |
| | | var i, l, |
| | | key = setting.data.simpleData.idKey, |
| | | parentKey = setting.data.simpleData.pIdKey; |
| | | if (!key || key == "" || !sNodes) return []; |
| | | |
| | | if (tools.isArray(sNodes)) { |
| | | var r = []; |
| | | var tmpMap = {}; |
| | | for (i = 0, l = sNodes.length; i < l; i++) { |
| | | tmpMap[sNodes[i][key]] = sNodes[i]; |
| | | } |
| | | for (i = 0, l = sNodes.length; i < l; i++) { |
| | | var p = tmpMap[sNodes[i][parentKey]]; |
| | | if (p && sNodes[i][key] != sNodes[i][parentKey]) { |
| | | var children = data.nodeChildren(setting, p); |
| | | if (!children) { |
| | | children = data.nodeChildren(setting, p, []); |
| | | } |
| | | children.push(sNodes[i]); |
| | | } else { |
| | | r.push(sNodes[i]); |
| | | } |
| | | } |
| | | return r; |
| | | } else { |
| | | return [sNodes]; |
| | | } |
| | | } |
| | | }, |
| | | //method of event proxy |
| | | event = { |
| | | bindEvent: function (setting) { |
| | | for (var i = 0, j = _init.bind.length; i < j; i++) { |
| | | _init.bind[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | unbindEvent: function (setting) { |
| | | for (var i = 0, j = _init.unbind.length; i < j; i++) { |
| | | _init.unbind[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | bindTree: function (setting) { |
| | | var eventParam = { |
| | | treeId: setting.treeId |
| | | }, |
| | | o = setting.treeObj; |
| | | if (!setting.view.txtSelectedEnable) { |
| | | // for can't select text |
| | | o.bind('selectstart', handler.onSelectStart).css({ |
| | | "-moz-user-select": "-moz-none" |
| | | }); |
| | | } |
| | | o.bind('click', eventParam, event.proxy); |
| | | o.bind('dblclick', eventParam, event.proxy); |
| | | o.bind('mouseover', eventParam, event.proxy); |
| | | o.bind('mouseout', eventParam, event.proxy); |
| | | o.bind('mousedown', eventParam, event.proxy); |
| | | o.bind('mouseup', eventParam, event.proxy); |
| | | o.bind('contextmenu', eventParam, event.proxy); |
| | | }, |
| | | unbindTree: function (setting) { |
| | | var o = setting.treeObj; |
| | | o.unbind('selectstart', handler.onSelectStart) |
| | | .unbind('click', event.proxy) |
| | | .unbind('dblclick', event.proxy) |
| | | .unbind('mouseover', event.proxy) |
| | | .unbind('mouseout', event.proxy) |
| | | .unbind('mousedown', event.proxy) |
| | | .unbind('mouseup', event.proxy) |
| | | .unbind('contextmenu', event.proxy); |
| | | }, |
| | | doProxy: function (e) { |
| | | var results = []; |
| | | for (var i = 0, j = _init.proxys.length; i < j; i++) { |
| | | var proxyResult = _init.proxys[i].apply(this, arguments); |
| | | results.push(proxyResult); |
| | | if (proxyResult.stop) { |
| | | break; |
| | | } |
| | | } |
| | | return results; |
| | | }, |
| | | proxy: function (e) { |
| | | var setting = data.getSetting(e.data.treeId); |
| | | if (!tools.uCanDo(setting, e)) return true; |
| | | var results = event.doProxy(e), |
| | | r = true, x = false; |
| | | for (var i = 0, l = results.length; i < l; i++) { |
| | | var proxyResult = results[i]; |
| | | if (proxyResult.nodeEventCallback) { |
| | | x = true; |
| | | r = proxyResult.nodeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r; |
| | | } |
| | | if (proxyResult.treeEventCallback) { |
| | | x = true; |
| | | r = proxyResult.treeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r; |
| | | } |
| | | } |
| | | return r; |
| | | } |
| | | }, |
| | | //method of event handler |
| | | handler = { |
| | | onSwitchNode: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (node.open) { |
| | | if (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false) return true; |
| | | data.getRoot(setting).expandTriggerFlag = true; |
| | | view.switchNode(setting, node); |
| | | } else { |
| | | if (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false) return true; |
| | | data.getRoot(setting).expandTriggerFlag = true; |
| | | view.switchNode(setting, node); |
| | | } |
| | | return true; |
| | | }, |
| | | onClickNode: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId), |
| | | clickFlag = ((setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey)) && data.isSelectedNode(setting, node)) ? 0 : (setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey) && setting.view.selectedMulti) ? 2 : 1; |
| | | if (tools.apply(setting.callback.beforeClick, [setting.treeId, node, clickFlag], true) == false) return true; |
| | | if (clickFlag === 0) { |
| | | view.cancelPreSelectedNode(setting, node); |
| | | } else { |
| | | view.selectNode(setting, node, clickFlag === 2); |
| | | } |
| | | setting.treeObj.trigger(consts.event.CLICK, [event, setting.treeId, node, clickFlag]); |
| | | return true; |
| | | }, |
| | | onZTreeMousedown: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (tools.apply(setting.callback.beforeMouseDown, [setting.treeId, node], true)) { |
| | | tools.apply(setting.callback.onMouseDown, [event, setting.treeId, node]); |
| | | } |
| | | return true; |
| | | }, |
| | | onZTreeMouseup: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (tools.apply(setting.callback.beforeMouseUp, [setting.treeId, node], true)) { |
| | | tools.apply(setting.callback.onMouseUp, [event, setting.treeId, node]); |
| | | } |
| | | return true; |
| | | }, |
| | | onZTreeDblclick: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (tools.apply(setting.callback.beforeDblClick, [setting.treeId, node], true)) { |
| | | tools.apply(setting.callback.onDblClick, [event, setting.treeId, node]); |
| | | } |
| | | return true; |
| | | }, |
| | | onZTreeContextmenu: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (tools.apply(setting.callback.beforeRightClick, [setting.treeId, node], true)) { |
| | | tools.apply(setting.callback.onRightClick, [event, setting.treeId, node]); |
| | | } |
| | | return (typeof setting.callback.onRightClick) != "function"; |
| | | }, |
| | | onSelectStart: function (e) { |
| | | var n = e.originalEvent.srcElement.nodeName.toLowerCase(); |
| | | return (n === "input" || n === "textarea"); |
| | | } |
| | | }, |
| | | //method of tools for zTree |
| | | tools = { |
| | | apply: function (fun, param, defaultValue) { |
| | | if ((typeof fun) == "function") { |
| | | return fun.apply(zt, param ? param : []); |
| | | } |
| | | return defaultValue; |
| | | }, |
| | | canAsync: function (setting, node) { |
| | | var children = data.nodeChildren(setting, node); |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | return (setting.async.enable && node && isParent && !(node.zAsync || (children && children.length > 0))); |
| | | }, |
| | | clone: function (obj) { |
| | | if (obj === null) return null; |
| | | var o = tools.isArray(obj) ? [] : {}; |
| | | for (var i in obj) { |
| | | o[i] = (obj[i] instanceof Date) ? new Date(obj[i].getTime()) : (typeof obj[i] === "object" ? tools.clone(obj[i]) : obj[i]); |
| | | } |
| | | return o; |
| | | }, |
| | | eqs: function (str1, str2) { |
| | | return str1.toLowerCase() === str2.toLowerCase(); |
| | | }, |
| | | isArray: function (arr) { |
| | | return Object.prototype.toString.apply(arr) === "[object Array]"; |
| | | }, |
| | | isElement: function (o) { |
| | | return ( |
| | | typeof HTMLElement === "object" ? o instanceof HTMLElement : //DOM2 |
| | | o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string" |
| | | ); |
| | | }, |
| | | $: function (node, exp, setting) { |
| | | if (!!exp && typeof exp != "string") { |
| | | setting = exp; |
| | | exp = ""; |
| | | } |
| | | if (typeof node == "string") { |
| | | return $(node, setting ? setting.treeObj.get(0).ownerDocument : null); |
| | | } else { |
| | | return $("#" + node.tId + exp, setting ? setting.treeObj : null); |
| | | } |
| | | }, |
| | | getMDom: function (setting, curDom, targetExpr) { |
| | | if (!curDom) return null; |
| | | while (curDom && curDom.id !== setting.treeId) { |
| | | for (var i = 0, l = targetExpr.length; curDom.tagName && i < l; i++) { |
| | | if (tools.eqs(curDom.tagName, targetExpr[i].tagName) && curDom.getAttribute(targetExpr[i].attrName) !== null) { |
| | | return curDom; |
| | | } |
| | | } |
| | | curDom = curDom.parentNode; |
| | | } |
| | | return null; |
| | | }, |
| | | getNodeMainDom: function (target) { |
| | | return ($(target).parent("li").get(0) || $(target).parentsUntil("li").parent().get(0)); |
| | | }, |
| | | isChildOrSelf: function (dom, parentId) { |
| | | return ($(dom).closest("#" + parentId).length > 0); |
| | | }, |
| | | uCanDo: function (setting, e) { |
| | | return true; |
| | | } |
| | | }, |
| | | //method of operate ztree dom |
| | | view = { |
| | | addNodes: function (setting, parentNode, index, newNodes, isSilent) { |
| | | var isParent = data.nodeIsParent(setting, parentNode); |
| | | if (setting.data.keep.leaf && parentNode && !isParent) { |
| | | return; |
| | | } |
| | | if (!tools.isArray(newNodes)) { |
| | | newNodes = [newNodes]; |
| | | } |
| | | if (setting.data.simpleData.enable) { |
| | | newNodes = data.transformTozTreeFormat(setting, newNodes); |
| | | } |
| | | if (parentNode) { |
| | | var target_switchObj = $$(parentNode, consts.id.SWITCH, setting), |
| | | target_icoObj = $$(parentNode, consts.id.ICON, setting), |
| | | target_ulObj = $$(parentNode, consts.id.UL, setting); |
| | | |
| | | if (!parentNode.open) { |
| | | view.replaceSwitchClass(parentNode, target_switchObj, consts.folder.CLOSE); |
| | | view.replaceIcoClass(parentNode, target_icoObj, consts.folder.CLOSE); |
| | | parentNode.open = false; |
| | | target_ulObj.css({ |
| | | "display": "none" |
| | | }); |
| | | } |
| | | |
| | | data.addNodesData(setting, parentNode, index, newNodes); |
| | | view.createNodes(setting, parentNode.level + 1, newNodes, parentNode, index); |
| | | if (!isSilent) { |
| | | view.expandCollapseParentNode(setting, parentNode, true); |
| | | } |
| | | } else { |
| | | data.addNodesData(setting, data.getRoot(setting), index, newNodes); |
| | | view.createNodes(setting, 0, newNodes, null, index); |
| | | } |
| | | }, |
| | | appendNodes: function (setting, level, nodes, parentNode, index, initFlag, openFlag) { |
| | | if (!nodes) return []; |
| | | var html = []; |
| | | |
| | | var tmpPNode = (parentNode) ? parentNode : data.getRoot(setting), |
| | | tmpPChild = data.nodeChildren(setting, tmpPNode), |
| | | isFirstNode, isLastNode; |
| | | |
| | | if (!tmpPChild || index >= tmpPChild.length - nodes.length) { |
| | | index = -1; |
| | | } |
| | | |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | if (initFlag) { |
| | | isFirstNode = ((index === 0 || tmpPChild.length == nodes.length) && (i == 0)); |
| | | isLastNode = (index < 0 && i == (nodes.length - 1)); |
| | | data.initNode(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag); |
| | | data.addNodeCache(setting, node); |
| | | } |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | |
| | | var childHtml = []; |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children && children.length > 0) { |
| | | //make child html first, because checkType |
| | | childHtml = view.appendNodes(setting, level + 1, children, node, -1, initFlag, openFlag && node.open); |
| | | } |
| | | if (openFlag) { |
| | | view.makeDOMNodeMainBefore(html, setting, node); |
| | | view.makeDOMNodeLine(html, setting, node); |
| | | data.getBeforeA(setting, node, html); |
| | | view.makeDOMNodeNameBefore(html, setting, node); |
| | | data.getInnerBeforeA(setting, node, html); |
| | | view.makeDOMNodeIcon(html, setting, node); |
| | | data.getInnerAfterA(setting, node, html); |
| | | view.makeDOMNodeNameAfter(html, setting, node); |
| | | data.getAfterA(setting, node, html); |
| | | if (isParent && node.open) { |
| | | view.makeUlHtml(setting, node, html, childHtml.join('')); |
| | | } |
| | | view.makeDOMNodeMainAfter(html, setting, node); |
| | | data.addCreatedNode(setting, node); |
| | | } |
| | | } |
| | | return html; |
| | | }, |
| | | appendParentULDom: function (setting, node) { |
| | | var html = [], |
| | | nObj = $$(node, setting); |
| | | if (!nObj.get(0) && !!node.parentTId) { |
| | | view.appendParentULDom(setting, node.getParentNode()); |
| | | nObj = $$(node, setting); |
| | | } |
| | | var ulObj = $$(node, consts.id.UL, setting); |
| | | if (ulObj.get(0)) { |
| | | ulObj.remove(); |
| | | } |
| | | var children = data.nodeChildren(setting, node), |
| | | childHtml = view.appendNodes(setting, node.level + 1, children, node, -1, false, true); |
| | | view.makeUlHtml(setting, node, html, childHtml.join('')); |
| | | nObj.append(html.join('')); |
| | | }, |
| | | asyncNode: function (setting, node, isSilent, callback) { |
| | | var i, l; |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | if (node && !isParent) { |
| | | tools.apply(callback); |
| | | return false; |
| | | } else if (node && node.isAjaxing) { |
| | | return false; |
| | | } else if (tools.apply(setting.callback.beforeAsync, [setting.treeId, node], true) == false) { |
| | | tools.apply(callback); |
| | | return false; |
| | | } |
| | | if (node) { |
| | | node.isAjaxing = true; |
| | | var icoObj = $$(node, consts.id.ICON, setting); |
| | | icoObj.attr({"style": "", "class": consts.className.BUTTON + " " + consts.className.ICO_LOADING}); |
| | | } |
| | | |
| | | var tmpParam = {}; |
| | | var autoParam = tools.apply(setting.async.autoParam, [setting.treeId, node], setting.async.autoParam); |
| | | for (i = 0, l = autoParam.length; node && i < l; i++) { |
| | | var pKey = autoParam[i].split("="), spKey = pKey; |
| | | if (pKey.length > 1) { |
| | | spKey = pKey[1]; |
| | | pKey = pKey[0]; |
| | | } |
| | | tmpParam[spKey] = node[pKey]; |
| | | } |
| | | var otherParam = tools.apply(setting.async.otherParam, [setting.treeId, node], setting.async.otherParam); |
| | | if (tools.isArray(otherParam)) { |
| | | for (i = 0, l = otherParam.length; i < l; i += 2) { |
| | | tmpParam[otherParam[i]] = otherParam[i + 1]; |
| | | } |
| | | } else { |
| | | for (var p in otherParam) { |
| | | tmpParam[p] = otherParam[p]; |
| | | } |
| | | } |
| | | |
| | | var _tmpV = data.getRoot(setting)._ver; |
| | | $.ajax({ |
| | | contentType: setting.async.contentType, |
| | | cache: false, |
| | | type: setting.async.type, |
| | | url: tools.apply(setting.async.url, [setting.treeId, node], setting.async.url), |
| | | data: setting.async.contentType.indexOf('application/json') > -1 ? JSON.stringify(tmpParam) : tmpParam, |
| | | dataType: setting.async.dataType, |
| | | headers: setting.async.headers, |
| | | xhrFields: setting.async.xhrFields, |
| | | success: function (msg) { |
| | | if (_tmpV != data.getRoot(setting)._ver) { |
| | | return; |
| | | } |
| | | var newNodes = []; |
| | | try { |
| | | if (!msg || msg.length == 0) { |
| | | newNodes = []; |
| | | } else if (typeof msg == "string") { |
| | | newNodes = eval("(" + msg + ")"); |
| | | } else { |
| | | newNodes = msg; |
| | | } |
| | | } catch (err) { |
| | | newNodes = msg; |
| | | } |
| | | |
| | | if (node) { |
| | | node.isAjaxing = null; |
| | | node.zAsync = true; |
| | | } |
| | | view.setNodeLineIcos(setting, node); |
| | | if (newNodes && newNodes !== "") { |
| | | newNodes = tools.apply(setting.async.dataFilter, [setting.treeId, node, newNodes], newNodes); |
| | | view.addNodes(setting, node, -1, !!newNodes ? tools.clone(newNodes) : [], !!isSilent); |
| | | } else { |
| | | view.addNodes(setting, node, -1, [], !!isSilent); |
| | | } |
| | | setting.treeObj.trigger(consts.event.ASYNC_SUCCESS, [setting.treeId, node, msg]); |
| | | tools.apply(callback); |
| | | }, |
| | | error: function (XMLHttpRequest, textStatus, errorThrown) { |
| | | if (_tmpV != data.getRoot(setting)._ver) { |
| | | return; |
| | | } |
| | | if (node) node.isAjaxing = null; |
| | | view.setNodeLineIcos(setting, node); |
| | | setting.treeObj.trigger(consts.event.ASYNC_ERROR, [setting.treeId, node, XMLHttpRequest, textStatus, errorThrown]); |
| | | } |
| | | }); |
| | | return true; |
| | | }, |
| | | cancelPreSelectedNode: function (setting, node, excludeNode) { |
| | | var list = data.getRoot(setting).curSelectedList, |
| | | i, n; |
| | | for (i = list.length - 1; i >= 0; i--) { |
| | | n = list[i]; |
| | | if (node === n || (!node && (!excludeNode || excludeNode !== n))) { |
| | | $$(n, consts.id.A, setting).removeClass(consts.node.CURSELECTED); |
| | | if (node) { |
| | | data.removeSelectedNode(setting, node); |
| | | break; |
| | | } else { |
| | | list.splice(i, 1); |
| | | setting.treeObj.trigger(consts.event.UNSELECTED, [setting.treeId, n]); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | createNodeCallback: function (setting) { |
| | | if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) { |
| | | var root = data.getRoot(setting); |
| | | while (root.createdNodes.length > 0) { |
| | | var node = root.createdNodes.shift(); |
| | | tools.apply(setting.view.addDiyDom, [setting.treeId, node]); |
| | | if (!!setting.callback.onNodeCreated) { |
| | | setting.treeObj.trigger(consts.event.NODECREATED, [setting.treeId, node]); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | createNodes: function (setting, level, nodes, parentNode, index) { |
| | | if (!nodes || nodes.length == 0) return; |
| | | var root = data.getRoot(setting), |
| | | openFlag = !parentNode || parentNode.open || !!$$(data.nodeChildren(setting, parentNode)[0], setting).get(0); |
| | | root.createdNodes = []; |
| | | var zTreeHtml = view.appendNodes(setting, level, nodes, parentNode, index, true, openFlag), |
| | | parentObj, nextObj; |
| | | |
| | | if (!parentNode) { |
| | | parentObj = setting.treeObj; |
| | | //setting.treeObj.append(zTreeHtml.join('')); |
| | | } else { |
| | | var ulObj = $$(parentNode, consts.id.UL, setting); |
| | | if (ulObj.get(0)) { |
| | | parentObj = ulObj; |
| | | //ulObj.append(zTreeHtml.join('')); |
| | | } |
| | | } |
| | | if (parentObj) { |
| | | if (index >= 0) { |
| | | nextObj = parentObj.children()[index]; |
| | | } |
| | | if (index >= 0 && nextObj) { |
| | | $(nextObj).before(zTreeHtml.join('')); |
| | | } else { |
| | | parentObj.append(zTreeHtml.join('')); |
| | | } |
| | | } |
| | | |
| | | view.createNodeCallback(setting); |
| | | }, |
| | | destroy: function (setting) { |
| | | if (!setting) return; |
| | | data.initCache(setting); |
| | | data.initRoot(setting); |
| | | event.unbindTree(setting); |
| | | event.unbindEvent(setting); |
| | | setting.treeObj.empty(); |
| | | delete settings[setting.treeId]; |
| | | }, |
| | | expandCollapseNode: function (setting, node, expandFlag, animateFlag, callback) { |
| | | var root = data.getRoot(setting); |
| | | var tmpCb, _callback; |
| | | if (!node) { |
| | | tools.apply(callback, []); |
| | | return; |
| | | } |
| | | var children = data.nodeChildren(setting, node); |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | if (root.expandTriggerFlag) { |
| | | _callback = callback; |
| | | tmpCb = function () { |
| | | if (_callback) _callback(); |
| | | if (node.open) { |
| | | setting.treeObj.trigger(consts.event.EXPAND, [setting.treeId, node]); |
| | | } else { |
| | | setting.treeObj.trigger(consts.event.COLLAPSE, [setting.treeId, node]); |
| | | } |
| | | }; |
| | | callback = tmpCb; |
| | | root.expandTriggerFlag = false; |
| | | } |
| | | if (!node.open && isParent && ((!$$(node, consts.id.UL, setting).get(0)) || (children && children.length > 0 && !$$(children[0], setting).get(0)))) { |
| | | view.appendParentULDom(setting, node); |
| | | view.createNodeCallback(setting); |
| | | } |
| | | if (node.open == expandFlag) { |
| | | tools.apply(callback, []); |
| | | return; |
| | | } |
| | | var ulObj = $$(node, consts.id.UL, setting), |
| | | switchObj = $$(node, consts.id.SWITCH, setting), |
| | | icoObj = $$(node, consts.id.ICON, setting); |
| | | |
| | | if (isParent) { |
| | | node.open = !node.open; |
| | | if (node.iconOpen && node.iconClose) { |
| | | icoObj.attr("style", view.makeNodeIcoStyle(setting, node)); |
| | | } |
| | | |
| | | if (node.open) { |
| | | view.replaceSwitchClass(node, switchObj, consts.folder.OPEN); |
| | | view.replaceIcoClass(node, icoObj, consts.folder.OPEN); |
| | | if (animateFlag == false || setting.view.expandSpeed == "") { |
| | | ulObj.show(); |
| | | tools.apply(callback, []); |
| | | } else { |
| | | if (children && children.length > 0) { |
| | | ulObj.slideDown(setting.view.expandSpeed, callback); |
| | | } else { |
| | | ulObj.show(); |
| | | tools.apply(callback, []); |
| | | } |
| | | } |
| | | } else { |
| | | view.replaceSwitchClass(node, switchObj, consts.folder.CLOSE); |
| | | view.replaceIcoClass(node, icoObj, consts.folder.CLOSE); |
| | | if (animateFlag == false || setting.view.expandSpeed == "" || !(children && children.length > 0)) { |
| | | ulObj.hide(); |
| | | tools.apply(callback, []); |
| | | } else { |
| | | ulObj.slideUp(setting.view.expandSpeed, callback); |
| | | } |
| | | } |
| | | } else { |
| | | tools.apply(callback, []); |
| | | } |
| | | }, |
| | | expandCollapseParentNode: function (setting, node, expandFlag, animateFlag, callback) { |
| | | if (!node) return; |
| | | if (!node.parentTId) { |
| | | view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback); |
| | | return; |
| | | } else { |
| | | view.expandCollapseNode(setting, node, expandFlag, animateFlag); |
| | | } |
| | | if (node.parentTId) { |
| | | view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, animateFlag, callback); |
| | | } |
| | | }, |
| | | expandCollapseSonNode: function (setting, node, expandFlag, animateFlag, callback) { |
| | | var root = data.getRoot(setting), |
| | | treeNodes = (node) ? data.nodeChildren(setting, node) : data.nodeChildren(setting, root), |
| | | selfAnimateSign = (node) ? false : animateFlag, |
| | | expandTriggerFlag = data.getRoot(setting).expandTriggerFlag; |
| | | data.getRoot(setting).expandTriggerFlag = false; |
| | | if (treeNodes) { |
| | | for (var i = 0, l = treeNodes.length; i < l; i++) { |
| | | if (treeNodes[i]) view.expandCollapseSonNode(setting, treeNodes[i], expandFlag, selfAnimateSign); |
| | | } |
| | | } |
| | | data.getRoot(setting).expandTriggerFlag = expandTriggerFlag; |
| | | view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback); |
| | | }, |
| | | isSelectedNode: function (setting, node) { |
| | | if (!node) { |
| | | return false; |
| | | } |
| | | var list = data.getRoot(setting).curSelectedList, |
| | | i; |
| | | for (i = list.length - 1; i >= 0; i--) { |
| | | if (node === list[i]) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | }, |
| | | makeDOMNodeIcon: function (html, setting, node) { |
| | | var nameStr = data.nodeName(setting, node), |
| | | name = setting.view.nameIsHTML ? nameStr : nameStr.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); |
| | | html.push("<span id='", node.tId, consts.id.ICON, |
| | | "' title='' treeNode", consts.id.ICON, " class='", view.makeNodeIcoClass(setting, node), |
| | | "' style='", view.makeNodeIcoStyle(setting, node), "'></span><span id='", node.tId, consts.id.SPAN, |
| | | "' class='", consts.className.NAME, |
| | | "'>", name, "</span>"); |
| | | }, |
| | | makeDOMNodeLine: function (html, setting, node) { |
| | | html.push("<span id='", node.tId, consts.id.SWITCH, "' title='' class='", view.makeNodeLineClass(setting, node), "' treeNode", consts.id.SWITCH, "></span>"); |
| | | }, |
| | | makeDOMNodeMainAfter: function (html, setting, node) { |
| | | html.push("</li>"); |
| | | }, |
| | | makeDOMNodeMainBefore: function (html, setting, node) { |
| | | html.push("<li id='", node.tId, "' class='", consts.className.LEVEL, node.level, "' tabindex='0' hidefocus='true' treenode>"); |
| | | }, |
| | | makeDOMNodeNameAfter: function (html, setting, node) { |
| | | html.push("</a>"); |
| | | }, |
| | | makeDOMNodeNameBefore: function (html, setting, node) { |
| | | var title = data.nodeTitle(setting, node), |
| | | url = view.makeNodeUrl(setting, node), |
| | | fontcss = view.makeNodeFontCss(setting, node), |
| | | fontStyle = []; |
| | | for (var f in fontcss) { |
| | | fontStyle.push(f, ":", fontcss[f], ";"); |
| | | } |
| | | html.push("<a id='", node.tId, consts.id.A, "' class='", consts.className.LEVEL, node.level, "' treeNode", consts.id.A, " onclick=\"", (node.click || ''), |
| | | "\" ", ((url != null && url.length > 0) ? "href='" + url + "'" : ""), " target='", view.makeNodeTarget(node), "' style='", fontStyle.join(''), |
| | | "'"); |
| | | if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle) && title) { |
| | | html.push("title='", title.replace(/'/g, "'").replace(/</g, '<').replace(/>/g, '>'), "'"); |
| | | } |
| | | html.push(">"); |
| | | }, |
| | | makeNodeFontCss: function (setting, node) { |
| | | var fontCss = tools.apply(setting.view.fontCss, [setting.treeId, node], setting.view.fontCss); |
| | | return (fontCss && ((typeof fontCss) != "function")) ? fontCss : {}; |
| | | }, |
| | | makeNodeIcoClass: function (setting, node) { |
| | | var icoCss = ["ico"]; |
| | | if (!node.isAjaxing) { |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | icoCss[0] = (node.iconSkin ? node.iconSkin + "_" : "") + icoCss[0]; |
| | | if (isParent) { |
| | | icoCss.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE); |
| | | } else { |
| | | icoCss.push(consts.folder.DOCU); |
| | | } |
| | | } |
| | | return consts.className.BUTTON + " " + icoCss.join('_'); |
| | | }, |
| | | makeNodeIcoStyle: function (setting, node) { |
| | | var icoStyle = []; |
| | | if (!node.isAjaxing) { |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | var icon = (isParent && node.iconOpen && node.iconClose) ? (node.open ? node.iconOpen : node.iconClose) : node[setting.data.key.icon]; |
| | | if (icon) icoStyle.push("background:url(", icon, ") 0 0 no-repeat;"); |
| | | if (setting.view.showIcon == false || !tools.apply(setting.view.showIcon, [setting.treeId, node], true)) { |
| | | icoStyle.push("width:0px;height:0px;"); |
| | | } |
| | | } |
| | | return icoStyle.join(''); |
| | | }, |
| | | makeNodeLineClass: function (setting, node) { |
| | | var lineClass = []; |
| | | if (setting.view.showLine) { |
| | | if (node.level == 0 && node.isFirstNode && node.isLastNode) { |
| | | lineClass.push(consts.line.ROOT); |
| | | } else if (node.level == 0 && node.isFirstNode) { |
| | | lineClass.push(consts.line.ROOTS); |
| | | } else if (node.isLastNode) { |
| | | lineClass.push(consts.line.BOTTOM); |
| | | } else { |
| | | lineClass.push(consts.line.CENTER); |
| | | } |
| | | } else { |
| | | lineClass.push(consts.line.NOLINE); |
| | | } |
| | | if (data.nodeIsParent(setting, node)) { |
| | | lineClass.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE); |
| | | } else { |
| | | lineClass.push(consts.folder.DOCU); |
| | | } |
| | | return view.makeNodeLineClassEx(node) + lineClass.join('_'); |
| | | }, |
| | | makeNodeLineClassEx: function (node) { |
| | | return consts.className.BUTTON + " " + consts.className.LEVEL + node.level + " " + consts.className.SWITCH + " "; |
| | | }, |
| | | makeNodeTarget: function (node) { |
| | | return (node.target || "_blank"); |
| | | }, |
| | | makeNodeUrl: function (setting, node) { |
| | | var urlKey = setting.data.key.url; |
| | | return node[urlKey] ? node[urlKey] : null; |
| | | }, |
| | | makeUlHtml: function (setting, node, html, content) { |
| | | html.push("<ul id='", node.tId, consts.id.UL, "' class='", consts.className.LEVEL, node.level, " ", view.makeUlLineClass(setting, node), "' style='display:", (node.open ? "block" : "none"), "'>"); |
| | | html.push(content); |
| | | html.push("</ul>"); |
| | | }, |
| | | makeUlLineClass: function (setting, node) { |
| | | return ((setting.view.showLine && !node.isLastNode) ? consts.line.LINE : ""); |
| | | }, |
| | | removeChildNodes: function (setting, node) { |
| | | if (!node) return; |
| | | var nodes = data.nodeChildren(setting, node); |
| | | if (!nodes) return; |
| | | |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | data.removeNodeCache(setting, nodes[i]); |
| | | } |
| | | data.removeSelectedNode(setting); |
| | | delete node[setting.data.key.children]; |
| | | |
| | | if (!setting.data.keep.parent) { |
| | | data.nodeIsParent(setting, node, false); |
| | | node.open = false; |
| | | var tmp_switchObj = $$(node, consts.id.SWITCH, setting), |
| | | tmp_icoObj = $$(node, consts.id.ICON, setting); |
| | | view.replaceSwitchClass(node, tmp_switchObj, consts.folder.DOCU); |
| | | view.replaceIcoClass(node, tmp_icoObj, consts.folder.DOCU); |
| | | $$(node, consts.id.UL, setting).remove(); |
| | | } else { |
| | | $$(node, consts.id.UL, setting).empty(); |
| | | } |
| | | }, |
| | | scrollIntoView: function (setting, dom) { |
| | | if (!dom) { |
| | | return; |
| | | } |
| | | // support IE 7 |
| | | if (typeof Element === 'undefined') { |
| | | var contRect = setting.treeObj.get(0).getBoundingClientRect(), |
| | | findMeRect = dom.getBoundingClientRect(); |
| | | if (findMeRect.top < contRect.top || findMeRect.bottom > contRect.bottom |
| | | || findMeRect.right > contRect.right || findMeRect.left < contRect.left) { |
| | | dom.scrollIntoView(); |
| | | } |
| | | return; |
| | | } |
| | | // CC-BY jocki84@googlemail.com, https://gist.github.com/jocki84/6ffafd003387179a988e |
| | | if (!Element.prototype.scrollIntoViewIfNeeded) { |
| | | Element.prototype.scrollIntoViewIfNeeded = function (centerIfNeeded) { |
| | | "use strict"; |
| | | |
| | | function makeRange(start, length) { |
| | | return {"start": start, "length": length, "end": start + length}; |
| | | } |
| | | |
| | | function coverRange(inner, outer) { |
| | | if ( |
| | | false === centerIfNeeded || |
| | | (outer.start < inner.end && inner.start < outer.end) |
| | | ) { |
| | | return Math.max( |
| | | inner.end - outer.length, |
| | | Math.min(outer.start, inner.start) |
| | | ); |
| | | } |
| | | return (inner.start + inner.end - outer.length) / 2; |
| | | } |
| | | |
| | | function makePoint(x, y) { |
| | | return { |
| | | "x": x, |
| | | "y": y, |
| | | "translate": function translate(dX, dY) { |
| | | return makePoint(x + dX, y + dY); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | function absolute(elem, pt) { |
| | | while (elem) { |
| | | pt = pt.translate(elem.offsetLeft, elem.offsetTop); |
| | | elem = elem.offsetParent; |
| | | } |
| | | return pt; |
| | | } |
| | | |
| | | var target = absolute(this, makePoint(0, 0)), |
| | | extent = makePoint(this.offsetWidth, this.offsetHeight), |
| | | elem = this.parentNode, |
| | | origin; |
| | | |
| | | while (elem instanceof HTMLElement) { |
| | | // Apply desired scroll amount. |
| | | origin = absolute(elem, makePoint(elem.clientLeft, elem.clientTop)); |
| | | elem.scrollLeft = coverRange( |
| | | makeRange(target.x - origin.x, extent.x), |
| | | makeRange(elem.scrollLeft, elem.clientWidth) |
| | | ); |
| | | elem.scrollTop = coverRange( |
| | | makeRange(target.y - origin.y, extent.y), |
| | | makeRange(elem.scrollTop, elem.clientHeight) |
| | | ); |
| | | |
| | | // Determine actual scroll amount by reading back scroll properties. |
| | | target = target.translate(-elem.scrollLeft, -elem.scrollTop); |
| | | elem = elem.parentNode; |
| | | } |
| | | }; |
| | | } |
| | | dom.scrollIntoViewIfNeeded(); |
| | | }, |
| | | setFirstNode: function (setting, parentNode) { |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | if (children.length > 0) { |
| | | children[0].isFirstNode = true; |
| | | } |
| | | }, |
| | | setLastNode: function (setting, parentNode) { |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | if (children.length > 0) { |
| | | children[children.length - 1].isLastNode = true; |
| | | } |
| | | }, |
| | | removeNode: function (setting, node) { |
| | | var root = data.getRoot(setting), |
| | | parentNode = (node.parentTId) ? node.getParentNode() : root; |
| | | |
| | | node.isFirstNode = false; |
| | | node.isLastNode = false; |
| | | node.getPreNode = function () { |
| | | return null; |
| | | }; |
| | | node.getNextNode = function () { |
| | | return null; |
| | | }; |
| | | |
| | | if (!data.getNodeCache(setting, node.tId)) { |
| | | return; |
| | | } |
| | | |
| | | $$(node, setting).remove(); |
| | | data.removeNodeCache(setting, node); |
| | | data.removeSelectedNode(setting, node); |
| | | |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | if (children[i].tId == node.tId) { |
| | | children.splice(i, 1); |
| | | break; |
| | | } |
| | | } |
| | | view.setFirstNode(setting, parentNode); |
| | | view.setLastNode(setting, parentNode); |
| | | |
| | | var tmp_ulObj, tmp_switchObj, tmp_icoObj, |
| | | childLength = children.length; |
| | | |
| | | //repair nodes old parent |
| | | if (!setting.data.keep.parent && childLength == 0) { |
| | | //old parentNode has no child nodes |
| | | data.nodeIsParent(setting, parentNode, false); |
| | | parentNode.open = false; |
| | | delete parentNode[setting.data.key.children]; |
| | | tmp_ulObj = $$(parentNode, consts.id.UL, setting); |
| | | tmp_switchObj = $$(parentNode, consts.id.SWITCH, setting); |
| | | tmp_icoObj = $$(parentNode, consts.id.ICON, setting); |
| | | view.replaceSwitchClass(parentNode, tmp_switchObj, consts.folder.DOCU); |
| | | view.replaceIcoClass(parentNode, tmp_icoObj, consts.folder.DOCU); |
| | | tmp_ulObj.css("display", "none"); |
| | | |
| | | } else if (setting.view.showLine && childLength > 0) { |
| | | //old parentNode has child nodes |
| | | var newLast = children[childLength - 1]; |
| | | tmp_ulObj = $$(newLast, consts.id.UL, setting); |
| | | tmp_switchObj = $$(newLast, consts.id.SWITCH, setting); |
| | | tmp_icoObj = $$(newLast, consts.id.ICON, setting); |
| | | if (parentNode == root) { |
| | | if (children.length == 1) { |
| | | //node was root, and ztree has only one root after move node |
| | | view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.ROOT); |
| | | } else { |
| | | var tmp_first_switchObj = $$(children[0], consts.id.SWITCH, setting); |
| | | view.replaceSwitchClass(children[0], tmp_first_switchObj, consts.line.ROOTS); |
| | | view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM); |
| | | } |
| | | } else { |
| | | view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM); |
| | | } |
| | | tmp_ulObj.removeClass(consts.line.LINE); |
| | | } |
| | | }, |
| | | replaceIcoClass: function (node, obj, newName) { |
| | | if (!obj || node.isAjaxing) return; |
| | | var tmpName = obj.attr("class"); |
| | | if (tmpName == undefined) return; |
| | | var tmpList = tmpName.split("_"); |
| | | switch (newName) { |
| | | case consts.folder.OPEN: |
| | | case consts.folder.CLOSE: |
| | | case consts.folder.DOCU: |
| | | tmpList[tmpList.length - 1] = newName; |
| | | break; |
| | | } |
| | | obj.attr("class", tmpList.join("_")); |
| | | }, |
| | | replaceSwitchClass: function (node, obj, newName) { |
| | | if (!obj) return; |
| | | var tmpName = obj.attr("class"); |
| | | if (tmpName == undefined) return; |
| | | var tmpList = tmpName.split("_"); |
| | | switch (newName) { |
| | | case consts.line.ROOT: |
| | | case consts.line.ROOTS: |
| | | case consts.line.CENTER: |
| | | case consts.line.BOTTOM: |
| | | case consts.line.NOLINE: |
| | | tmpList[0] = view.makeNodeLineClassEx(node) + newName; |
| | | break; |
| | | case consts.folder.OPEN: |
| | | case consts.folder.CLOSE: |
| | | case consts.folder.DOCU: |
| | | tmpList[1] = newName; |
| | | break; |
| | | } |
| | | obj.attr("class", tmpList.join("_")); |
| | | if (newName !== consts.folder.DOCU) { |
| | | obj.removeAttr("disabled"); |
| | | } else { |
| | | obj.attr("disabled", "disabled"); |
| | | } |
| | | }, |
| | | selectNode: function (setting, node, addFlag) { |
| | | if (!addFlag) { |
| | | view.cancelPreSelectedNode(setting, null, node); |
| | | } |
| | | $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED); |
| | | data.addSelectedNode(setting, node); |
| | | setting.treeObj.trigger(consts.event.SELECTED, [setting.treeId, node]); |
| | | }, |
| | | setNodeFontCss: function (setting, treeNode) { |
| | | var aObj = $$(treeNode, consts.id.A, setting), |
| | | fontCss = view.makeNodeFontCss(setting, treeNode); |
| | | if (fontCss) { |
| | | aObj.css(fontCss); |
| | | } |
| | | }, |
| | | setNodeLineIcos: function (setting, node) { |
| | | if (!node) return; |
| | | var switchObj = $$(node, consts.id.SWITCH, setting), |
| | | ulObj = $$(node, consts.id.UL, setting), |
| | | icoObj = $$(node, consts.id.ICON, setting), |
| | | ulLine = view.makeUlLineClass(setting, node); |
| | | if (ulLine.length == 0) { |
| | | ulObj.removeClass(consts.line.LINE); |
| | | } else { |
| | | ulObj.addClass(ulLine); |
| | | } |
| | | switchObj.attr("class", view.makeNodeLineClass(setting, node)); |
| | | if (data.nodeIsParent(setting, node)) { |
| | | switchObj.removeAttr("disabled"); |
| | | } else { |
| | | switchObj.attr("disabled", "disabled"); |
| | | } |
| | | icoObj.removeAttr("style"); |
| | | icoObj.attr("style", view.makeNodeIcoStyle(setting, node)); |
| | | icoObj.attr("class", view.makeNodeIcoClass(setting, node)); |
| | | }, |
| | | setNodeName: function (setting, node) { |
| | | var title = data.nodeTitle(setting, node), |
| | | nObj = $$(node, consts.id.SPAN, setting); |
| | | nObj.empty(); |
| | | if (setting.view.nameIsHTML) { |
| | | nObj.html(data.nodeName(setting, node)); |
| | | } else { |
| | | nObj.text(data.nodeName(setting, node)); |
| | | } |
| | | if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle)) { |
| | | var aObj = $$(node, consts.id.A, setting); |
| | | aObj.attr("title", !title ? "" : title); |
| | | } |
| | | }, |
| | | setNodeTarget: function (setting, node) { |
| | | var aObj = $$(node, consts.id.A, setting); |
| | | aObj.attr("target", view.makeNodeTarget(node)); |
| | | }, |
| | | setNodeUrl: function (setting, node) { |
| | | var aObj = $$(node, consts.id.A, setting), |
| | | url = view.makeNodeUrl(setting, node); |
| | | if (url == null || url.length == 0) { |
| | | aObj.removeAttr("href"); |
| | | } else { |
| | | aObj.attr("href", url); |
| | | } |
| | | }, |
| | | switchNode: function (setting, node) { |
| | | if (node.open || !tools.canAsync(setting, node)) { |
| | | view.expandCollapseNode(setting, node, !node.open); |
| | | } else if (setting.async.enable) { |
| | | if (!view.asyncNode(setting, node)) { |
| | | view.expandCollapseNode(setting, node, !node.open); |
| | | return; |
| | | } |
| | | } else if (node) { |
| | | view.expandCollapseNode(setting, node, !node.open); |
| | | } |
| | | } |
| | | }; |
| | | // zTree defind |
| | | $.fn.zTree = { |
| | | consts: _consts, |
| | | _z: { |
| | | tools: tools, |
| | | view: view, |
| | | event: event, |
| | | data: data |
| | | }, |
| | | getZTreeObj: function (treeId) { |
| | | var o = data.getZTreeTools(treeId); |
| | | return o ? o : null; |
| | | }, |
| | | destroy: function (treeId) { |
| | | if (!!treeId && treeId.length > 0) { |
| | | view.destroy(data.getSetting(treeId)); |
| | | } else { |
| | | for (var s in settings) { |
| | | view.destroy(settings[s]); |
| | | } |
| | | } |
| | | }, |
| | | init: function (obj, zSetting, zNodes) { |
| | | var setting = tools.clone(_setting); |
| | | $.extend(true, setting, zSetting); |
| | | setting.treeId = obj.attr("id"); |
| | | setting.treeObj = obj; |
| | | setting.treeObj.empty(); |
| | | settings[setting.treeId] = setting; |
| | | //For some older browser,(e.g., ie6) |
| | | if (typeof document.body.style.maxHeight === "undefined") { |
| | | setting.view.expandSpeed = ""; |
| | | } |
| | | data.initRoot(setting); |
| | | var root = data.getRoot(setting); |
| | | zNodes = zNodes ? tools.clone(tools.isArray(zNodes) ? zNodes : [zNodes]) : []; |
| | | if (setting.data.simpleData.enable) { |
| | | data.nodeChildren(setting, root, data.transformTozTreeFormat(setting, zNodes)); |
| | | } else { |
| | | data.nodeChildren(setting, root, zNodes); |
| | | } |
| | | |
| | | data.initCache(setting); |
| | | event.unbindTree(setting); |
| | | event.bindTree(setting); |
| | | event.unbindEvent(setting); |
| | | event.bindEvent(setting); |
| | | |
| | | var zTreeTools = { |
| | | setting: setting, |
| | | addNodes: function (parentNode, index, newNodes, isSilent) { |
| | | if (!parentNode) parentNode = null; |
| | | var isParent = data.nodeIsParent(setting, parentNode); |
| | | if (parentNode && !isParent && setting.data.keep.leaf) return null; |
| | | |
| | | var i = parseInt(index, 10); |
| | | if (isNaN(i)) { |
| | | isSilent = !!newNodes; |
| | | newNodes = index; |
| | | index = -1; |
| | | } else { |
| | | index = i; |
| | | } |
| | | if (!newNodes) return null; |
| | | |
| | | |
| | | var xNewNodes = tools.clone(tools.isArray(newNodes) ? newNodes : [newNodes]); |
| | | |
| | | function addCallback() { |
| | | view.addNodes(setting, parentNode, index, xNewNodes, (isSilent == true)); |
| | | } |
| | | |
| | | if (tools.canAsync(setting, parentNode)) { |
| | | view.asyncNode(setting, parentNode, isSilent, addCallback); |
| | | } else { |
| | | addCallback(); |
| | | } |
| | | return xNewNodes; |
| | | }, |
| | | cancelSelectedNode: function (node) { |
| | | view.cancelPreSelectedNode(setting, node); |
| | | }, |
| | | destroy: function () { |
| | | view.destroy(setting); |
| | | }, |
| | | expandAll: function (expandFlag) { |
| | | expandFlag = !!expandFlag; |
| | | view.expandCollapseSonNode(setting, null, expandFlag, true); |
| | | return expandFlag; |
| | | }, |
| | | expandNode: function (node, expandFlag, sonSign, focus, callbackFlag) { |
| | | if (!node || !data.nodeIsParent(setting, node)) return null; |
| | | if (expandFlag !== true && expandFlag !== false) { |
| | | expandFlag = !node.open; |
| | | } |
| | | callbackFlag = !!callbackFlag; |
| | | |
| | | if (callbackFlag && expandFlag && (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false)) { |
| | | return null; |
| | | } else if (callbackFlag && !expandFlag && (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false)) { |
| | | return null; |
| | | } |
| | | if (expandFlag && node.parentTId) { |
| | | view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, false); |
| | | } |
| | | if (expandFlag === node.open && !sonSign) { |
| | | return null; |
| | | } |
| | | |
| | | data.getRoot(setting).expandTriggerFlag = callbackFlag; |
| | | if (!tools.canAsync(setting, node) && sonSign) { |
| | | view.expandCollapseSonNode(setting, node, expandFlag, true, showNodeFocus); |
| | | } else { |
| | | node.open = !expandFlag; |
| | | view.switchNode(this.setting, node); |
| | | showNodeFocus(); |
| | | } |
| | | return expandFlag; |
| | | |
| | | function showNodeFocus() { |
| | | var a = $$(node, setting).get(0); |
| | | if (a && focus !== false) { |
| | | view.scrollIntoView(setting, a); |
| | | } |
| | | } |
| | | }, |
| | | getNodes: function () { |
| | | return data.getNodes(setting); |
| | | }, |
| | | getNodeByParam: function (key, value, parentNode) { |
| | | if (!key) return null; |
| | | return data.getNodeByParam(setting, parentNode ? data.nodeChildren(setting, parentNode) : data.getNodes(setting), key, value); |
| | | }, |
| | | getNodeByTId: function (tId) { |
| | | return data.getNodeCache(setting, tId); |
| | | }, |
| | | getNodesByParam: function (key, value, parentNode) { |
| | | if (!key) return null; |
| | | return data.getNodesByParam(setting, parentNode ? data.nodeChildren(setting, parentNode) : data.getNodes(setting), key, value); |
| | | }, |
| | | getNodesByParamFuzzy: function (key, value, parentNode) { |
| | | if (!key) return null; |
| | | return data.getNodesByParamFuzzy(setting, parentNode ? data.nodeChildren(setting, parentNode) : data.getNodes(setting), key, value); |
| | | }, |
| | | getNodesByFilter: function (filter, isSingle, parentNode, invokeParam) { |
| | | isSingle = !!isSingle; |
| | | if (!filter || (typeof filter != "function")) return (isSingle ? null : []); |
| | | return data.getNodesByFilter(setting, parentNode ? data.nodeChildren(setting, parentNode) : data.getNodes(setting), filter, isSingle, invokeParam); |
| | | }, |
| | | getNodeIndex: function (node) { |
| | | if (!node) return null; |
| | | var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting); |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | if (children[i] == node) return i; |
| | | } |
| | | return -1; |
| | | }, |
| | | getSelectedNodes: function () { |
| | | var r = [], list = data.getRoot(setting).curSelectedList; |
| | | for (var i = 0, l = list.length; i < l; i++) { |
| | | r.push(list[i]); |
| | | } |
| | | return r; |
| | | }, |
| | | isSelectedNode: function (node) { |
| | | return data.isSelectedNode(setting, node); |
| | | }, |
| | | reAsyncChildNodesPromise: function (parentNode, reloadType, isSilent) { |
| | | var promise = new Promise(function (resolve, reject) { |
| | | try { |
| | | zTreeTools.reAsyncChildNodes(parentNode, reloadType, isSilent, function () { |
| | | resolve(parentNode); |
| | | }); |
| | | } catch (e) { |
| | | reject(e); |
| | | } |
| | | }); |
| | | return promise; |
| | | }, |
| | | reAsyncChildNodes: function (parentNode, reloadType, isSilent, callback) { |
| | | if (!this.setting.async.enable) return; |
| | | var isRoot = !parentNode; |
| | | if (isRoot) { |
| | | parentNode = data.getRoot(setting); |
| | | } |
| | | if (reloadType == "refresh") { |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | for (var i = 0, l = children ? children.length : 0; i < l; i++) { |
| | | data.removeNodeCache(setting, children[i]); |
| | | } |
| | | data.removeSelectedNode(setting); |
| | | data.nodeChildren(setting, parentNode, []); |
| | | if (isRoot) { |
| | | this.setting.treeObj.empty(); |
| | | } else { |
| | | var ulObj = $$(parentNode, consts.id.UL, setting); |
| | | ulObj.empty(); |
| | | } |
| | | } |
| | | view.asyncNode(this.setting, isRoot ? null : parentNode, !!isSilent, callback); |
| | | }, |
| | | refresh: function () { |
| | | this.setting.treeObj.empty(); |
| | | var root = data.getRoot(setting), |
| | | nodes = data.nodeChildren(setting, root); |
| | | data.initRoot(setting); |
| | | data.nodeChildren(setting, root, nodes); |
| | | data.initCache(setting); |
| | | view.createNodes(setting, 0, data.nodeChildren(setting, root), null, -1); |
| | | }, |
| | | removeChildNodes: function (node) { |
| | | if (!node) return null; |
| | | var nodes = data.nodeChildren(setting, node); |
| | | view.removeChildNodes(setting, node); |
| | | return nodes ? nodes : null; |
| | | }, |
| | | removeNode: function (node, callbackFlag) { |
| | | if (!node) return; |
| | | callbackFlag = !!callbackFlag; |
| | | if (callbackFlag && tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return; |
| | | view.removeNode(setting, node); |
| | | if (callbackFlag) { |
| | | this.setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]); |
| | | } |
| | | }, |
| | | selectNode: function (node, addFlag, isSilent) { |
| | | if (!node) return; |
| | | if (tools.uCanDo(setting)) { |
| | | addFlag = setting.view.selectedMulti && addFlag; |
| | | if (node.parentTId) { |
| | | view.expandCollapseParentNode(setting, node.getParentNode(), true, false, showNodeFocus); |
| | | } else if (!isSilent) { |
| | | try { |
| | | $$(node, setting).focus().blur(); |
| | | } catch (e) { |
| | | } |
| | | } |
| | | view.selectNode(setting, node, addFlag); |
| | | } |
| | | |
| | | function showNodeFocus() { |
| | | if (isSilent) { |
| | | return; |
| | | } |
| | | var a = $$(node, setting).get(0); |
| | | view.scrollIntoView(setting, a); |
| | | } |
| | | }, |
| | | transformTozTreeNodes: function (simpleNodes) { |
| | | return data.transformTozTreeFormat(setting, simpleNodes); |
| | | }, |
| | | transformToArray: function (nodes) { |
| | | return data.transformToArrayFormat(setting, nodes); |
| | | }, |
| | | updateNode: function (node, checkTypeFlag) { |
| | | if (!node) return; |
| | | var nObj = $$(node, setting); |
| | | if (nObj.get(0) && tools.uCanDo(setting)) { |
| | | view.setNodeName(setting, node); |
| | | view.setNodeTarget(setting, node); |
| | | view.setNodeUrl(setting, node); |
| | | view.setNodeLineIcos(setting, node); |
| | | view.setNodeFontCss(setting, node); |
| | | } |
| | | } |
| | | }; |
| | | root.treeTools = zTreeTools; |
| | | data.setZTreeTools(setting, zTreeTools); |
| | | var children = data.nodeChildren(setting, root); |
| | | if (children && children.length > 0) { |
| | | view.createNodes(setting, 0, children, null, -1); |
| | | } else if (setting.async.enable && setting.async.url && setting.async.url !== '') { |
| | | view.asyncNode(setting); |
| | | } |
| | | return zTreeTools; |
| | | } |
| | | }; |
| | | |
| | | var zt = $.fn.zTree, |
| | | $$ = tools.$, |
| | | consts = zt.consts; |
| | | })(jQuery); |
| | | /* |
| | | * JQuery zTree excheck v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function ($) { |
| | | //default consts of excheck |
| | | var _consts = { |
| | | event: { |
| | | CHECK: "ztree_check" |
| | | }, |
| | | id: { |
| | | CHECK: "_check" |
| | | }, |
| | | checkbox: { |
| | | STYLE: "checkbox", |
| | | DEFAULT: "chk", |
| | | DISABLED: "disable", |
| | | FALSE: "false", |
| | | TRUE: "true", |
| | | FULL: "full", |
| | | PART: "part", |
| | | FOCUS: "focus" |
| | | }, |
| | | radio: { |
| | | STYLE: "radio", |
| | | TYPE_ALL: "all", |
| | | TYPE_LEVEL: "level" |
| | | } |
| | | }, |
| | | //default setting of excheck |
| | | _setting = { |
| | | check: { |
| | | enable: false, |
| | | autoCheckTrigger: false, |
| | | chkStyle: _consts.checkbox.STYLE, |
| | | nocheckInherit: false, |
| | | chkDisabledInherit: false, |
| | | radioType: _consts.radio.TYPE_LEVEL, |
| | | chkboxType: { |
| | | "Y": "ps", |
| | | "N": "ps" |
| | | } |
| | | }, |
| | | data: { |
| | | key: { |
| | | checked: "checked" |
| | | } |
| | | }, |
| | | callback: { |
| | | beforeCheck: null, |
| | | onCheck: null |
| | | } |
| | | }, |
| | | //default root of excheck |
| | | _initRoot = function (setting) { |
| | | var r = data.getRoot(setting); |
| | | r.radioCheckedList = []; |
| | | }, |
| | | //default cache of excheck |
| | | _initCache = function (treeId) { |
| | | }, |
| | | //default bind event of excheck |
| | | _bindEvent = function (setting) { |
| | | var o = setting.treeObj, |
| | | c = consts.event; |
| | | o.bind(c.CHECK, function (event, srcEvent, treeId, node) { |
| | | event.srcEvent = srcEvent; |
| | | tools.apply(setting.callback.onCheck, [event, treeId, node]); |
| | | }); |
| | | }, |
| | | _unbindEvent = function (setting) { |
| | | var o = setting.treeObj, |
| | | c = consts.event; |
| | | o.unbind(c.CHECK); |
| | | }, |
| | | //default event proxy of excheck |
| | | _eventProxy = function (e) { |
| | | var target = e.target, |
| | | setting = data.getSetting(e.data.treeId), |
| | | tId = "", node = null, |
| | | nodeEventType = "", treeEventType = "", |
| | | nodeEventCallback = null, treeEventCallback = null; |
| | | |
| | | if (tools.eqs(e.type, "mouseover")) { |
| | | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode" + consts.id.CHECK) !== null) { |
| | | tId = tools.getNodeMainDom(target).id; |
| | | nodeEventType = "mouseoverCheck"; |
| | | } |
| | | } else if (tools.eqs(e.type, "mouseout")) { |
| | | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode" + consts.id.CHECK) !== null) { |
| | | tId = tools.getNodeMainDom(target).id; |
| | | nodeEventType = "mouseoutCheck"; |
| | | } |
| | | } else if (tools.eqs(e.type, "click")) { |
| | | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode" + consts.id.CHECK) !== null) { |
| | | tId = tools.getNodeMainDom(target).id; |
| | | nodeEventType = "checkNode"; |
| | | } |
| | | } |
| | | if (tId.length > 0) { |
| | | node = data.getNodeCache(setting, tId); |
| | | switch (nodeEventType) { |
| | | case "checkNode" : |
| | | nodeEventCallback = _handler.onCheckNode; |
| | | break; |
| | | case "mouseoverCheck" : |
| | | nodeEventCallback = _handler.onMouseoverCheck; |
| | | break; |
| | | case "mouseoutCheck" : |
| | | nodeEventCallback = _handler.onMouseoutCheck; |
| | | break; |
| | | } |
| | | } |
| | | var proxyResult = { |
| | | stop: nodeEventType === "checkNode", |
| | | node: node, |
| | | nodeEventType: nodeEventType, |
| | | nodeEventCallback: nodeEventCallback, |
| | | treeEventType: treeEventType, |
| | | treeEventCallback: treeEventCallback |
| | | }; |
| | | return proxyResult |
| | | }, |
| | | //default init node of excheck |
| | | _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { |
| | | if (!n) return; |
| | | var checked = data.nodeChecked(setting, n); |
| | | n.checkedOld = checked; |
| | | if (typeof n.nocheck == "string") n.nocheck = tools.eqs(n.nocheck, "true"); |
| | | n.nocheck = !!n.nocheck || (setting.check.nocheckInherit && parentNode && !!parentNode.nocheck); |
| | | if (typeof n.chkDisabled == "string") n.chkDisabled = tools.eqs(n.chkDisabled, "true"); |
| | | n.chkDisabled = !!n.chkDisabled || (setting.check.chkDisabledInherit && parentNode && !!parentNode.chkDisabled); |
| | | if (typeof n.halfCheck == "string") n.halfCheck = tools.eqs(n.halfCheck, "true"); |
| | | n.halfCheck = !!n.halfCheck; |
| | | n.check_Child_State = -1; |
| | | n.check_Focus = false; |
| | | n.getCheckStatus = function () { |
| | | return data.getCheckStatus(setting, n); |
| | | }; |
| | | |
| | | if (setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL && checked) { |
| | | var r = data.getRoot(setting); |
| | | r.radioCheckedList.push(n); |
| | | } |
| | | }, |
| | | //add dom for check |
| | | _beforeA = function (setting, node, html) { |
| | | if (setting.check.enable) { |
| | | data.makeChkFlag(setting, node); |
| | | html.push("<span ID='", node.tId, consts.id.CHECK, "' class='", view.makeChkClass(setting, node), "' treeNode", consts.id.CHECK, (node.nocheck === true ? " style='display:none;'" : ""), "></span>"); |
| | | } |
| | | }, |
| | | //update zTreeObj, add method of check |
| | | _zTreeTools = function (setting, zTreeTools) { |
| | | zTreeTools.checkNode = function (node, checked, checkTypeFlag, callbackFlag) { |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | if (node.chkDisabled === true) return; |
| | | if (checked !== true && checked !== false) { |
| | | checked = !nodeChecked; |
| | | } |
| | | callbackFlag = !!callbackFlag; |
| | | |
| | | if (nodeChecked === checked && !checkTypeFlag) { |
| | | return; |
| | | } else if (callbackFlag && tools.apply(this.setting.callback.beforeCheck, [this.setting.treeId, node], true) == false) { |
| | | return; |
| | | } |
| | | if (tools.uCanDo(this.setting) && this.setting.check.enable && node.nocheck !== true) { |
| | | data.nodeChecked(setting, node, checked); |
| | | var checkObj = $$(node, consts.id.CHECK, this.setting); |
| | | if (checkTypeFlag || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node); |
| | | view.setChkClass(this.setting, checkObj, node); |
| | | view.repairParentChkClassWithSelf(this.setting, node); |
| | | if (callbackFlag) { |
| | | this.setting.treeObj.trigger(consts.event.CHECK, [null, this.setting.treeId, node]); |
| | | } |
| | | } |
| | | } |
| | | |
| | | zTreeTools.checkAllNodes = function (checked) { |
| | | view.repairAllChk(this.setting, !!checked); |
| | | } |
| | | |
| | | zTreeTools.getCheckedNodes = function (checked) { |
| | | var checked = (checked !== false); |
| | | var children = data.nodeChildren(setting, data.getRoot(this.setting)); |
| | | return data.getTreeCheckedNodes(this.setting, children, checked); |
| | | } |
| | | |
| | | zTreeTools.getChangeCheckedNodes = function () { |
| | | var children = data.nodeChildren(setting, data.getRoot(this.setting)); |
| | | return data.getTreeChangeCheckedNodes(this.setting, children); |
| | | } |
| | | |
| | | zTreeTools.setChkDisabled = function (node, disabled, inheritParent, inheritChildren) { |
| | | disabled = !!disabled; |
| | | inheritParent = !!inheritParent; |
| | | inheritChildren = !!inheritChildren; |
| | | view.repairSonChkDisabled(this.setting, node, disabled, inheritChildren); |
| | | view.repairParentChkDisabled(this.setting, node.getParentNode(), disabled, inheritParent); |
| | | } |
| | | |
| | | var _updateNode = zTreeTools.updateNode; |
| | | zTreeTools.updateNode = function (node, checkTypeFlag) { |
| | | if (_updateNode) _updateNode.apply(zTreeTools, arguments); |
| | | if (!node || !this.setting.check.enable) return; |
| | | var nObj = $$(node, this.setting); |
| | | if (nObj.get(0) && tools.uCanDo(this.setting)) { |
| | | var checkObj = $$(node, consts.id.CHECK, this.setting); |
| | | if (checkTypeFlag == true || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node); |
| | | view.setChkClass(this.setting, checkObj, node); |
| | | view.repairParentChkClassWithSelf(this.setting, node); |
| | | } |
| | | } |
| | | }, |
| | | //method of operate data |
| | | _data = { |
| | | getRadioCheckedList: function (setting) { |
| | | var checkedList = data.getRoot(setting).radioCheckedList; |
| | | for (var i = 0, j = checkedList.length; i < j; i++) { |
| | | if (!data.getNodeCache(setting, checkedList[i].tId)) { |
| | | checkedList.splice(i, 1); |
| | | i--; |
| | | j--; |
| | | } |
| | | } |
| | | return checkedList; |
| | | }, |
| | | getCheckStatus: function (setting, node) { |
| | | if (!setting.check.enable || node.nocheck || node.chkDisabled) return null; |
| | | var checked = data.nodeChecked(setting, node), |
| | | r = { |
| | | checked: checked, |
| | | half: node.halfCheck ? node.halfCheck : (setting.check.chkStyle == consts.radio.STYLE ? (node.check_Child_State === 2) : (checked ? (node.check_Child_State > -1 && node.check_Child_State < 2) : (node.check_Child_State > 0))) |
| | | }; |
| | | return r; |
| | | }, |
| | | getTreeCheckedNodes: function (setting, nodes, checked, results) { |
| | | if (!nodes) return []; |
| | | var onlyOne = (checked && setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL); |
| | | results = !results ? [] : results; |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | var children = data.nodeChildren(setting, node); |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | if (node.nocheck !== true && node.chkDisabled !== true && nodeChecked == checked) { |
| | | results.push(node); |
| | | if (onlyOne) { |
| | | break; |
| | | } |
| | | } |
| | | data.getTreeCheckedNodes(setting, children, checked, results); |
| | | if (onlyOne && results.length > 0) { |
| | | break; |
| | | } |
| | | } |
| | | return results; |
| | | }, |
| | | getTreeChangeCheckedNodes: function (setting, nodes, results) { |
| | | if (!nodes) return []; |
| | | results = !results ? [] : results; |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | var children = data.nodeChildren(setting, node); |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | if (node.nocheck !== true && node.chkDisabled !== true && nodeChecked != node.checkedOld) { |
| | | results.push(node); |
| | | } |
| | | data.getTreeChangeCheckedNodes(setting, children, results); |
| | | } |
| | | return results; |
| | | }, |
| | | makeChkFlag: function (setting, node) { |
| | | if (!node) return; |
| | | var chkFlag = -1; |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children) { |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | var cNode = children[i]; |
| | | var nodeChecked = data.nodeChecked(setting, cNode); |
| | | var tmp = -1; |
| | | if (setting.check.chkStyle == consts.radio.STYLE) { |
| | | if (cNode.nocheck === true || cNode.chkDisabled === true) { |
| | | tmp = cNode.check_Child_State; |
| | | } else if (cNode.halfCheck === true) { |
| | | tmp = 2; |
| | | } else if (nodeChecked) { |
| | | tmp = 2; |
| | | } else { |
| | | tmp = cNode.check_Child_State > 0 ? 2 : 0; |
| | | } |
| | | if (tmp == 2) { |
| | | chkFlag = 2; |
| | | break; |
| | | } else if (tmp == 0) { |
| | | chkFlag = 0; |
| | | } |
| | | } else if (setting.check.chkStyle == consts.checkbox.STYLE) { |
| | | if (cNode.nocheck === true || cNode.chkDisabled === true) { |
| | | tmp = cNode.check_Child_State; |
| | | } else if (cNode.halfCheck === true) { |
| | | tmp = 1; |
| | | } else if (nodeChecked) { |
| | | tmp = (cNode.check_Child_State === -1 || cNode.check_Child_State === 2) ? 2 : 1; |
| | | } else { |
| | | tmp = (cNode.check_Child_State > 0) ? 1 : 0; |
| | | } |
| | | if (tmp === 1) { |
| | | chkFlag = 1; |
| | | break; |
| | | } else if (tmp === 2 && chkFlag > -1 && i > 0 && tmp !== chkFlag) { |
| | | chkFlag = 1; |
| | | break; |
| | | } else if (chkFlag === 2 && tmp > -1 && tmp < 2) { |
| | | chkFlag = 1; |
| | | break; |
| | | } else if (tmp > -1) { |
| | | chkFlag = tmp; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | node.check_Child_State = chkFlag; |
| | | } |
| | | }, |
| | | //method of event proxy |
| | | _event = {}, |
| | | //method of event handler |
| | | _handler = { |
| | | onCheckNode: function (event, node) { |
| | | if (node.chkDisabled === true) return false; |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (tools.apply(setting.callback.beforeCheck, [setting.treeId, node], true) == false) return true; |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | data.nodeChecked(setting, node, !nodeChecked); |
| | | view.checkNodeRelation(setting, node); |
| | | var checkObj = $$(node, consts.id.CHECK, setting); |
| | | view.setChkClass(setting, checkObj, node); |
| | | view.repairParentChkClassWithSelf(setting, node); |
| | | setting.treeObj.trigger(consts.event.CHECK, [event, setting.treeId, node]); |
| | | return true; |
| | | }, |
| | | onMouseoverCheck: function (event, node) { |
| | | if (node.chkDisabled === true) return false; |
| | | var setting = data.getSetting(event.data.treeId), |
| | | checkObj = $$(node, consts.id.CHECK, setting); |
| | | node.check_Focus = true; |
| | | view.setChkClass(setting, checkObj, node); |
| | | return true; |
| | | }, |
| | | onMouseoutCheck: function (event, node) { |
| | | if (node.chkDisabled === true) return false; |
| | | var setting = data.getSetting(event.data.treeId), |
| | | checkObj = $$(node, consts.id.CHECK, setting); |
| | | node.check_Focus = false; |
| | | view.setChkClass(setting, checkObj, node); |
| | | return true; |
| | | } |
| | | }, |
| | | //method of tools for zTree |
| | | _tools = {}, |
| | | //method of operate ztree dom |
| | | _view = { |
| | | checkNodeRelation: function (setting, node) { |
| | | var pNode, i, l, |
| | | r = consts.radio; |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | if (setting.check.chkStyle == r.STYLE) { |
| | | var checkedList = data.getRadioCheckedList(setting); |
| | | if (nodeChecked) { |
| | | if (setting.check.radioType == r.TYPE_ALL) { |
| | | for (i = checkedList.length - 1; i >= 0; i--) { |
| | | pNode = checkedList[i]; |
| | | var pNodeChecked = data.nodeChecked(setting, pNode); |
| | | if (pNodeChecked && pNode != node) { |
| | | data.nodeChecked(setting, pNode, false); |
| | | checkedList.splice(i, 1); |
| | | |
| | | view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode); |
| | | if (pNode.parentTId != node.parentTId) { |
| | | view.repairParentChkClassWithSelf(setting, pNode); |
| | | } |
| | | } |
| | | } |
| | | checkedList.push(node); |
| | | } else { |
| | | var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting); |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | for (i = 0, l = children.length; i < l; i++) { |
| | | pNode = children[i]; |
| | | var pNodeChecked = data.nodeChecked(setting, pNode); |
| | | if (pNodeChecked && pNode != node) { |
| | | data.nodeChecked(setting, pNode, false); |
| | | view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode); |
| | | } |
| | | } |
| | | } |
| | | } else if (setting.check.radioType == r.TYPE_ALL) { |
| | | for (i = 0, l = checkedList.length; i < l; i++) { |
| | | if (node == checkedList[i]) { |
| | | checkedList.splice(i, 1); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | var children = data.nodeChildren(setting, node); |
| | | if (nodeChecked && (!children || children.length == 0 || setting.check.chkboxType.Y.indexOf("s") > -1)) { |
| | | view.setSonNodeCheckBox(setting, node, true); |
| | | } |
| | | if (!nodeChecked && (!children || children.length == 0 || setting.check.chkboxType.N.indexOf("s") > -1)) { |
| | | view.setSonNodeCheckBox(setting, node, false); |
| | | } |
| | | if (nodeChecked && setting.check.chkboxType.Y.indexOf("p") > -1) { |
| | | view.setParentNodeCheckBox(setting, node, true); |
| | | } |
| | | if (!nodeChecked && setting.check.chkboxType.N.indexOf("p") > -1) { |
| | | view.setParentNodeCheckBox(setting, node, false); |
| | | } |
| | | } |
| | | }, |
| | | makeChkClass: function (setting, node) { |
| | | var c = consts.checkbox, r = consts.radio, |
| | | fullStyle = ""; |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | if (node.chkDisabled === true) { |
| | | fullStyle = c.DISABLED; |
| | | } else if (node.halfCheck) { |
| | | fullStyle = c.PART; |
| | | } else if (setting.check.chkStyle == r.STYLE) { |
| | | fullStyle = (node.check_Child_State < 1) ? c.FULL : c.PART; |
| | | } else { |
| | | fullStyle = nodeChecked ? ((node.check_Child_State === 2 || node.check_Child_State === -1) ? c.FULL : c.PART) : ((node.check_Child_State < 1) ? c.FULL : c.PART); |
| | | } |
| | | var chkName = setting.check.chkStyle + "_" + (nodeChecked ? c.TRUE : c.FALSE) + "_" + fullStyle; |
| | | chkName = (node.check_Focus && node.chkDisabled !== true) ? chkName + "_" + c.FOCUS : chkName; |
| | | return consts.className.BUTTON + " " + c.DEFAULT + " " + chkName; |
| | | }, |
| | | repairAllChk: function (setting, checked) { |
| | | if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) { |
| | | var root = data.getRoot(setting); |
| | | var children = data.nodeChildren(setting, root); |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | var node = children[i]; |
| | | if (node.nocheck !== true && node.chkDisabled !== true) { |
| | | data.nodeChecked(setting, node, checked); |
| | | } |
| | | view.setSonNodeCheckBox(setting, node, checked); |
| | | } |
| | | } |
| | | }, |
| | | repairChkClass: function (setting, node) { |
| | | if (!node) return; |
| | | data.makeChkFlag(setting, node); |
| | | if (node.nocheck !== true) { |
| | | var checkObj = $$(node, consts.id.CHECK, setting); |
| | | view.setChkClass(setting, checkObj, node); |
| | | } |
| | | }, |
| | | repairParentChkClass: function (setting, node) { |
| | | if (!node || !node.parentTId) return; |
| | | var pNode = node.getParentNode(); |
| | | view.repairChkClass(setting, pNode); |
| | | view.repairParentChkClass(setting, pNode); |
| | | }, |
| | | repairParentChkClassWithSelf: function (setting, node) { |
| | | if (!node) return; |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children && children.length > 0) { |
| | | view.repairParentChkClass(setting, children[0]); |
| | | } else { |
| | | view.repairParentChkClass(setting, node); |
| | | } |
| | | }, |
| | | repairSonChkDisabled: function (setting, node, chkDisabled, inherit) { |
| | | if (!node) return; |
| | | if (node.chkDisabled != chkDisabled) { |
| | | node.chkDisabled = chkDisabled; |
| | | } |
| | | view.repairChkClass(setting, node); |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children && inherit) { |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | var sNode = children[i]; |
| | | view.repairSonChkDisabled(setting, sNode, chkDisabled, inherit); |
| | | } |
| | | } |
| | | }, |
| | | repairParentChkDisabled: function (setting, node, chkDisabled, inherit) { |
| | | if (!node) return; |
| | | if (node.chkDisabled != chkDisabled && inherit) { |
| | | node.chkDisabled = chkDisabled; |
| | | } |
| | | view.repairChkClass(setting, node); |
| | | view.repairParentChkDisabled(setting, node.getParentNode(), chkDisabled, inherit); |
| | | }, |
| | | setChkClass: function (setting, obj, node) { |
| | | if (!obj) return; |
| | | if (node.nocheck === true) { |
| | | obj.hide(); |
| | | } else { |
| | | obj.show(); |
| | | } |
| | | obj.attr('class', view.makeChkClass(setting, node)); |
| | | }, |
| | | setParentNodeCheckBox: function (setting, node, value, srcNode) { |
| | | var checkObj = $$(node, consts.id.CHECK, setting); |
| | | if (!srcNode) srcNode = node; |
| | | data.makeChkFlag(setting, node); |
| | | if (node.nocheck !== true && node.chkDisabled !== true) { |
| | | data.nodeChecked(setting, node, value); |
| | | view.setChkClass(setting, checkObj, node); |
| | | if (setting.check.autoCheckTrigger && node != srcNode) { |
| | | setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]); |
| | | } |
| | | } |
| | | if (node.parentTId) { |
| | | var pSign = true; |
| | | if (!value) { |
| | | var pNodes = data.nodeChildren(setting, node.getParentNode()); |
| | | for (var i = 0, l = pNodes.length; i < l; i++) { |
| | | var pNode = pNodes[i]; |
| | | var nodeChecked = data.nodeChecked(setting, pNode); |
| | | if ((pNode.nocheck !== true && pNode.chkDisabled !== true && nodeChecked) |
| | | || ((pNode.nocheck === true || pNode.chkDisabled === true) && pNode.check_Child_State > 0)) { |
| | | pSign = false; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (pSign) { |
| | | view.setParentNodeCheckBox(setting, node.getParentNode(), value, srcNode); |
| | | } |
| | | } |
| | | }, |
| | | setSonNodeCheckBox: function (setting, node, value, srcNode) { |
| | | if (!node) return; |
| | | var checkObj = $$(node, consts.id.CHECK, setting); |
| | | if (!srcNode) srcNode = node; |
| | | |
| | | var hasDisable = false; |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children) { |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | var sNode = children[i]; |
| | | view.setSonNodeCheckBox(setting, sNode, value, srcNode); |
| | | if (sNode.chkDisabled === true) hasDisable = true; |
| | | } |
| | | } |
| | | |
| | | if (node != data.getRoot(setting) && node.chkDisabled !== true) { |
| | | if (hasDisable && node.nocheck !== true) { |
| | | data.makeChkFlag(setting, node); |
| | | } |
| | | if (node.nocheck !== true && node.chkDisabled !== true) { |
| | | data.nodeChecked(setting, node, value); |
| | | if (!hasDisable) node.check_Child_State = (children && children.length > 0) ? (value ? 2 : 0) : -1; |
| | | } else { |
| | | node.check_Child_State = -1; |
| | | } |
| | | view.setChkClass(setting, checkObj, node); |
| | | if (setting.check.autoCheckTrigger && node != srcNode && node.nocheck !== true && node.chkDisabled !== true) { |
| | | setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]); |
| | | } |
| | | } |
| | | |
| | | } |
| | | }, |
| | | |
| | | _z = { |
| | | tools: _tools, |
| | | view: _view, |
| | | event: _event, |
| | | data: _data |
| | | }; |
| | | $.extend(true, $.fn.zTree.consts, _consts); |
| | | $.extend(true, $.fn.zTree._z, _z); |
| | | |
| | | var zt = $.fn.zTree, |
| | | tools = zt._z.tools, |
| | | consts = zt.consts, |
| | | view = zt._z.view, |
| | | data = zt._z.data, |
| | | event = zt._z.event, |
| | | $$ = tools.$; |
| | | |
| | | data.nodeChecked = function (setting, node, newChecked) { |
| | | if (!node) { |
| | | return false; |
| | | } |
| | | var key = setting.data.key.checked; |
| | | if (typeof newChecked !== 'undefined') { |
| | | if (typeof newChecked === "string") { |
| | | newChecked = tools.eqs(newChecked, "true"); |
| | | } |
| | | newChecked = !!newChecked; |
| | | node[key] = newChecked; |
| | | } else if (typeof node[key] == "string"){ |
| | | node[key] = tools.eqs(node[key], "true"); |
| | | } else { |
| | | node[key] = !!node[key]; |
| | | } |
| | | return node[key]; |
| | | }; |
| | | |
| | | data.exSetting(_setting); |
| | | data.addInitBind(_bindEvent); |
| | | data.addInitUnBind(_unbindEvent); |
| | | data.addInitCache(_initCache); |
| | | data.addInitNode(_initNode); |
| | | data.addInitProxy(_eventProxy, true); |
| | | data.addInitRoot(_initRoot); |
| | | data.addBeforeA(_beforeA); |
| | | data.addZTreeTools(_zTreeTools); |
| | | |
| | | var _createNodes = view.createNodes; |
| | | view.createNodes = function (setting, level, nodes, parentNode, index) { |
| | | if (_createNodes) _createNodes.apply(view, arguments); |
| | | if (!nodes) return; |
| | | view.repairParentChkClassWithSelf(setting, parentNode); |
| | | } |
| | | var _removeNode = view.removeNode; |
| | | view.removeNode = function (setting, node) { |
| | | var parentNode = node.getParentNode(); |
| | | if (_removeNode) _removeNode.apply(view, arguments); |
| | | if (!node || !parentNode) return; |
| | | view.repairChkClass(setting, parentNode); |
| | | view.repairParentChkClass(setting, parentNode); |
| | | } |
| | | |
| | | var _appendNodes = view.appendNodes; |
| | | view.appendNodes = function (setting, level, nodes, parentNode, index, initFlag, openFlag) { |
| | | var html = ""; |
| | | if (_appendNodes) { |
| | | html = _appendNodes.apply(view, arguments); |
| | | } |
| | | if (parentNode) { |
| | | data.makeChkFlag(setting, parentNode); |
| | | } |
| | | return html; |
| | | } |
| | | })(jQuery); |
| | | /* |
| | | * JQuery zTree exedit v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function ($) { |
| | | //default consts of exedit |
| | | var _consts = { |
| | | event: { |
| | | DRAG: "ztree_drag", |
| | | DROP: "ztree_drop", |
| | | RENAME: "ztree_rename", |
| | | DRAGMOVE: "ztree_dragmove" |
| | | }, |
| | | id: { |
| | | EDIT: "_edit", |
| | | INPUT: "_input", |
| | | REMOVE: "_remove" |
| | | }, |
| | | move: { |
| | | TYPE_INNER: "inner", |
| | | TYPE_PREV: "prev", |
| | | TYPE_NEXT: "next" |
| | | }, |
| | | node: { |
| | | CURSELECTED_EDIT: "curSelectedNode_Edit", |
| | | TMPTARGET_TREE: "tmpTargetzTree", |
| | | TMPTARGET_NODE: "tmpTargetNode" |
| | | } |
| | | }, |
| | | //default setting of exedit |
| | | _setting = { |
| | | edit: { |
| | | enable: false, |
| | | editNameSelectAll: false, |
| | | showRemoveBtn: true, |
| | | showRenameBtn: true, |
| | | removeTitle: "remove", |
| | | renameTitle: "rename", |
| | | drag: { |
| | | autoExpandTrigger: false, |
| | | isCopy: true, |
| | | isMove: true, |
| | | prev: true, |
| | | next: true, |
| | | inner: true, |
| | | minMoveSize: 5, |
| | | borderMax: 10, |
| | | borderMin: -5, |
| | | maxShowNodeNum: 5, |
| | | autoOpenTime: 500 |
| | | } |
| | | }, |
| | | view: { |
| | | addHoverDom: null, |
| | | removeHoverDom: null |
| | | }, |
| | | callback: { |
| | | beforeDrag: null, |
| | | beforeDragOpen: null, |
| | | beforeDrop: null, |
| | | beforeEditName: null, |
| | | beforeRename: null, |
| | | onDrag: null, |
| | | onDragMove: null, |
| | | onDrop: null, |
| | | onRename: null |
| | | } |
| | | }, |
| | | //default root of exedit |
| | | _initRoot = function (setting) { |
| | | var r = data.getRoot(setting), rs = data.getRoots(); |
| | | r.curEditNode = null; |
| | | r.curEditInput = null; |
| | | r.curHoverNode = null; |
| | | r.dragFlag = 0; |
| | | r.dragNodeShowBefore = []; |
| | | r.dragMaskList = new Array(); |
| | | rs.showHoverDom = true; |
| | | }, |
| | | //default cache of exedit |
| | | _initCache = function (treeId) { |
| | | }, |
| | | //default bind event of exedit |
| | | _bindEvent = function (setting) { |
| | | var o = setting.treeObj; |
| | | var c = consts.event; |
| | | o.bind(c.RENAME, function (event, treeId, treeNode, isCancel) { |
| | | tools.apply(setting.callback.onRename, [event, treeId, treeNode, isCancel]); |
| | | }); |
| | | |
| | | o.bind(c.DRAG, function (event, srcEvent, treeId, treeNodes) { |
| | | tools.apply(setting.callback.onDrag, [srcEvent, treeId, treeNodes]); |
| | | }); |
| | | |
| | | o.bind(c.DRAGMOVE, function (event, srcEvent, treeId, treeNodes) { |
| | | tools.apply(setting.callback.onDragMove, [srcEvent, treeId, treeNodes]); |
| | | }); |
| | | |
| | | o.bind(c.DROP, function (event, srcEvent, treeId, treeNodes, targetNode, moveType, isCopy) { |
| | | tools.apply(setting.callback.onDrop, [srcEvent, treeId, treeNodes, targetNode, moveType, isCopy]); |
| | | }); |
| | | }, |
| | | _unbindEvent = function (setting) { |
| | | var o = setting.treeObj; |
| | | var c = consts.event; |
| | | o.unbind(c.RENAME); |
| | | o.unbind(c.DRAG); |
| | | o.unbind(c.DRAGMOVE); |
| | | o.unbind(c.DROP); |
| | | }, |
| | | //default event proxy of exedit |
| | | _eventProxy = function (e) { |
| | | var target = e.target, |
| | | setting = data.getSetting(e.data.treeId), |
| | | relatedTarget = e.relatedTarget, |
| | | tId = "", node = null, |
| | | nodeEventType = "", treeEventType = "", |
| | | nodeEventCallback = null, treeEventCallback = null, |
| | | tmp = null; |
| | | |
| | | if (tools.eqs(e.type, "mouseover")) { |
| | | tmp = tools.getMDom(setting, target, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (tmp) { |
| | | tId = tools.getNodeMainDom(tmp).id; |
| | | nodeEventType = "hoverOverNode"; |
| | | } |
| | | } else if (tools.eqs(e.type, "mouseout")) { |
| | | tmp = tools.getMDom(setting, relatedTarget, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (!tmp) { |
| | | tId = "remove"; |
| | | nodeEventType = "hoverOutNode"; |
| | | } |
| | | } else if (tools.eqs(e.type, "mousedown")) { |
| | | tmp = tools.getMDom(setting, target, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (tmp) { |
| | | tId = tools.getNodeMainDom(tmp).id; |
| | | nodeEventType = "mousedownNode"; |
| | | } |
| | | } |
| | | if (tId.length > 0) { |
| | | node = data.getNodeCache(setting, tId); |
| | | switch (nodeEventType) { |
| | | case "mousedownNode" : |
| | | nodeEventCallback = _handler.onMousedownNode; |
| | | break; |
| | | case "hoverOverNode" : |
| | | nodeEventCallback = _handler.onHoverOverNode; |
| | | break; |
| | | case "hoverOutNode" : |
| | | nodeEventCallback = _handler.onHoverOutNode; |
| | | break; |
| | | } |
| | | } |
| | | var proxyResult = { |
| | | stop: false, |
| | | node: node, |
| | | nodeEventType: nodeEventType, |
| | | nodeEventCallback: nodeEventCallback, |
| | | treeEventType: treeEventType, |
| | | treeEventCallback: treeEventCallback |
| | | }; |
| | | return proxyResult |
| | | }, |
| | | //default init node of exedit |
| | | _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { |
| | | if (!n) return; |
| | | n.isHover = false; |
| | | n.editNameFlag = false; |
| | | }, |
| | | //update zTreeObj, add method of edit |
| | | _zTreeTools = function (setting, zTreeTools) { |
| | | zTreeTools.cancelEditName = function (newName) { |
| | | var root = data.getRoot(this.setting); |
| | | if (!root.curEditNode) return; |
| | | view.cancelCurEditNode(this.setting, newName ? newName : null, true); |
| | | } |
| | | zTreeTools.copyNode = function (targetNode, node, moveType, isSilent) { |
| | | if (!node) return null; |
| | | var isParent = data.nodeIsParent(setting, targetNode); |
| | | if (targetNode && !isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) return null; |
| | | var _this = this, |
| | | newNode = tools.clone(node); |
| | | if (!targetNode) { |
| | | targetNode = null; |
| | | moveType = consts.move.TYPE_INNER; |
| | | } |
| | | if (moveType == consts.move.TYPE_INNER) { |
| | | function copyCallback() { |
| | | view.addNodes(_this.setting, targetNode, -1, [newNode], isSilent); |
| | | } |
| | | |
| | | if (tools.canAsync(this.setting, targetNode)) { |
| | | view.asyncNode(this.setting, targetNode, isSilent, copyCallback); |
| | | } else { |
| | | copyCallback(); |
| | | } |
| | | } else { |
| | | view.addNodes(this.setting, targetNode.parentNode, -1, [newNode], isSilent); |
| | | view.moveNode(this.setting, targetNode, newNode, moveType, false, isSilent); |
| | | } |
| | | return newNode; |
| | | } |
| | | zTreeTools.editName = function (node) { |
| | | if (!node || !node.tId || node !== data.getNodeCache(this.setting, node.tId)) return; |
| | | if (node.parentTId) view.expandCollapseParentNode(this.setting, node.getParentNode(), true); |
| | | view.editNode(this.setting, node) |
| | | } |
| | | zTreeTools.moveNode = function (targetNode, node, moveType, isSilent) { |
| | | if (!node) return node; |
| | | var isParent = data.nodeIsParent(setting, targetNode); |
| | | if (targetNode && !isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) { |
| | | return null; |
| | | } else if (targetNode && ((node.parentTId == targetNode.tId && moveType == consts.move.TYPE_INNER) || $$(node, this.setting).find("#" + targetNode.tId).length > 0)) { |
| | | return null; |
| | | } else if (!targetNode) { |
| | | targetNode = null; |
| | | } |
| | | var _this = this; |
| | | |
| | | function moveCallback() { |
| | | view.moveNode(_this.setting, targetNode, node, moveType, false, isSilent); |
| | | } |
| | | |
| | | if (tools.canAsync(this.setting, targetNode) && moveType === consts.move.TYPE_INNER) { |
| | | view.asyncNode(this.setting, targetNode, isSilent, moveCallback); |
| | | } else { |
| | | moveCallback(); |
| | | } |
| | | return node; |
| | | } |
| | | zTreeTools.setEditable = function (editable) { |
| | | this.setting.confirm.enable = editable; |
| | | return this.refresh(); |
| | | } |
| | | }, |
| | | //method of operate data |
| | | _data = { |
| | | setSonNodeLevel: function (setting, parentNode, node) { |
| | | if (!node) return; |
| | | var children = data.nodeChildren(setting, node); |
| | | node.level = (parentNode) ? parentNode.level + 1 : 0; |
| | | if (!children) return; |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | if (children[i]) data.setSonNodeLevel(setting, node, children[i]); |
| | | } |
| | | } |
| | | }, |
| | | //method of event proxy |
| | | _event = {}, |
| | | //method of event handler |
| | | _handler = { |
| | | onHoverOverNode: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId), |
| | | root = data.getRoot(setting); |
| | | if (root.curHoverNode != node) { |
| | | _handler.onHoverOutNode(event); |
| | | } |
| | | root.curHoverNode = node; |
| | | view.addHoverDom(setting, node); |
| | | }, |
| | | onHoverOutNode: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId), |
| | | root = data.getRoot(setting); |
| | | if (root.curHoverNode && !data.isSelectedNode(setting, root.curHoverNode)) { |
| | | view.removeTreeDom(setting, root.curHoverNode); |
| | | root.curHoverNode = null; |
| | | } |
| | | }, |
| | | onMousedownNode: function (eventMouseDown, _node) { |
| | | var i, l, |
| | | setting = data.getSetting(eventMouseDown.data.treeId), |
| | | root = data.getRoot(setting), roots = data.getRoots(); |
| | | //right click can't drag & drop |
| | | if (eventMouseDown.button == 2 || !setting.confirm.enable || (!setting.confirm.drag.isCopy && !setting.confirm.drag.isMove)) return true; |
| | | |
| | | //input of edit node name can't drag & drop |
| | | var target = eventMouseDown.target, |
| | | _nodes = data.getRoot(setting).curSelectedList, |
| | | nodes = []; |
| | | if (!data.isSelectedNode(setting, _node)) { |
| | | nodes = [_node]; |
| | | } else { |
| | | for (i = 0, l = _nodes.length; i < l; i++) { |
| | | if (_nodes[i].editNameFlag && tools.eqs(target.tagName, "input") && target.getAttribute("treeNode" + consts.id.INPUT) !== null) { |
| | | return true; |
| | | } |
| | | nodes.push(_nodes[i]); |
| | | if (nodes[0].parentTId !== _nodes[i].parentTId) { |
| | | nodes = [_node]; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | view.editNodeBlur = true; |
| | | view.cancelCurEditNode(setting); |
| | | |
| | | var doc = $(setting.treeObj.get(0).ownerDocument), |
| | | body = $(setting.treeObj.get(0).ownerDocument.body), curNode, tmpArrow, tmpTarget, |
| | | isOtherTree = false, |
| | | targetSetting = setting, |
| | | sourceSetting = setting, |
| | | preNode, nextNode, |
| | | preTmpTargetNodeId = null, |
| | | preTmpMoveType = null, |
| | | tmpTargetNodeId = null, |
| | | moveType = consts.move.TYPE_INNER, |
| | | mouseDownX = eventMouseDown.clientX, |
| | | mouseDownY = eventMouseDown.clientY, |
| | | startTime = (new Date()).getTime(); |
| | | |
| | | if (tools.uCanDo(setting)) { |
| | | doc.bind("mousemove", _docMouseMove); |
| | | } |
| | | |
| | | function _docMouseMove(event) { |
| | | //avoid start drag after click node |
| | | if (root.dragFlag == 0 && Math.abs(mouseDownX - event.clientX) < setting.confirm.drag.minMoveSize |
| | | && Math.abs(mouseDownY - event.clientY) < setting.confirm.drag.minMoveSize) { |
| | | return true; |
| | | } |
| | | var i, l, tmpNode, tmpDom, tmpNodes; |
| | | body.css("cursor", "pointer"); |
| | | |
| | | if (root.dragFlag == 0) { |
| | | if (tools.apply(setting.callback.beforeDrag, [setting.treeId, nodes], true) == false) { |
| | | _docMouseUp(event); |
| | | return true; |
| | | } |
| | | |
| | | for (i = 0, l = nodes.length; i < l; i++) { |
| | | if (i == 0) { |
| | | root.dragNodeShowBefore = []; |
| | | } |
| | | tmpNode = nodes[i]; |
| | | if (data.nodeIsParent(setting, tmpNode) && tmpNode.open) { |
| | | view.expandCollapseNode(setting, tmpNode, !tmpNode.open); |
| | | root.dragNodeShowBefore[tmpNode.tId] = true; |
| | | } else { |
| | | root.dragNodeShowBefore[tmpNode.tId] = false; |
| | | } |
| | | } |
| | | |
| | | root.dragFlag = 1; |
| | | roots.showHoverDom = false; |
| | | tools.showIfameMask(setting, true); |
| | | |
| | | //sort |
| | | var isOrder = true, lastIndex = -1; |
| | | if (nodes.length > 1) { |
| | | var pNodes = nodes[0].parentTId ? data.nodeChildren(setting, nodes[0].getParentNode()) : data.getNodes(setting); |
| | | tmpNodes = []; |
| | | for (i = 0, l = pNodes.length; i < l; i++) { |
| | | if (root.dragNodeShowBefore[pNodes[i].tId] !== undefined) { |
| | | if (isOrder && lastIndex > -1 && (lastIndex + 1) !== i) { |
| | | isOrder = false; |
| | | } |
| | | tmpNodes.push(pNodes[i]); |
| | | lastIndex = i; |
| | | } |
| | | if (nodes.length === tmpNodes.length) { |
| | | nodes = tmpNodes; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (isOrder) { |
| | | preNode = nodes[0].getPreNode(); |
| | | nextNode = nodes[nodes.length - 1].getNextNode(); |
| | | } |
| | | |
| | | //set node in selected |
| | | curNode = $$("<ul class='zTreeDragUL'></ul>", setting); |
| | | for (i = 0, l = nodes.length; i < l; i++) { |
| | | tmpNode = nodes[i]; |
| | | tmpNode.editNameFlag = false; |
| | | view.selectNode(setting, tmpNode, i > 0); |
| | | view.removeTreeDom(setting, tmpNode); |
| | | |
| | | if (i > setting.confirm.drag.maxShowNodeNum - 1) { |
| | | continue; |
| | | } |
| | | |
| | | tmpDom = $$("<li id='" + tmpNode.tId + "_tmp'></li>", setting); |
| | | tmpDom.append($$(tmpNode, consts.id.A, setting).clone()); |
| | | tmpDom.css("padding", "0"); |
| | | tmpDom.children("#" + tmpNode.tId + consts.id.A).removeClass(consts.node.CURSELECTED); |
| | | curNode.append(tmpDom); |
| | | if (i == setting.confirm.drag.maxShowNodeNum - 1) { |
| | | tmpDom = $$("<li id='" + tmpNode.tId + "_moretmp'><a> ... </a></li>", setting); |
| | | curNode.append(tmpDom); |
| | | } |
| | | } |
| | | curNode.attr("id", nodes[0].tId + consts.id.UL + "_tmp"); |
| | | curNode.addClass(setting.treeObj.attr("class")); |
| | | curNode.appendTo(body); |
| | | |
| | | tmpArrow = $$("<span class='tmpzTreeMove_arrow'></span>", setting); |
| | | tmpArrow.attr("id", "zTreeMove_arrow_tmp"); |
| | | tmpArrow.appendTo(body); |
| | | |
| | | setting.treeObj.trigger(consts.event.DRAG, [event, setting.treeId, nodes]); |
| | | } |
| | | |
| | | if (root.dragFlag == 1) { |
| | | if (tmpTarget && tmpArrow.attr("id") == event.target.id && tmpTargetNodeId && (event.clientX + doc.scrollLeft() + 2) > ($("#" + tmpTargetNodeId + consts.id.A, tmpTarget).offset().left)) { |
| | | var xT = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget); |
| | | event.target = (xT.length > 0) ? xT.get(0) : event.target; |
| | | } else if (tmpTarget) { |
| | | tmpTarget.removeClass(consts.node.TMPTARGET_TREE); |
| | | if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV) |
| | | .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER); |
| | | } |
| | | tmpTarget = null; |
| | | tmpTargetNodeId = null; |
| | | |
| | | //judge drag & drop in multi ztree |
| | | isOtherTree = false; |
| | | targetSetting = setting; |
| | | var settings = data.getSettings(); |
| | | for (var s in settings) { |
| | | if (settings[s].treeId && settings[s].confirm.enable && settings[s].treeId != setting.treeId |
| | | && (event.target.id == settings[s].treeId || $(event.target).parents("#" + settings[s].treeId).length > 0)) { |
| | | isOtherTree = true; |
| | | targetSetting = settings[s]; |
| | | } |
| | | } |
| | | |
| | | var docScrollTop = doc.scrollTop(), |
| | | docScrollLeft = doc.scrollLeft(), |
| | | treeOffset = targetSetting.treeObj.offset(), |
| | | scrollHeight = targetSetting.treeObj.get(0).scrollHeight, |
| | | scrollWidth = targetSetting.treeObj.get(0).scrollWidth, |
| | | dTop = (event.clientY + docScrollTop - treeOffset.top), |
| | | dBottom = (targetSetting.treeObj.height() + treeOffset.top - event.clientY - docScrollTop), |
| | | dLeft = (event.clientX + docScrollLeft - treeOffset.left), |
| | | dRight = (targetSetting.treeObj.width() + treeOffset.left - event.clientX - docScrollLeft), |
| | | isTop = (dTop < setting.confirm.drag.borderMax && dTop > setting.confirm.drag.borderMin), |
| | | isBottom = (dBottom < setting.confirm.drag.borderMax && dBottom > setting.confirm.drag.borderMin), |
| | | isLeft = (dLeft < setting.confirm.drag.borderMax && dLeft > setting.confirm.drag.borderMin), |
| | | isRight = (dRight < setting.confirm.drag.borderMax && dRight > setting.confirm.drag.borderMin), |
| | | isTreeInner = dTop > setting.confirm.drag.borderMin && dBottom > setting.confirm.drag.borderMin && dLeft > setting.confirm.drag.borderMin && dRight > setting.confirm.drag.borderMin, |
| | | isTreeTop = (isTop && targetSetting.treeObj.scrollTop() <= 0), |
| | | isTreeBottom = (isBottom && (targetSetting.treeObj.scrollTop() + targetSetting.treeObj.height() + 10) >= scrollHeight), |
| | | isTreeLeft = (isLeft && targetSetting.treeObj.scrollLeft() <= 0), |
| | | isTreeRight = (isRight && (targetSetting.treeObj.scrollLeft() + targetSetting.treeObj.width() + 10) >= scrollWidth); |
| | | |
| | | if (event.target && tools.isChildOrSelf(event.target, targetSetting.treeId)) { |
| | | //get node <li> dom |
| | | var targetObj = event.target; |
| | | while (targetObj && targetObj.tagName && !tools.eqs(targetObj.tagName, "li") && targetObj.id != targetSetting.treeId) { |
| | | targetObj = targetObj.parentNode; |
| | | } |
| | | |
| | | var canMove = true; |
| | | //don't move to self or children of self |
| | | for (i = 0, l = nodes.length; i < l; i++) { |
| | | tmpNode = nodes[i]; |
| | | if (targetObj.id === tmpNode.tId) { |
| | | canMove = false; |
| | | break; |
| | | } else if ($$(tmpNode, setting).find("#" + targetObj.id).length > 0) { |
| | | canMove = false; |
| | | break; |
| | | } |
| | | } |
| | | if (canMove && event.target && tools.isChildOrSelf(event.target, targetObj.id + consts.id.A)) { |
| | | tmpTarget = $(targetObj); |
| | | tmpTargetNodeId = targetObj.id; |
| | | } |
| | | } |
| | | |
| | | //the mouse must be in zTree |
| | | tmpNode = nodes[0]; |
| | | if (isTreeInner && tools.isChildOrSelf(event.target, targetSetting.treeId)) { |
| | | //judge mouse move in root of ztree |
| | | if (!tmpTarget && (event.target.id == targetSetting.treeId || isTreeTop || isTreeBottom || isTreeLeft || isTreeRight) && (isOtherTree || (!isOtherTree && tmpNode.parentTId))) { |
| | | tmpTarget = targetSetting.treeObj; |
| | | } |
| | | //auto scroll top |
| | | if (isTop) { |
| | | targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop() - 10); |
| | | } else if (isBottom) { |
| | | targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop() + 10); |
| | | } |
| | | if (isLeft) { |
| | | targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft() - 10); |
| | | } else if (isRight) { |
| | | targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft() + 10); |
| | | } |
| | | //auto scroll left |
| | | if (tmpTarget && tmpTarget != targetSetting.treeObj && tmpTarget.offset().left < targetSetting.treeObj.offset().left) { |
| | | targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft() + tmpTarget.offset().left - targetSetting.treeObj.offset().left); |
| | | } |
| | | } |
| | | |
| | | curNode.css({ |
| | | "top": (event.clientY + docScrollTop + 3) + "px", |
| | | "left": (event.clientX + docScrollLeft + 3) + "px" |
| | | }); |
| | | |
| | | var dX = 0; |
| | | var dY = 0; |
| | | if (tmpTarget && tmpTarget.attr("id") != targetSetting.treeId) { |
| | | var tmpTargetNode = tmpTargetNodeId == null ? null : data.getNodeCache(targetSetting, tmpTargetNodeId), |
| | | isCopy = ((event.ctrlKey || event.metaKey) && setting.confirm.drag.isMove && setting.confirm.drag.isCopy) || (!setting.confirm.drag.isMove && setting.confirm.drag.isCopy), |
| | | isPrev = !!(preNode && tmpTargetNodeId === preNode.tId), |
| | | isNext = !!(nextNode && tmpTargetNodeId === nextNode.tId), |
| | | isInner = (tmpNode.parentTId && tmpNode.parentTId == tmpTargetNodeId), |
| | | canPrev = (isCopy || !isNext) && tools.apply(targetSetting.confirm.drag.prev, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.confirm.drag.prev), |
| | | canNext = (isCopy || !isPrev) && tools.apply(targetSetting.confirm.drag.next, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.confirm.drag.next), |
| | | canInner = (isCopy || !isInner) && !(targetSetting.data.keep.leaf && !data.nodeIsParent(setting, tmpTargetNode)) && tools.apply(targetSetting.confirm.drag.inner, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.confirm.drag.inner); |
| | | |
| | | function clearMove() { |
| | | tmpTarget = null; |
| | | tmpTargetNodeId = ""; |
| | | moveType = consts.move.TYPE_INNER; |
| | | tmpArrow.css({ |
| | | "display": "none" |
| | | }); |
| | | if (window.zTreeMoveTimer) { |
| | | clearTimeout(window.zTreeMoveTimer); |
| | | window.zTreeMoveTargetNodeTId = null |
| | | } |
| | | } |
| | | |
| | | if (!canPrev && !canNext && !canInner) { |
| | | clearMove(); |
| | | } else { |
| | | var tmpTargetA = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget), |
| | | tmpNextA = tmpTargetNode.isLastNode ? null : $("#" + tmpTargetNode.getNextNode().tId + consts.id.A, tmpTarget.next()), |
| | | tmpTop = tmpTargetA.offset().top, |
| | | tmpLeft = tmpTargetA.offset().left, |
| | | prevPercent = canPrev ? (canInner ? 0.25 : (canNext ? 0.5 : 1)) : -1, |
| | | nextPercent = canNext ? (canInner ? 0.75 : (canPrev ? 0.5 : 0)) : -1, |
| | | dY_percent = (event.clientY + docScrollTop - tmpTop) / tmpTargetA.height(); |
| | | |
| | | if ((prevPercent == 1 || dY_percent <= prevPercent && dY_percent >= -.2) && canPrev) { |
| | | dX = 1 - tmpArrow.width(); |
| | | dY = tmpTop - tmpArrow.height() / 2; |
| | | moveType = consts.move.TYPE_PREV; |
| | | } else if ((nextPercent == 0 || dY_percent >= nextPercent && dY_percent <= 1.2) && canNext) { |
| | | dX = 1 - tmpArrow.width(); |
| | | dY = (tmpNextA == null || (data.nodeIsParent(setting, tmpTargetNode) && tmpTargetNode.open)) ? (tmpTop + tmpTargetA.height() - tmpArrow.height() / 2) : (tmpNextA.offset().top - tmpArrow.height() / 2); |
| | | moveType = consts.move.TYPE_NEXT; |
| | | } else if (canInner) { |
| | | dX = 5 - tmpArrow.width(); |
| | | dY = tmpTop; |
| | | moveType = consts.move.TYPE_INNER; |
| | | } else { |
| | | clearMove(); |
| | | } |
| | | |
| | | if (tmpTarget) { |
| | | tmpArrow.css({ |
| | | "display": "block", |
| | | "top": dY + "px", |
| | | "left": (tmpLeft + dX) + "px" |
| | | }); |
| | | tmpTargetA.addClass(consts.node.TMPTARGET_NODE + "_" + moveType); |
| | | |
| | | if (preTmpTargetNodeId != tmpTargetNodeId || preTmpMoveType != moveType) { |
| | | startTime = (new Date()).getTime(); |
| | | } |
| | | if (tmpTargetNode && data.nodeIsParent(setting, tmpTargetNode) && moveType == consts.move.TYPE_INNER) { |
| | | var startTimer = true; |
| | | if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId !== tmpTargetNode.tId) { |
| | | clearTimeout(window.zTreeMoveTimer); |
| | | window.zTreeMoveTargetNodeTId = null; |
| | | } else if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId === tmpTargetNode.tId) { |
| | | startTimer = false; |
| | | } |
| | | if (startTimer) { |
| | | window.zTreeMoveTimer = setTimeout(function () { |
| | | if (moveType != consts.move.TYPE_INNER) return; |
| | | if (tmpTargetNode && data.nodeIsParent(setting, tmpTargetNode) && !tmpTargetNode.open && (new Date()).getTime() - startTime > targetSetting.confirm.drag.autoOpenTime |
| | | && tools.apply(targetSetting.callback.beforeDragOpen, [targetSetting.treeId, tmpTargetNode], true)) { |
| | | view.switchNode(targetSetting, tmpTargetNode); |
| | | if (targetSetting.confirm.drag.autoExpandTrigger) { |
| | | targetSetting.treeObj.trigger(consts.event.EXPAND, [targetSetting.treeId, tmpTargetNode]); |
| | | } |
| | | } |
| | | }, targetSetting.confirm.drag.autoOpenTime + 50); |
| | | window.zTreeMoveTargetNodeTId = tmpTargetNode.tId; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | moveType = consts.move.TYPE_INNER; |
| | | if (tmpTarget && tools.apply(targetSetting.confirm.drag.inner, [targetSetting.treeId, nodes, null], !!targetSetting.confirm.drag.inner)) { |
| | | tmpTarget.addClass(consts.node.TMPTARGET_TREE); |
| | | } else { |
| | | tmpTarget = null; |
| | | } |
| | | tmpArrow.css({ |
| | | "display": "none" |
| | | }); |
| | | if (window.zTreeMoveTimer) { |
| | | clearTimeout(window.zTreeMoveTimer); |
| | | window.zTreeMoveTargetNodeTId = null; |
| | | } |
| | | } |
| | | preTmpTargetNodeId = tmpTargetNodeId; |
| | | preTmpMoveType = moveType; |
| | | |
| | | setting.treeObj.trigger(consts.event.DRAGMOVE, [event, setting.treeId, nodes]); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | doc.bind("mouseup", _docMouseUp); |
| | | |
| | | function _docMouseUp(event) { |
| | | if (window.zTreeMoveTimer) { |
| | | clearTimeout(window.zTreeMoveTimer); |
| | | window.zTreeMoveTargetNodeTId = null; |
| | | } |
| | | preTmpTargetNodeId = null; |
| | | preTmpMoveType = null; |
| | | doc.unbind("mousemove", _docMouseMove); |
| | | doc.unbind("mouseup", _docMouseUp); |
| | | doc.unbind("selectstart", _docSelect); |
| | | body.css("cursor", ""); |
| | | if (tmpTarget) { |
| | | tmpTarget.removeClass(consts.node.TMPTARGET_TREE); |
| | | if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV) |
| | | .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER); |
| | | } |
| | | tools.showIfameMask(setting, false); |
| | | |
| | | roots.showHoverDom = true; |
| | | if (root.dragFlag == 0) return; |
| | | root.dragFlag = 0; |
| | | |
| | | var i, l, tmpNode; |
| | | for (i = 0, l = nodes.length; i < l; i++) { |
| | | tmpNode = nodes[i]; |
| | | if (data.nodeIsParent(setting, tmpNode) && root.dragNodeShowBefore[tmpNode.tId] && !tmpNode.open) { |
| | | view.expandCollapseNode(setting, tmpNode, !tmpNode.open); |
| | | delete root.dragNodeShowBefore[tmpNode.tId]; |
| | | } |
| | | } |
| | | |
| | | if (curNode) curNode.remove(); |
| | | if (tmpArrow) tmpArrow.remove(); |
| | | |
| | | var isCopy = ((event.ctrlKey || event.metaKey) && setting.confirm.drag.isMove && setting.confirm.drag.isCopy) || (!setting.confirm.drag.isMove && setting.confirm.drag.isCopy); |
| | | if (!isCopy && tmpTarget && tmpTargetNodeId && nodes[0].parentTId && tmpTargetNodeId == nodes[0].parentTId && moveType == consts.move.TYPE_INNER) { |
| | | tmpTarget = null; |
| | | } |
| | | if (tmpTarget) { |
| | | var dragTargetNode = tmpTargetNodeId == null ? null : data.getNodeCache(targetSetting, tmpTargetNodeId); |
| | | if (tools.apply(setting.callback.beforeDrop, [targetSetting.treeId, nodes, dragTargetNode, moveType, isCopy], true) == false) { |
| | | view.selectNodes(sourceSetting, nodes); |
| | | return; |
| | | } |
| | | var newNodes = isCopy ? tools.clone(nodes) : nodes; |
| | | |
| | | function dropCallback() { |
| | | if (isOtherTree) { |
| | | if (!isCopy) { |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | view.removeNode(setting, nodes[i]); |
| | | } |
| | | } |
| | | if (moveType == consts.move.TYPE_INNER) { |
| | | view.addNodes(targetSetting, dragTargetNode, -1, newNodes); |
| | | } else { |
| | | view.addNodes(targetSetting, dragTargetNode.getParentNode(), moveType == consts.move.TYPE_PREV ? dragTargetNode.getIndex() : dragTargetNode.getIndex() + 1, newNodes); |
| | | } |
| | | } else { |
| | | if (isCopy && moveType == consts.move.TYPE_INNER) { |
| | | view.addNodes(targetSetting, dragTargetNode, -1, newNodes); |
| | | } else if (isCopy) { |
| | | view.addNodes(targetSetting, dragTargetNode.getParentNode(), moveType == consts.move.TYPE_PREV ? dragTargetNode.getIndex() : dragTargetNode.getIndex() + 1, newNodes); |
| | | } else { |
| | | if (moveType != consts.move.TYPE_NEXT) { |
| | | for (i = 0, l = newNodes.length; i < l; i++) { |
| | | view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false); |
| | | } |
| | | } else { |
| | | for (i = -1, l = newNodes.length - 1; i < l; l--) { |
| | | view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | view.selectNodes(targetSetting, newNodes); |
| | | |
| | | var a = $$(newNodes[0], setting).get(0); |
| | | view.scrollIntoView(setting, a); |
| | | |
| | | setting.treeObj.trigger(consts.event.DROP, [event, targetSetting.treeId, newNodes, dragTargetNode, moveType, isCopy]); |
| | | } |
| | | |
| | | if (moveType == consts.move.TYPE_INNER && tools.canAsync(targetSetting, dragTargetNode)) { |
| | | view.asyncNode(targetSetting, dragTargetNode, false, dropCallback); |
| | | } else { |
| | | dropCallback(); |
| | | } |
| | | |
| | | } else { |
| | | view.selectNodes(sourceSetting, nodes); |
| | | setting.treeObj.trigger(consts.event.DROP, [event, setting.treeId, nodes, null, null, null]); |
| | | } |
| | | } |
| | | |
| | | doc.bind("selectstart", _docSelect); |
| | | |
| | | function _docSelect() { |
| | | return false; |
| | | } |
| | | |
| | | // 2018-03-30 FireFox has fixed this issue. |
| | | //Avoid FireFox's Bug |
| | | //If zTree Div CSS set 'overflow', so drag node outside of zTree, and event.target is error. |
| | | // if(eventMouseDown.preventDefault) { |
| | | // eventMouseDown.preventDefault(); |
| | | // } |
| | | return true; |
| | | } |
| | | }, |
| | | //method of tools for zTree |
| | | _tools = { |
| | | getAbs: function (obj) { |
| | | var oRect = obj.getBoundingClientRect(), |
| | | scrollTop = document.body.scrollTop + document.documentElement.scrollTop, |
| | | scrollLeft = document.body.scrollLeft + document.documentElement.scrollLeft; |
| | | return [oRect.left + scrollLeft, oRect.top + scrollTop]; |
| | | }, |
| | | inputFocus: function (inputObj) { |
| | | if (inputObj.get(0)) { |
| | | inputObj.focus(); |
| | | tools.setCursorPosition(inputObj.get(0), inputObj.val().length); |
| | | } |
| | | }, |
| | | inputSelect: function (inputObj) { |
| | | if (inputObj.get(0)) { |
| | | inputObj.focus(); |
| | | inputObj.select(); |
| | | } |
| | | }, |
| | | setCursorPosition: function (obj, pos) { |
| | | if (obj.setSelectionRange) { |
| | | obj.focus(); |
| | | obj.setSelectionRange(pos, pos); |
| | | } else if (obj.createTextRange) { |
| | | var range = obj.createTextRange(); |
| | | range.collapse(true); |
| | | range.moveEnd('character', pos); |
| | | range.moveStart('character', pos); |
| | | range.select(); |
| | | } |
| | | }, |
| | | showIfameMask: function (setting, showSign) { |
| | | var root = data.getRoot(setting); |
| | | //clear full mask |
| | | while (root.dragMaskList.length > 0) { |
| | | root.dragMaskList[0].remove(); |
| | | root.dragMaskList.shift(); |
| | | } |
| | | if (showSign) { |
| | | //show mask |
| | | var iframeList = $$("iframe", setting); |
| | | for (var i = 0, l = iframeList.length; i < l; i++) { |
| | | var obj = iframeList.get(i), |
| | | r = tools.getAbs(obj), |
| | | dragMask = $$("<div id='zTreeMask_" + i + "' class='zTreeMask' style='top:" + r[1] + "px; left:" + r[0] + "px; width:" + obj.offsetWidth + "px; height:" + obj.offsetHeight + "px;'></div>", setting); |
| | | dragMask.appendTo($$("body", setting)); |
| | | root.dragMaskList.push(dragMask); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | //method of operate ztree dom |
| | | _view = { |
| | | addEditBtn: function (setting, node) { |
| | | if (node.editNameFlag || $$(node, consts.id.EDIT, setting).length > 0) { |
| | | return; |
| | | } |
| | | if (!tools.apply(setting.confirm.showRenameBtn, [setting.treeId, node], setting.confirm.showRenameBtn)) { |
| | | return; |
| | | } |
| | | var aObj = $$(node, consts.id.A, setting), |
| | | editStr = "<span class='" + consts.className.BUTTON + " edit' id='" + node.tId + consts.id.EDIT + "' title='" + tools.apply(setting.confirm.renameTitle, [setting.treeId, node], setting.confirm.renameTitle) + "' treeNode" + consts.id.EDIT + " style='display:none;'></span>"; |
| | | aObj.append(editStr); |
| | | |
| | | $$(node, consts.id.EDIT, setting).bind('click', |
| | | function () { |
| | | if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeEditName, [setting.treeId, node], true) == false) return false; |
| | | view.editNode(setting, node); |
| | | return false; |
| | | } |
| | | ).show(); |
| | | }, |
| | | addRemoveBtn: function (setting, node) { |
| | | if (node.editNameFlag || $$(node, consts.id.REMOVE, setting).length > 0) { |
| | | return; |
| | | } |
| | | if (!tools.apply(setting.confirm.showRemoveBtn, [setting.treeId, node], setting.confirm.showRemoveBtn)) { |
| | | return; |
| | | } |
| | | var aObj = $$(node, consts.id.A, setting), |
| | | removeStr = "<span class='" + consts.className.BUTTON + " remove' id='" + node.tId + consts.id.REMOVE + "' title='" + tools.apply(setting.confirm.removeTitle, [setting.treeId, node], setting.confirm.removeTitle) + "' treeNode" + consts.id.REMOVE + " style='display:none;'></span>"; |
| | | aObj.append(removeStr); |
| | | |
| | | $$(node, consts.id.REMOVE, setting).bind('click', |
| | | function () { |
| | | if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return false; |
| | | view.removeNode(setting, node); |
| | | setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]); |
| | | return false; |
| | | } |
| | | ).bind('mousedown', |
| | | function (eventMouseDown) { |
| | | return true; |
| | | } |
| | | ).show(); |
| | | }, |
| | | addHoverDom: function (setting, node) { |
| | | if (data.getRoots().showHoverDom) { |
| | | node.isHover = true; |
| | | if (setting.confirm.enable) { |
| | | view.addEditBtn(setting, node); |
| | | view.addRemoveBtn(setting, node); |
| | | } |
| | | tools.apply(setting.view.addHoverDom, [setting.treeId, node]); |
| | | } |
| | | }, |
| | | cancelCurEditNode: function (setting, forceName, isCancel) { |
| | | var root = data.getRoot(setting), |
| | | node = root.curEditNode; |
| | | |
| | | if (node) { |
| | | var inputObj = root.curEditInput, |
| | | newName = forceName ? forceName : (isCancel ? data.nodeName(setting, node) : inputObj.val()); |
| | | if (tools.apply(setting.callback.beforeRename, [setting.treeId, node, newName, isCancel], true) === false) { |
| | | return false; |
| | | } |
| | | data.nodeName(setting, node, newName); |
| | | var aObj = $$(node, consts.id.A, setting); |
| | | aObj.removeClass(consts.node.CURSELECTED_EDIT); |
| | | inputObj.unbind(); |
| | | view.setNodeName(setting, node); |
| | | node.editNameFlag = false; |
| | | root.curEditNode = null; |
| | | root.curEditInput = null; |
| | | view.selectNode(setting, node, false); |
| | | setting.treeObj.trigger(consts.event.RENAME, [setting.treeId, node, isCancel]); |
| | | } |
| | | root.noSelection = true; |
| | | return true; |
| | | }, |
| | | editNode: function (setting, node) { |
| | | var root = data.getRoot(setting); |
| | | view.editNodeBlur = false; |
| | | if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) { |
| | | setTimeout(function () { |
| | | tools.inputFocus(root.curEditInput); |
| | | }, 0); |
| | | return; |
| | | } |
| | | node.editNameFlag = true; |
| | | view.removeTreeDom(setting, node); |
| | | view.cancelCurEditNode(setting); |
| | | view.selectNode(setting, node, false); |
| | | $$(node, consts.id.SPAN, setting).html("<input type=text class='rename' id='" + node.tId + consts.id.INPUT + "' treeNode" + consts.id.INPUT + " >"); |
| | | var inputObj = $$(node, consts.id.INPUT, setting); |
| | | inputObj.attr("value", data.nodeName(setting, node)); |
| | | if (setting.confirm.editNameSelectAll) { |
| | | tools.inputSelect(inputObj); |
| | | } else { |
| | | tools.inputFocus(inputObj); |
| | | } |
| | | |
| | | inputObj.bind('blur', function (event) { |
| | | if (!view.editNodeBlur) { |
| | | view.cancelCurEditNode(setting); |
| | | } |
| | | }).bind('keydown', function (event) { |
| | | if (event.keyCode == "13") { |
| | | view.editNodeBlur = true; |
| | | view.cancelCurEditNode(setting); |
| | | } else if (event.keyCode == "27") { |
| | | view.cancelCurEditNode(setting, null, true); |
| | | } |
| | | }).bind('click', function (event) { |
| | | return false; |
| | | }).bind('dblclick', function (event) { |
| | | return false; |
| | | }); |
| | | |
| | | $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED_EDIT); |
| | | root.curEditInput = inputObj; |
| | | root.noSelection = false; |
| | | root.curEditNode = node; |
| | | }, |
| | | moveNode: function (setting, targetNode, node, moveType, animateFlag, isSilent) { |
| | | var root = data.getRoot(setting); |
| | | if (targetNode == node) return; |
| | | if (setting.data.keep.leaf && targetNode && !data.nodeIsParent(setting, targetNode) && moveType == consts.move.TYPE_INNER) return; |
| | | var oldParentNode = (node.parentTId ? node.getParentNode() : root), |
| | | targetNodeIsRoot = (targetNode === null || targetNode == root); |
| | | if (targetNodeIsRoot && targetNode === null) targetNode = root; |
| | | if (targetNodeIsRoot) moveType = consts.move.TYPE_INNER; |
| | | var targetParentNode = (targetNode.parentTId ? targetNode.getParentNode() : root); |
| | | |
| | | if (moveType != consts.move.TYPE_PREV && moveType != consts.move.TYPE_NEXT) { |
| | | moveType = consts.move.TYPE_INNER; |
| | | } |
| | | |
| | | if (moveType == consts.move.TYPE_INNER) { |
| | | if (targetNodeIsRoot) { |
| | | //parentTId of root node is null |
| | | node.parentTId = null; |
| | | } else { |
| | | if (!data.nodeIsParent(setting, targetNode)) { |
| | | data.nodeIsParent(setting, targetNode, true); |
| | | targetNode.open = !!targetNode.open; |
| | | view.setNodeLineIcos(setting, targetNode); |
| | | } |
| | | node.parentTId = targetNode.tId; |
| | | } |
| | | } |
| | | |
| | | //move node Dom |
| | | var targetObj, target_ulObj; |
| | | if (targetNodeIsRoot) { |
| | | targetObj = setting.treeObj; |
| | | target_ulObj = targetObj; |
| | | } else { |
| | | if (!isSilent && moveType == consts.move.TYPE_INNER) { |
| | | view.expandCollapseNode(setting, targetNode, true, false); |
| | | } else if (!isSilent) { |
| | | view.expandCollapseNode(setting, targetNode.getParentNode(), true, false); |
| | | } |
| | | targetObj = $$(targetNode, setting); |
| | | target_ulObj = $$(targetNode, consts.id.UL, setting); |
| | | if (!!targetObj.get(0) && !target_ulObj.get(0)) { |
| | | var ulstr = []; |
| | | view.makeUlHtml(setting, targetNode, ulstr, ''); |
| | | targetObj.append(ulstr.join('')); |
| | | } |
| | | target_ulObj = $$(targetNode, consts.id.UL, setting); |
| | | } |
| | | var nodeDom = $$(node, setting); |
| | | if (!nodeDom.get(0)) { |
| | | nodeDom = view.appendNodes(setting, node.level, [node], null, -1, false, true).join(''); |
| | | } else if (!targetObj.get(0)) { |
| | | nodeDom.remove(); |
| | | } |
| | | if (target_ulObj.get(0) && moveType == consts.move.TYPE_INNER) { |
| | | target_ulObj.append(nodeDom); |
| | | } else if (targetObj.get(0) && moveType == consts.move.TYPE_PREV) { |
| | | targetObj.before(nodeDom); |
| | | } else if (targetObj.get(0) && moveType == consts.move.TYPE_NEXT) { |
| | | targetObj.after(nodeDom); |
| | | } |
| | | |
| | | //repair the data after move |
| | | var i, l, |
| | | tmpSrcIndex = -1, |
| | | tmpTargetIndex = 0, |
| | | oldNeighbor = null, |
| | | newNeighbor = null, |
| | | oldLevel = node.level; |
| | | var oldChildren = data.nodeChildren(setting, oldParentNode); |
| | | var targetParentChildren = data.nodeChildren(setting, targetParentNode); |
| | | var targetChildren = data.nodeChildren(setting, targetNode); |
| | | if (node.isFirstNode) { |
| | | tmpSrcIndex = 0; |
| | | if (oldChildren.length > 1) { |
| | | oldNeighbor = oldChildren[1]; |
| | | oldNeighbor.isFirstNode = true; |
| | | } |
| | | } else if (node.isLastNode) { |
| | | tmpSrcIndex = oldChildren.length - 1; |
| | | oldNeighbor = oldChildren[tmpSrcIndex - 1]; |
| | | oldNeighbor.isLastNode = true; |
| | | } else { |
| | | for (i = 0, l = oldChildren.length; i < l; i++) { |
| | | if (oldChildren[i].tId == node.tId) { |
| | | tmpSrcIndex = i; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (tmpSrcIndex >= 0) { |
| | | oldChildren.splice(tmpSrcIndex, 1); |
| | | } |
| | | if (moveType != consts.move.TYPE_INNER) { |
| | | for (i = 0, l = targetParentChildren.length; i < l; i++) { |
| | | if (targetParentChildren[i].tId == targetNode.tId) tmpTargetIndex = i; |
| | | } |
| | | } |
| | | if (moveType == consts.move.TYPE_INNER) { |
| | | if (!targetChildren) { |
| | | targetChildren = data.nodeChildren(setting, targetNode, []); |
| | | } |
| | | if (targetChildren.length > 0) { |
| | | newNeighbor = targetChildren[targetChildren.length - 1]; |
| | | newNeighbor.isLastNode = false; |
| | | } |
| | | targetChildren.splice(targetChildren.length, 0, node); |
| | | node.isLastNode = true; |
| | | node.isFirstNode = (targetChildren.length == 1); |
| | | } else if (targetNode.isFirstNode && moveType == consts.move.TYPE_PREV) { |
| | | targetParentChildren.splice(tmpTargetIndex, 0, node); |
| | | newNeighbor = targetNode; |
| | | newNeighbor.isFirstNode = false; |
| | | node.parentTId = targetNode.parentTId; |
| | | node.isFirstNode = true; |
| | | node.isLastNode = false; |
| | | |
| | | } else if (targetNode.isLastNode && moveType == consts.move.TYPE_NEXT) { |
| | | targetParentChildren.splice(tmpTargetIndex + 1, 0, node); |
| | | newNeighbor = targetNode; |
| | | newNeighbor.isLastNode = false; |
| | | node.parentTId = targetNode.parentTId; |
| | | node.isFirstNode = false; |
| | | node.isLastNode = true; |
| | | |
| | | } else { |
| | | if (moveType == consts.move.TYPE_PREV) { |
| | | targetParentChildren.splice(tmpTargetIndex, 0, node); |
| | | } else { |
| | | targetParentChildren.splice(tmpTargetIndex + 1, 0, node); |
| | | } |
| | | node.parentTId = targetNode.parentTId; |
| | | node.isFirstNode = false; |
| | | node.isLastNode = false; |
| | | } |
| | | data.fixPIdKeyValue(setting, node); |
| | | data.setSonNodeLevel(setting, node.getParentNode(), node); |
| | | |
| | | //repair node what been moved |
| | | view.setNodeLineIcos(setting, node); |
| | | view.repairNodeLevelClass(setting, node, oldLevel); |
| | | |
| | | //repair node's old parentNode dom |
| | | if (!setting.data.keep.parent && oldChildren.length < 1) { |
| | | //old parentNode has no child nodes |
| | | data.nodeIsParent(setting, oldParentNode, false); |
| | | oldParentNode.open = false; |
| | | var tmp_ulObj = $$(oldParentNode, consts.id.UL, setting), |
| | | tmp_switchObj = $$(oldParentNode, consts.id.SWITCH, setting), |
| | | tmp_icoObj = $$(oldParentNode, consts.id.ICON, setting); |
| | | view.replaceSwitchClass(oldParentNode, tmp_switchObj, consts.folder.DOCU); |
| | | view.replaceIcoClass(oldParentNode, tmp_icoObj, consts.folder.DOCU); |
| | | tmp_ulObj.css("display", "none"); |
| | | |
| | | } else if (oldNeighbor) { |
| | | //old neigbor node |
| | | view.setNodeLineIcos(setting, oldNeighbor); |
| | | } |
| | | |
| | | //new neigbor node |
| | | if (newNeighbor) { |
| | | view.setNodeLineIcos(setting, newNeighbor); |
| | | } |
| | | |
| | | //repair checkbox / radio |
| | | if (!!setting.check && setting.check.enable && view.repairChkClass) { |
| | | view.repairChkClass(setting, oldParentNode); |
| | | view.repairParentChkClassWithSelf(setting, oldParentNode); |
| | | if (oldParentNode != node.parent) |
| | | view.repairParentChkClassWithSelf(setting, node); |
| | | } |
| | | |
| | | //expand parents after move |
| | | if (!isSilent) { |
| | | view.expandCollapseParentNode(setting, node.getParentNode(), true, animateFlag); |
| | | } |
| | | }, |
| | | removeEditBtn: function (setting, node) { |
| | | $$(node, consts.id.EDIT, setting).unbind().remove(); |
| | | }, |
| | | removeRemoveBtn: function (setting, node) { |
| | | $$(node, consts.id.REMOVE, setting).unbind().remove(); |
| | | }, |
| | | removeTreeDom: function (setting, node) { |
| | | node.isHover = false; |
| | | view.removeEditBtn(setting, node); |
| | | view.removeRemoveBtn(setting, node); |
| | | tools.apply(setting.view.removeHoverDom, [setting.treeId, node]); |
| | | }, |
| | | repairNodeLevelClass: function (setting, node, oldLevel) { |
| | | if (oldLevel === node.level) return; |
| | | var liObj = $$(node, setting), |
| | | aObj = $$(node, consts.id.A, setting), |
| | | ulObj = $$(node, consts.id.UL, setting), |
| | | oldClass = consts.className.LEVEL + oldLevel, |
| | | newClass = consts.className.LEVEL + node.level; |
| | | liObj.removeClass(oldClass); |
| | | liObj.addClass(newClass); |
| | | aObj.removeClass(oldClass); |
| | | aObj.addClass(newClass); |
| | | ulObj.removeClass(oldClass); |
| | | ulObj.addClass(newClass); |
| | | }, |
| | | selectNodes: function (setting, nodes) { |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | view.selectNode(setting, nodes[i], i > 0); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | _z = { |
| | | tools: _tools, |
| | | view: _view, |
| | | event: _event, |
| | | data: _data |
| | | }; |
| | | $.extend(true, $.fn.zTree.consts, _consts); |
| | | $.extend(true, $.fn.zTree._z, _z); |
| | | |
| | | var zt = $.fn.zTree, |
| | | tools = zt._z.tools, |
| | | consts = zt.consts, |
| | | view = zt._z.view, |
| | | data = zt._z.data, |
| | | event = zt._z.event, |
| | | $$ = tools.$; |
| | | |
| | | data.exSetting(_setting); |
| | | data.addInitBind(_bindEvent); |
| | | data.addInitUnBind(_unbindEvent); |
| | | data.addInitCache(_initCache); |
| | | data.addInitNode(_initNode); |
| | | data.addInitProxy(_eventProxy); |
| | | data.addInitRoot(_initRoot); |
| | | data.addZTreeTools(_zTreeTools); |
| | | |
| | | var _cancelPreSelectedNode = view.cancelPreSelectedNode; |
| | | view.cancelPreSelectedNode = function (setting, node) { |
| | | var list = data.getRoot(setting).curSelectedList; |
| | | for (var i = 0, j = list.length; i < j; i++) { |
| | | if (!node || node === list[i]) { |
| | | view.removeTreeDom(setting, list[i]); |
| | | if (node) break; |
| | | } |
| | | } |
| | | if (_cancelPreSelectedNode) _cancelPreSelectedNode.apply(view, arguments); |
| | | } |
| | | |
| | | var _createNodes = view.createNodes; |
| | | view.createNodes = function (setting, level, nodes, parentNode, index) { |
| | | if (_createNodes) { |
| | | _createNodes.apply(view, arguments); |
| | | } |
| | | if (!nodes) return; |
| | | if (view.repairParentChkClassWithSelf) { |
| | | view.repairParentChkClassWithSelf(setting, parentNode); |
| | | } |
| | | } |
| | | |
| | | var _makeNodeUrl = view.makeNodeUrl; |
| | | view.makeNodeUrl = function (setting, node) { |
| | | return setting.confirm.enable ? null : (_makeNodeUrl.apply(view, arguments)); |
| | | } |
| | | |
| | | var _removeNode = view.removeNode; |
| | | view.removeNode = function (setting, node) { |
| | | var root = data.getRoot(setting); |
| | | if (root.curEditNode === node) root.curEditNode = null; |
| | | if (_removeNode) { |
| | | _removeNode.apply(view, arguments); |
| | | } |
| | | } |
| | | |
| | | var _selectNode = view.selectNode; |
| | | view.selectNode = function (setting, node, addFlag) { |
| | | var root = data.getRoot(setting); |
| | | if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) { |
| | | return false; |
| | | } |
| | | if (_selectNode) _selectNode.apply(view, arguments); |
| | | view.addHoverDom(setting, node); |
| | | return true; |
| | | } |
| | | |
| | | var _uCanDo = tools.uCanDo; |
| | | tools.uCanDo = function (setting, e) { |
| | | var root = data.getRoot(setting); |
| | | if (e && (tools.eqs(e.type, "mouseover") || tools.eqs(e.type, "mouseout") || tools.eqs(e.type, "mousedown") || tools.eqs(e.type, "mouseup"))) { |
| | | return true; |
| | | } |
| | | if (root.curEditNode) { |
| | | view.editNodeBlur = false; |
| | | root.curEditInput.focus(); |
| | | } |
| | | return (!root.curEditNode) && (_uCanDo ? _uCanDo.apply(view, arguments) : true); |
| | | } |
| | | })(jQuery); |
New file |
| | |
| | | |
| | | /* |
| | | * JQuery zTree core v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function(r){var J,K,L,M,N,O,v,t={},w={},x={},P={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{isParent:"isParent",children:"children",name:"name",title:"",url:"url",icon:"icon"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post", |
| | | dataType:"text",headers:{},xhrFields:{},url:"",autoParam:[],otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},y=[function(a){var b=a.treeObj,c=g.event;b.bind(c.NODECREATED, |
| | | function(b,c,i){h.apply(a.callback.onNodeCreated,[b,c,i])});b.bind(c.CLICK,function(b,c,i,e,k){h.apply(a.callback.onClick,[c,i,e,k])});b.bind(c.EXPAND,function(b,c,i){h.apply(a.callback.onExpand,[b,c,i])});b.bind(c.COLLAPSE,function(b,c,i){h.apply(a.callback.onCollapse,[b,c,i])});b.bind(c.ASYNC_SUCCESS,function(b,c,i,e){h.apply(a.callback.onAsyncSuccess,[b,c,i,e])});b.bind(c.ASYNC_ERROR,function(b,c,i,e,k,g){h.apply(a.callback.onAsyncError,[b,c,i,e,k,g])});b.bind(c.REMOVE,function(b,c,i){h.apply(a.callback.onRemove, |
| | | [b,c,i])});b.bind(c.SELECTED,function(b,c,i){h.apply(a.callback.onSelected,[c,i])});b.bind(c.UNSELECTED,function(b,c,i){h.apply(a.callback.onUnSelected,[c,i])})}],z=[function(a){var b=g.event;a.treeObj.unbind(b.NODECREATED).unbind(b.CLICK).unbind(b.EXPAND).unbind(b.COLLAPSE).unbind(b.ASYNC_SUCCESS).unbind(b.ASYNC_ERROR).unbind(b.REMOVE).unbind(b.SELECTED).unbind(b.UNSELECTED)}],A=[function(a){var b=e.getCache(a);b||(b={},e.setCache(a,b));b.nodes=[];b.doms=[]}],B=[function(a,b,c,d,f,i){if(c){var m= |
| | | e.getRoot(a),k=e.nodeChildren(a,c);c.level=b;c.tId=a.treeId+"_"+ ++m.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?h.eqs(c.open,"true"):!!c.open;b=e.nodeIsParent(a,c);h.isArray(k)?(e.nodeIsParent(a,c,!0),c.zAsync=!0):(b=e.nodeIsParent(a,c,b),c.open=b&&!a.async.enable?c.open:!1,c.zAsync=!b);c.isFirstNode=f;c.isLastNode=i;c.getParentNode=function(){return e.getNodeCache(a,c.parentTId)};c.getPreNode=function(){return e.getPreNode(a,c)};c.getNextNode=function(){return e.getNextNode(a,c)}; |
| | | c.getIndex=function(){return e.getNodeIndex(a,c)};c.getPath=function(){return e.getNodePath(a,c)};c.isAjaxing=!1;e.fixPIdKeyValue(a,c)}}],u=[function(a){var b=a.target,c=e.getSetting(a.data.treeId),d="",f=null,i="",m="",k=null,j=null,o=null;if(h.eqs(a.type,"mousedown"))m="mousedown";else if(h.eqs(a.type,"mouseup"))m="mouseup";else if(h.eqs(a.type,"contextmenu"))m="contextmenu";else if(h.eqs(a.type,"click"))if(h.eqs(b.tagName,"span")&&b.getAttribute("treeNode"+g.id.SWITCH)!==null)d=h.getNodeMainDom(b).id, |
| | | i="switchNode";else{if(o=h.getMDom(c,b,[{tagName:"a",attrName:"treeNode"+g.id.A}]))d=h.getNodeMainDom(o).id,i="clickNode"}else if(h.eqs(a.type,"dblclick")&&(m="dblclick",o=h.getMDom(c,b,[{tagName:"a",attrName:"treeNode"+g.id.A}])))d=h.getNodeMainDom(o).id,i="switchNode";if(m.length>0&&d.length==0&&(o=h.getMDom(c,b,[{tagName:"a",attrName:"treeNode"+g.id.A}])))d=h.getNodeMainDom(o).id;if(d.length>0)switch(f=e.getNodeCache(c,d),i){case "switchNode":e.nodeIsParent(c,f)?h.eqs(a.type,"click")||h.eqs(a.type, |
| | | "dblclick")&&h.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?k=J:i="":i="";break;case "clickNode":k=K}switch(m){case "mousedown":j=L;break;case "mouseup":j=M;break;case "dblclick":j=N;break;case "contextmenu":j=O}return{stop:!1,node:f,nodeEventType:i,nodeEventCallback:k,treeEventType:m,treeEventCallback:j}}],C=[function(a){var b=e.getRoot(a);b||(b={},e.setRoot(a,b));e.nodeChildren(a,b,[]);b.expandTriggerFlag=!1;b.curSelectedList=[];b.noSelection=!0;b.createdNodes=[];b.zId=0;b._ver= |
| | | (new Date).getTime()}],D=[],E=[],F=[],G=[],H=[],e={addNodeCache:function(a,b){e.getCache(a).nodes[e.getNodeCacheId(b.tId)]=b},getNodeCacheId:function(a){return a.substring(a.lastIndexOf("_")+1)},addAfterA:function(a){E.push(a)},addBeforeA:function(a){D.push(a)},addInnerAfterA:function(a){G.push(a)},addInnerBeforeA:function(a){F.push(a)},addInitBind:function(a){y.push(a)},addInitUnBind:function(a){z.push(a)},addInitCache:function(a){A.push(a)},addInitNode:function(a){B.push(a)},addInitProxy:function(a, |
| | | b){b?u.splice(0,0,a):u.push(a)},addInitRoot:function(a){C.push(a)},addNodesData:function(a,b,c,d){var f=e.nodeChildren(a,b);f?c>=f.length&&(c=-1):(f=e.nodeChildren(a,b,[]),c=-1);if(f.length>0&&c===0)f[0].isFirstNode=!1,j.setNodeLineIcos(a,f[0]);else if(f.length>0&&c<0)f[f.length-1].isLastNode=!1,j.setNodeLineIcos(a,f[f.length-1]);e.nodeIsParent(a,b,!0);c<0?e.nodeChildren(a,b,f.concat(d)):(a=[c,0].concat(d),f.splice.apply(f,a))},addSelectedNode:function(a,b){var c=e.getRoot(a);e.isSelectedNode(a,b)|| |
| | | c.curSelectedList.push(b)},addCreatedNode:function(a,b){(a.callback.onNodeCreated||a.view.addDiyDom)&&e.getRoot(a).createdNodes.push(b)},addZTreeTools:function(a){H.push(a)},exSetting:function(a){r.extend(!0,P,a)},fixPIdKeyValue:function(a,b){a.data.simpleData.enable&&(b[a.data.simpleData.pIdKey]=b.parentTId?b.getParentNode()[a.data.simpleData.idKey]:a.data.simpleData.rootPId)},getAfterA:function(a,b,c){for(var d=0,e=E.length;d<e;d++)E[d].apply(this,arguments)},getBeforeA:function(a,b,c){for(var d= |
| | | 0,e=D.length;d<e;d++)D[d].apply(this,arguments)},getInnerAfterA:function(a,b,c){for(var d=0,e=G.length;d<e;d++)G[d].apply(this,arguments)},getInnerBeforeA:function(a,b,c){for(var d=0,e=F.length;d<e;d++)F[d].apply(this,arguments)},getCache:function(a){return x[a.treeId]},getNodeIndex:function(a,b){if(!b)return null;for(var c=b.parentTId?b.getParentNode():e.getRoot(a),c=e.nodeChildren(a,c),d=0,f=c.length-1;d<=f;d++)if(c[d]===b)return d;return-1},getNextNode:function(a,b){if(!b)return null;for(var c= |
| | | b.parentTId?b.getParentNode():e.getRoot(a),c=e.nodeChildren(a,c),d=0,f=c.length-1;d<=f;d++)if(c[d]===b)return d==f?null:c[d+1];return null},getNodeByParam:function(a,b,c,d){if(!b||!c)return null;for(var f=0,i=b.length;f<i;f++){var m=b[f];if(m[c]==d)return b[f];m=e.nodeChildren(a,m);if(m=e.getNodeByParam(a,m,c,d))return m}return null},getNodeCache:function(a,b){if(!b)return null;var c=x[a.treeId].nodes[e.getNodeCacheId(b)];return c?c:null},getNodePath:function(a,b){if(!b)return null;var c;(c=b.parentTId? |
| | | b.getParentNode().getPath():[])&&c.push(b);return c},getNodes:function(a){return e.nodeChildren(a,e.getRoot(a))},getNodesByParam:function(a,b,c,d){if(!b||!c)return[];for(var f=[],i=0,m=b.length;i<m;i++){var k=b[i];k[c]==d&&f.push(k);k=e.nodeChildren(a,k);f=f.concat(e.getNodesByParam(a,k,c,d))}return f},getNodesByParamFuzzy:function(a,b,c,d){if(!b||!c)return[];for(var f=[],d=d.toLowerCase(),i=0,m=b.length;i<m;i++){var k=b[i];typeof k[c]=="string"&&b[i][c].toLowerCase().indexOf(d)>-1&&f.push(k);k=e.nodeChildren(a, |
| | | k);f=f.concat(e.getNodesByParamFuzzy(a,k,c,d))}return f},getNodesByFilter:function(a,b,c,d,f){if(!b)return d?null:[];for(var i=d?null:[],m=0,k=b.length;m<k;m++){var g=b[m];if(h.apply(c,[g,f],!1)){if(d)return g;i.push(g)}g=e.nodeChildren(a,g);g=e.getNodesByFilter(a,g,c,d,f);if(d&&g)return g;i=d?g:i.concat(g)}return i},getPreNode:function(a,b){if(!b)return null;for(var c=b.parentTId?b.getParentNode():e.getRoot(a),c=e.nodeChildren(a,c),d=0,f=c.length;d<f;d++)if(c[d]===b)return d==0?null:c[d-1];return null}, |
| | | getRoot:function(a){return a?w[a.treeId]:null},getRoots:function(){return w},getSetting:function(a){return t[a]},getSettings:function(){return t},getZTreeTools:function(a){return(a=this.getRoot(this.getSetting(a)))?a.treeTools:null},initCache:function(a){for(var b=0,c=A.length;b<c;b++)A[b].apply(this,arguments)},initNode:function(a,b,c,d,e,i){for(var m=0,g=B.length;m<g;m++)B[m].apply(this,arguments)},initRoot:function(a){for(var b=0,c=C.length;b<c;b++)C[b].apply(this,arguments)},isSelectedNode:function(a, |
| | | b){for(var c=e.getRoot(a),d=0,f=c.curSelectedList.length;d<f;d++)if(b===c.curSelectedList[d])return!0;return!1},nodeChildren:function(a,b,c){if(!b)return null;a=a.data.key.children;typeof c!=="undefined"&&(b[a]=c);return b[a]},nodeIsParent:function(a,b,c){if(!b)return!1;a=a.data.key.isParent;typeof c!=="undefined"?(typeof c==="string"&&(c=h.eqs(c,"true")),b[a]=!!c):b[a]=typeof b[a]=="string"?h.eqs(b[a],"true"):!!b[a];return b[a]},nodeName:function(a,b,c){a=a.data.key.name;typeof c!=="undefined"&& |
| | | (b[a]=c);return""+b[a]},nodeTitle:function(a,b){return""+b[a.data.key.title===""?a.data.key.name:a.data.key.title]},removeNodeCache:function(a,b){var c=e.nodeChildren(a,b);if(c)for(var d=0,f=c.length;d<f;d++)e.removeNodeCache(a,c[d]);e.getCache(a).nodes[e.getNodeCacheId(b.tId)]=null},removeSelectedNode:function(a,b){for(var c=e.getRoot(a),d=0,f=c.curSelectedList.length;d<f;d++)if(b===c.curSelectedList[d]||!e.getNodeCache(a,c.curSelectedList[d].tId))c.curSelectedList.splice(d,1),a.treeObj.trigger(g.event.UNSELECTED, |
| | | [a.treeId,b]),d--,f--},setCache:function(a,b){x[a.treeId]=b},setRoot:function(a,b){w[a.treeId]=b},setZTreeTools:function(a,b){for(var c=0,d=H.length;c<d;c++)H[c].apply(this,arguments)},transformToArrayFormat:function(a,b){function c(b){d.push(b);(b=e.nodeChildren(a,b))&&(d=d.concat(e.transformToArrayFormat(a,b)))}if(!b)return[];var d=[];if(h.isArray(b))for(var f=0,i=b.length;f<i;f++)c(b[f]);else c(b);return d},transformTozTreeFormat:function(a,b){var c,d,f=a.data.simpleData.idKey,i=a.data.simpleData.pIdKey; |
| | | if(!f||f==""||!b)return[];if(h.isArray(b)){var g=[],k={};for(c=0,d=b.length;c<d;c++)k[b[c][f]]=b[c];for(c=0,d=b.length;c<d;c++){var j=k[b[c][i]];if(j&&b[c][f]!=b[c][i]){var o=e.nodeChildren(a,j);o||(o=e.nodeChildren(a,j,[]));o.push(b[c])}else g.push(b[c])}return g}else return[b]}},n={bindEvent:function(a){for(var b=0,c=y.length;b<c;b++)y[b].apply(this,arguments)},unbindEvent:function(a){for(var b=0,c=z.length;b<c;b++)z[b].apply(this,arguments)},bindTree:function(a){var b={treeId:a.treeId},c=a.treeObj; |
| | | a.view.txtSelectedEnable||c.bind("selectstart",v).css({"-moz-user-select":"-moz-none"});c.bind("click",b,n.proxy);c.bind("dblclick",b,n.proxy);c.bind("mouseover",b,n.proxy);c.bind("mouseout",b,n.proxy);c.bind("mousedown",b,n.proxy);c.bind("mouseup",b,n.proxy);c.bind("contextmenu",b,n.proxy)},unbindTree:function(a){a.treeObj.unbind("selectstart",v).unbind("click",n.proxy).unbind("dblclick",n.proxy).unbind("mouseover",n.proxy).unbind("mouseout",n.proxy).unbind("mousedown",n.proxy).unbind("mouseup", |
| | | n.proxy).unbind("contextmenu",n.proxy)},doProxy:function(a){for(var b=[],c=0,d=u.length;c<d;c++){var e=u[c].apply(this,arguments);b.push(e);if(e.stop)break}return b},proxy:function(a){var b=e.getSetting(a.data.treeId);if(!h.uCanDo(b,a))return!0;for(var b=n.doProxy(a),c=!0,d=0,f=b.length;d<f;d++){var i=b[d];i.nodeEventCallback&&(c=i.nodeEventCallback.apply(i,[a,i.node])&&c);i.treeEventCallback&&(c=i.treeEventCallback.apply(i,[a,i.node])&&c)}return c}};J=function(a,b){var c=e.getSetting(a.data.treeId); |
| | | if(b.open){if(h.apply(c.callback.beforeCollapse,[c.treeId,b],!0)==!1)return!0}else if(h.apply(c.callback.beforeExpand,[c.treeId,b],!0)==!1)return!0;e.getRoot(c).expandTriggerFlag=!0;j.switchNode(c,b);return!0};K=function(a,b){var c=e.getSetting(a.data.treeId),d=c.view.autoCancelSelected&&(a.ctrlKey||a.metaKey)&&e.isSelectedNode(c,b)?0:c.view.autoCancelSelected&&(a.ctrlKey||a.metaKey)&&c.view.selectedMulti?2:1;if(h.apply(c.callback.beforeClick,[c.treeId,b,d],!0)==!1)return!0;d===0?j.cancelPreSelectedNode(c, |
| | | b):j.selectNode(c,b,d===2);c.treeObj.trigger(g.event.CLICK,[a,c.treeId,b,d]);return!0};L=function(a,b){var c=e.getSetting(a.data.treeId);h.apply(c.callback.beforeMouseDown,[c.treeId,b],!0)&&h.apply(c.callback.onMouseDown,[a,c.treeId,b]);return!0};M=function(a,b){var c=e.getSetting(a.data.treeId);h.apply(c.callback.beforeMouseUp,[c.treeId,b],!0)&&h.apply(c.callback.onMouseUp,[a,c.treeId,b]);return!0};N=function(a,b){var c=e.getSetting(a.data.treeId);h.apply(c.callback.beforeDblClick,[c.treeId,b],!0)&& |
| | | h.apply(c.callback.onDblClick,[a,c.treeId,b]);return!0};O=function(a,b){var c=e.getSetting(a.data.treeId);h.apply(c.callback.beforeRightClick,[c.treeId,b],!0)&&h.apply(c.callback.onRightClick,[a,c.treeId,b]);return typeof c.callback.onRightClick!="function"};v=function(a){a=a.originalEvent.srcElement.nodeName.toLowerCase();return a==="input"||a==="textarea"};var h={apply:function(a,b,c){return typeof a=="function"?a.apply(Q,b?b:[]):c},canAsync:function(a,b){var c=e.nodeChildren(a,b),d=e.nodeIsParent(a, |
| | | b);return a.async.enable&&b&&d&&!(b.zAsync||c&&c.length>0)},clone:function(a){if(a===null)return null;var b=h.isArray(a)?[]:{},c;for(c in a)b[c]=a[c]instanceof Date?new Date(a[c].getTime()):typeof a[c]==="object"?h.clone(a[c]):a[c];return b},eqs:function(a,b){return a.toLowerCase()===b.toLowerCase()},isArray:function(a){return Object.prototype.toString.apply(a)==="[object Array]"},isElement:function(a){return typeof HTMLElement==="object"?a instanceof HTMLElement:a&&typeof a==="object"&&a!==null&& |
| | | a.nodeType===1&&typeof a.nodeName==="string"},$:function(a,b,c){b&&typeof b!="string"&&(c=b,b="");return typeof a=="string"?r(a,c?c.treeObj.get(0).ownerDocument:null):r("#"+a.tId+b,c?c.treeObj:null)},getMDom:function(a,b,c){if(!b)return null;for(;b&&b.id!==a.treeId;){for(var d=0,e=c.length;b.tagName&&d<e;d++)if(h.eqs(b.tagName,c[d].tagName)&&b.getAttribute(c[d].attrName)!==null)return b;b=b.parentNode}return null},getNodeMainDom:function(a){return r(a).parent("li").get(0)||r(a).parentsUntil("li").parent().get(0)}, |
| | | isChildOrSelf:function(a,b){return r(a).closest("#"+b).length>0},uCanDo:function(){return!0}},j={addNodes:function(a,b,c,d,f){var i=e.nodeIsParent(a,b);if(!a.data.keep.leaf||!b||i)if(h.isArray(d)||(d=[d]),a.data.simpleData.enable&&(d=e.transformTozTreeFormat(a,d)),b){var i=l(b,g.id.SWITCH,a),m=l(b,g.id.ICON,a),k=l(b,g.id.UL,a);if(!b.open)j.replaceSwitchClass(b,i,g.folder.CLOSE),j.replaceIcoClass(b,m,g.folder.CLOSE),b.open=!1,k.css({display:"none"});e.addNodesData(a,b,c,d);j.createNodes(a,b.level+ |
| | | 1,d,b,c);f||j.expandCollapseParentNode(a,b,!0)}else e.addNodesData(a,e.getRoot(a),c,d),j.createNodes(a,0,d,null,c)},appendNodes:function(a,b,c,d,f,i,g){if(!c)return[];var k=[],h=d?d:e.getRoot(a),h=e.nodeChildren(a,h),o,l;if(!h||f>=h.length-c.length)f=-1;for(var s=0,n=c.length;s<n;s++){var p=c[s];i&&(o=(f===0||h.length==c.length)&&s==0,l=f<0&&s==c.length-1,e.initNode(a,b,p,d,o,l,g),e.addNodeCache(a,p));o=e.nodeIsParent(a,p);l=[];var I=e.nodeChildren(a,p);I&&I.length>0&&(l=j.appendNodes(a,b+1,I,p,-1, |
| | | i,g&&p.open));g&&(j.makeDOMNodeMainBefore(k,a,p),j.makeDOMNodeLine(k,a,p),e.getBeforeA(a,p,k),j.makeDOMNodeNameBefore(k,a,p),e.getInnerBeforeA(a,p,k),j.makeDOMNodeIcon(k,a,p),e.getInnerAfterA(a,p,k),j.makeDOMNodeNameAfter(k,a,p),e.getAfterA(a,p,k),o&&p.open&&j.makeUlHtml(a,p,k,l.join("")),j.makeDOMNodeMainAfter(k,a,p),e.addCreatedNode(a,p))}return k},appendParentULDom:function(a,b){var c=[],d=l(b,a);!d.get(0)&&b.parentTId&&(j.appendParentULDom(a,b.getParentNode()),d=l(b,a));var f=l(b,g.id.UL,a);f.get(0)&& |
| | | f.remove();f=e.nodeChildren(a,b);f=j.appendNodes(a,b.level+1,f,b,-1,!1,!0);j.makeUlHtml(a,b,c,f.join(""));d.append(c.join(""))},asyncNode:function(a,b,c,d){var f,i;f=e.nodeIsParent(a,b);if(b&&!f)return h.apply(d),!1;else if(b&&b.isAjaxing)return!1;else if(h.apply(a.callback.beforeAsync,[a.treeId,b],!0)==!1)return h.apply(d),!1;if(b)b.isAjaxing=!0,l(b,g.id.ICON,a).attr({style:"","class":g.className.BUTTON+" "+g.className.ICO_LOADING});var m={},k=h.apply(a.async.autoParam,[a.treeId,b],a.async.autoParam); |
| | | for(f=0,i=k.length;b&&f<i;f++){var q=k[f].split("="),o=q;q.length>1&&(o=q[1],q=q[0]);m[o]=b[q]}k=h.apply(a.async.otherParam,[a.treeId,b],a.async.otherParam);if(h.isArray(k))for(f=0,i=k.length;f<i;f+=2)m[k[f]]=k[f+1];else for(var n in k)m[n]=k[n];var s=e.getRoot(a)._ver;r.ajax({contentType:a.async.contentType,cache:!1,type:a.async.type,url:h.apply(a.async.url,[a.treeId,b],a.async.url),data:a.async.contentType.indexOf("application/json")>-1?JSON.stringify(m):m,dataType:a.async.dataType,headers:a.async.headers, |
| | | xhrFields:a.async.xhrFields,success:function(i){if(s==e.getRoot(a)._ver){var f=[];try{f=!i||i.length==0?[]:typeof i=="string"?eval("("+i+")"):i}catch(k){f=i}if(b)b.isAjaxing=null,b.zAsync=!0;j.setNodeLineIcos(a,b);f&&f!==""?(f=h.apply(a.async.dataFilter,[a.treeId,b,f],f),j.addNodes(a,b,-1,f?h.clone(f):[],!!c)):j.addNodes(a,b,-1,[],!!c);a.treeObj.trigger(g.event.ASYNC_SUCCESS,[a.treeId,b,i]);h.apply(d)}},error:function(c,d,i){if(s==e.getRoot(a)._ver){if(b)b.isAjaxing=null;j.setNodeLineIcos(a,b);a.treeObj.trigger(g.event.ASYNC_ERROR, |
| | | [a.treeId,b,c,d,i])}}});return!0},cancelPreSelectedNode:function(a,b,c){var d=e.getRoot(a).curSelectedList,f,i;for(f=d.length-1;f>=0;f--)if(i=d[f],b===i||!b&&(!c||c!==i))if(l(i,g.id.A,a).removeClass(g.node.CURSELECTED),b){e.removeSelectedNode(a,b);break}else d.splice(f,1),a.treeObj.trigger(g.event.UNSELECTED,[a.treeId,i])},createNodeCallback:function(a){if(a.callback.onNodeCreated||a.view.addDiyDom)for(var b=e.getRoot(a);b.createdNodes.length>0;){var c=b.createdNodes.shift();h.apply(a.view.addDiyDom, |
| | | [a.treeId,c]);a.callback.onNodeCreated&&a.treeObj.trigger(g.event.NODECREATED,[a.treeId,c])}},createNodes:function(a,b,c,d,f){if(c&&c.length!=0){var i=e.getRoot(a),m=!d||d.open||!!l(e.nodeChildren(a,d)[0],a).get(0);i.createdNodes=[];var b=j.appendNodes(a,b,c,d,f,!0,m),k,h;d?(d=l(d,g.id.UL,a),d.get(0)&&(k=d)):k=a.treeObj;k&&(f>=0&&(h=k.children()[f]),f>=0&&h?r(h).before(b.join("")):k.append(b.join("")));j.createNodeCallback(a)}},destroy:function(a){a&&(e.initCache(a),e.initRoot(a),n.unbindTree(a), |
| | | n.unbindEvent(a),a.treeObj.empty(),delete t[a.treeId])},expandCollapseNode:function(a,b,c,d,f){var i=e.getRoot(a),m;if(b){var k=e.nodeChildren(a,b),q=e.nodeIsParent(a,b);if(i.expandTriggerFlag)m=f,f=function(){m&&m();b.open?a.treeObj.trigger(g.event.EXPAND,[a.treeId,b]):a.treeObj.trigger(g.event.COLLAPSE,[a.treeId,b])},i.expandTriggerFlag=!1;if(!b.open&&q&&(!l(b,g.id.UL,a).get(0)||k&&k.length>0&&!l(k[0],a).get(0)))j.appendParentULDom(a,b),j.createNodeCallback(a);if(b.open==c)h.apply(f,[]);else{var c= |
| | | l(b,g.id.UL,a),i=l(b,g.id.SWITCH,a),o=l(b,g.id.ICON,a);q?(b.open=!b.open,b.iconOpen&&b.iconClose&&o.attr("style",j.makeNodeIcoStyle(a,b)),b.open?(j.replaceSwitchClass(b,i,g.folder.OPEN),j.replaceIcoClass(b,o,g.folder.OPEN),d==!1||a.view.expandSpeed==""?(c.show(),h.apply(f,[])):k&&k.length>0?c.slideDown(a.view.expandSpeed,f):(c.show(),h.apply(f,[]))):(j.replaceSwitchClass(b,i,g.folder.CLOSE),j.replaceIcoClass(b,o,g.folder.CLOSE),d==!1||a.view.expandSpeed==""||!(k&&k.length>0)?(c.hide(),h.apply(f,[])): |
| | | c.slideUp(a.view.expandSpeed,f))):h.apply(f,[])}}else h.apply(f,[])},expandCollapseParentNode:function(a,b,c,d,e){b&&(b.parentTId?(j.expandCollapseNode(a,b,c,d),b.parentTId&&j.expandCollapseParentNode(a,b.getParentNode(),c,d,e)):j.expandCollapseNode(a,b,c,d,e))},expandCollapseSonNode:function(a,b,c,d,f){var i=e.getRoot(a),i=b?e.nodeChildren(a,b):e.nodeChildren(a,i),g=b?!1:d,k=e.getRoot(a).expandTriggerFlag;e.getRoot(a).expandTriggerFlag=!1;if(i)for(var h=0,l=i.length;h<l;h++)i[h]&&j.expandCollapseSonNode(a, |
| | | i[h],c,g);e.getRoot(a).expandTriggerFlag=k;j.expandCollapseNode(a,b,c,d,f)},isSelectedNode:function(a,b){if(!b)return!1;var c=e.getRoot(a).curSelectedList,d;for(d=c.length-1;d>=0;d--)if(b===c[d])return!0;return!1},makeDOMNodeIcon:function(a,b,c){var d=e.nodeName(b,c),d=b.view.nameIsHTML?d:d.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");a.push("<span id='",c.tId,g.id.ICON,"' title='' treeNode",g.id.ICON," class='",j.makeNodeIcoClass(b,c),"' style='",j.makeNodeIcoStyle(b,c),"'></span><span id='", |
| | | c.tId,g.id.SPAN,"' class='",g.className.NAME,"'>",d,"</span>")},makeDOMNodeLine:function(a,b,c){a.push("<span id='",c.tId,g.id.SWITCH,"' title='' class='",j.makeNodeLineClass(b,c),"' treeNode",g.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(a){a.push("</li>")},makeDOMNodeMainBefore:function(a,b,c){a.push("<li id='",c.tId,"' class='",g.className.LEVEL,c.level,"' tabindex='0' hidefocus='true' treenode>")},makeDOMNodeNameAfter:function(a){a.push("</a>")},makeDOMNodeNameBefore:function(a,b,c){var d= |
| | | e.nodeTitle(b,c),f=j.makeNodeUrl(b,c),i=j.makeNodeFontCss(b,c),m=[],k;for(k in i)m.push(k,":",i[k],";");a.push("<a id='",c.tId,g.id.A,"' class='",g.className.LEVEL,c.level,"' treeNode",g.id.A,' onclick="',c.click||"",'" ',f!=null&&f.length>0?"href='"+f+"'":""," target='",j.makeNodeTarget(c),"' style='",m.join(""),"'");h.apply(b.view.showTitle,[b.treeId,c],b.view.showTitle)&&d&&a.push("title='",d.replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">"),"'");a.push(">")},makeNodeFontCss:function(a, |
| | | b){var c=h.apply(a.view.fontCss,[a.treeId,b],a.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(a,b){var c=["ico"];if(!b.isAjaxing){var d=e.nodeIsParent(a,b);c[0]=(b.iconSkin?b.iconSkin+"_":"")+c[0];d?c.push(b.open?g.folder.OPEN:g.folder.CLOSE):c.push(g.folder.DOCU)}return g.className.BUTTON+" "+c.join("_")},makeNodeIcoStyle:function(a,b){var c=[];if(!b.isAjaxing){var d=e.nodeIsParent(a,b)&&b.iconOpen&&b.iconClose?b.open?b.iconOpen:b.iconClose:b[a.data.key.icon];d&&c.push("background:url(", |
| | | d,") 0 0 no-repeat;");(a.view.showIcon==!1||!h.apply(a.view.showIcon,[a.treeId,b],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(a,b){var c=[];a.view.showLine?b.level==0&&b.isFirstNode&&b.isLastNode?c.push(g.line.ROOT):b.level==0&&b.isFirstNode?c.push(g.line.ROOTS):b.isLastNode?c.push(g.line.BOTTOM):c.push(g.line.CENTER):c.push(g.line.NOLINE);e.nodeIsParent(a,b)?c.push(b.open?g.folder.OPEN:g.folder.CLOSE):c.push(g.folder.DOCU);return j.makeNodeLineClassEx(b)+c.join("_")}, |
| | | makeNodeLineClassEx:function(a){return g.className.BUTTON+" "+g.className.LEVEL+a.level+" "+g.className.SWITCH+" "},makeNodeTarget:function(a){return a.target||"_blank"},makeNodeUrl:function(a,b){var c=a.data.key.url;return b[c]?b[c]:null},makeUlHtml:function(a,b,c,d){c.push("<ul id='",b.tId,g.id.UL,"' class='",g.className.LEVEL,b.level," ",j.makeUlLineClass(a,b),"' style='display:",b.open?"block":"none","'>");c.push(d);c.push("</ul>")},makeUlLineClass:function(a,b){return a.view.showLine&&!b.isLastNode? |
| | | g.line.LINE:""},removeChildNodes:function(a,b){if(b){var c=e.nodeChildren(a,b);if(c){for(var d=0,f=c.length;d<f;d++)e.removeNodeCache(a,c[d]);e.removeSelectedNode(a);delete b[a.data.key.children];a.data.keep.parent?l(b,g.id.UL,a).empty():(e.nodeIsParent(a,b,!1),b.open=!1,c=l(b,g.id.SWITCH,a),d=l(b,g.id.ICON,a),j.replaceSwitchClass(b,c,g.folder.DOCU),j.replaceIcoClass(b,d,g.folder.DOCU),l(b,g.id.UL,a).remove())}}},scrollIntoView:function(a,b){if(b)if(typeof Element==="undefined"){var c=a.treeObj.get(0).getBoundingClientRect(), |
| | | d=b.getBoundingClientRect();(d.top<c.top||d.bottom>c.bottom||d.right>c.right||d.left<c.left)&&b.scrollIntoView()}else{if(!Element.prototype.scrollIntoViewIfNeeded)Element.prototype.scrollIntoViewIfNeeded=function(a){function b(a,c){return{start:a,length:c,end:a+c}}function c(b,d){return!1===a||d.start<b.end&&b.start<d.end?Math.max(b.end-d.length,Math.min(d.start,b.start)):(b.start+b.end-d.length)/2}function d(a,b){return{x:a,y:b,translate:function(c,i){return d(a+c,b+i)}}}function e(a,b){for(;a;)b= |
| | | b.translate(a.offsetLeft,a.offsetTop),a=a.offsetParent;return b}for(var g=e(this,d(0,0)),j=d(this.offsetWidth,this.offsetHeight),h=this.parentNode,l;h instanceof HTMLElement;)l=e(h,d(h.clientLeft,h.clientTop)),h.scrollLeft=c(b(g.x-l.x,j.x),b(h.scrollLeft,h.clientWidth)),h.scrollTop=c(b(g.y-l.y,j.y),b(h.scrollTop,h.clientHeight)),g=g.translate(-h.scrollLeft,-h.scrollTop),h=h.parentNode};b.scrollIntoViewIfNeeded()}},setFirstNode:function(a,b){var c=e.nodeChildren(a,b);if(c.length>0)c[0].isFirstNode= |
| | | !0},setLastNode:function(a,b){var c=e.nodeChildren(a,b);if(c.length>0)c[c.length-1].isLastNode=!0},removeNode:function(a,b){var c=e.getRoot(a),d=b.parentTId?b.getParentNode():c;b.isFirstNode=!1;b.isLastNode=!1;b.getPreNode=function(){return null};b.getNextNode=function(){return null};if(e.getNodeCache(a,b.tId)){l(b,a).remove();e.removeNodeCache(a,b);e.removeSelectedNode(a,b);for(var f=e.nodeChildren(a,d),i=0,h=f.length;i<h;i++)if(f[i].tId==b.tId){f.splice(i,1);break}j.setFirstNode(a,d);j.setLastNode(a, |
| | | d);var k,i=f.length;if(!a.data.keep.parent&&i==0)e.nodeIsParent(a,d,!1),d.open=!1,delete d[a.data.key.children],i=l(d,g.id.UL,a),h=l(d,g.id.SWITCH,a),k=l(d,g.id.ICON,a),j.replaceSwitchClass(d,h,g.folder.DOCU),j.replaceIcoClass(d,k,g.folder.DOCU),i.css("display","none");else if(a.view.showLine&&i>0){var q=f[i-1],i=l(q,g.id.UL,a),h=l(q,g.id.SWITCH,a);k=l(q,g.id.ICON,a);d==c?f.length==1?j.replaceSwitchClass(q,h,g.line.ROOT):(c=l(f[0],g.id.SWITCH,a),j.replaceSwitchClass(f[0],c,g.line.ROOTS),j.replaceSwitchClass(q, |
| | | h,g.line.BOTTOM)):j.replaceSwitchClass(q,h,g.line.BOTTOM);i.removeClass(g.line.LINE)}}},replaceIcoClass:function(a,b,c){if(b&&!a.isAjaxing&&(a=b.attr("class"),a!=void 0)){a=a.split("_");switch(c){case g.folder.OPEN:case g.folder.CLOSE:case g.folder.DOCU:a[a.length-1]=c}b.attr("class",a.join("_"))}},replaceSwitchClass:function(a,b,c){if(b){var d=b.attr("class");if(d!=void 0){d=d.split("_");switch(c){case g.line.ROOT:case g.line.ROOTS:case g.line.CENTER:case g.line.BOTTOM:case g.line.NOLINE:d[0]=j.makeNodeLineClassEx(a)+ |
| | | c;break;case g.folder.OPEN:case g.folder.CLOSE:case g.folder.DOCU:d[1]=c}b.attr("class",d.join("_"));c!==g.folder.DOCU?b.removeAttr("disabled"):b.attr("disabled","disabled")}}},selectNode:function(a,b,c){c||j.cancelPreSelectedNode(a,null,b);l(b,g.id.A,a).addClass(g.node.CURSELECTED);e.addSelectedNode(a,b);a.treeObj.trigger(g.event.SELECTED,[a.treeId,b])},setNodeFontCss:function(a,b){var c=l(b,g.id.A,a),d=j.makeNodeFontCss(a,b);d&&c.css(d)},setNodeLineIcos:function(a,b){if(b){var c=l(b,g.id.SWITCH, |
| | | a),d=l(b,g.id.UL,a),f=l(b,g.id.ICON,a),i=j.makeUlLineClass(a,b);i.length==0?d.removeClass(g.line.LINE):d.addClass(i);c.attr("class",j.makeNodeLineClass(a,b));e.nodeIsParent(a,b)?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",j.makeNodeIcoStyle(a,b));f.attr("class",j.makeNodeIcoClass(a,b))}},setNodeName:function(a,b){var c=e.nodeTitle(a,b),d=l(b,g.id.SPAN,a);d.empty();a.view.nameIsHTML?d.html(e.nodeName(a,b)):d.text(e.nodeName(a,b));h.apply(a.view.showTitle, |
| | | [a.treeId,b],a.view.showTitle)&&l(b,g.id.A,a).attr("title",!c?"":c)},setNodeTarget:function(a,b){l(b,g.id.A,a).attr("target",j.makeNodeTarget(b))},setNodeUrl:function(a,b){var c=l(b,g.id.A,a),d=j.makeNodeUrl(a,b);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(a,b){b.open||!h.canAsync(a,b)?j.expandCollapseNode(a,b,!b.open):a.async.enable?j.asyncNode(a,b)||j.expandCollapseNode(a,b,!b.open):b&&j.expandCollapseNode(a,b,!b.open)}};r.fn.zTree={consts:{className:{BUTTON:"button", |
| | | LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch",NAME:"node_name"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove",SELECTED:"ztree_selected",UNSELECTED:"ztree_unselected"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",NOLINE:"noline",LINE:"line"},folder:{OPEN:"open", |
| | | CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:h,view:j,event:n,data:e},getZTreeObj:function(a){return(a=e.getZTreeTools(a))?a:null},destroy:function(a){if(a&&a.length>0)j.destroy(e.getSetting(a));else for(var b in t)j.destroy(t[b])},init:function(a,b,c){var d=h.clone(P);r.extend(!0,d,b);d.treeId=a.attr("id");d.treeObj=a;d.treeObj.empty();t[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed="";e.initRoot(d);a=e.getRoot(d);c=c?h.clone(h.isArray(c)? |
| | | c:[c]):[];d.data.simpleData.enable?e.nodeChildren(d,a,e.transformTozTreeFormat(d,c)):e.nodeChildren(d,a,c);e.initCache(d);n.unbindTree(d);n.bindTree(d);n.unbindEvent(d);n.bindEvent(d);var f={setting:d,addNodes:function(a,b,c,f){function g(){j.addNodes(d,a,b,n,f==!0)}a||(a=null);var l=e.nodeIsParent(d,a);if(a&&!l&&d.data.keep.leaf)return null;l=parseInt(b,10);isNaN(l)?(f=!!c,c=b,b=-1):b=l;if(!c)return null;var n=h.clone(h.isArray(c)?c:[c]);h.canAsync(d,a)?j.asyncNode(d,a,f,g):g();return n},cancelSelectedNode:function(a){j.cancelPreSelectedNode(d, |
| | | a)},destroy:function(){j.destroy(d)},expandAll:function(a){a=!!a;j.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,f,g){function n(){var b=l(a,d).get(0);b&&f!==!1&&j.scrollIntoView(d,b)}if(!a||!e.nodeIsParent(d,a))return null;b!==!0&&b!==!1&&(b=!a.open);if((g=!!g)&&b&&h.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(g&&!b&&h.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&j.expandCollapseParentNode(d,a.getParentNode(), |
| | | b,!1);if(b===a.open&&!c)return null;e.getRoot(d).expandTriggerFlag=g;!h.canAsync(d,a)&&c?j.expandCollapseSonNode(d,a,b,!0,n):(a.open=!b,j.switchNode(this.setting,a),n());return b},getNodes:function(){return e.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:e.getNodeByParam(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b)},getNodeByTId:function(a){return e.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:e.getNodesByParam(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b)},getNodesByParamFuzzy:function(a, |
| | | b,c){return!a?null:e.getNodesByParamFuzzy(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,f){b=!!b;return!a||typeof a!="function"?b?null:[]:e.getNodesByFilter(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b,f)},getNodeIndex:function(a){if(!a)return null;for(var b=a.parentTId?a.getParentNode():e.getRoot(d),b=e.nodeChildren(d,b),c=0,f=b.length;c<f;c++)if(b[c]==a)return c;return-1},getSelectedNodes:function(){for(var a=[],b=e.getRoot(d).curSelectedList,c=0,f=b.length;c<f;c++)a.push(b[c]); |
| | | return a},isSelectedNode:function(a){return e.isSelectedNode(d,a)},reAsyncChildNodesPromise:function(a,b,c){return new Promise(function(d,e){try{f.reAsyncChildNodes(a,b,c,function(){d(a)})}catch(g){e(g)}})},reAsyncChildNodes:function(a,b,c,f){if(this.setting.async.enable){var h=!a;h&&(a=e.getRoot(d));if(b=="refresh"){for(var b=e.nodeChildren(d,a),n=0,r=b?b.length:0;n<r;n++)e.removeNodeCache(d,b[n]);e.removeSelectedNode(d);e.nodeChildren(d,a,[]);h?this.setting.treeObj.empty():l(a,g.id.UL,d).empty()}j.asyncNode(this.setting, |
| | | h?null:a,!!c,f)}},refresh:function(){this.setting.treeObj.empty();var a=e.getRoot(d),b=e.nodeChildren(d,a);e.initRoot(d);e.nodeChildren(d,a,b);e.initCache(d);j.createNodes(d,0,e.nodeChildren(d,a),null,-1)},removeChildNodes:function(a){if(!a)return null;var b=e.nodeChildren(d,a);j.removeChildNodes(d,a);return b?b:null},removeNode:function(a,b){a&&(b=!!b,b&&h.apply(d.callback.beforeRemove,[d.treeId,a],!0)==!1||(j.removeNode(d,a),b&&this.setting.treeObj.trigger(g.event.REMOVE,[d.treeId,a])))},selectNode:function(a, |
| | | b,c){function e(){if(!c){var b=l(a,d).get(0);j.scrollIntoView(d,b)}}if(a&&h.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)j.expandCollapseParentNode(d,a.getParentNode(),!0,!1,e);else if(!c)try{l(a,d).focus().blur()}catch(f){}j.selectNode(d,a,b)}},transformTozTreeNodes:function(a){return e.transformTozTreeFormat(d,a)},transformToArray:function(a){return e.transformToArrayFormat(d,a)},updateNode:function(a){a&&l(a,d).get(0)&&h.uCanDo(d)&&(j.setNodeName(d,a),j.setNodeTarget(d,a),j.setNodeUrl(d, |
| | | a),j.setNodeLineIcos(d,a),j.setNodeFontCss(d,a))}};a.treeTools=f;e.setZTreeTools(d,f);(c=e.nodeChildren(d,a))&&c.length>0?j.createNodes(d,0,c,null,-1):d.async.enable&&d.async.url&&d.async.url!==""&&j.asyncNode(d);return f}};var Q=r.fn.zTree,l=h.$,g=Q.consts})(jQuery); |
| | | |
| | | /* |
| | | * JQuery zTree excheck v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function(m){var p,q,r,o={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},v={check:{enable:!1,autoCheckTrigger:!1,chkStyle:o.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:o.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c, |
| | | a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId);if(i.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;var d=f.nodeChecked(b,a);f.nodeChecked(b,a,!d);e.checkNodeRelation(b,a);d=n(a,h.id.CHECK,b);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(h.event.CHECK,[c,b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,h.id.CHECK,b);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c, |
| | | a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,h.id.CHECK,b);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};m.extend(!0,m.fn.zTree.consts,o);m.extend(!0,m.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,j;d=h.radio;b=f.nodeChecked(c,a);if(c.check.chkStyle==d.STYLE){var g=f.getRadioCheckedList(c);if(b)if(c.check.radioType==d.TYPE_ALL){for(d=g.length-1;d>=0;d--){b=g[d];var k=f.nodeChecked(c,b);k&&b!=a&&(f.nodeChecked(c,b,!1),g.splice(d,1),e.setChkClass(c, |
| | | n(b,h.id.CHECK,c),b),b.parentTId!=a.parentTId&&e.repairParentChkClassWithSelf(c,b))}g.push(a)}else{g=a.parentTId?a.getParentNode():f.getRoot(c);g=f.nodeChildren(c,g);for(d=0,j=g.length;d<j;d++)if(b=g[d],(k=f.nodeChecked(c,b))&&b!=a)f.nodeChecked(c,b,!1),e.setChkClass(c,n(b,h.id.CHECK,c),b)}else if(c.check.radioType==d.TYPE_ALL)for(d=0,j=g.length;d<j;d++)if(a==g[d]){g.splice(d,1);break}}else g=f.nodeChildren(c,a),b&&(!g||g.length==0||c.check.chkboxType.Y.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,a, |
| | | !0),!b&&(!g||g.length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,a,!1),b&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!b&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=h.checkbox,d=h.radio,j="",g=f.nodeChecked(c,a),j=a.chkDisabled===!0?b.DISABLED:a.halfCheck?b.PART:c.check.chkStyle==d.STYLE?a.check_Child_State<1?b.FULL:b.PART:g?a.check_Child_State===2||a.check_Child_State===-1?b.FULL:b.PART: |
| | | a.check_Child_State<1?b.FULL:b.PART,d=c.check.chkStyle+"_"+(g?b.TRUE:b.FALSE)+"_"+j,d=a.check_Focus&&a.chkDisabled!==!0?d+"_"+b.FOCUS:d;return h.className.BUTTON+" "+b.DEFAULT+" "+d},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===h.checkbox.STYLE)for(var b=f.getRoot(c),b=f.nodeChildren(c,b),d=0,j=b.length;d<j;d++){var g=b[d];g.nocheck!==!0&&g.chkDisabled!==!0&&f.nodeChecked(c,g,a);e.setSonNodeCheckBox(c,g,a)}},repairChkClass:function(c,a){if(a&&(f.makeChkFlag(c,a),a.nocheck!==!0)){var b= |
| | | n(a,h.id.CHECK,c);e.setChkClass(c,b,a)}},repairParentChkClass:function(c,a){if(a&&a.parentTId){var b=a.getParentNode();e.repairChkClass(c,b);e.repairParentChkClass(c,b)}},repairParentChkClassWithSelf:function(c,a){if(a){var b=f.nodeChildren(c,a);b&&b.length>0?e.repairParentChkClass(c,b[0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){if(a.chkDisabled!=b)a.chkDisabled=b;e.repairChkClass(c,a);if((a=f.nodeChildren(c,a))&&d)for(var j=0,g=a.length;j<g;j++)e.repairSonChkDisabled(c, |
| | | a[j],b,d)}},repairParentChkDisabled:function(c,a,b,d){if(a){if(a.chkDisabled!=b&&d)a.chkDisabled=b;e.repairChkClass(c,a);e.repairParentChkDisabled(c,a.getParentNode(),b,d)}},setChkClass:function(c,a,b){a&&(b.nocheck===!0?a.hide():a.show(),a.attr("class",e.makeChkClass(c,b)))},setParentNodeCheckBox:function(c,a,b,d){var j=n(a,h.id.CHECK,c);d||(d=a);f.makeChkFlag(c,a);a.nocheck!==!0&&a.chkDisabled!==!0&&(f.nodeChecked(c,a,b),e.setChkClass(c,j,a),c.check.autoCheckTrigger&&a!=d&&c.treeObj.trigger(h.event.CHECK, |
| | | [null,c.treeId,a]));if(a.parentTId){j=!0;if(!b)for(var g=f.nodeChildren(c,a.getParentNode()),k=0,w=g.length;k<w;k++){var l=g[k],i=f.nodeChecked(c,l);if(l.nocheck!==!0&&l.chkDisabled!==!0&&i||(l.nocheck===!0||l.chkDisabled===!0)&&l.check_Child_State>0){j=!1;break}}j&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var j=n(a,h.id.CHECK,c);d||(d=a);var g=!1,k=f.nodeChildren(c,a);if(k)for(var i=0,l=k.length;i<l;i++){var m=k[i];e.setSonNodeCheckBox(c,m,b,d); |
| | | m.chkDisabled===!0&&(g=!0)}if(a!=f.getRoot(c)&&a.chkDisabled!==!0){g&&a.nocheck!==!0&&f.makeChkFlag(c,a);if(a.nocheck!==!0&&a.chkDisabled!==!0){if(f.nodeChecked(c,a,b),!g)a.check_Child_State=k&&k.length>0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,j,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(h.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=f.getRoot(c).radioCheckedList,b=0,d=a.length;b<d;b++)f.getNodeCache(c, |
| | | a[b].tId)||(a.splice(b,1),b--,d--);return a},getCheckStatus:function(c,a){if(!c.check.enable||a.nocheck||a.chkDisabled)return null;var b=f.nodeChecked(c,a);return{checked:b,half:a.halfCheck?a.halfCheck:c.check.chkStyle==h.radio.STYLE?a.check_Child_State===2:b?a.check_Child_State>-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var j=b&&c.check.chkStyle==h.radio.STYLE&&c.check.radioType==h.radio.TYPE_ALL,d=!d?[]:d,g=0,e=a.length;g<e;g++){var i= |
| | | a[g],l=f.nodeChildren(c,i),m=f.nodeChecked(c,i);if(i.nocheck!==!0&&i.chkDisabled!==!0&&m==b&&(d.push(i),j))break;f.getTreeCheckedNodes(c,l,b,d);if(j&&d.length>0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var b=!b?[]:b,d=0,j=a.length;d<j;d++){var g=a[d],e=f.nodeChildren(c,g),h=f.nodeChecked(c,g);g.nocheck!==!0&&g.chkDisabled!==!0&&h!=g.checkedOld&&b.push(g);f.getTreeChangeCheckedNodes(c,e,b)}return b},makeChkFlag:function(c,a){if(a){var b=-1,d=f.nodeChildren(c,a); |
| | | if(d)for(var j=0,g=d.length;j<g;j++){var e=d[j],i=f.nodeChecked(c,e),l=-1;if(c.check.chkStyle==h.radio.STYLE)if(l=e.nocheck===!0||e.chkDisabled===!0?e.check_Child_State:e.halfCheck===!0?2:i?2:e.check_Child_State>0?2:0,l==2){b=2;break}else l==0&&(b=0);else if(c.check.chkStyle==h.checkbox.STYLE)if(l=e.nocheck===!0||e.chkDisabled===!0?e.check_Child_State:e.halfCheck===!0?1:i?e.check_Child_State===-1||e.check_Child_State===2?2:1:e.check_Child_State>0?1:0,l===1){b=1;break}else if(l===2&&b>-1&&j>0&&l!== |
| | | b){b=1;break}else if(b===2&&l>-1&&l<2){b=1;break}else l>-1&&(b=l)}a.check_Child_State=b}}}});var m=m.fn.zTree,i=m._z.tools,h=m.consts,e=m._z.view,f=m._z.data,n=i.$;f.nodeChecked=function(c,a,b){if(!a)return!1;c=c.data.key.checked;typeof b!=="undefined"?(typeof b==="string"&&(b=i.eqs(b,"true")),a[c]=!!b):a[c]=typeof a[c]=="string"?i.eqs(a[c],"true"):!!a[c];return a[c]};f.exSetting(v);f.addInitBind(function(c){c.treeObj.bind(h.event.CHECK,function(a,b,d,e){a.srcEvent=b;i.apply(c.callback.onCheck,[a, |
| | | d,e])})});f.addInitUnBind(function(c){c.treeObj.unbind(h.event.CHECK)});f.addInitCache(function(){});f.addInitNode(function(c,a,b,d){if(b){a=f.nodeChecked(c,b);b.checkedOld=a;if(typeof b.nocheck=="string")b.nocheck=i.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=i.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=i.eqs(b.halfCheck, |
| | | "true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return f.getCheckStatus(c,b)};c.check.chkStyle==h.radio.STYLE&&c.check.radioType==h.radio.TYPE_ALL&&a&&f.getRoot(c).radioCheckedList.push(b)}});f.addInitProxy(function(c){var a=c.target,b=f.getSetting(c.data.treeId),d="",e=null,g="",k=null;if(i.eqs(c.type,"mouseover")){if(b.check.enable&&i.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+h.id.CHECK)!==null)d=i.getNodeMainDom(a).id,g="mouseoverCheck"}else if(i.eqs(c.type, |
| | | "mouseout")){if(b.check.enable&&i.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+h.id.CHECK)!==null)d=i.getNodeMainDom(a).id,g="mouseoutCheck"}else if(i.eqs(c.type,"click")&&b.check.enable&&i.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+h.id.CHECK)!==null)d=i.getNodeMainDom(a).id,g="checkNode";if(d.length>0)switch(e=f.getNodeCache(b,d),g){case "checkNode":k=p;break;case "mouseoverCheck":k=q;break;case "mouseoutCheck":k=r}return{stop:g==="checkNode",node:e,nodeEventType:g,nodeEventCallback:k, |
| | | treeEventType:"",treeEventCallback:null}},!0);f.addInitRoot(function(c){f.getRoot(c).radioCheckedList=[]});f.addBeforeA(function(c,a,b){c.check.enable&&(f.makeChkFlag(c,a),b.push("<span ID='",a.tId,h.id.CHECK,"' class='",e.makeChkClass(c,a),"' treeNode",h.id.CHECK,a.nocheck===!0?" style='display:none;'":"","></span>"))});f.addZTreeTools(function(c,a){a.checkNode=function(a,b,g,k){var m=f.nodeChecked(c,a);if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!m),k=!!k,(m!==b||g)&&!(k&&i.apply(this.setting.callback.beforeCheck, |
| | | [this.setting.treeId,a],!0)==!1)&&i.uCanDo(this.setting)&&this.setting.check.enable&&a.nocheck!==!0))f.nodeChecked(c,a,b),b=n(a,h.id.CHECK,this.setting),(g||this.setting.check.chkStyle===h.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),k&&this.setting.treeObj.trigger(h.event.CHECK,[null,this.setting.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var a=a!==!1,b= |
| | | f.nodeChildren(c,f.getRoot(this.setting));return f.getTreeCheckedNodes(this.setting,b,a)};a.getChangeCheckedNodes=function(){var a=f.nodeChildren(c,f.getRoot(this.setting));return f.getTreeChangeCheckedNodes(this.setting,a)};a.setChkDisabled=function(a,b,c,f){b=!!b;c=!!c;e.repairSonChkDisabled(this.setting,a,b,!!f);e.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,f){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&n(c,this.setting).get(0)&& |
| | | i.uCanDo(this.setting)){var g=n(c,h.id.CHECK,this.setting);(f==!0||this.setting.check.chkStyle===h.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting,g,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d,f){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)};var t=e.removeNode;e.removeNode=function(c,a){var b=a.getParentNode();t&&t.apply(e,arguments);a&&b&&(e.repairChkClass(c,b),e.repairParentChkClass(c,b))}; |
| | | var u=e.appendNodes;e.appendNodes=function(c,a,b,d,h,g,i){var m="";u&&(m=u.apply(e,arguments));d&&f.makeChkFlag(c,d);return m}})(jQuery); |
| | | |
| | | /* |
| | | * JQuery zTree exedit v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function(B){var I={event:{DRAG:"ztree_drag",DROP:"ztree_drop",RENAME:"ztree_rename",DRAGMOVE:"ztree_dragmove"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},v={onHoverOverNode:function(a,b){var c=i.getSetting(a.data.treeId),d=i.getRoot(c);if(d.curHoverNode!=b)v.onHoverOutNode(a);d.curHoverNode=b;e.addHoverDom(c,b)},onHoverOutNode:function(a){var a= |
| | | i.getSetting(a.data.treeId),b=i.getRoot(a);if(b.curHoverNode&&!i.isSelectedNode(a,b.curHoverNode))e.removeTreeDom(a,b.curHoverNode),b.curHoverNode=null},onMousedownNode:function(a,b){function c(a){if(m.dragFlag==0&&Math.abs(N-a.clientX)<f.confirm.drag.minMoveSize&&Math.abs(O-a.clientY)<f.confirm.drag.minMoveSize)return!0;var b,c,g,j;L.css("cursor","pointer");if(m.dragFlag==0){if(k.apply(f.callback.beforeDrag,[f.treeId,n],!0)==!1)return l(a),!0;for(b=0,c=n.length; b<c; b++){if(b==0)m.dragNodeShowBefore=[]; |
| | | g=n[b];i.nodeIsParent(f,g)&&g.open?(e.expandCollapseNode(f,g,!g.open),m.dragNodeShowBefore[g.tId]=!0):m.dragNodeShowBefore[g.tId]=!1}m.dragFlag=1;y.showHoverDom=!1;k.showIfameMask(f,!0);j=!0;var p=-1;if(n.length>1){var o=n[0].parentTId?i.nodeChildren(f,n[0].getParentNode()):i.getNodes(f);g=[];for(b=0,c=o.length;b<c;b++)if(m.dragNodeShowBefore[o[b].tId]!==void 0&&(j&&p>-1&&p+1!==b&&(j=!1),g.push(o[b]),p=b),n.length===g.length){n=g;break}}j&&(H=n[0].getPreNode(),Q=n[n.length-1].getNextNode());C=q("<ul class='zTreeDragUL'></ul>", |
| | | f);for(b=0,c=n.length;b<c;b++)g=n[b],g.editNameFlag=!1,e.selectNode(f,g,b>0),e.removeTreeDom(f,g),b>f.confirm.drag.maxShowNodeNum-1||(j=q("<li id='"+g.tId+"_tmp'></li>",f),j.append(q(g,d.id.A,f).clone()),j.css("padding","0"),j.children("#"+g.tId+d.id.A).removeClass(d.node.CURSELECTED),C.append(j),b==f.confirm.drag.maxShowNodeNum-1&&(j=q("<li id='"+g.tId+"_moretmp'><a> ... </a></li>",f),C.append(j)));C.attr("id",n[0].tId+d.id.UL+"_tmp");C.addClass(f.treeObj.attr("class"));C.appendTo(L);u=q("<span class='tmpzTreeMove_arrow'></span>", |
| | | f);u.attr("id","zTreeMove_arrow_tmp");u.appendTo(L);f.treeObj.trigger(d.event.DRAG,[a,f.treeId,n])}if(m.dragFlag==1){t&&u.attr("id")==a.target.id&&w&&a.clientX+G.scrollLeft()+2>B("#"+w+d.id.A,t).offset().left?(g=B("#"+w+d.id.A,t),a.target=g.length>0?g.get(0):a.target):t&&(t.removeClass(d.node.TMPTARGET_TREE),w&&B("#"+w+d.id.A,t).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER)); |
| | | w=t=null;J=!1;h=f;g=i.getSettings();for(var z in g)if(g[z].treeId&&g[z].confirm.enable&&g[z].treeId!=f.treeId&&(a.target.id==g[z].treeId||B(a.target).parents("#"+g[z].treeId).length>0))J=!0,h=g[z];z=G.scrollTop();j=G.scrollLeft();p=h.treeObj.offset();b=h.treeObj.get(0).scrollHeight;g=h.treeObj.get(0).scrollWidth;c=a.clientY+z-p.top;var E=h.treeObj.height()+p.top-a.clientY-z,r=a.clientX+j-p.left,s=h.treeObj.width()+p.left-a.clientX-j,p=c<f.confirm.drag.borderMax&&c>f.confirm.drag.borderMin,o=E<f.confirm.drag.borderMax&& |
| | | E>f.confirm.drag.borderMin,F=r<f.confirm.drag.borderMax&&r>f.confirm.drag.borderMin,v=s<f.confirm.drag.borderMax&&s>f.confirm.drag.borderMin,E=c>f.confirm.drag.borderMin&&E>f.confirm.drag.borderMin&&r>f.confirm.drag.borderMin&&s>f.confirm.drag.borderMin,r=p&&h.treeObj.scrollTop()<=0,s=o&&h.treeObj.scrollTop()+h.treeObj.height()+10>=b,M=F&&h.treeObj.scrollLeft()<=0,P=v&&h.treeObj.scrollLeft()+h.treeObj.width()+10>=g;if(a.target&&k.isChildOrSelf(a.target,h.treeId)){for(var D=a.target; D&&D.tagName&&!k.eqs(D.tagName,"li")&&D.id!= |
| | | h.treeId;)D=D.parentNode;var R=!0;for(b=0,c=n.length;b<c;b++)if(g=n[b],D.id===g.tId){R=!1;break}else if(q(g,f).find("#"+D.id).length>0){R=!1;break}if(R&&a.target&&k.isChildOrSelf(a.target,D.id+d.id.A))t=B(D),w=D.id}g=n[0];if(E&&k.isChildOrSelf(a.target,h.treeId)){if(!t&&(a.target.id==h.treeId||r||s||M||P)&&(J||!J&&g.parentTId))t=h.treeObj;p?h.treeObj.scrollTop(h.treeObj.scrollTop()-10):o&&h.treeObj.scrollTop(h.treeObj.scrollTop()+10);F?h.treeObj.scrollLeft(h.treeObj.scrollLeft()-10):v&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+ |
| | | 10);t&&t!=h.treeObj&&t.offset().left<h.treeObj.offset().left&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+t.offset().left-h.treeObj.offset().left)}C.css({top:a.clientY+z+3+"px",left:a.clientX+j+3+"px"});b=j=0;if(t&&t.attr("id")!=h.treeId){var A=w==null?null:i.getNodeCache(h,w),p=(a.ctrlKey||a.metaKey)&&f.confirm.drag.isMove&&f.confirm.drag.isCopy||!f.confirm.drag.isMove&&f.confirm.drag.isCopy;c=!!(H&&w===H.tId);F=!!(Q&&w===Q.tId);o=g.parentTId&&g.parentTId==w;g=(p||!F)&&k.apply(h.confirm.drag.prev,[h.treeId,n,A], |
| | | !!h.confirm.drag.prev);c=(p||!c)&&k.apply(h.confirm.drag.next,[h.treeId,n,A],!!h.confirm.drag.next);p=(p||!o)&&!(h.data.keep.leaf&&!i.nodeIsParent(f,A))&&k.apply(h.confirm.drag.inner,[h.treeId,n,A],!!h.confirm.drag.inner);o=function(){t=null;w="";x=d.move.TYPE_INNER;u.css({display:"none"});if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null};if(!g&&!c&&!p)o();else if(F=B("#"+w+d.id.A,t),v=A.isLastNode?null:B("#"+A.getNextNode().tId+d.id.A,t.next()),E=F.offset().top,r= |
| | | F.offset().left,s=g?p?0.25:c?0.5:1:-1,M=c?p?0.75:g?0.5:0:-1,z=(a.clientY+z-E)/F.height(),(s==1||z<=s&&z>=-0.2)&&g?(j=1-u.width(),b=E-u.height()/2,x=d.move.TYPE_PREV):(M==0||z>=M&&z<=1.2)&&c?(j=1-u.width(),b=v==null||i.nodeIsParent(f,A)&&A.open?E+F.height()-u.height()/2:v.offset().top-u.height()/2,x=d.move.TYPE_NEXT):p?(j=5-u.width(),b=E,x=d.move.TYPE_INNER):o(),t){u.css({display:"block",top:b+"px",left:r+j+"px"});F.addClass(d.node.TMPTARGET_NODE+"_"+x);if(S!=w||T!=x)K=(new Date).getTime();if(A&&i.nodeIsParent(f, |
| | | A)&&x==d.move.TYPE_INNER&&(z=!0,window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId!==A.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===A.tId&&(z=!1),z))window.zTreeMoveTimer=setTimeout(function(){x==d.move.TYPE_INNER&&A&&i.nodeIsParent(f,A)&&!A.open&&(new Date).getTime()-K>h.confirm.drag.autoOpenTime&&k.apply(h.callback.beforeDragOpen,[h.treeId,A],!0)&&(e.switchNode(h,A),h.confirm.drag.autoExpandTrigger&&h.treeObj.trigger(d.event.EXPAND, |
| | | [h.treeId,A]))},h.confirm.drag.autoOpenTime+50),window.zTreeMoveTargetNodeTId=A.tId}}else if(x=d.move.TYPE_INNER,t&&k.apply(h.confirm.drag.inner,[h.treeId,n,null],!!h.confirm.drag.inner)?t.addClass(d.node.TMPTARGET_TREE):t=null,u.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;S=w;T=x;f.treeObj.trigger(d.event.DRAGMOVE,[a,f.treeId,n])}return!1}function l(a){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId= |
| | | null;T=S=null;G.unbind("mousemove",c);G.unbind("mouseup",l);G.unbind("selectstart",g);L.css("cursor","");t&&(t.removeClass(d.node.TMPTARGET_TREE),w&&B("#"+w+d.id.A,t).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));k.showIfameMask(f,!1);y.showHoverDom=!0;if(m.dragFlag!=0){m.dragFlag=0;var b,j,o;for(b=0,j=n.length;b<j;b++)o=n[b],i.nodeIsParent(f,o)&&m.dragNodeShowBefore[o.tId]&& |
| | | !o.open&&(e.expandCollapseNode(f,o,!o.open),delete m.dragNodeShowBefore[o.tId]);C&&C.remove();u&&u.remove();var r=(a.ctrlKey||a.metaKey)&&f.confirm.drag.isMove&&f.confirm.drag.isCopy||!f.confirm.drag.isMove&&f.confirm.drag.isCopy;!r&&t&&w&&n[0].parentTId&&w==n[0].parentTId&&x==d.move.TYPE_INNER&&(t=null);if(t){var p=w==null?null:i.getNodeCache(h,w);if(k.apply(f.callback.beforeDrop,[h.treeId,n,p,x,r],!0)==!1)e.selectNodes(v,n);else{var s=r?k.clone(n):n;b=function(){if(J){if(!r)for(var b=0,c=n.length; b<c; b++)e.removeNode(f, |
| | | n[b]);x==d.move.TYPE_INNER?e.addNodes(h,p,-1,s):e.addNodes(h,p.getParentNode(),x==d.move.TYPE_PREV?p.getIndex():p.getIndex()+1,s)}else if(r&&x==d.move.TYPE_INNER)e.addNodes(h,p,-1,s);else if(r)e.addNodes(h,p.getParentNode(),x==d.move.TYPE_PREV?p.getIndex():p.getIndex()+1,s);else if(x!=d.move.TYPE_NEXT)for(b=0,c=s.length;b<c;b++)e.moveNode(h,p,s[b],x,!1);else for(b=-1,c=s.length-1;b<c;c--)e.moveNode(h,p,s[c],x,!1);e.selectNodes(h,s);b=q(s[0],f).get(0);e.scrollIntoView(f,b);f.treeObj.trigger(d.event.DROP, |
| | | [a,h.treeId,s,p,x,r])};x==d.move.TYPE_INNER&&k.canAsync(h,p)?e.asyncNode(h,p,!1,b):b()}}else e.selectNodes(v,n),f.treeObj.trigger(d.event.DROP,[a,f.treeId,n,null,null,null])}}function g(){return!1}var o,j,f=i.getSetting(a.data.treeId),m=i.getRoot(f),y=i.getRoots();if(a.button==2||!f.confirm.enable||!f.confirm.drag.isCopy&&!f.confirm.drag.isMove)return!0;var r=a.target,s=i.getRoot(f).curSelectedList,n=[];if(i.isSelectedNode(f,b))for(o=0,j=s.length; o<j; o++){if(s[o].editNameFlag&&k.eqs(r.tagName,"input")&&r.getAttribute("treeNode"+ |
| | | d.id.INPUT)!==null)return!0;n.push(s[o]);if(n[0].parentTId!==s[o].parentTId){n=[b];break}}else n=[b];e.editNodeBlur=!0;e.cancelCurEditNode(f);var G=B(f.treeObj.get(0).ownerDocument),L=B(f.treeObj.get(0).ownerDocument.body),C,u,t,J=!1,h=f,v=f,H,Q,S=null,T=null,w=null,x=d.move.TYPE_INNER,N=a.clientX,O=a.clientY,K=(new Date).getTime();k.uCanDo(f)&&G.bind("mousemove",c);G.bind("mouseup",l);G.bind("selectstart",g);return!0}};B.extend(!0,B.fn.zTree.consts,I);B.extend(!0,B.fn.zTree._z,{tools:{getAbs:function(a){a= |
| | | a.getBoundingClientRect();return[a.left+(document.body.scrollLeft+document.documentElement.scrollLeft),a.top+(document.body.scrollTop+document.documentElement.scrollTop)]},inputFocus:function(a){a.get(0)&&(a.focus(),k.setCursorPosition(a.get(0),a.val().length))},inputSelect:function(a){a.get(0)&&(a.focus(),a.select())},setCursorPosition:function(a,b){if(a.setSelectionRange)a.focus(),a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0);c.moveEnd("character", |
| | | b);c.moveStart("character",b);c.select()}},showIfameMask:function(a,b){for(var c=i.getRoot(a);c.dragMaskList.length>0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(b)for(var d=q("iframe",a),g=0,e=d.length;g<e;g++){var j=d.get(g),f=k.getAbs(j),j=q("<div id='zTreeMask_"+g+"' class='zTreeMask' style='top:"+f[1]+"px; left:"+f[0]+"px; width:"+j.offsetWidth+"px; height:"+j.offsetHeight+"px;'></div>",a);j.appendTo(q("body",a));c.dragMaskList.push(j)}}},view:{addEditBtn:function(a,b){if(!(b.editNameFlag|| |
| | | q(b,d.id.EDIT,a).length>0)&&k.apply(a.confirm.showRenameBtn,[a.treeId,b],a.confirm.showRenameBtn)){var c=q(b,d.id.A,a),l="<span class='"+d.className.BUTTON+" edit' id='"+b.tId+d.id.EDIT+"' title='"+k.apply(a.confirm.renameTitle,[a.treeId,b],a.confirm.renameTitle)+"' treeNode"+d.id.EDIT+" style='display:none;'></span>";c.append(l);q(b,d.id.EDIT,a).bind("click",function(){if(!k.uCanDo(a)||k.apply(a.callback.beforeEditName,[a.treeId,b],!0)==!1)return!1;e.editNode(a,b);return!1}).show()}},addRemoveBtn:function(a, |
| | | b){if(!(b.editNameFlag||q(b,d.id.REMOVE,a).length>0)&&k.apply(a.confirm.showRemoveBtn,[a.treeId,b],a.confirm.showRemoveBtn)){var c=q(b,d.id.A,a),l="<span class='"+d.className.BUTTON+" remove' id='"+b.tId+d.id.REMOVE+"' title='"+k.apply(a.confirm.removeTitle,[a.treeId,b],a.confirm.removeTitle)+"' treeNode"+d.id.REMOVE+" style='display:none;'></span>";c.append(l);q(b,d.id.REMOVE,a).bind("click",function(){if(!k.uCanDo(a)||k.apply(a.callback.beforeRemove,[a.treeId,b],!0)==!1)return!1;e.removeNode(a,b);a.treeObj.trigger(d.event.REMOVE, |
| | | [a.treeId,b]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(a,b){if(i.getRoots().showHoverDom)b.isHover=!0,a.confirm.enable&&(e.addEditBtn(a,b),e.addRemoveBtn(a,b)),k.apply(a.view.addHoverDom,[a.treeId,b])},cancelCurEditNode:function(a, b, c){var l=i.getRoot(a),g=l.curEditNode;if(g){var o=l.curEditInput,b=b?b:c?i.nodeName(a,g):o.val();if(k.apply(a.callback.beforeRename,[a.treeId,g,b,c],!0)===!1)return!1;i.nodeName(a,g,b);q(g,d.id.A,a).removeClass(d.node.CURSELECTED_EDIT); |
| | | o.unbind();e.setNodeName(a,g);g.editNameFlag=!1;l.curEditNode=null;l.curEditInput=null;e.selectNode(a,g,!1);a.treeObj.trigger(d.event.RENAME,[a.treeId,g,c])}return l.noSelection=!0},editNode:function(a,b){var c=i.getRoot(a);e.editNodeBlur=!1;if(i.isSelectedNode(a,b)&&c.curEditNode==b&&b.editNameFlag)setTimeout(function(){k.inputFocus(c.curEditInput)},0);else{b.editNameFlag=!0;e.removeTreeDom(a,b);e.cancelCurEditNode(a);e.selectNode(a,b,!1);q(b,d.id.SPAN,a).html("<input type=text class='rename' id='"+ |
| | | b.tId+d.id.INPUT+"' treeNode"+d.id.INPUT+" >");var l=q(b,d.id.INPUT,a);l.attr("value",i.nodeName(a,b));a.confirm.editNameSelectAll?k.inputSelect(l):k.inputFocus(l);l.bind("blur",function(){e.editNodeBlur||e.cancelCurEditNode(a)}).bind("keydown",function(b){b.keyCode=="13"?(e.editNodeBlur=!0,e.cancelCurEditNode(a)):b.keyCode=="27"&&e.cancelCurEditNode(a,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});q(b,d.id.A,a).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=l; |
| | | c.noSelection=!1;c.curEditNode=b}},moveNode:function(a,b,c,l,g,k){var j=i.getRoot(a);if(b!=c&&(!a.data.keep.leaf||!b||i.nodeIsParent(a,b)||l!=d.move.TYPE_INNER)){var f=c.parentTId?c.getParentNode():j,m=b===null||b==j;m&&b===null&&(b=j);if(m)l=d.move.TYPE_INNER;j=b.parentTId?b.getParentNode():j;if(l!=d.move.TYPE_PREV&&l!=d.move.TYPE_NEXT)l=d.move.TYPE_INNER;if(l==d.move.TYPE_INNER)if(m)c.parentTId=null;else{if(!i.nodeIsParent(a,b))i.nodeIsParent(a,b,!0),b.open=!!b.open,e.setNodeLineIcos(a,b);c.parentTId= |
| | | b.tId}var y;m?y=m=a.treeObj:(!k&&l==d.move.TYPE_INNER?e.expandCollapseNode(a,b,!0,!1):k||e.expandCollapseNode(a,b.getParentNode(),!0,!1),m=q(b,a),y=q(b,d.id.UL,a),m.get(0)&&!y.get(0)&&(y=[],e.makeUlHtml(a,b,y,""),m.append(y.join(""))),y=q(b,d.id.UL,a));var r=q(c,a);r.get(0)?m.get(0)||r.remove():r=e.appendNodes(a,c.level,[c],null,-1,!1,!0).join("");y.get(0)&&l==d.move.TYPE_INNER?y.append(r):m.get(0)&&l==d.move.TYPE_PREV?m.before(r):m.get(0)&&l==d.move.TYPE_NEXT&&m.after(r);var s;y=-1;var r=0,n=null, |
| | | m=null,B=c.level,v=i.nodeChildren(a,f),C=i.nodeChildren(a,j),u=i.nodeChildren(a,b);if(c.isFirstNode){if(y=0,v.length>1)n=v[1],n.isFirstNode=!0}else if(c.isLastNode)y=v.length-1,n=v[y-1],n.isLastNode=!0;else for(j=0,s=v.length;j<s;j++)if(v[j].tId==c.tId){y=j;break}y>=0&&v.splice(y,1);if(l!=d.move.TYPE_INNER)for(j=0,s=C.length;j<s;j++)C[j].tId==b.tId&&(r=j);if(l==d.move.TYPE_INNER){u||(u=i.nodeChildren(a,b,[]));if(u.length>0)m=u[u.length-1],m.isLastNode=!1;u.splice(u.length,0,c);c.isLastNode=!0;c.isFirstNode= |
| | | u.length==1}else b.isFirstNode&&l==d.move.TYPE_PREV?(C.splice(r,0,c),m=b,m.isFirstNode=!1,c.parentTId=b.parentTId,c.isFirstNode=!0,c.isLastNode=!1):b.isLastNode&&l==d.move.TYPE_NEXT?(C.splice(r+1,0,c),m=b,m.isLastNode=!1,c.parentTId=b.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(l==d.move.TYPE_PREV?C.splice(r,0,c):C.splice(r+1,0,c),c.parentTId=b.parentTId,c.isFirstNode=!1,c.isLastNode=!1);i.fixPIdKeyValue(a,c);i.setSonNodeLevel(a,c.getParentNode(),c);e.setNodeLineIcos(a,c);e.repairNodeLevelClass(a, |
| | | c,B);!a.data.keep.parent&&v.length<1?(i.nodeIsParent(a,f,!1),f.open=!1,b=q(f,d.id.UL,a),l=q(f,d.id.SWITCH,a),j=q(f,d.id.ICON,a),e.replaceSwitchClass(f,l,d.folder.DOCU),e.replaceIcoClass(f,j,d.folder.DOCU),b.css("display","none")):n&&e.setNodeLineIcos(a,n);m&&e.setNodeLineIcos(a,m);a.check&&a.check.enable&&e.repairChkClass&&(e.repairChkClass(a,f),e.repairParentChkClassWithSelf(a,f),f!=c.parent&&e.repairParentChkClassWithSelf(a,c));k||e.expandCollapseParentNode(a,c.getParentNode(),!0,g)}},removeEditBtn:function(a, |
| | | b){q(b,d.id.EDIT,a).unbind().remove()},removeRemoveBtn:function(a,b){q(b,d.id.REMOVE,a).unbind().remove()},removeTreeDom:function(a,b){b.isHover=!1;e.removeEditBtn(a,b);e.removeRemoveBtn(a,b);k.apply(a.view.removeHoverDom,[a.treeId,b])},repairNodeLevelClass:function(a,b,c){if(c!==b.level){var e=q(b,a),g=q(b,d.id.A,a),a=q(b,d.id.UL,a),c=d.className.LEVEL+c,b=d.className.LEVEL+b.level;e.removeClass(c);e.addClass(b);g.removeClass(c);g.addClass(b);a.removeClass(c);a.addClass(b)}},selectNodes:function(a, |
| | | b){for(var c=0,d=b.length;c<d;c++)e.selectNode(a,b[c],c>0)}},event:{},data:{setSonNodeLevel:function(a,b,c){if(c){var d=i.nodeChildren(a,c);c.level=b?b.level+1:0;if(d)for(var b=0,g=d.length;b<g;b++)d[b]&&i.setSonNodeLevel(a,c,d[b])}}}});var H=B.fn.zTree,k=H._z.tools,d=H.consts,e=H._z.view,i=H._z.data,q=k.$;i.exSetting({edit:{enable:!1,editNameSelectAll:!1,showRemoveBtn:!0,showRenameBtn:!0,removeTitle:"remove",renameTitle:"rename",drag:{autoExpandTrigger:!1,isCopy:!0,isMove:!0,prev:!0,next:!0,inner:!0, |
| | | minMoveSize:5,borderMax:10,borderMin:-5,maxShowNodeNum:5,autoOpenTime:500}},view:{addHoverDom:null,removeHoverDom:null},callback:{beforeDrag:null,beforeDragOpen:null,beforeDrop:null,beforeEditName:null,beforeRename:null,onDrag:null,onDragMove:null,onDrop:null,onRename:null}});i.addInitBind(function(a){var b=a.treeObj,c=d.event;b.bind(c.RENAME,function(b,c,d,e){k.apply(a.callback.onRename,[b,c,d,e])});b.bind(c.DRAG,function(b,c,d,e){k.apply(a.callback.onDrag,[c,d,e])});b.bind(c.DRAGMOVE,function(b, |
| | | c,d,e){k.apply(a.callback.onDragMove,[c,d,e])});b.bind(c.DROP,function(b,c,d,e,f,i,q){k.apply(a.callback.onDrop,[c,d,e,f,i,q])})});i.addInitUnBind(function(a){var a=a.treeObj,b=d.event;a.unbind(b.RENAME);a.unbind(b.DRAG);a.unbind(b.DRAGMOVE);a.unbind(b.DROP)});i.addInitCache(function(){});i.addInitNode(function(a,b,c){if(c)c.isHover=!1,c.editNameFlag=!1});i.addInitProxy(function(a){var b=a.target,c=i.getSetting(a.data.treeId),e=a.relatedTarget,g="",o=null,j="",f=null,m=null;if(k.eqs(a.type,"mouseover")){if(m= |
| | | k.getMDom(c,b,[{tagName:"a",attrName:"treeNode"+d.id.A}]))g=k.getNodeMainDom(m).id,j="hoverOverNode"}else if(k.eqs(a.type,"mouseout"))m=k.getMDom(c,e,[{tagName:"a",attrName:"treeNode"+d.id.A}]),m||(g="remove",j="hoverOutNode");else if(k.eqs(a.type,"mousedown")&&(m=k.getMDom(c,b,[{tagName:"a",attrName:"treeNode"+d.id.A}])))g=k.getNodeMainDom(m).id,j="mousedownNode";if(g.length>0)switch(o=i.getNodeCache(c,g),j){case "mousedownNode":f=v.onMousedownNode;break;case "hoverOverNode":f=v.onHoverOverNode; |
| | | break;case "hoverOutNode":f=v.onHoverOutNode}return{stop:!1,node:o,nodeEventType:j,nodeEventCallback:f,treeEventType:"",treeEventCallback:null}});i.addInitRoot(function(a){var a=i.getRoot(a),b=i.getRoots();a.curEditNode=null;a.curEditInput=null;a.curHoverNode=null;a.dragFlag=0;a.dragNodeShowBefore=[];a.dragMaskList=[];b.showHoverDom=!0});i.addZTreeTools(function(a,b){b.cancelEditName=function(a){i.getRoot(this.setting).curEditNode&&e.cancelCurEditNode(this.setting,a?a:null,!0)};b.copyNode=function(b, |
| | | l,g,o){if(!l)return null;var j=i.nodeIsParent(a,b);if(b&&!j&&this.setting.data.keep.leaf&&g===d.move.TYPE_INNER)return null;var f=this,m=k.clone(l);if(!b)b=null,g=d.move.TYPE_INNER;g==d.move.TYPE_INNER?(l=function(){e.addNodes(f.setting,b,-1,[m],o)},k.canAsync(this.setting,b)?e.asyncNode(this.setting,b,o,l):l()):(e.addNodes(this.setting,b.parentNode,-1,[m],o),e.moveNode(this.setting,b,m,g,!1,o));return m};b.editName=function(a){a&&a.tId&&a===i.getNodeCache(this.setting,a.tId)&&(a.parentTId&&e.expandCollapseParentNode(this.setting, |
| | | a.getParentNode(),!0),e.editNode(this.setting,a))};b.moveNode=function(b,l,g,o){function j(){e.moveNode(m.setting,b,l,g,!1,o)}if(!l)return l;var f=i.nodeIsParent(a,b);if(b&&!f&&this.setting.data.keep.leaf&&g===d.move.TYPE_INNER)return null;else if(b&&(l.parentTId==b.tId&&g==d.move.TYPE_INNER||q(l,this.setting).find("#"+b.tId).length>0))return null;else b||(b=null);var m=this;k.canAsync(this.setting,b)&&g===d.move.TYPE_INNER?e.asyncNode(this.setting,b,o,j):j();return l};b.setEditable=function(a){this.setting.confirm.enable= |
| | | a;return this.refresh()}});var N=e.cancelPreSelectedNode;e.cancelPreSelectedNode=function(a,b){for(var c=i.getRoot(a).curSelectedList,d=0,g=c.length;d<g;d++)if(!b||b===c[d])if(e.removeTreeDom(a,c[d]),b)break;N&&N.apply(e,arguments)};var O=e.createNodes;e.createNodes=function(a,b,c,d,g){O&&O.apply(e,arguments);c&&e.repairParentChkClassWithSelf&&e.repairParentChkClassWithSelf(a,d)};var V=e.makeNodeUrl;e.makeNodeUrl=function(a,b){return a.confirm.enable?null:V.apply(e,arguments)};var K=e.removeNode;e.removeNode= |
| | | function(a,b){var c=i.getRoot(a);if(c.curEditNode===b)c.curEditNode=null;K&&K.apply(e,arguments)};var P=e.selectNode;e.selectNode=function(a,b,c){var d=i.getRoot(a);if(i.isSelectedNode(a,b)&&d.curEditNode==b&&b.editNameFlag)return!1;P&&P.apply(e,arguments);e.addHoverDom(a,b);return!0};var U=k.uCanDo;k.uCanDo=function(a,b){var c=i.getRoot(a);if(b&&(k.eqs(b.type,"mouseover")||k.eqs(b.type,"mouseout")||k.eqs(b.type,"mousedown")||k.eqs(b.type,"mouseup")))return!0;if(c.curEditNode)e.editNodeBlur=!1,c.curEditInput.focus(); |
| | | return!c.curEditNode&&(U?U.apply(e,arguments):!0)}})(jQuery); |
| | | |
New file |
| | |
| | | /* |
| | | * JQuery zTree core v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function ($) { |
| | | var settings = {}, roots = {}, caches = {}, |
| | | //default consts of core |
| | | _consts = { |
| | | className: { |
| | | BUTTON: "button", |
| | | LEVEL: "level", |
| | | ICO_LOADING: "ico_loading", |
| | | SWITCH: "switch", |
| | | NAME: 'node_name' |
| | | }, |
| | | event: { |
| | | NODECREATED: "ztree_nodeCreated", |
| | | CLICK: "ztree_click", |
| | | EXPAND: "ztree_expand", |
| | | COLLAPSE: "ztree_collapse", |
| | | ASYNC_SUCCESS: "ztree_async_success", |
| | | ASYNC_ERROR: "ztree_async_error", |
| | | REMOVE: "ztree_remove", |
| | | SELECTED: "ztree_selected", |
| | | UNSELECTED: "ztree_unselected" |
| | | }, |
| | | id: { |
| | | A: "_a", |
| | | ICON: "_ico", |
| | | SPAN: "_span", |
| | | SWITCH: "_switch", |
| | | UL: "_ul" |
| | | }, |
| | | line: { |
| | | ROOT: "root", |
| | | ROOTS: "roots", |
| | | CENTER: "center", |
| | | BOTTOM: "bottom", |
| | | NOLINE: "noline", |
| | | LINE: "line" |
| | | }, |
| | | folder: { |
| | | OPEN: "open", |
| | | CLOSE: "close", |
| | | DOCU: "docu" |
| | | }, |
| | | node: { |
| | | CURSELECTED: "curSelectedNode" |
| | | } |
| | | }, |
| | | //default setting of core |
| | | _setting = { |
| | | treeId: "", |
| | | treeObj: null, |
| | | view: { |
| | | addDiyDom: null, |
| | | autoCancelSelected: true, |
| | | dblClickExpand: true, |
| | | expandSpeed: "fast", |
| | | fontCss: {}, |
| | | nameIsHTML: false, |
| | | selectedMulti: true, |
| | | showIcon: true, |
| | | showLine: true, |
| | | showTitle: true, |
| | | txtSelectedEnable: false |
| | | }, |
| | | data: { |
| | | key: { |
| | | isParent: "isParent", |
| | | children: "children", |
| | | name: "name", |
| | | title: "", |
| | | url: "url", |
| | | icon: "icon" |
| | | }, |
| | | simpleData: { |
| | | enable: false, |
| | | idKey: "id", |
| | | pIdKey: "pId", |
| | | rootPId: null |
| | | }, |
| | | keep: { |
| | | parent: false, |
| | | leaf: false |
| | | } |
| | | }, |
| | | async: { |
| | | enable: false, |
| | | contentType: "application/x-www-form-urlencoded", |
| | | type: "post", |
| | | dataType: "text", |
| | | headers: {}, |
| | | xhrFields: {}, |
| | | url: "", |
| | | autoParam: [], |
| | | otherParam: [], |
| | | dataFilter: null |
| | | }, |
| | | callback: { |
| | | beforeAsync: null, |
| | | beforeClick: null, |
| | | beforeDblClick: null, |
| | | beforeRightClick: null, |
| | | beforeMouseDown: null, |
| | | beforeMouseUp: null, |
| | | beforeExpand: null, |
| | | beforeCollapse: null, |
| | | beforeRemove: null, |
| | | |
| | | onAsyncError: null, |
| | | onAsyncSuccess: null, |
| | | onNodeCreated: null, |
| | | onClick: null, |
| | | onDblClick: null, |
| | | onRightClick: null, |
| | | onMouseDown: null, |
| | | onMouseUp: null, |
| | | onExpand: null, |
| | | onCollapse: null, |
| | | onRemove: null |
| | | } |
| | | }, |
| | | //default root of core |
| | | //zTree use root to save full data |
| | | _initRoot = function (setting) { |
| | | var r = data.getRoot(setting); |
| | | if (!r) { |
| | | r = {}; |
| | | data.setRoot(setting, r); |
| | | } |
| | | data.nodeChildren(setting, r, []); |
| | | r.expandTriggerFlag = false; |
| | | r.curSelectedList = []; |
| | | r.noSelection = true; |
| | | r.createdNodes = []; |
| | | r.zId = 0; |
| | | r._ver = (new Date()).getTime(); |
| | | }, |
| | | //default cache of core |
| | | _initCache = function (setting) { |
| | | var c = data.getCache(setting); |
| | | if (!c) { |
| | | c = {}; |
| | | data.setCache(setting, c); |
| | | } |
| | | c.nodes = []; |
| | | c.doms = []; |
| | | }, |
| | | //default bindEvent of core |
| | | _bindEvent = function (setting) { |
| | | var o = setting.treeObj, |
| | | c = consts.event; |
| | | o.bind(c.NODECREATED, function (event, treeId, node) { |
| | | tools.apply(setting.callback.onNodeCreated, [event, treeId, node]); |
| | | }); |
| | | |
| | | o.bind(c.CLICK, function (event, srcEvent, treeId, node, clickFlag) { |
| | | tools.apply(setting.callback.onClick, [srcEvent, treeId, node, clickFlag]); |
| | | }); |
| | | |
| | | o.bind(c.EXPAND, function (event, treeId, node) { |
| | | tools.apply(setting.callback.onExpand, [event, treeId, node]); |
| | | }); |
| | | |
| | | o.bind(c.COLLAPSE, function (event, treeId, node) { |
| | | tools.apply(setting.callback.onCollapse, [event, treeId, node]); |
| | | }); |
| | | |
| | | o.bind(c.ASYNC_SUCCESS, function (event, treeId, node, msg) { |
| | | tools.apply(setting.callback.onAsyncSuccess, [event, treeId, node, msg]); |
| | | }); |
| | | |
| | | o.bind(c.ASYNC_ERROR, function (event, treeId, node, XMLHttpRequest, textStatus, errorThrown) { |
| | | tools.apply(setting.callback.onAsyncError, [event, treeId, node, XMLHttpRequest, textStatus, errorThrown]); |
| | | }); |
| | | |
| | | o.bind(c.REMOVE, function (event, treeId, treeNode) { |
| | | tools.apply(setting.callback.onRemove, [event, treeId, treeNode]); |
| | | }); |
| | | |
| | | o.bind(c.SELECTED, function (event, treeId, node) { |
| | | tools.apply(setting.callback.onSelected, [treeId, node]); |
| | | }); |
| | | o.bind(c.UNSELECTED, function (event, treeId, node) { |
| | | tools.apply(setting.callback.onUnSelected, [treeId, node]); |
| | | }); |
| | | }, |
| | | _unbindEvent = function (setting) { |
| | | var o = setting.treeObj, |
| | | c = consts.event; |
| | | o.unbind(c.NODECREATED) |
| | | .unbind(c.CLICK) |
| | | .unbind(c.EXPAND) |
| | | .unbind(c.COLLAPSE) |
| | | .unbind(c.ASYNC_SUCCESS) |
| | | .unbind(c.ASYNC_ERROR) |
| | | .unbind(c.REMOVE) |
| | | .unbind(c.SELECTED) |
| | | .unbind(c.UNSELECTED); |
| | | }, |
| | | //default event proxy of core |
| | | _eventProxy = function (event) { |
| | | var target = event.target, |
| | | setting = data.getSetting(event.data.treeId), |
| | | tId = "", node = null, |
| | | nodeEventType = "", treeEventType = "", |
| | | nodeEventCallback = null, treeEventCallback = null, |
| | | tmp = null; |
| | | |
| | | if (tools.eqs(event.type, "mousedown")) { |
| | | treeEventType = "mousedown"; |
| | | } else if (tools.eqs(event.type, "mouseup")) { |
| | | treeEventType = "mouseup"; |
| | | } else if (tools.eqs(event.type, "contextmenu")) { |
| | | treeEventType = "contextmenu"; |
| | | } else if (tools.eqs(event.type, "click")) { |
| | | if (tools.eqs(target.tagName, "span") && target.getAttribute("treeNode" + consts.id.SWITCH) !== null) { |
| | | tId = tools.getNodeMainDom(target).id; |
| | | nodeEventType = "switchNode"; |
| | | } else { |
| | | tmp = tools.getMDom(setting, target, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (tmp) { |
| | | tId = tools.getNodeMainDom(tmp).id; |
| | | nodeEventType = "clickNode"; |
| | | } |
| | | } |
| | | } else if (tools.eqs(event.type, "dblclick")) { |
| | | treeEventType = "dblclick"; |
| | | tmp = tools.getMDom(setting, target, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (tmp) { |
| | | tId = tools.getNodeMainDom(tmp).id; |
| | | nodeEventType = "switchNode"; |
| | | } |
| | | } |
| | | if (treeEventType.length > 0 && tId.length == 0) { |
| | | tmp = tools.getMDom(setting, target, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (tmp) { |
| | | tId = tools.getNodeMainDom(tmp).id; |
| | | } |
| | | } |
| | | // event to node |
| | | if (tId.length > 0) { |
| | | node = data.getNodeCache(setting, tId); |
| | | switch (nodeEventType) { |
| | | case "switchNode" : |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | if (!isParent) { |
| | | nodeEventType = ""; |
| | | } else if (tools.eqs(event.type, "click") |
| | | || (tools.eqs(event.type, "dblclick") && tools.apply(setting.view.dblClickExpand, [setting.treeId, node], setting.view.dblClickExpand))) { |
| | | nodeEventCallback = handler.onSwitchNode; |
| | | } else { |
| | | nodeEventType = ""; |
| | | } |
| | | break; |
| | | case "clickNode" : |
| | | nodeEventCallback = handler.onClickNode; |
| | | break; |
| | | } |
| | | } |
| | | // event to zTree |
| | | switch (treeEventType) { |
| | | case "mousedown" : |
| | | treeEventCallback = handler.onZTreeMousedown; |
| | | break; |
| | | case "mouseup" : |
| | | treeEventCallback = handler.onZTreeMouseup; |
| | | break; |
| | | case "dblclick" : |
| | | treeEventCallback = handler.onZTreeDblclick; |
| | | break; |
| | | case "contextmenu" : |
| | | treeEventCallback = handler.onZTreeContextmenu; |
| | | break; |
| | | } |
| | | var proxyResult = { |
| | | stop: false, |
| | | node: node, |
| | | nodeEventType: nodeEventType, |
| | | nodeEventCallback: nodeEventCallback, |
| | | treeEventType: treeEventType, |
| | | treeEventCallback: treeEventCallback |
| | | }; |
| | | return proxyResult |
| | | }, |
| | | //default init node of core |
| | | _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { |
| | | if (!n) return; |
| | | var r = data.getRoot(setting), |
| | | children = data.nodeChildren(setting, n); |
| | | n.level = level; |
| | | n.tId = setting.treeId + "_" + (++r.zId); |
| | | n.parentTId = parentNode ? parentNode.tId : null; |
| | | n.open = (typeof n.open == "string") ? tools.eqs(n.open, "true") : !!n.open; |
| | | var isParent = data.nodeIsParent(setting, n); |
| | | if (tools.isArray(children)) { |
| | | data.nodeIsParent(setting, n, true); |
| | | n.zAsync = true; |
| | | } else { |
| | | isParent = data.nodeIsParent(setting, n, isParent); |
| | | n.open = (isParent && !setting.async.enable) ? n.open : false; |
| | | n.zAsync = !isParent; |
| | | } |
| | | n.isFirstNode = isFirstNode; |
| | | n.isLastNode = isLastNode; |
| | | n.getParentNode = function () { |
| | | return data.getNodeCache(setting, n.parentTId); |
| | | }; |
| | | n.getPreNode = function () { |
| | | return data.getPreNode(setting, n); |
| | | }; |
| | | n.getNextNode = function () { |
| | | return data.getNextNode(setting, n); |
| | | }; |
| | | n.getIndex = function () { |
| | | return data.getNodeIndex(setting, n); |
| | | }; |
| | | n.getPath = function () { |
| | | return data.getNodePath(setting, n); |
| | | }; |
| | | n.isAjaxing = false; |
| | | data.fixPIdKeyValue(setting, n); |
| | | }, |
| | | _init = { |
| | | bind: [_bindEvent], |
| | | unbind: [_unbindEvent], |
| | | caches: [_initCache], |
| | | nodes: [_initNode], |
| | | proxys: [_eventProxy], |
| | | roots: [_initRoot], |
| | | beforeA: [], |
| | | afterA: [], |
| | | innerBeforeA: [], |
| | | innerAfterA: [], |
| | | zTreeTools: [] |
| | | }, |
| | | //method of operate data |
| | | data = { |
| | | addNodeCache: function (setting, node) { |
| | | data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = node; |
| | | }, |
| | | getNodeCacheId: function (tId) { |
| | | return tId.substring(tId.lastIndexOf("_") + 1); |
| | | }, |
| | | addAfterA: function (afterA) { |
| | | _init.afterA.push(afterA); |
| | | }, |
| | | addBeforeA: function (beforeA) { |
| | | _init.beforeA.push(beforeA); |
| | | }, |
| | | addInnerAfterA: function (innerAfterA) { |
| | | _init.innerAfterA.push(innerAfterA); |
| | | }, |
| | | addInnerBeforeA: function (innerBeforeA) { |
| | | _init.innerBeforeA.push(innerBeforeA); |
| | | }, |
| | | addInitBind: function (bindEvent) { |
| | | _init.bind.push(bindEvent); |
| | | }, |
| | | addInitUnBind: function (unbindEvent) { |
| | | _init.unbind.push(unbindEvent); |
| | | }, |
| | | addInitCache: function (initCache) { |
| | | _init.caches.push(initCache); |
| | | }, |
| | | addInitNode: function (initNode) { |
| | | _init.nodes.push(initNode); |
| | | }, |
| | | addInitProxy: function (initProxy, isFirst) { |
| | | if (!!isFirst) { |
| | | _init.proxys.splice(0, 0, initProxy); |
| | | } else { |
| | | _init.proxys.push(initProxy); |
| | | } |
| | | }, |
| | | addInitRoot: function (initRoot) { |
| | | _init.roots.push(initRoot); |
| | | }, |
| | | addNodesData: function (setting, parentNode, index, nodes) { |
| | | var children = data.nodeChildren(setting, parentNode), params; |
| | | if (!children) { |
| | | children = data.nodeChildren(setting, parentNode, []); |
| | | index = -1; |
| | | } else if (index >= children.length) { |
| | | index = -1; |
| | | } |
| | | |
| | | if (children.length > 0 && index === 0) { |
| | | children[0].isFirstNode = false; |
| | | view.setNodeLineIcos(setting, children[0]); |
| | | } else if (children.length > 0 && index < 0) { |
| | | children[children.length - 1].isLastNode = false; |
| | | view.setNodeLineIcos(setting, children[children.length - 1]); |
| | | } |
| | | data.nodeIsParent(setting, parentNode, true); |
| | | |
| | | if (index < 0) { |
| | | data.nodeChildren(setting, parentNode, children.concat(nodes)); |
| | | } else { |
| | | params = [index, 0].concat(nodes); |
| | | children.splice.apply(children, params); |
| | | } |
| | | }, |
| | | addSelectedNode: function (setting, node) { |
| | | var root = data.getRoot(setting); |
| | | if (!data.isSelectedNode(setting, node)) { |
| | | root.curSelectedList.push(node); |
| | | } |
| | | }, |
| | | addCreatedNode: function (setting, node) { |
| | | if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) { |
| | | var root = data.getRoot(setting); |
| | | root.createdNodes.push(node); |
| | | } |
| | | }, |
| | | addZTreeTools: function (zTreeTools) { |
| | | _init.zTreeTools.push(zTreeTools); |
| | | }, |
| | | exSetting: function (s) { |
| | | $.extend(true, _setting, s); |
| | | }, |
| | | fixPIdKeyValue: function (setting, node) { |
| | | if (setting.data.simpleData.enable) { |
| | | node[setting.data.simpleData.pIdKey] = node.parentTId ? node.getParentNode()[setting.data.simpleData.idKey] : setting.data.simpleData.rootPId; |
| | | } |
| | | }, |
| | | getAfterA: function (setting, node, array) { |
| | | for (var i = 0, j = _init.afterA.length; i < j; i++) { |
| | | _init.afterA[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | getBeforeA: function (setting, node, array) { |
| | | for (var i = 0, j = _init.beforeA.length; i < j; i++) { |
| | | _init.beforeA[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | getInnerAfterA: function (setting, node, array) { |
| | | for (var i = 0, j = _init.innerAfterA.length; i < j; i++) { |
| | | _init.innerAfterA[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | getInnerBeforeA: function (setting, node, array) { |
| | | for (var i = 0, j = _init.innerBeforeA.length; i < j; i++) { |
| | | _init.innerBeforeA[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | getCache: function (setting) { |
| | | return caches[setting.treeId]; |
| | | }, |
| | | getNodeIndex: function (setting, node) { |
| | | if (!node) return null; |
| | | var p = node.parentTId ? node.getParentNode() : data.getRoot(setting), |
| | | children = data.nodeChildren(setting, p); |
| | | for (var i = 0, l = children.length - 1; i <= l; i++) { |
| | | if (children[i] === node) { |
| | | return i; |
| | | } |
| | | } |
| | | return -1; |
| | | }, |
| | | getNextNode: function (setting, node) { |
| | | if (!node) return null; |
| | | var p = node.parentTId ? node.getParentNode() : data.getRoot(setting), |
| | | children = data.nodeChildren(setting, p); |
| | | for (var i = 0, l = children.length - 1; i <= l; i++) { |
| | | if (children[i] === node) { |
| | | return (i == l ? null : children[i + 1]); |
| | | } |
| | | } |
| | | return null; |
| | | }, |
| | | getNodeByParam: function (setting, nodes, key, value) { |
| | | if (!nodes || !key) return null; |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | if (node[key] == value) { |
| | | return nodes[i]; |
| | | } |
| | | var children = data.nodeChildren(setting, node); |
| | | var tmp = data.getNodeByParam(setting, children, key, value); |
| | | if (tmp) return tmp; |
| | | } |
| | | return null; |
| | | }, |
| | | getNodeCache: function (setting, tId) { |
| | | if (!tId) return null; |
| | | var n = caches[setting.treeId].nodes[data.getNodeCacheId(tId)]; |
| | | return n ? n : null; |
| | | }, |
| | | getNodePath: function (setting, node) { |
| | | if (!node) return null; |
| | | |
| | | var path; |
| | | if (node.parentTId) { |
| | | path = node.getParentNode().getPath(); |
| | | } else { |
| | | path = []; |
| | | } |
| | | |
| | | if (path) { |
| | | path.push(node); |
| | | } |
| | | |
| | | return path; |
| | | }, |
| | | getNodes: function (setting) { |
| | | return data.nodeChildren(setting, data.getRoot(setting)); |
| | | }, |
| | | getNodesByParam: function (setting, nodes, key, value) { |
| | | if (!nodes || !key) return []; |
| | | var result = []; |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | if (node[key] == value) { |
| | | result.push(node); |
| | | } |
| | | var children = data.nodeChildren(setting, node); |
| | | result = result.concat(data.getNodesByParam(setting, children, key, value)); |
| | | } |
| | | return result; |
| | | }, |
| | | getNodesByParamFuzzy: function (setting, nodes, key, value) { |
| | | if (!nodes || !key) return []; |
| | | var result = []; |
| | | value = value.toLowerCase(); |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | if (typeof node[key] == "string" && nodes[i][key].toLowerCase().indexOf(value) > -1) { |
| | | result.push(node); |
| | | } |
| | | var children = data.nodeChildren(setting, node); |
| | | result = result.concat(data.getNodesByParamFuzzy(setting, children, key, value)); |
| | | } |
| | | return result; |
| | | }, |
| | | getNodesByFilter: function (setting, nodes, filter, isSingle, invokeParam) { |
| | | if (!nodes) return (isSingle ? null : []); |
| | | var result = isSingle ? null : []; |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | if (tools.apply(filter, [node, invokeParam], false)) { |
| | | if (isSingle) { |
| | | return node; |
| | | } |
| | | result.push(node); |
| | | } |
| | | var children = data.nodeChildren(setting, node); |
| | | var tmpResult = data.getNodesByFilter(setting, children, filter, isSingle, invokeParam); |
| | | if (isSingle && !!tmpResult) { |
| | | return tmpResult; |
| | | } |
| | | result = isSingle ? tmpResult : result.concat(tmpResult); |
| | | } |
| | | return result; |
| | | }, |
| | | getPreNode: function (setting, node) { |
| | | if (!node) return null; |
| | | var p = node.parentTId ? node.getParentNode() : data.getRoot(setting), |
| | | children = data.nodeChildren(setting, p); |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | if (children[i] === node) { |
| | | return (i == 0 ? null : children[i - 1]); |
| | | } |
| | | } |
| | | return null; |
| | | }, |
| | | getRoot: function (setting) { |
| | | return setting ? roots[setting.treeId] : null; |
| | | }, |
| | | getRoots: function () { |
| | | return roots; |
| | | }, |
| | | getSetting: function (treeId) { |
| | | return settings[treeId]; |
| | | }, |
| | | getSettings: function () { |
| | | return settings; |
| | | }, |
| | | getZTreeTools: function (treeId) { |
| | | var r = this.getRoot(this.getSetting(treeId)); |
| | | return r ? r.treeTools : null; |
| | | }, |
| | | initCache: function (setting) { |
| | | for (var i = 0, j = _init.caches.length; i < j; i++) { |
| | | _init.caches[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | initNode: function (setting, level, node, parentNode, preNode, nextNode) { |
| | | for (var i = 0, j = _init.nodes.length; i < j; i++) { |
| | | _init.nodes[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | initRoot: function (setting) { |
| | | for (var i = 0, j = _init.roots.length; i < j; i++) { |
| | | _init.roots[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | isSelectedNode: function (setting, node) { |
| | | var root = data.getRoot(setting); |
| | | for (var i = 0, j = root.curSelectedList.length; i < j; i++) { |
| | | if (node === root.curSelectedList[i]) return true; |
| | | } |
| | | return false; |
| | | }, |
| | | nodeChildren: function (setting, node, newChildren) { |
| | | if (!node) { |
| | | return null; |
| | | } |
| | | var key = setting.data.key.children; |
| | | if (typeof newChildren !== 'undefined') { |
| | | node[key] = newChildren; |
| | | } |
| | | return node[key]; |
| | | }, |
| | | nodeIsParent: function (setting, node, newIsParent) { |
| | | if (!node) { |
| | | return false; |
| | | } |
| | | var key = setting.data.key.isParent; |
| | | if (typeof newIsParent !== 'undefined') { |
| | | if (typeof newIsParent === "string") { |
| | | newIsParent = tools.eqs(newIsParent, "true"); |
| | | } |
| | | newIsParent = !!newIsParent; |
| | | node[key] = newIsParent; |
| | | } else if (typeof node[key] == "string"){ |
| | | node[key] = tools.eqs(node[key], "true"); |
| | | } else { |
| | | node[key] = !!node[key]; |
| | | } |
| | | return node[key]; |
| | | }, |
| | | nodeName: function (setting, node, newName) { |
| | | var key = setting.data.key.name; |
| | | if (typeof newName !== 'undefined') { |
| | | node[key] = newName; |
| | | } |
| | | return "" + node[key]; |
| | | }, |
| | | nodeTitle: function (setting, node) { |
| | | var t = setting.data.key.title === "" ? setting.data.key.name : setting.data.key.title; |
| | | return "" + node[t]; |
| | | }, |
| | | removeNodeCache: function (setting, node) { |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children) { |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | data.removeNodeCache(setting, children[i]); |
| | | } |
| | | } |
| | | data.getCache(setting).nodes[data.getNodeCacheId(node.tId)] = null; |
| | | }, |
| | | removeSelectedNode: function (setting, node) { |
| | | var root = data.getRoot(setting); |
| | | for (var i = 0, j = root.curSelectedList.length; i < j; i++) { |
| | | if (node === root.curSelectedList[i] || !data.getNodeCache(setting, root.curSelectedList[i].tId)) { |
| | | root.curSelectedList.splice(i, 1); |
| | | setting.treeObj.trigger(consts.event.UNSELECTED, [setting.treeId, node]); |
| | | i--; |
| | | j--; |
| | | } |
| | | } |
| | | }, |
| | | setCache: function (setting, cache) { |
| | | caches[setting.treeId] = cache; |
| | | }, |
| | | setRoot: function (setting, root) { |
| | | roots[setting.treeId] = root; |
| | | }, |
| | | setZTreeTools: function (setting, zTreeTools) { |
| | | for (var i = 0, j = _init.zTreeTools.length; i < j; i++) { |
| | | _init.zTreeTools[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | transformToArrayFormat: function (setting, nodes) { |
| | | if (!nodes) return []; |
| | | var r = []; |
| | | if (tools.isArray(nodes)) { |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | _do(node); |
| | | } |
| | | } else { |
| | | _do(nodes); |
| | | } |
| | | return r; |
| | | |
| | | function _do(_node) { |
| | | r.push(_node); |
| | | var children = data.nodeChildren(setting, _node); |
| | | if (children) { |
| | | r = r.concat(data.transformToArrayFormat(setting, children)); |
| | | } |
| | | } |
| | | }, |
| | | transformTozTreeFormat: function (setting, sNodes) { |
| | | var i, l, |
| | | key = setting.data.simpleData.idKey, |
| | | parentKey = setting.data.simpleData.pIdKey; |
| | | if (!key || key == "" || !sNodes) return []; |
| | | |
| | | if (tools.isArray(sNodes)) { |
| | | var r = []; |
| | | var tmpMap = {}; |
| | | for (i = 0, l = sNodes.length; i < l; i++) { |
| | | tmpMap[sNodes[i][key]] = sNodes[i]; |
| | | } |
| | | for (i = 0, l = sNodes.length; i < l; i++) { |
| | | var p = tmpMap[sNodes[i][parentKey]]; |
| | | if (p && sNodes[i][key] != sNodes[i][parentKey]) { |
| | | var children = data.nodeChildren(setting, p); |
| | | if (!children) { |
| | | children = data.nodeChildren(setting, p, []); |
| | | } |
| | | children.push(sNodes[i]); |
| | | } else { |
| | | r.push(sNodes[i]); |
| | | } |
| | | } |
| | | return r; |
| | | } else { |
| | | return [sNodes]; |
| | | } |
| | | } |
| | | }, |
| | | //method of event proxy |
| | | event = { |
| | | bindEvent: function (setting) { |
| | | for (var i = 0, j = _init.bind.length; i < j; i++) { |
| | | _init.bind[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | unbindEvent: function (setting) { |
| | | for (var i = 0, j = _init.unbind.length; i < j; i++) { |
| | | _init.unbind[i].apply(this, arguments); |
| | | } |
| | | }, |
| | | bindTree: function (setting) { |
| | | var eventParam = { |
| | | treeId: setting.treeId |
| | | }, |
| | | o = setting.treeObj; |
| | | if (!setting.view.txtSelectedEnable) { |
| | | // for can't select text |
| | | o.bind('selectstart', handler.onSelectStart).css({ |
| | | "-moz-user-select": "-moz-none" |
| | | }); |
| | | } |
| | | o.bind('click', eventParam, event.proxy); |
| | | o.bind('dblclick', eventParam, event.proxy); |
| | | o.bind('mouseover', eventParam, event.proxy); |
| | | o.bind('mouseout', eventParam, event.proxy); |
| | | o.bind('mousedown', eventParam, event.proxy); |
| | | o.bind('mouseup', eventParam, event.proxy); |
| | | o.bind('contextmenu', eventParam, event.proxy); |
| | | }, |
| | | unbindTree: function (setting) { |
| | | var o = setting.treeObj; |
| | | o.unbind('selectstart', handler.onSelectStart) |
| | | .unbind('click', event.proxy) |
| | | .unbind('dblclick', event.proxy) |
| | | .unbind('mouseover', event.proxy) |
| | | .unbind('mouseout', event.proxy) |
| | | .unbind('mousedown', event.proxy) |
| | | .unbind('mouseup', event.proxy) |
| | | .unbind('contextmenu', event.proxy); |
| | | }, |
| | | doProxy: function (e) { |
| | | var results = []; |
| | | for (var i = 0, j = _init.proxys.length; i < j; i++) { |
| | | var proxyResult = _init.proxys[i].apply(this, arguments); |
| | | results.push(proxyResult); |
| | | if (proxyResult.stop) { |
| | | break; |
| | | } |
| | | } |
| | | return results; |
| | | }, |
| | | proxy: function (e) { |
| | | var setting = data.getSetting(e.data.treeId); |
| | | if (!tools.uCanDo(setting, e)) return true; |
| | | var results = event.doProxy(e), |
| | | r = true, x = false; |
| | | for (var i = 0, l = results.length; i < l; i++) { |
| | | var proxyResult = results[i]; |
| | | if (proxyResult.nodeEventCallback) { |
| | | x = true; |
| | | r = proxyResult.nodeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r; |
| | | } |
| | | if (proxyResult.treeEventCallback) { |
| | | x = true; |
| | | r = proxyResult.treeEventCallback.apply(proxyResult, [e, proxyResult.node]) && r; |
| | | } |
| | | } |
| | | return r; |
| | | } |
| | | }, |
| | | //method of event handler |
| | | handler = { |
| | | onSwitchNode: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (node.open) { |
| | | if (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false) return true; |
| | | data.getRoot(setting).expandTriggerFlag = true; |
| | | view.switchNode(setting, node); |
| | | } else { |
| | | if (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false) return true; |
| | | data.getRoot(setting).expandTriggerFlag = true; |
| | | view.switchNode(setting, node); |
| | | } |
| | | return true; |
| | | }, |
| | | onClickNode: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId), |
| | | clickFlag = ((setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey)) && data.isSelectedNode(setting, node)) ? 0 : (setting.view.autoCancelSelected && (event.ctrlKey || event.metaKey) && setting.view.selectedMulti) ? 2 : 1; |
| | | if (tools.apply(setting.callback.beforeClick, [setting.treeId, node, clickFlag], true) == false) return true; |
| | | if (clickFlag === 0) { |
| | | view.cancelPreSelectedNode(setting, node); |
| | | } else { |
| | | view.selectNode(setting, node, clickFlag === 2); |
| | | } |
| | | setting.treeObj.trigger(consts.event.CLICK, [event, setting.treeId, node, clickFlag]); |
| | | return true; |
| | | }, |
| | | onZTreeMousedown: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (tools.apply(setting.callback.beforeMouseDown, [setting.treeId, node], true)) { |
| | | tools.apply(setting.callback.onMouseDown, [event, setting.treeId, node]); |
| | | } |
| | | return true; |
| | | }, |
| | | onZTreeMouseup: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (tools.apply(setting.callback.beforeMouseUp, [setting.treeId, node], true)) { |
| | | tools.apply(setting.callback.onMouseUp, [event, setting.treeId, node]); |
| | | } |
| | | return true; |
| | | }, |
| | | onZTreeDblclick: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (tools.apply(setting.callback.beforeDblClick, [setting.treeId, node], true)) { |
| | | tools.apply(setting.callback.onDblClick, [event, setting.treeId, node]); |
| | | } |
| | | return true; |
| | | }, |
| | | onZTreeContextmenu: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (tools.apply(setting.callback.beforeRightClick, [setting.treeId, node], true)) { |
| | | tools.apply(setting.callback.onRightClick, [event, setting.treeId, node]); |
| | | } |
| | | return (typeof setting.callback.onRightClick) != "function"; |
| | | }, |
| | | onSelectStart: function (e) { |
| | | var n = e.originalEvent.srcElement.nodeName.toLowerCase(); |
| | | return (n === "input" || n === "textarea"); |
| | | } |
| | | }, |
| | | //method of tools for zTree |
| | | tools = { |
| | | apply: function (fun, param, defaultValue) { |
| | | if ((typeof fun) == "function") { |
| | | return fun.apply(zt, param ? param : []); |
| | | } |
| | | return defaultValue; |
| | | }, |
| | | canAsync: function (setting, node) { |
| | | var children = data.nodeChildren(setting, node); |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | return (setting.async.enable && node && isParent && !(node.zAsync || (children && children.length > 0))); |
| | | }, |
| | | clone: function (obj) { |
| | | if (obj === null) return null; |
| | | var o = tools.isArray(obj) ? [] : {}; |
| | | for (var i in obj) { |
| | | o[i] = (obj[i] instanceof Date) ? new Date(obj[i].getTime()) : (typeof obj[i] === "object" ? tools.clone(obj[i]) : obj[i]); |
| | | } |
| | | return o; |
| | | }, |
| | | eqs: function (str1, str2) { |
| | | return str1.toLowerCase() === str2.toLowerCase(); |
| | | }, |
| | | isArray: function (arr) { |
| | | return Object.prototype.toString.apply(arr) === "[object Array]"; |
| | | }, |
| | | isElement: function (o) { |
| | | return ( |
| | | typeof HTMLElement === "object" ? o instanceof HTMLElement : //DOM2 |
| | | o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string" |
| | | ); |
| | | }, |
| | | $: function (node, exp, setting) { |
| | | if (!!exp && typeof exp != "string") { |
| | | setting = exp; |
| | | exp = ""; |
| | | } |
| | | if (typeof node == "string") { |
| | | return $(node, setting ? setting.treeObj.get(0).ownerDocument : null); |
| | | } else { |
| | | return $("#" + node.tId + exp, setting ? setting.treeObj : null); |
| | | } |
| | | }, |
| | | getMDom: function (setting, curDom, targetExpr) { |
| | | if (!curDom) return null; |
| | | while (curDom && curDom.id !== setting.treeId) { |
| | | for (var i = 0, l = targetExpr.length; curDom.tagName && i < l; i++) { |
| | | if (tools.eqs(curDom.tagName, targetExpr[i].tagName) && curDom.getAttribute(targetExpr[i].attrName) !== null) { |
| | | return curDom; |
| | | } |
| | | } |
| | | curDom = curDom.parentNode; |
| | | } |
| | | return null; |
| | | }, |
| | | getNodeMainDom: function (target) { |
| | | return ($(target).parent("li").get(0) || $(target).parentsUntil("li").parent().get(0)); |
| | | }, |
| | | isChildOrSelf: function (dom, parentId) { |
| | | return ($(dom).closest("#" + parentId).length > 0); |
| | | }, |
| | | uCanDo: function (setting, e) { |
| | | return true; |
| | | } |
| | | }, |
| | | //method of operate ztree dom |
| | | view = { |
| | | addNodes: function (setting, parentNode, index, newNodes, isSilent) { |
| | | var isParent = data.nodeIsParent(setting, parentNode); |
| | | if (setting.data.keep.leaf && parentNode && !isParent) { |
| | | return; |
| | | } |
| | | if (!tools.isArray(newNodes)) { |
| | | newNodes = [newNodes]; |
| | | } |
| | | if (setting.data.simpleData.enable) { |
| | | newNodes = data.transformTozTreeFormat(setting, newNodes); |
| | | } |
| | | if (parentNode) { |
| | | var target_switchObj = $$(parentNode, consts.id.SWITCH, setting), |
| | | target_icoObj = $$(parentNode, consts.id.ICON, setting), |
| | | target_ulObj = $$(parentNode, consts.id.UL, setting); |
| | | |
| | | if (!parentNode.open) { |
| | | view.replaceSwitchClass(parentNode, target_switchObj, consts.folder.CLOSE); |
| | | view.replaceIcoClass(parentNode, target_icoObj, consts.folder.CLOSE); |
| | | parentNode.open = false; |
| | | target_ulObj.css({ |
| | | "display": "none" |
| | | }); |
| | | } |
| | | |
| | | data.addNodesData(setting, parentNode, index, newNodes); |
| | | view.createNodes(setting, parentNode.level + 1, newNodes, parentNode, index); |
| | | if (!isSilent) { |
| | | view.expandCollapseParentNode(setting, parentNode, true); |
| | | } |
| | | } else { |
| | | data.addNodesData(setting, data.getRoot(setting), index, newNodes); |
| | | view.createNodes(setting, 0, newNodes, null, index); |
| | | } |
| | | }, |
| | | appendNodes: function (setting, level, nodes, parentNode, index, initFlag, openFlag) { |
| | | if (!nodes) return []; |
| | | var html = []; |
| | | |
| | | var tmpPNode = (parentNode) ? parentNode : data.getRoot(setting), |
| | | tmpPChild = data.nodeChildren(setting, tmpPNode), |
| | | isFirstNode, isLastNode; |
| | | |
| | | if (!tmpPChild || index >= tmpPChild.length - nodes.length) { |
| | | index = -1; |
| | | } |
| | | |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | if (initFlag) { |
| | | isFirstNode = ((index === 0 || tmpPChild.length == nodes.length) && (i == 0)); |
| | | isLastNode = (index < 0 && i == (nodes.length - 1)); |
| | | data.initNode(setting, level, node, parentNode, isFirstNode, isLastNode, openFlag); |
| | | data.addNodeCache(setting, node); |
| | | } |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | |
| | | var childHtml = []; |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children && children.length > 0) { |
| | | //make child html first, because checkType |
| | | childHtml = view.appendNodes(setting, level + 1, children, node, -1, initFlag, openFlag && node.open); |
| | | } |
| | | if (openFlag) { |
| | | view.makeDOMNodeMainBefore(html, setting, node); |
| | | view.makeDOMNodeLine(html, setting, node); |
| | | data.getBeforeA(setting, node, html); |
| | | view.makeDOMNodeNameBefore(html, setting, node); |
| | | data.getInnerBeforeA(setting, node, html); |
| | | view.makeDOMNodeIcon(html, setting, node); |
| | | data.getInnerAfterA(setting, node, html); |
| | | view.makeDOMNodeNameAfter(html, setting, node); |
| | | data.getAfterA(setting, node, html); |
| | | if (isParent && node.open) { |
| | | view.makeUlHtml(setting, node, html, childHtml.join('')); |
| | | } |
| | | view.makeDOMNodeMainAfter(html, setting, node); |
| | | data.addCreatedNode(setting, node); |
| | | } |
| | | } |
| | | return html; |
| | | }, |
| | | appendParentULDom: function (setting, node) { |
| | | var html = [], |
| | | nObj = $$(node, setting); |
| | | if (!nObj.get(0) && !!node.parentTId) { |
| | | view.appendParentULDom(setting, node.getParentNode()); |
| | | nObj = $$(node, setting); |
| | | } |
| | | var ulObj = $$(node, consts.id.UL, setting); |
| | | if (ulObj.get(0)) { |
| | | ulObj.remove(); |
| | | } |
| | | var children = data.nodeChildren(setting, node), |
| | | childHtml = view.appendNodes(setting, node.level + 1, children, node, -1, false, true); |
| | | view.makeUlHtml(setting, node, html, childHtml.join('')); |
| | | nObj.append(html.join('')); |
| | | }, |
| | | asyncNode: function (setting, node, isSilent, callback) { |
| | | var i, l; |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | if (node && !isParent) { |
| | | tools.apply(callback); |
| | | return false; |
| | | } else if (node && node.isAjaxing) { |
| | | return false; |
| | | } else if (tools.apply(setting.callback.beforeAsync, [setting.treeId, node], true) == false) { |
| | | tools.apply(callback); |
| | | return false; |
| | | } |
| | | if (node) { |
| | | node.isAjaxing = true; |
| | | var icoObj = $$(node, consts.id.ICON, setting); |
| | | icoObj.attr({"style": "", "class": consts.className.BUTTON + " " + consts.className.ICO_LOADING}); |
| | | } |
| | | |
| | | var tmpParam = {}; |
| | | var autoParam = tools.apply(setting.async.autoParam, [setting.treeId, node], setting.async.autoParam); |
| | | for (i = 0, l = autoParam.length; node && i < l; i++) { |
| | | var pKey = autoParam[i].split("="), spKey = pKey; |
| | | if (pKey.length > 1) { |
| | | spKey = pKey[1]; |
| | | pKey = pKey[0]; |
| | | } |
| | | tmpParam[spKey] = node[pKey]; |
| | | } |
| | | var otherParam = tools.apply(setting.async.otherParam, [setting.treeId, node], setting.async.otherParam); |
| | | if (tools.isArray(otherParam)) { |
| | | for (i = 0, l = otherParam.length; i < l; i += 2) { |
| | | tmpParam[otherParam[i]] = otherParam[i + 1]; |
| | | } |
| | | } else { |
| | | for (var p in otherParam) { |
| | | tmpParam[p] = otherParam[p]; |
| | | } |
| | | } |
| | | |
| | | var _tmpV = data.getRoot(setting)._ver; |
| | | $.ajax({ |
| | | contentType: setting.async.contentType, |
| | | cache: false, |
| | | type: setting.async.type, |
| | | url: tools.apply(setting.async.url, [setting.treeId, node], setting.async.url), |
| | | data: setting.async.contentType.indexOf('application/json') > -1 ? JSON.stringify(tmpParam) : tmpParam, |
| | | dataType: setting.async.dataType, |
| | | headers: setting.async.headers, |
| | | xhrFields: setting.async.xhrFields, |
| | | success: function (msg) { |
| | | if (_tmpV != data.getRoot(setting)._ver) { |
| | | return; |
| | | } |
| | | var newNodes = []; |
| | | try { |
| | | if (!msg || msg.length == 0) { |
| | | newNodes = []; |
| | | } else if (typeof msg == "string") { |
| | | newNodes = eval("(" + msg + ")"); |
| | | } else { |
| | | newNodes = msg; |
| | | } |
| | | } catch (err) { |
| | | newNodes = msg; |
| | | } |
| | | |
| | | if (node) { |
| | | node.isAjaxing = null; |
| | | node.zAsync = true; |
| | | } |
| | | view.setNodeLineIcos(setting, node); |
| | | if (newNodes && newNodes !== "") { |
| | | newNodes = tools.apply(setting.async.dataFilter, [setting.treeId, node, newNodes], newNodes); |
| | | view.addNodes(setting, node, -1, !!newNodes ? tools.clone(newNodes) : [], !!isSilent); |
| | | } else { |
| | | view.addNodes(setting, node, -1, [], !!isSilent); |
| | | } |
| | | setting.treeObj.trigger(consts.event.ASYNC_SUCCESS, [setting.treeId, node, msg]); |
| | | tools.apply(callback); |
| | | }, |
| | | error: function (XMLHttpRequest, textStatus, errorThrown) { |
| | | if (_tmpV != data.getRoot(setting)._ver) { |
| | | return; |
| | | } |
| | | if (node) node.isAjaxing = null; |
| | | view.setNodeLineIcos(setting, node); |
| | | setting.treeObj.trigger(consts.event.ASYNC_ERROR, [setting.treeId, node, XMLHttpRequest, textStatus, errorThrown]); |
| | | } |
| | | }); |
| | | return true; |
| | | }, |
| | | cancelPreSelectedNode: function (setting, node, excludeNode) { |
| | | var list = data.getRoot(setting).curSelectedList, |
| | | i, n; |
| | | for (i = list.length - 1; i >= 0; i--) { |
| | | n = list[i]; |
| | | if (node === n || (!node && (!excludeNode || excludeNode !== n))) { |
| | | $$(n, consts.id.A, setting).removeClass(consts.node.CURSELECTED); |
| | | if (node) { |
| | | data.removeSelectedNode(setting, node); |
| | | break; |
| | | } else { |
| | | list.splice(i, 1); |
| | | setting.treeObj.trigger(consts.event.UNSELECTED, [setting.treeId, n]); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | createNodeCallback: function (setting) { |
| | | if (!!setting.callback.onNodeCreated || !!setting.view.addDiyDom) { |
| | | var root = data.getRoot(setting); |
| | | while (root.createdNodes.length > 0) { |
| | | var node = root.createdNodes.shift(); |
| | | tools.apply(setting.view.addDiyDom, [setting.treeId, node]); |
| | | if (!!setting.callback.onNodeCreated) { |
| | | setting.treeObj.trigger(consts.event.NODECREATED, [setting.treeId, node]); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | createNodes: function (setting, level, nodes, parentNode, index) { |
| | | if (!nodes || nodes.length == 0) return; |
| | | var root = data.getRoot(setting), |
| | | openFlag = !parentNode || parentNode.open || !!$$(data.nodeChildren(setting, parentNode)[0], setting).get(0); |
| | | root.createdNodes = []; |
| | | var zTreeHtml = view.appendNodes(setting, level, nodes, parentNode, index, true, openFlag), |
| | | parentObj, nextObj; |
| | | |
| | | if (!parentNode) { |
| | | parentObj = setting.treeObj; |
| | | //setting.treeObj.append(zTreeHtml.join('')); |
| | | } else { |
| | | var ulObj = $$(parentNode, consts.id.UL, setting); |
| | | if (ulObj.get(0)) { |
| | | parentObj = ulObj; |
| | | //ulObj.append(zTreeHtml.join('')); |
| | | } |
| | | } |
| | | if (parentObj) { |
| | | if (index >= 0) { |
| | | nextObj = parentObj.children()[index]; |
| | | } |
| | | if (index >= 0 && nextObj) { |
| | | $(nextObj).before(zTreeHtml.join('')); |
| | | } else { |
| | | parentObj.append(zTreeHtml.join('')); |
| | | } |
| | | } |
| | | |
| | | view.createNodeCallback(setting); |
| | | }, |
| | | destroy: function (setting) { |
| | | if (!setting) return; |
| | | data.initCache(setting); |
| | | data.initRoot(setting); |
| | | event.unbindTree(setting); |
| | | event.unbindEvent(setting); |
| | | setting.treeObj.empty(); |
| | | delete settings[setting.treeId]; |
| | | }, |
| | | expandCollapseNode: function (setting, node, expandFlag, animateFlag, callback) { |
| | | var root = data.getRoot(setting); |
| | | var tmpCb, _callback; |
| | | if (!node) { |
| | | tools.apply(callback, []); |
| | | return; |
| | | } |
| | | var children = data.nodeChildren(setting, node); |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | if (root.expandTriggerFlag) { |
| | | _callback = callback; |
| | | tmpCb = function () { |
| | | if (_callback) _callback(); |
| | | if (node.open) { |
| | | setting.treeObj.trigger(consts.event.EXPAND, [setting.treeId, node]); |
| | | } else { |
| | | setting.treeObj.trigger(consts.event.COLLAPSE, [setting.treeId, node]); |
| | | } |
| | | }; |
| | | callback = tmpCb; |
| | | root.expandTriggerFlag = false; |
| | | } |
| | | if (!node.open && isParent && ((!$$(node, consts.id.UL, setting).get(0)) || (children && children.length > 0 && !$$(children[0], setting).get(0)))) { |
| | | view.appendParentULDom(setting, node); |
| | | view.createNodeCallback(setting); |
| | | } |
| | | if (node.open == expandFlag) { |
| | | tools.apply(callback, []); |
| | | return; |
| | | } |
| | | var ulObj = $$(node, consts.id.UL, setting), |
| | | switchObj = $$(node, consts.id.SWITCH, setting), |
| | | icoObj = $$(node, consts.id.ICON, setting); |
| | | |
| | | if (isParent) { |
| | | node.open = !node.open; |
| | | if (node.iconOpen && node.iconClose) { |
| | | icoObj.attr("style", view.makeNodeIcoStyle(setting, node)); |
| | | } |
| | | |
| | | if (node.open) { |
| | | view.replaceSwitchClass(node, switchObj, consts.folder.OPEN); |
| | | view.replaceIcoClass(node, icoObj, consts.folder.OPEN); |
| | | if (animateFlag == false || setting.view.expandSpeed == "") { |
| | | ulObj.show(); |
| | | tools.apply(callback, []); |
| | | } else { |
| | | if (children && children.length > 0) { |
| | | ulObj.slideDown(setting.view.expandSpeed, callback); |
| | | } else { |
| | | ulObj.show(); |
| | | tools.apply(callback, []); |
| | | } |
| | | } |
| | | } else { |
| | | view.replaceSwitchClass(node, switchObj, consts.folder.CLOSE); |
| | | view.replaceIcoClass(node, icoObj, consts.folder.CLOSE); |
| | | if (animateFlag == false || setting.view.expandSpeed == "" || !(children && children.length > 0)) { |
| | | ulObj.hide(); |
| | | tools.apply(callback, []); |
| | | } else { |
| | | ulObj.slideUp(setting.view.expandSpeed, callback); |
| | | } |
| | | } |
| | | } else { |
| | | tools.apply(callback, []); |
| | | } |
| | | }, |
| | | expandCollapseParentNode: function (setting, node, expandFlag, animateFlag, callback) { |
| | | if (!node) return; |
| | | if (!node.parentTId) { |
| | | view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback); |
| | | return; |
| | | } else { |
| | | view.expandCollapseNode(setting, node, expandFlag, animateFlag); |
| | | } |
| | | if (node.parentTId) { |
| | | view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, animateFlag, callback); |
| | | } |
| | | }, |
| | | expandCollapseSonNode: function (setting, node, expandFlag, animateFlag, callback) { |
| | | var root = data.getRoot(setting), |
| | | treeNodes = (node) ? data.nodeChildren(setting, node) : data.nodeChildren(setting, root), |
| | | selfAnimateSign = (node) ? false : animateFlag, |
| | | expandTriggerFlag = data.getRoot(setting).expandTriggerFlag; |
| | | data.getRoot(setting).expandTriggerFlag = false; |
| | | if (treeNodes) { |
| | | for (var i = 0, l = treeNodes.length; i < l; i++) { |
| | | if (treeNodes[i]) view.expandCollapseSonNode(setting, treeNodes[i], expandFlag, selfAnimateSign); |
| | | } |
| | | } |
| | | data.getRoot(setting).expandTriggerFlag = expandTriggerFlag; |
| | | view.expandCollapseNode(setting, node, expandFlag, animateFlag, callback); |
| | | }, |
| | | isSelectedNode: function (setting, node) { |
| | | if (!node) { |
| | | return false; |
| | | } |
| | | var list = data.getRoot(setting).curSelectedList, |
| | | i; |
| | | for (i = list.length - 1; i >= 0; i--) { |
| | | if (node === list[i]) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | }, |
| | | makeDOMNodeIcon: function (html, setting, node) { |
| | | var nameStr = data.nodeName(setting, node), |
| | | name = setting.view.nameIsHTML ? nameStr : nameStr.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); |
| | | html.push("<span id='", node.tId, consts.id.ICON, |
| | | "' title='' treeNode", consts.id.ICON, " class='", view.makeNodeIcoClass(setting, node), |
| | | "' style='", view.makeNodeIcoStyle(setting, node), "'></span><span id='", node.tId, consts.id.SPAN, |
| | | "' class='", consts.className.NAME, |
| | | "'>", name, "</span>"); |
| | | }, |
| | | makeDOMNodeLine: function (html, setting, node) { |
| | | html.push("<span id='", node.tId, consts.id.SWITCH, "' title='' class='", view.makeNodeLineClass(setting, node), "' treeNode", consts.id.SWITCH, "></span>"); |
| | | }, |
| | | makeDOMNodeMainAfter: function (html, setting, node) { |
| | | html.push("</li>"); |
| | | }, |
| | | makeDOMNodeMainBefore: function (html, setting, node) { |
| | | html.push("<li id='", node.tId, "' class='", consts.className.LEVEL, node.level, "' tabindex='0' hidefocus='true' treenode>"); |
| | | }, |
| | | makeDOMNodeNameAfter: function (html, setting, node) { |
| | | html.push("</a>"); |
| | | }, |
| | | makeDOMNodeNameBefore: function (html, setting, node) { |
| | | var title = data.nodeTitle(setting, node), |
| | | url = view.makeNodeUrl(setting, node), |
| | | fontcss = view.makeNodeFontCss(setting, node), |
| | | fontStyle = []; |
| | | for (var f in fontcss) { |
| | | fontStyle.push(f, ":", fontcss[f], ";"); |
| | | } |
| | | html.push("<a id='", node.tId, consts.id.A, "' class='", consts.className.LEVEL, node.level, "' treeNode", consts.id.A, " onclick=\"", (node.click || ''), |
| | | "\" ", ((url != null && url.length > 0) ? "href='" + url + "'" : ""), " target='", view.makeNodeTarget(node), "' style='", fontStyle.join(''), |
| | | "'"); |
| | | if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle) && title) { |
| | | html.push("title='", title.replace(/'/g, "'").replace(/</g, '<').replace(/>/g, '>'), "'"); |
| | | } |
| | | html.push(">"); |
| | | }, |
| | | makeNodeFontCss: function (setting, node) { |
| | | var fontCss = tools.apply(setting.view.fontCss, [setting.treeId, node], setting.view.fontCss); |
| | | return (fontCss && ((typeof fontCss) != "function")) ? fontCss : {}; |
| | | }, |
| | | makeNodeIcoClass: function (setting, node) { |
| | | var icoCss = ["ico"]; |
| | | if (!node.isAjaxing) { |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | icoCss[0] = (node.iconSkin ? node.iconSkin + "_" : "") + icoCss[0]; |
| | | if (isParent) { |
| | | icoCss.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE); |
| | | } else { |
| | | icoCss.push(consts.folder.DOCU); |
| | | } |
| | | } |
| | | return consts.className.BUTTON + " " + icoCss.join('_'); |
| | | }, |
| | | makeNodeIcoStyle: function (setting, node) { |
| | | var icoStyle = []; |
| | | if (!node.isAjaxing) { |
| | | var isParent = data.nodeIsParent(setting, node); |
| | | var icon = (isParent && node.iconOpen && node.iconClose) ? (node.open ? node.iconOpen : node.iconClose) : node[setting.data.key.icon]; |
| | | if (icon) icoStyle.push("background:url(", icon, ") 0 0 no-repeat;"); |
| | | if (setting.view.showIcon == false || !tools.apply(setting.view.showIcon, [setting.treeId, node], true)) { |
| | | icoStyle.push("width:0px;height:0px;"); |
| | | } |
| | | } |
| | | return icoStyle.join(''); |
| | | }, |
| | | makeNodeLineClass: function (setting, node) { |
| | | var lineClass = []; |
| | | if (setting.view.showLine) { |
| | | if (node.level == 0 && node.isFirstNode && node.isLastNode) { |
| | | lineClass.push(consts.line.ROOT); |
| | | } else if (node.level == 0 && node.isFirstNode) { |
| | | lineClass.push(consts.line.ROOTS); |
| | | } else if (node.isLastNode) { |
| | | lineClass.push(consts.line.BOTTOM); |
| | | } else { |
| | | lineClass.push(consts.line.CENTER); |
| | | } |
| | | } else { |
| | | lineClass.push(consts.line.NOLINE); |
| | | } |
| | | if (data.nodeIsParent(setting, node)) { |
| | | lineClass.push(node.open ? consts.folder.OPEN : consts.folder.CLOSE); |
| | | } else { |
| | | lineClass.push(consts.folder.DOCU); |
| | | } |
| | | return view.makeNodeLineClassEx(node) + lineClass.join('_'); |
| | | }, |
| | | makeNodeLineClassEx: function (node) { |
| | | return consts.className.BUTTON + " " + consts.className.LEVEL + node.level + " " + consts.className.SWITCH + " "; |
| | | }, |
| | | makeNodeTarget: function (node) { |
| | | return (node.target || "_blank"); |
| | | }, |
| | | makeNodeUrl: function (setting, node) { |
| | | var urlKey = setting.data.key.url; |
| | | return node[urlKey] ? node[urlKey] : null; |
| | | }, |
| | | makeUlHtml: function (setting, node, html, content) { |
| | | html.push("<ul id='", node.tId, consts.id.UL, "' class='", consts.className.LEVEL, node.level, " ", view.makeUlLineClass(setting, node), "' style='display:", (node.open ? "block" : "none"), "'>"); |
| | | html.push(content); |
| | | html.push("</ul>"); |
| | | }, |
| | | makeUlLineClass: function (setting, node) { |
| | | return ((setting.view.showLine && !node.isLastNode) ? consts.line.LINE : ""); |
| | | }, |
| | | removeChildNodes: function (setting, node) { |
| | | if (!node) return; |
| | | var nodes = data.nodeChildren(setting, node); |
| | | if (!nodes) return; |
| | | |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | data.removeNodeCache(setting, nodes[i]); |
| | | } |
| | | data.removeSelectedNode(setting); |
| | | delete node[setting.data.key.children]; |
| | | |
| | | if (!setting.data.keep.parent) { |
| | | data.nodeIsParent(setting, node, false); |
| | | node.open = false; |
| | | var tmp_switchObj = $$(node, consts.id.SWITCH, setting), |
| | | tmp_icoObj = $$(node, consts.id.ICON, setting); |
| | | view.replaceSwitchClass(node, tmp_switchObj, consts.folder.DOCU); |
| | | view.replaceIcoClass(node, tmp_icoObj, consts.folder.DOCU); |
| | | $$(node, consts.id.UL, setting).remove(); |
| | | } else { |
| | | $$(node, consts.id.UL, setting).empty(); |
| | | } |
| | | }, |
| | | scrollIntoView: function (setting, dom) { |
| | | if (!dom) { |
| | | return; |
| | | } |
| | | // support IE 7 |
| | | if (typeof Element === 'undefined') { |
| | | var contRect = setting.treeObj.get(0).getBoundingClientRect(), |
| | | findMeRect = dom.getBoundingClientRect(); |
| | | if (findMeRect.top < contRect.top || findMeRect.bottom > contRect.bottom |
| | | || findMeRect.right > contRect.right || findMeRect.left < contRect.left) { |
| | | dom.scrollIntoView(); |
| | | } |
| | | return; |
| | | } |
| | | // CC-BY jocki84@googlemail.com, https://gist.github.com/jocki84/6ffafd003387179a988e |
| | | if (!Element.prototype.scrollIntoViewIfNeeded) { |
| | | Element.prototype.scrollIntoViewIfNeeded = function (centerIfNeeded) { |
| | | "use strict"; |
| | | |
| | | function makeRange(start, length) { |
| | | return {"start": start, "length": length, "end": start + length}; |
| | | } |
| | | |
| | | function coverRange(inner, outer) { |
| | | if ( |
| | | false === centerIfNeeded || |
| | | (outer.start < inner.end && inner.start < outer.end) |
| | | ) { |
| | | return Math.max( |
| | | inner.end - outer.length, |
| | | Math.min(outer.start, inner.start) |
| | | ); |
| | | } |
| | | return (inner.start + inner.end - outer.length) / 2; |
| | | } |
| | | |
| | | function makePoint(x, y) { |
| | | return { |
| | | "x": x, |
| | | "y": y, |
| | | "translate": function translate(dX, dY) { |
| | | return makePoint(x + dX, y + dY); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | function absolute(elem, pt) { |
| | | while (elem) { |
| | | pt = pt.translate(elem.offsetLeft, elem.offsetTop); |
| | | elem = elem.offsetParent; |
| | | } |
| | | return pt; |
| | | } |
| | | |
| | | var target = absolute(this, makePoint(0, 0)), |
| | | extent = makePoint(this.offsetWidth, this.offsetHeight), |
| | | elem = this.parentNode, |
| | | origin; |
| | | |
| | | while (elem instanceof HTMLElement) { |
| | | // Apply desired scroll amount. |
| | | origin = absolute(elem, makePoint(elem.clientLeft, elem.clientTop)); |
| | | elem.scrollLeft = coverRange( |
| | | makeRange(target.x - origin.x, extent.x), |
| | | makeRange(elem.scrollLeft, elem.clientWidth) |
| | | ); |
| | | elem.scrollTop = coverRange( |
| | | makeRange(target.y - origin.y, extent.y), |
| | | makeRange(elem.scrollTop, elem.clientHeight) |
| | | ); |
| | | |
| | | // Determine actual scroll amount by reading back scroll properties. |
| | | target = target.translate(-elem.scrollLeft, -elem.scrollTop); |
| | | elem = elem.parentNode; |
| | | } |
| | | }; |
| | | } |
| | | dom.scrollIntoViewIfNeeded(); |
| | | }, |
| | | setFirstNode: function (setting, parentNode) { |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | if (children.length > 0) { |
| | | children[0].isFirstNode = true; |
| | | } |
| | | }, |
| | | setLastNode: function (setting, parentNode) { |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | if (children.length > 0) { |
| | | children[children.length - 1].isLastNode = true; |
| | | } |
| | | }, |
| | | removeNode: function (setting, node) { |
| | | var root = data.getRoot(setting), |
| | | parentNode = (node.parentTId) ? node.getParentNode() : root; |
| | | |
| | | node.isFirstNode = false; |
| | | node.isLastNode = false; |
| | | node.getPreNode = function () { |
| | | return null; |
| | | }; |
| | | node.getNextNode = function () { |
| | | return null; |
| | | }; |
| | | |
| | | if (!data.getNodeCache(setting, node.tId)) { |
| | | return; |
| | | } |
| | | |
| | | $$(node, setting).remove(); |
| | | data.removeNodeCache(setting, node); |
| | | data.removeSelectedNode(setting, node); |
| | | |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | if (children[i].tId == node.tId) { |
| | | children.splice(i, 1); |
| | | break; |
| | | } |
| | | } |
| | | view.setFirstNode(setting, parentNode); |
| | | view.setLastNode(setting, parentNode); |
| | | |
| | | var tmp_ulObj, tmp_switchObj, tmp_icoObj, |
| | | childLength = children.length; |
| | | |
| | | //repair nodes old parent |
| | | if (!setting.data.keep.parent && childLength == 0) { |
| | | //old parentNode has no child nodes |
| | | data.nodeIsParent(setting, parentNode, false); |
| | | parentNode.open = false; |
| | | delete parentNode[setting.data.key.children]; |
| | | tmp_ulObj = $$(parentNode, consts.id.UL, setting); |
| | | tmp_switchObj = $$(parentNode, consts.id.SWITCH, setting); |
| | | tmp_icoObj = $$(parentNode, consts.id.ICON, setting); |
| | | view.replaceSwitchClass(parentNode, tmp_switchObj, consts.folder.DOCU); |
| | | view.replaceIcoClass(parentNode, tmp_icoObj, consts.folder.DOCU); |
| | | tmp_ulObj.css("display", "none"); |
| | | |
| | | } else if (setting.view.showLine && childLength > 0) { |
| | | //old parentNode has child nodes |
| | | var newLast = children[childLength - 1]; |
| | | tmp_ulObj = $$(newLast, consts.id.UL, setting); |
| | | tmp_switchObj = $$(newLast, consts.id.SWITCH, setting); |
| | | tmp_icoObj = $$(newLast, consts.id.ICON, setting); |
| | | if (parentNode == root) { |
| | | if (children.length == 1) { |
| | | //node was root, and ztree has only one root after move node |
| | | view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.ROOT); |
| | | } else { |
| | | var tmp_first_switchObj = $$(children[0], consts.id.SWITCH, setting); |
| | | view.replaceSwitchClass(children[0], tmp_first_switchObj, consts.line.ROOTS); |
| | | view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM); |
| | | } |
| | | } else { |
| | | view.replaceSwitchClass(newLast, tmp_switchObj, consts.line.BOTTOM); |
| | | } |
| | | tmp_ulObj.removeClass(consts.line.LINE); |
| | | } |
| | | }, |
| | | replaceIcoClass: function (node, obj, newName) { |
| | | if (!obj || node.isAjaxing) return; |
| | | var tmpName = obj.attr("class"); |
| | | if (tmpName == undefined) return; |
| | | var tmpList = tmpName.split("_"); |
| | | switch (newName) { |
| | | case consts.folder.OPEN: |
| | | case consts.folder.CLOSE: |
| | | case consts.folder.DOCU: |
| | | tmpList[tmpList.length - 1] = newName; |
| | | break; |
| | | } |
| | | obj.attr("class", tmpList.join("_")); |
| | | }, |
| | | replaceSwitchClass: function (node, obj, newName) { |
| | | if (!obj) return; |
| | | var tmpName = obj.attr("class"); |
| | | if (tmpName == undefined) return; |
| | | var tmpList = tmpName.split("_"); |
| | | switch (newName) { |
| | | case consts.line.ROOT: |
| | | case consts.line.ROOTS: |
| | | case consts.line.CENTER: |
| | | case consts.line.BOTTOM: |
| | | case consts.line.NOLINE: |
| | | tmpList[0] = view.makeNodeLineClassEx(node) + newName; |
| | | break; |
| | | case consts.folder.OPEN: |
| | | case consts.folder.CLOSE: |
| | | case consts.folder.DOCU: |
| | | tmpList[1] = newName; |
| | | break; |
| | | } |
| | | obj.attr("class", tmpList.join("_")); |
| | | if (newName !== consts.folder.DOCU) { |
| | | obj.removeAttr("disabled"); |
| | | } else { |
| | | obj.attr("disabled", "disabled"); |
| | | } |
| | | }, |
| | | selectNode: function (setting, node, addFlag) { |
| | | if (!addFlag) { |
| | | view.cancelPreSelectedNode(setting, null, node); |
| | | } |
| | | $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED); |
| | | data.addSelectedNode(setting, node); |
| | | setting.treeObj.trigger(consts.event.SELECTED, [setting.treeId, node]); |
| | | }, |
| | | setNodeFontCss: function (setting, treeNode) { |
| | | var aObj = $$(treeNode, consts.id.A, setting), |
| | | fontCss = view.makeNodeFontCss(setting, treeNode); |
| | | if (fontCss) { |
| | | aObj.css(fontCss); |
| | | } |
| | | }, |
| | | setNodeLineIcos: function (setting, node) { |
| | | if (!node) return; |
| | | var switchObj = $$(node, consts.id.SWITCH, setting), |
| | | ulObj = $$(node, consts.id.UL, setting), |
| | | icoObj = $$(node, consts.id.ICON, setting), |
| | | ulLine = view.makeUlLineClass(setting, node); |
| | | if (ulLine.length == 0) { |
| | | ulObj.removeClass(consts.line.LINE); |
| | | } else { |
| | | ulObj.addClass(ulLine); |
| | | } |
| | | switchObj.attr("class", view.makeNodeLineClass(setting, node)); |
| | | if (data.nodeIsParent(setting, node)) { |
| | | switchObj.removeAttr("disabled"); |
| | | } else { |
| | | switchObj.attr("disabled", "disabled"); |
| | | } |
| | | icoObj.removeAttr("style"); |
| | | icoObj.attr("style", view.makeNodeIcoStyle(setting, node)); |
| | | icoObj.attr("class", view.makeNodeIcoClass(setting, node)); |
| | | }, |
| | | setNodeName: function (setting, node) { |
| | | var title = data.nodeTitle(setting, node), |
| | | nObj = $$(node, consts.id.SPAN, setting); |
| | | nObj.empty(); |
| | | if (setting.view.nameIsHTML) { |
| | | nObj.html(data.nodeName(setting, node)); |
| | | } else { |
| | | nObj.text(data.nodeName(setting, node)); |
| | | } |
| | | if (tools.apply(setting.view.showTitle, [setting.treeId, node], setting.view.showTitle)) { |
| | | var aObj = $$(node, consts.id.A, setting); |
| | | aObj.attr("title", !title ? "" : title); |
| | | } |
| | | }, |
| | | setNodeTarget: function (setting, node) { |
| | | var aObj = $$(node, consts.id.A, setting); |
| | | aObj.attr("target", view.makeNodeTarget(node)); |
| | | }, |
| | | setNodeUrl: function (setting, node) { |
| | | var aObj = $$(node, consts.id.A, setting), |
| | | url = view.makeNodeUrl(setting, node); |
| | | if (url == null || url.length == 0) { |
| | | aObj.removeAttr("href"); |
| | | } else { |
| | | aObj.attr("href", url); |
| | | } |
| | | }, |
| | | switchNode: function (setting, node) { |
| | | if (node.open || !tools.canAsync(setting, node)) { |
| | | view.expandCollapseNode(setting, node, !node.open); |
| | | } else if (setting.async.enable) { |
| | | if (!view.asyncNode(setting, node)) { |
| | | view.expandCollapseNode(setting, node, !node.open); |
| | | return; |
| | | } |
| | | } else if (node) { |
| | | view.expandCollapseNode(setting, node, !node.open); |
| | | } |
| | | } |
| | | }; |
| | | // zTree defind |
| | | $.fn.zTree = { |
| | | consts: _consts, |
| | | _z: { |
| | | tools: tools, |
| | | view: view, |
| | | event: event, |
| | | data: data |
| | | }, |
| | | getZTreeObj: function (treeId) { |
| | | var o = data.getZTreeTools(treeId); |
| | | return o ? o : null; |
| | | }, |
| | | destroy: function (treeId) { |
| | | if (!!treeId && treeId.length > 0) { |
| | | view.destroy(data.getSetting(treeId)); |
| | | } else { |
| | | for (var s in settings) { |
| | | view.destroy(settings[s]); |
| | | } |
| | | } |
| | | }, |
| | | init: function (obj, zSetting, zNodes) { |
| | | var setting = tools.clone(_setting); |
| | | $.extend(true, setting, zSetting); |
| | | setting.treeId = obj.attr("id"); |
| | | setting.treeObj = obj; |
| | | setting.treeObj.empty(); |
| | | settings[setting.treeId] = setting; |
| | | //For some older browser,(e.g., ie6) |
| | | if (typeof document.body.style.maxHeight === "undefined") { |
| | | setting.view.expandSpeed = ""; |
| | | } |
| | | data.initRoot(setting); |
| | | var root = data.getRoot(setting); |
| | | zNodes = zNodes ? tools.clone(tools.isArray(zNodes) ? zNodes : [zNodes]) : []; |
| | | if (setting.data.simpleData.enable) { |
| | | data.nodeChildren(setting, root, data.transformTozTreeFormat(setting, zNodes)); |
| | | } else { |
| | | data.nodeChildren(setting, root, zNodes); |
| | | } |
| | | |
| | | data.initCache(setting); |
| | | event.unbindTree(setting); |
| | | event.bindTree(setting); |
| | | event.unbindEvent(setting); |
| | | event.bindEvent(setting); |
| | | |
| | | var zTreeTools = { |
| | | setting: setting, |
| | | addNodes: function (parentNode, index, newNodes, isSilent) { |
| | | if (!parentNode) parentNode = null; |
| | | var isParent = data.nodeIsParent(setting, parentNode); |
| | | if (parentNode && !isParent && setting.data.keep.leaf) return null; |
| | | |
| | | var i = parseInt(index, 10); |
| | | if (isNaN(i)) { |
| | | isSilent = !!newNodes; |
| | | newNodes = index; |
| | | index = -1; |
| | | } else { |
| | | index = i; |
| | | } |
| | | if (!newNodes) return null; |
| | | |
| | | |
| | | var xNewNodes = tools.clone(tools.isArray(newNodes) ? newNodes : [newNodes]); |
| | | |
| | | function addCallback() { |
| | | view.addNodes(setting, parentNode, index, xNewNodes, (isSilent == true)); |
| | | } |
| | | |
| | | if (tools.canAsync(setting, parentNode)) { |
| | | view.asyncNode(setting, parentNode, isSilent, addCallback); |
| | | } else { |
| | | addCallback(); |
| | | } |
| | | return xNewNodes; |
| | | }, |
| | | cancelSelectedNode: function (node) { |
| | | view.cancelPreSelectedNode(setting, node); |
| | | }, |
| | | destroy: function () { |
| | | view.destroy(setting); |
| | | }, |
| | | expandAll: function (expandFlag) { |
| | | expandFlag = !!expandFlag; |
| | | view.expandCollapseSonNode(setting, null, expandFlag, true); |
| | | return expandFlag; |
| | | }, |
| | | expandNode: function (node, expandFlag, sonSign, focus, callbackFlag) { |
| | | if (!node || !data.nodeIsParent(setting, node)) return null; |
| | | if (expandFlag !== true && expandFlag !== false) { |
| | | expandFlag = !node.open; |
| | | } |
| | | callbackFlag = !!callbackFlag; |
| | | |
| | | if (callbackFlag && expandFlag && (tools.apply(setting.callback.beforeExpand, [setting.treeId, node], true) == false)) { |
| | | return null; |
| | | } else if (callbackFlag && !expandFlag && (tools.apply(setting.callback.beforeCollapse, [setting.treeId, node], true) == false)) { |
| | | return null; |
| | | } |
| | | if (expandFlag && node.parentTId) { |
| | | view.expandCollapseParentNode(setting, node.getParentNode(), expandFlag, false); |
| | | } |
| | | if (expandFlag === node.open && !sonSign) { |
| | | return null; |
| | | } |
| | | |
| | | data.getRoot(setting).expandTriggerFlag = callbackFlag; |
| | | if (!tools.canAsync(setting, node) && sonSign) { |
| | | view.expandCollapseSonNode(setting, node, expandFlag, true, showNodeFocus); |
| | | } else { |
| | | node.open = !expandFlag; |
| | | view.switchNode(this.setting, node); |
| | | showNodeFocus(); |
| | | } |
| | | return expandFlag; |
| | | |
| | | function showNodeFocus() { |
| | | var a = $$(node, setting).get(0); |
| | | if (a && focus !== false) { |
| | | view.scrollIntoView(setting, a); |
| | | } |
| | | } |
| | | }, |
| | | getNodes: function () { |
| | | return data.getNodes(setting); |
| | | }, |
| | | getNodeByParam: function (key, value, parentNode) { |
| | | if (!key) return null; |
| | | return data.getNodeByParam(setting, parentNode ? data.nodeChildren(setting, parentNode) : data.getNodes(setting), key, value); |
| | | }, |
| | | getNodeByTId: function (tId) { |
| | | return data.getNodeCache(setting, tId); |
| | | }, |
| | | getNodesByParam: function (key, value, parentNode) { |
| | | if (!key) return null; |
| | | return data.getNodesByParam(setting, parentNode ? data.nodeChildren(setting, parentNode) : data.getNodes(setting), key, value); |
| | | }, |
| | | getNodesByParamFuzzy: function (key, value, parentNode) { |
| | | if (!key) return null; |
| | | return data.getNodesByParamFuzzy(setting, parentNode ? data.nodeChildren(setting, parentNode) : data.getNodes(setting), key, value); |
| | | }, |
| | | getNodesByFilter: function (filter, isSingle, parentNode, invokeParam) { |
| | | isSingle = !!isSingle; |
| | | if (!filter || (typeof filter != "function")) return (isSingle ? null : []); |
| | | return data.getNodesByFilter(setting, parentNode ? data.nodeChildren(setting, parentNode) : data.getNodes(setting), filter, isSingle, invokeParam); |
| | | }, |
| | | getNodeIndex: function (node) { |
| | | if (!node) return null; |
| | | var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting); |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | if (children[i] == node) return i; |
| | | } |
| | | return -1; |
| | | }, |
| | | getSelectedNodes: function () { |
| | | var r = [], list = data.getRoot(setting).curSelectedList; |
| | | for (var i = 0, l = list.length; i < l; i++) { |
| | | r.push(list[i]); |
| | | } |
| | | return r; |
| | | }, |
| | | isSelectedNode: function (node) { |
| | | return data.isSelectedNode(setting, node); |
| | | }, |
| | | reAsyncChildNodesPromise: function (parentNode, reloadType, isSilent) { |
| | | var promise = new Promise(function (resolve, reject) { |
| | | try { |
| | | zTreeTools.reAsyncChildNodes(parentNode, reloadType, isSilent, function () { |
| | | resolve(parentNode); |
| | | }); |
| | | } catch (e) { |
| | | reject(e); |
| | | } |
| | | }); |
| | | return promise; |
| | | }, |
| | | reAsyncChildNodes: function (parentNode, reloadType, isSilent, callback) { |
| | | if (!this.setting.async.enable) return; |
| | | var isRoot = !parentNode; |
| | | if (isRoot) { |
| | | parentNode = data.getRoot(setting); |
| | | } |
| | | if (reloadType == "refresh") { |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | for (var i = 0, l = children ? children.length : 0; i < l; i++) { |
| | | data.removeNodeCache(setting, children[i]); |
| | | } |
| | | data.removeSelectedNode(setting); |
| | | data.nodeChildren(setting, parentNode, []); |
| | | if (isRoot) { |
| | | this.setting.treeObj.empty(); |
| | | } else { |
| | | var ulObj = $$(parentNode, consts.id.UL, setting); |
| | | ulObj.empty(); |
| | | } |
| | | } |
| | | view.asyncNode(this.setting, isRoot ? null : parentNode, !!isSilent, callback); |
| | | }, |
| | | refresh: function () { |
| | | this.setting.treeObj.empty(); |
| | | var root = data.getRoot(setting), |
| | | nodes = data.nodeChildren(setting, root); |
| | | data.initRoot(setting); |
| | | data.nodeChildren(setting, root, nodes); |
| | | data.initCache(setting); |
| | | view.createNodes(setting, 0, data.nodeChildren(setting, root), null, -1); |
| | | }, |
| | | removeChildNodes: function (node) { |
| | | if (!node) return null; |
| | | var nodes = data.nodeChildren(setting, node); |
| | | view.removeChildNodes(setting, node); |
| | | return nodes ? nodes : null; |
| | | }, |
| | | removeNode: function (node, callbackFlag) { |
| | | if (!node) return; |
| | | callbackFlag = !!callbackFlag; |
| | | if (callbackFlag && tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return; |
| | | view.removeNode(setting, node); |
| | | if (callbackFlag) { |
| | | this.setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]); |
| | | } |
| | | }, |
| | | selectNode: function (node, addFlag, isSilent) { |
| | | if (!node) return; |
| | | if (tools.uCanDo(setting)) { |
| | | addFlag = setting.view.selectedMulti && addFlag; |
| | | if (node.parentTId) { |
| | | view.expandCollapseParentNode(setting, node.getParentNode(), true, false, showNodeFocus); |
| | | } else if (!isSilent) { |
| | | try { |
| | | $$(node, setting).focus().blur(); |
| | | } catch (e) { |
| | | } |
| | | } |
| | | view.selectNode(setting, node, addFlag); |
| | | } |
| | | |
| | | function showNodeFocus() { |
| | | if (isSilent) { |
| | | return; |
| | | } |
| | | var a = $$(node, setting).get(0); |
| | | view.scrollIntoView(setting, a); |
| | | } |
| | | }, |
| | | transformTozTreeNodes: function (simpleNodes) { |
| | | return data.transformTozTreeFormat(setting, simpleNodes); |
| | | }, |
| | | transformToArray: function (nodes) { |
| | | return data.transformToArrayFormat(setting, nodes); |
| | | }, |
| | | updateNode: function (node, checkTypeFlag) { |
| | | if (!node) return; |
| | | var nObj = $$(node, setting); |
| | | if (nObj.get(0) && tools.uCanDo(setting)) { |
| | | view.setNodeName(setting, node); |
| | | view.setNodeTarget(setting, node); |
| | | view.setNodeUrl(setting, node); |
| | | view.setNodeLineIcos(setting, node); |
| | | view.setNodeFontCss(setting, node); |
| | | } |
| | | } |
| | | }; |
| | | root.treeTools = zTreeTools; |
| | | data.setZTreeTools(setting, zTreeTools); |
| | | var children = data.nodeChildren(setting, root); |
| | | if (children && children.length > 0) { |
| | | view.createNodes(setting, 0, children, null, -1); |
| | | } else if (setting.async.enable && setting.async.url && setting.async.url !== '') { |
| | | view.asyncNode(setting); |
| | | } |
| | | return zTreeTools; |
| | | } |
| | | }; |
| | | |
| | | var zt = $.fn.zTree, |
| | | $$ = tools.$, |
| | | consts = zt.consts; |
| | | })(jQuery); |
New file |
| | |
| | | /* |
| | | * JQuery zTree core v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function(r){var J,K,L,M,N,O,v,t={},w={},x={},P={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{isParent:"isParent",children:"children",name:"name",title:"",url:"url",icon:"icon"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post", |
| | | dataType:"text",headers:{},xhrFields:{},url:"",autoParam:[],otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},y=[function(a){var b=a.treeObj,c=g.event;b.bind(c.NODECREATED, |
| | | function(b,c,i){h.apply(a.callback.onNodeCreated,[b,c,i])});b.bind(c.CLICK,function(b,c,i,e,k){h.apply(a.callback.onClick,[c,i,e,k])});b.bind(c.EXPAND,function(b,c,i){h.apply(a.callback.onExpand,[b,c,i])});b.bind(c.COLLAPSE,function(b,c,i){h.apply(a.callback.onCollapse,[b,c,i])});b.bind(c.ASYNC_SUCCESS,function(b,c,i,e){h.apply(a.callback.onAsyncSuccess,[b,c,i,e])});b.bind(c.ASYNC_ERROR,function(b,c,i,e,k,g){h.apply(a.callback.onAsyncError,[b,c,i,e,k,g])});b.bind(c.REMOVE,function(b,c,i){h.apply(a.callback.onRemove, |
| | | [b,c,i])});b.bind(c.SELECTED,function(b,c,i){h.apply(a.callback.onSelected,[c,i])});b.bind(c.UNSELECTED,function(b,c,i){h.apply(a.callback.onUnSelected,[c,i])})}],z=[function(a){var b=g.event;a.treeObj.unbind(b.NODECREATED).unbind(b.CLICK).unbind(b.EXPAND).unbind(b.COLLAPSE).unbind(b.ASYNC_SUCCESS).unbind(b.ASYNC_ERROR).unbind(b.REMOVE).unbind(b.SELECTED).unbind(b.UNSELECTED)}],A=[function(a){var b=e.getCache(a);b||(b={},e.setCache(a,b));b.nodes=[];b.doms=[]}],B=[function(a,b,c,d,f,i){if(c){var m= |
| | | e.getRoot(a),k=e.nodeChildren(a,c);c.level=b;c.tId=a.treeId+"_"+ ++m.zId;c.parentTId=d?d.tId:null;c.open=typeof c.open=="string"?h.eqs(c.open,"true"):!!c.open;b=e.nodeIsParent(a,c);h.isArray(k)?(e.nodeIsParent(a,c,!0),c.zAsync=!0):(b=e.nodeIsParent(a,c,b),c.open=b&&!a.async.enable?c.open:!1,c.zAsync=!b);c.isFirstNode=f;c.isLastNode=i;c.getParentNode=function(){return e.getNodeCache(a,c.parentTId)};c.getPreNode=function(){return e.getPreNode(a,c)};c.getNextNode=function(){return e.getNextNode(a,c)}; |
| | | c.getIndex=function(){return e.getNodeIndex(a,c)};c.getPath=function(){return e.getNodePath(a,c)};c.isAjaxing=!1;e.fixPIdKeyValue(a,c)}}],u=[function(a){var b=a.target,c=e.getSetting(a.data.treeId),d="",f=null,i="",m="",k=null,j=null,o=null;if(h.eqs(a.type,"mousedown"))m="mousedown";else if(h.eqs(a.type,"mouseup"))m="mouseup";else if(h.eqs(a.type,"contextmenu"))m="contextmenu";else if(h.eqs(a.type,"click"))if(h.eqs(b.tagName,"span")&&b.getAttribute("treeNode"+g.id.SWITCH)!==null)d=h.getNodeMainDom(b).id, |
| | | i="switchNode";else{if(o=h.getMDom(c,b,[{tagName:"a",attrName:"treeNode"+g.id.A}]))d=h.getNodeMainDom(o).id,i="clickNode"}else if(h.eqs(a.type,"dblclick")&&(m="dblclick",o=h.getMDom(c,b,[{tagName:"a",attrName:"treeNode"+g.id.A}])))d=h.getNodeMainDom(o).id,i="switchNode";if(m.length>0&&d.length==0&&(o=h.getMDom(c,b,[{tagName:"a",attrName:"treeNode"+g.id.A}])))d=h.getNodeMainDom(o).id;if(d.length>0)switch(f=e.getNodeCache(c,d),i){case "switchNode":e.nodeIsParent(c,f)?h.eqs(a.type,"click")||h.eqs(a.type, |
| | | "dblclick")&&h.apply(c.view.dblClickExpand,[c.treeId,f],c.view.dblClickExpand)?k=J:i="":i="";break;case "clickNode":k=K}switch(m){case "mousedown":j=L;break;case "mouseup":j=M;break;case "dblclick":j=N;break;case "contextmenu":j=O}return{stop:!1,node:f,nodeEventType:i,nodeEventCallback:k,treeEventType:m,treeEventCallback:j}}],C=[function(a){var b=e.getRoot(a);b||(b={},e.setRoot(a,b));e.nodeChildren(a,b,[]);b.expandTriggerFlag=!1;b.curSelectedList=[];b.noSelection=!0;b.createdNodes=[];b.zId=0;b._ver= |
| | | (new Date).getTime()}],D=[],E=[],F=[],G=[],H=[],e={addNodeCache:function(a,b){e.getCache(a).nodes[e.getNodeCacheId(b.tId)]=b},getNodeCacheId:function(a){return a.substring(a.lastIndexOf("_")+1)},addAfterA:function(a){E.push(a)},addBeforeA:function(a){D.push(a)},addInnerAfterA:function(a){G.push(a)},addInnerBeforeA:function(a){F.push(a)},addInitBind:function(a){y.push(a)},addInitUnBind:function(a){z.push(a)},addInitCache:function(a){A.push(a)},addInitNode:function(a){B.push(a)},addInitProxy:function(a, |
| | | b){b?u.splice(0,0,a):u.push(a)},addInitRoot:function(a){C.push(a)},addNodesData:function(a,b,c,d){var f=e.nodeChildren(a,b);f?c>=f.length&&(c=-1):(f=e.nodeChildren(a,b,[]),c=-1);if(f.length>0&&c===0)f[0].isFirstNode=!1,j.setNodeLineIcos(a,f[0]);else if(f.length>0&&c<0)f[f.length-1].isLastNode=!1,j.setNodeLineIcos(a,f[f.length-1]);e.nodeIsParent(a,b,!0);c<0?e.nodeChildren(a,b,f.concat(d)):(a=[c,0].concat(d),f.splice.apply(f,a))},addSelectedNode:function(a,b){var c=e.getRoot(a);e.isSelectedNode(a,b)|| |
| | | c.curSelectedList.push(b)},addCreatedNode:function(a,b){(a.callback.onNodeCreated||a.view.addDiyDom)&&e.getRoot(a).createdNodes.push(b)},addZTreeTools:function(a){H.push(a)},exSetting:function(a){r.extend(!0,P,a)},fixPIdKeyValue:function(a,b){a.data.simpleData.enable&&(b[a.data.simpleData.pIdKey]=b.parentTId?b.getParentNode()[a.data.simpleData.idKey]:a.data.simpleData.rootPId)},getAfterA:function(a,b,c){for(var d=0,e=E.length;d<e;d++)E[d].apply(this,arguments)},getBeforeA:function(a,b,c){for(var d= |
| | | 0,e=D.length;d<e;d++)D[d].apply(this,arguments)},getInnerAfterA:function(a,b,c){for(var d=0,e=G.length;d<e;d++)G[d].apply(this,arguments)},getInnerBeforeA:function(a,b,c){for(var d=0,e=F.length;d<e;d++)F[d].apply(this,arguments)},getCache:function(a){return x[a.treeId]},getNodeIndex:function(a,b){if(!b)return null;for(var c=b.parentTId?b.getParentNode():e.getRoot(a),c=e.nodeChildren(a,c),d=0,f=c.length-1;d<=f;d++)if(c[d]===b)return d;return-1},getNextNode:function(a,b){if(!b)return null;for(var c= |
| | | b.parentTId?b.getParentNode():e.getRoot(a),c=e.nodeChildren(a,c),d=0,f=c.length-1;d<=f;d++)if(c[d]===b)return d==f?null:c[d+1];return null},getNodeByParam:function(a,b,c,d){if(!b||!c)return null;for(var f=0,i=b.length;f<i;f++){var m=b[f];if(m[c]==d)return b[f];m=e.nodeChildren(a,m);if(m=e.getNodeByParam(a,m,c,d))return m}return null},getNodeCache:function(a,b){if(!b)return null;var c=x[a.treeId].nodes[e.getNodeCacheId(b)];return c?c:null},getNodePath:function(a,b){if(!b)return null;var c;(c=b.parentTId? |
| | | b.getParentNode().getPath():[])&&c.push(b);return c},getNodes:function(a){return e.nodeChildren(a,e.getRoot(a))},getNodesByParam:function(a,b,c,d){if(!b||!c)return[];for(var f=[],i=0,m=b.length;i<m;i++){var k=b[i];k[c]==d&&f.push(k);k=e.nodeChildren(a,k);f=f.concat(e.getNodesByParam(a,k,c,d))}return f},getNodesByParamFuzzy:function(a,b,c,d){if(!b||!c)return[];for(var f=[],d=d.toLowerCase(),i=0,m=b.length;i<m;i++){var k=b[i];typeof k[c]=="string"&&b[i][c].toLowerCase().indexOf(d)>-1&&f.push(k);k=e.nodeChildren(a, |
| | | k);f=f.concat(e.getNodesByParamFuzzy(a,k,c,d))}return f},getNodesByFilter:function(a,b,c,d,f){if(!b)return d?null:[];for(var i=d?null:[],m=0,k=b.length;m<k;m++){var g=b[m];if(h.apply(c,[g,f],!1)){if(d)return g;i.push(g)}g=e.nodeChildren(a,g);g=e.getNodesByFilter(a,g,c,d,f);if(d&&g)return g;i=d?g:i.concat(g)}return i},getPreNode:function(a,b){if(!b)return null;for(var c=b.parentTId?b.getParentNode():e.getRoot(a),c=e.nodeChildren(a,c),d=0,f=c.length;d<f;d++)if(c[d]===b)return d==0?null:c[d-1];return null}, |
| | | getRoot:function(a){return a?w[a.treeId]:null},getRoots:function(){return w},getSetting:function(a){return t[a]},getSettings:function(){return t},getZTreeTools:function(a){return(a=this.getRoot(this.getSetting(a)))?a.treeTools:null},initCache:function(a){for(var b=0,c=A.length;b<c;b++)A[b].apply(this,arguments)},initNode:function(a,b,c,d,e,i){for(var m=0,g=B.length;m<g;m++)B[m].apply(this,arguments)},initRoot:function(a){for(var b=0,c=C.length;b<c;b++)C[b].apply(this,arguments)},isSelectedNode:function(a, |
| | | b){for(var c=e.getRoot(a),d=0,f=c.curSelectedList.length;d<f;d++)if(b===c.curSelectedList[d])return!0;return!1},nodeChildren:function(a,b,c){if(!b)return null;a=a.data.key.children;typeof c!=="undefined"&&(b[a]=c);return b[a]},nodeIsParent:function(a,b,c){if(!b)return!1;a=a.data.key.isParent;typeof c!=="undefined"?(typeof c==="string"&&(c=h.eqs(c,"true")),b[a]=!!c):b[a]=typeof b[a]=="string"?h.eqs(b[a],"true"):!!b[a];return b[a]},nodeName:function(a,b,c){a=a.data.key.name;typeof c!=="undefined"&& |
| | | (b[a]=c);return""+b[a]},nodeTitle:function(a,b){return""+b[a.data.key.title===""?a.data.key.name:a.data.key.title]},removeNodeCache:function(a,b){var c=e.nodeChildren(a,b);if(c)for(var d=0,f=c.length;d<f;d++)e.removeNodeCache(a,c[d]);e.getCache(a).nodes[e.getNodeCacheId(b.tId)]=null},removeSelectedNode:function(a,b){for(var c=e.getRoot(a),d=0,f=c.curSelectedList.length;d<f;d++)if(b===c.curSelectedList[d]||!e.getNodeCache(a,c.curSelectedList[d].tId))c.curSelectedList.splice(d,1),a.treeObj.trigger(g.event.UNSELECTED, |
| | | [a.treeId,b]),d--,f--},setCache:function(a,b){x[a.treeId]=b},setRoot:function(a,b){w[a.treeId]=b},setZTreeTools:function(a,b){for(var c=0,d=H.length;c<d;c++)H[c].apply(this,arguments)},transformToArrayFormat:function(a,b){function c(b){d.push(b);(b=e.nodeChildren(a,b))&&(d=d.concat(e.transformToArrayFormat(a,b)))}if(!b)return[];var d=[];if(h.isArray(b))for(var f=0,i=b.length;f<i;f++)c(b[f]);else c(b);return d},transformTozTreeFormat:function(a,b){var c,d,f=a.data.simpleData.idKey,i=a.data.simpleData.pIdKey; |
| | | if(!f||f==""||!b)return[];if(h.isArray(b)){var g=[],k={};for(c=0,d=b.length;c<d;c++)k[b[c][f]]=b[c];for(c=0,d=b.length;c<d;c++){var j=k[b[c][i]];if(j&&b[c][f]!=b[c][i]){var o=e.nodeChildren(a,j);o||(o=e.nodeChildren(a,j,[]));o.push(b[c])}else g.push(b[c])}return g}else return[b]}},n={bindEvent:function(a){for(var b=0,c=y.length;b<c;b++)y[b].apply(this,arguments)},unbindEvent:function(a){for(var b=0,c=z.length;b<c;b++)z[b].apply(this,arguments)},bindTree:function(a){var b={treeId:a.treeId},c=a.treeObj; |
| | | a.view.txtSelectedEnable||c.bind("selectstart",v).css({"-moz-user-select":"-moz-none"});c.bind("click",b,n.proxy);c.bind("dblclick",b,n.proxy);c.bind("mouseover",b,n.proxy);c.bind("mouseout",b,n.proxy);c.bind("mousedown",b,n.proxy);c.bind("mouseup",b,n.proxy);c.bind("contextmenu",b,n.proxy)},unbindTree:function(a){a.treeObj.unbind("selectstart",v).unbind("click",n.proxy).unbind("dblclick",n.proxy).unbind("mouseover",n.proxy).unbind("mouseout",n.proxy).unbind("mousedown",n.proxy).unbind("mouseup", |
| | | n.proxy).unbind("contextmenu",n.proxy)},doProxy:function(a){for(var b=[],c=0,d=u.length;c<d;c++){var e=u[c].apply(this,arguments);b.push(e);if(e.stop)break}return b},proxy:function(a){var b=e.getSetting(a.data.treeId);if(!h.uCanDo(b,a))return!0;for(var b=n.doProxy(a),c=!0,d=0,f=b.length;d<f;d++){var i=b[d];i.nodeEventCallback&&(c=i.nodeEventCallback.apply(i,[a,i.node])&&c);i.treeEventCallback&&(c=i.treeEventCallback.apply(i,[a,i.node])&&c)}return c}};J=function(a,b){var c=e.getSetting(a.data.treeId); |
| | | if(b.open){if(h.apply(c.callback.beforeCollapse,[c.treeId,b],!0)==!1)return!0}else if(h.apply(c.callback.beforeExpand,[c.treeId,b],!0)==!1)return!0;e.getRoot(c).expandTriggerFlag=!0;j.switchNode(c,b);return!0};K=function(a,b){var c=e.getSetting(a.data.treeId),d=c.view.autoCancelSelected&&(a.ctrlKey||a.metaKey)&&e.isSelectedNode(c,b)?0:c.view.autoCancelSelected&&(a.ctrlKey||a.metaKey)&&c.view.selectedMulti?2:1;if(h.apply(c.callback.beforeClick,[c.treeId,b,d],!0)==!1)return!0;d===0?j.cancelPreSelectedNode(c, |
| | | b):j.selectNode(c,b,d===2);c.treeObj.trigger(g.event.CLICK,[a,c.treeId,b,d]);return!0};L=function(a,b){var c=e.getSetting(a.data.treeId);h.apply(c.callback.beforeMouseDown,[c.treeId,b],!0)&&h.apply(c.callback.onMouseDown,[a,c.treeId,b]);return!0};M=function(a,b){var c=e.getSetting(a.data.treeId);h.apply(c.callback.beforeMouseUp,[c.treeId,b],!0)&&h.apply(c.callback.onMouseUp,[a,c.treeId,b]);return!0};N=function(a,b){var c=e.getSetting(a.data.treeId);h.apply(c.callback.beforeDblClick,[c.treeId,b],!0)&& |
| | | h.apply(c.callback.onDblClick,[a,c.treeId,b]);return!0};O=function(a,b){var c=e.getSetting(a.data.treeId);h.apply(c.callback.beforeRightClick,[c.treeId,b],!0)&&h.apply(c.callback.onRightClick,[a,c.treeId,b]);return typeof c.callback.onRightClick!="function"};v=function(a){a=a.originalEvent.srcElement.nodeName.toLowerCase();return a==="input"||a==="textarea"};var h={apply:function(a,b,c){return typeof a=="function"?a.apply(Q,b?b:[]):c},canAsync:function(a,b){var c=e.nodeChildren(a,b),d=e.nodeIsParent(a, |
| | | b);return a.async.enable&&b&&d&&!(b.zAsync||c&&c.length>0)},clone:function(a){if(a===null)return null;var b=h.isArray(a)?[]:{},c;for(c in a)b[c]=a[c]instanceof Date?new Date(a[c].getTime()):typeof a[c]==="object"?h.clone(a[c]):a[c];return b},eqs:function(a,b){return a.toLowerCase()===b.toLowerCase()},isArray:function(a){return Object.prototype.toString.apply(a)==="[object Array]"},isElement:function(a){return typeof HTMLElement==="object"?a instanceof HTMLElement:a&&typeof a==="object"&&a!==null&& |
| | | a.nodeType===1&&typeof a.nodeName==="string"},$:function(a,b,c){b&&typeof b!="string"&&(c=b,b="");return typeof a=="string"?r(a,c?c.treeObj.get(0).ownerDocument:null):r("#"+a.tId+b,c?c.treeObj:null)},getMDom:function(a,b,c){if(!b)return null;for(;b&&b.id!==a.treeId;){for(var d=0,e=c.length;b.tagName&&d<e;d++)if(h.eqs(b.tagName,c[d].tagName)&&b.getAttribute(c[d].attrName)!==null)return b;b=b.parentNode}return null},getNodeMainDom:function(a){return r(a).parent("li").get(0)||r(a).parentsUntil("li").parent().get(0)}, |
| | | isChildOrSelf:function(a,b){return r(a).closest("#"+b).length>0},uCanDo:function(){return!0}},j={addNodes:function(a,b,c,d,f){var i=e.nodeIsParent(a,b);if(!a.data.keep.leaf||!b||i)if(h.isArray(d)||(d=[d]),a.data.simpleData.enable&&(d=e.transformTozTreeFormat(a,d)),b){var i=l(b,g.id.SWITCH,a),m=l(b,g.id.ICON,a),k=l(b,g.id.UL,a);if(!b.open)j.replaceSwitchClass(b,i,g.folder.CLOSE),j.replaceIcoClass(b,m,g.folder.CLOSE),b.open=!1,k.css({display:"none"});e.addNodesData(a,b,c,d);j.createNodes(a,b.level+ |
| | | 1,d,b,c);f||j.expandCollapseParentNode(a,b,!0)}else e.addNodesData(a,e.getRoot(a),c,d),j.createNodes(a,0,d,null,c)},appendNodes:function(a,b,c,d,f,i,g){if(!c)return[];var k=[],h=d?d:e.getRoot(a),h=e.nodeChildren(a,h),o,l;if(!h||f>=h.length-c.length)f=-1;for(var s=0,n=c.length;s<n;s++){var p=c[s];i&&(o=(f===0||h.length==c.length)&&s==0,l=f<0&&s==c.length-1,e.initNode(a,b,p,d,o,l,g),e.addNodeCache(a,p));o=e.nodeIsParent(a,p);l=[];var I=e.nodeChildren(a,p);I&&I.length>0&&(l=j.appendNodes(a,b+1,I,p,-1, |
| | | i,g&&p.open));g&&(j.makeDOMNodeMainBefore(k,a,p),j.makeDOMNodeLine(k,a,p),e.getBeforeA(a,p,k),j.makeDOMNodeNameBefore(k,a,p),e.getInnerBeforeA(a,p,k),j.makeDOMNodeIcon(k,a,p),e.getInnerAfterA(a,p,k),j.makeDOMNodeNameAfter(k,a,p),e.getAfterA(a,p,k),o&&p.open&&j.makeUlHtml(a,p,k,l.join("")),j.makeDOMNodeMainAfter(k,a,p),e.addCreatedNode(a,p))}return k},appendParentULDom:function(a,b){var c=[],d=l(b,a);!d.get(0)&&b.parentTId&&(j.appendParentULDom(a,b.getParentNode()),d=l(b,a));var f=l(b,g.id.UL,a);f.get(0)&& |
| | | f.remove();f=e.nodeChildren(a,b);f=j.appendNodes(a,b.level+1,f,b,-1,!1,!0);j.makeUlHtml(a,b,c,f.join(""));d.append(c.join(""))},asyncNode:function(a,b,c,d){var f,i;f=e.nodeIsParent(a,b);if(b&&!f)return h.apply(d),!1;else if(b&&b.isAjaxing)return!1;else if(h.apply(a.callback.beforeAsync,[a.treeId,b],!0)==!1)return h.apply(d),!1;if(b)b.isAjaxing=!0,l(b,g.id.ICON,a).attr({style:"","class":g.className.BUTTON+" "+g.className.ICO_LOADING});var m={},k=h.apply(a.async.autoParam,[a.treeId,b],a.async.autoParam); |
| | | for(f=0,i=k.length;b&&f<i;f++){var q=k[f].split("="),o=q;q.length>1&&(o=q[1],q=q[0]);m[o]=b[q]}k=h.apply(a.async.otherParam,[a.treeId,b],a.async.otherParam);if(h.isArray(k))for(f=0,i=k.length;f<i;f+=2)m[k[f]]=k[f+1];else for(var n in k)m[n]=k[n];var s=e.getRoot(a)._ver;r.ajax({contentType:a.async.contentType,cache:!1,type:a.async.type,url:h.apply(a.async.url,[a.treeId,b],a.async.url),data:a.async.contentType.indexOf("application/json")>-1?JSON.stringify(m):m,dataType:a.async.dataType,headers:a.async.headers, |
| | | xhrFields:a.async.xhrFields,success:function(i){if(s==e.getRoot(a)._ver){var f=[];try{f=!i||i.length==0?[]:typeof i=="string"?eval("("+i+")"):i}catch(k){f=i}if(b)b.isAjaxing=null,b.zAsync=!0;j.setNodeLineIcos(a,b);f&&f!==""?(f=h.apply(a.async.dataFilter,[a.treeId,b,f],f),j.addNodes(a,b,-1,f?h.clone(f):[],!!c)):j.addNodes(a,b,-1,[],!!c);a.treeObj.trigger(g.event.ASYNC_SUCCESS,[a.treeId,b,i]);h.apply(d)}},error:function(c,d,i){if(s==e.getRoot(a)._ver){if(b)b.isAjaxing=null;j.setNodeLineIcos(a,b);a.treeObj.trigger(g.event.ASYNC_ERROR, |
| | | [a.treeId,b,c,d,i])}}});return!0},cancelPreSelectedNode:function(a,b,c){var d=e.getRoot(a).curSelectedList,f,i;for(f=d.length-1;f>=0;f--)if(i=d[f],b===i||!b&&(!c||c!==i))if(l(i,g.id.A,a).removeClass(g.node.CURSELECTED),b){e.removeSelectedNode(a,b);break}else d.splice(f,1),a.treeObj.trigger(g.event.UNSELECTED,[a.treeId,i])},createNodeCallback:function(a){if(a.callback.onNodeCreated||a.view.addDiyDom)for(var b=e.getRoot(a);b.createdNodes.length>0;){var c=b.createdNodes.shift();h.apply(a.view.addDiyDom, |
| | | [a.treeId,c]);a.callback.onNodeCreated&&a.treeObj.trigger(g.event.NODECREATED,[a.treeId,c])}},createNodes:function(a,b,c,d,f){if(c&&c.length!=0){var i=e.getRoot(a),m=!d||d.open||!!l(e.nodeChildren(a,d)[0],a).get(0);i.createdNodes=[];var b=j.appendNodes(a,b,c,d,f,!0,m),k,h;d?(d=l(d,g.id.UL,a),d.get(0)&&(k=d)):k=a.treeObj;k&&(f>=0&&(h=k.children()[f]),f>=0&&h?r(h).before(b.join("")):k.append(b.join("")));j.createNodeCallback(a)}},destroy:function(a){a&&(e.initCache(a),e.initRoot(a),n.unbindTree(a), |
| | | n.unbindEvent(a),a.treeObj.empty(),delete t[a.treeId])},expandCollapseNode:function(a,b,c,d,f){var i=e.getRoot(a),m;if(b){var k=e.nodeChildren(a,b),q=e.nodeIsParent(a,b);if(i.expandTriggerFlag)m=f,f=function(){m&&m();b.open?a.treeObj.trigger(g.event.EXPAND,[a.treeId,b]):a.treeObj.trigger(g.event.COLLAPSE,[a.treeId,b])},i.expandTriggerFlag=!1;if(!b.open&&q&&(!l(b,g.id.UL,a).get(0)||k&&k.length>0&&!l(k[0],a).get(0)))j.appendParentULDom(a,b),j.createNodeCallback(a);if(b.open==c)h.apply(f,[]);else{var c= |
| | | l(b,g.id.UL,a),i=l(b,g.id.SWITCH,a),o=l(b,g.id.ICON,a);q?(b.open=!b.open,b.iconOpen&&b.iconClose&&o.attr("style",j.makeNodeIcoStyle(a,b)),b.open?(j.replaceSwitchClass(b,i,g.folder.OPEN),j.replaceIcoClass(b,o,g.folder.OPEN),d==!1||a.view.expandSpeed==""?(c.show(),h.apply(f,[])):k&&k.length>0?c.slideDown(a.view.expandSpeed,f):(c.show(),h.apply(f,[]))):(j.replaceSwitchClass(b,i,g.folder.CLOSE),j.replaceIcoClass(b,o,g.folder.CLOSE),d==!1||a.view.expandSpeed==""||!(k&&k.length>0)?(c.hide(),h.apply(f,[])): |
| | | c.slideUp(a.view.expandSpeed,f))):h.apply(f,[])}}else h.apply(f,[])},expandCollapseParentNode:function(a,b,c,d,e){b&&(b.parentTId?(j.expandCollapseNode(a,b,c,d),b.parentTId&&j.expandCollapseParentNode(a,b.getParentNode(),c,d,e)):j.expandCollapseNode(a,b,c,d,e))},expandCollapseSonNode:function(a,b,c,d,f){var i=e.getRoot(a),i=b?e.nodeChildren(a,b):e.nodeChildren(a,i),g=b?!1:d,k=e.getRoot(a).expandTriggerFlag;e.getRoot(a).expandTriggerFlag=!1;if(i)for(var h=0,l=i.length;h<l;h++)i[h]&&j.expandCollapseSonNode(a, |
| | | i[h],c,g);e.getRoot(a).expandTriggerFlag=k;j.expandCollapseNode(a,b,c,d,f)},isSelectedNode:function(a,b){if(!b)return!1;var c=e.getRoot(a).curSelectedList,d;for(d=c.length-1;d>=0;d--)if(b===c[d])return!0;return!1},makeDOMNodeIcon:function(a,b,c){var d=e.nodeName(b,c),d=b.view.nameIsHTML?d:d.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">");a.push("<span id='",c.tId,g.id.ICON,"' title='' treeNode",g.id.ICON," class='",j.makeNodeIcoClass(b,c),"' style='",j.makeNodeIcoStyle(b,c),"'></span><span id='", |
| | | c.tId,g.id.SPAN,"' class='",g.className.NAME,"'>",d,"</span>")},makeDOMNodeLine:function(a,b,c){a.push("<span id='",c.tId,g.id.SWITCH,"' title='' class='",j.makeNodeLineClass(b,c),"' treeNode",g.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(a){a.push("</li>")},makeDOMNodeMainBefore:function(a,b,c){a.push("<li id='",c.tId,"' class='",g.className.LEVEL,c.level,"' tabindex='0' hidefocus='true' treenode>")},makeDOMNodeNameAfter:function(a){a.push("</a>")},makeDOMNodeNameBefore:function(a,b,c){var d= |
| | | e.nodeTitle(b,c),f=j.makeNodeUrl(b,c),i=j.makeNodeFontCss(b,c),m=[],k;for(k in i)m.push(k,":",i[k],";");a.push("<a id='",c.tId,g.id.A,"' class='",g.className.LEVEL,c.level,"' treeNode",g.id.A,' onclick="',c.click||"",'" ',f!=null&&f.length>0?"href='"+f+"'":""," target='",j.makeNodeTarget(c),"' style='",m.join(""),"'");h.apply(b.view.showTitle,[b.treeId,c],b.view.showTitle)&&d&&a.push("title='",d.replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">"),"'");a.push(">")},makeNodeFontCss:function(a, |
| | | b){var c=h.apply(a.view.fontCss,[a.treeId,b],a.view.fontCss);return c&&typeof c!="function"?c:{}},makeNodeIcoClass:function(a,b){var c=["ico"];if(!b.isAjaxing){var d=e.nodeIsParent(a,b);c[0]=(b.iconSkin?b.iconSkin+"_":"")+c[0];d?c.push(b.open?g.folder.OPEN:g.folder.CLOSE):c.push(g.folder.DOCU)}return g.className.BUTTON+" "+c.join("_")},makeNodeIcoStyle:function(a,b){var c=[];if(!b.isAjaxing){var d=e.nodeIsParent(a,b)&&b.iconOpen&&b.iconClose?b.open?b.iconOpen:b.iconClose:b[a.data.key.icon];d&&c.push("background:url(", |
| | | d,") 0 0 no-repeat;");(a.view.showIcon==!1||!h.apply(a.view.showIcon,[a.treeId,b],!0))&&c.push("width:0px;height:0px;")}return c.join("")},makeNodeLineClass:function(a,b){var c=[];a.view.showLine?b.level==0&&b.isFirstNode&&b.isLastNode?c.push(g.line.ROOT):b.level==0&&b.isFirstNode?c.push(g.line.ROOTS):b.isLastNode?c.push(g.line.BOTTOM):c.push(g.line.CENTER):c.push(g.line.NOLINE);e.nodeIsParent(a,b)?c.push(b.open?g.folder.OPEN:g.folder.CLOSE):c.push(g.folder.DOCU);return j.makeNodeLineClassEx(b)+c.join("_")}, |
| | | makeNodeLineClassEx:function(a){return g.className.BUTTON+" "+g.className.LEVEL+a.level+" "+g.className.SWITCH+" "},makeNodeTarget:function(a){return a.target||"_blank"},makeNodeUrl:function(a,b){var c=a.data.key.url;return b[c]?b[c]:null},makeUlHtml:function(a,b,c,d){c.push("<ul id='",b.tId,g.id.UL,"' class='",g.className.LEVEL,b.level," ",j.makeUlLineClass(a,b),"' style='display:",b.open?"block":"none","'>");c.push(d);c.push("</ul>")},makeUlLineClass:function(a,b){return a.view.showLine&&!b.isLastNode? |
| | | g.line.LINE:""},removeChildNodes:function(a,b){if(b){var c=e.nodeChildren(a,b);if(c){for(var d=0,f=c.length;d<f;d++)e.removeNodeCache(a,c[d]);e.removeSelectedNode(a);delete b[a.data.key.children];a.data.keep.parent?l(b,g.id.UL,a).empty():(e.nodeIsParent(a,b,!1),b.open=!1,c=l(b,g.id.SWITCH,a),d=l(b,g.id.ICON,a),j.replaceSwitchClass(b,c,g.folder.DOCU),j.replaceIcoClass(b,d,g.folder.DOCU),l(b,g.id.UL,a).remove())}}},scrollIntoView:function(a,b){if(b)if(typeof Element==="undefined"){var c=a.treeObj.get(0).getBoundingClientRect(), |
| | | d=b.getBoundingClientRect();(d.top<c.top||d.bottom>c.bottom||d.right>c.right||d.left<c.left)&&b.scrollIntoView()}else{if(!Element.prototype.scrollIntoViewIfNeeded)Element.prototype.scrollIntoViewIfNeeded=function(a){function b(a,c){return{start:a,length:c,end:a+c}}function c(b,d){return!1===a||d.start<b.end&&b.start<d.end?Math.max(b.end-d.length,Math.min(d.start,b.start)):(b.start+b.end-d.length)/2}function d(a,b){return{x:a,y:b,translate:function(c,i){return d(a+c,b+i)}}}function e(a,b){for(;a;)b= |
| | | b.translate(a.offsetLeft,a.offsetTop),a=a.offsetParent;return b}for(var g=e(this,d(0,0)),j=d(this.offsetWidth,this.offsetHeight),h=this.parentNode,l;h instanceof HTMLElement;)l=e(h,d(h.clientLeft,h.clientTop)),h.scrollLeft=c(b(g.x-l.x,j.x),b(h.scrollLeft,h.clientWidth)),h.scrollTop=c(b(g.y-l.y,j.y),b(h.scrollTop,h.clientHeight)),g=g.translate(-h.scrollLeft,-h.scrollTop),h=h.parentNode};b.scrollIntoViewIfNeeded()}},setFirstNode:function(a,b){var c=e.nodeChildren(a,b);if(c.length>0)c[0].isFirstNode= |
| | | !0},setLastNode:function(a,b){var c=e.nodeChildren(a,b);if(c.length>0)c[c.length-1].isLastNode=!0},removeNode:function(a,b){var c=e.getRoot(a),d=b.parentTId?b.getParentNode():c;b.isFirstNode=!1;b.isLastNode=!1;b.getPreNode=function(){return null};b.getNextNode=function(){return null};if(e.getNodeCache(a,b.tId)){l(b,a).remove();e.removeNodeCache(a,b);e.removeSelectedNode(a,b);for(var f=e.nodeChildren(a,d),i=0,h=f.length;i<h;i++)if(f[i].tId==b.tId){f.splice(i,1);break}j.setFirstNode(a,d);j.setLastNode(a, |
| | | d);var k,i=f.length;if(!a.data.keep.parent&&i==0)e.nodeIsParent(a,d,!1),d.open=!1,delete d[a.data.key.children],i=l(d,g.id.UL,a),h=l(d,g.id.SWITCH,a),k=l(d,g.id.ICON,a),j.replaceSwitchClass(d,h,g.folder.DOCU),j.replaceIcoClass(d,k,g.folder.DOCU),i.css("display","none");else if(a.view.showLine&&i>0){var q=f[i-1],i=l(q,g.id.UL,a),h=l(q,g.id.SWITCH,a);k=l(q,g.id.ICON,a);d==c?f.length==1?j.replaceSwitchClass(q,h,g.line.ROOT):(c=l(f[0],g.id.SWITCH,a),j.replaceSwitchClass(f[0],c,g.line.ROOTS),j.replaceSwitchClass(q, |
| | | h,g.line.BOTTOM)):j.replaceSwitchClass(q,h,g.line.BOTTOM);i.removeClass(g.line.LINE)}}},replaceIcoClass:function(a,b,c){if(b&&!a.isAjaxing&&(a=b.attr("class"),a!=void 0)){a=a.split("_");switch(c){case g.folder.OPEN:case g.folder.CLOSE:case g.folder.DOCU:a[a.length-1]=c}b.attr("class",a.join("_"))}},replaceSwitchClass:function(a,b,c){if(b){var d=b.attr("class");if(d!=void 0){d=d.split("_");switch(c){case g.line.ROOT:case g.line.ROOTS:case g.line.CENTER:case g.line.BOTTOM:case g.line.NOLINE:d[0]=j.makeNodeLineClassEx(a)+ |
| | | c;break;case g.folder.OPEN:case g.folder.CLOSE:case g.folder.DOCU:d[1]=c}b.attr("class",d.join("_"));c!==g.folder.DOCU?b.removeAttr("disabled"):b.attr("disabled","disabled")}}},selectNode:function(a,b,c){c||j.cancelPreSelectedNode(a,null,b);l(b,g.id.A,a).addClass(g.node.CURSELECTED);e.addSelectedNode(a,b);a.treeObj.trigger(g.event.SELECTED,[a.treeId,b])},setNodeFontCss:function(a,b){var c=l(b,g.id.A,a),d=j.makeNodeFontCss(a,b);d&&c.css(d)},setNodeLineIcos:function(a,b){if(b){var c=l(b,g.id.SWITCH, |
| | | a),d=l(b,g.id.UL,a),f=l(b,g.id.ICON,a),i=j.makeUlLineClass(a,b);i.length==0?d.removeClass(g.line.LINE):d.addClass(i);c.attr("class",j.makeNodeLineClass(a,b));e.nodeIsParent(a,b)?c.removeAttr("disabled"):c.attr("disabled","disabled");f.removeAttr("style");f.attr("style",j.makeNodeIcoStyle(a,b));f.attr("class",j.makeNodeIcoClass(a,b))}},setNodeName:function(a,b){var c=e.nodeTitle(a,b),d=l(b,g.id.SPAN,a);d.empty();a.view.nameIsHTML?d.html(e.nodeName(a,b)):d.text(e.nodeName(a,b));h.apply(a.view.showTitle, |
| | | [a.treeId,b],a.view.showTitle)&&l(b,g.id.A,a).attr("title",!c?"":c)},setNodeTarget:function(a,b){l(b,g.id.A,a).attr("target",j.makeNodeTarget(b))},setNodeUrl:function(a,b){var c=l(b,g.id.A,a),d=j.makeNodeUrl(a,b);d==null||d.length==0?c.removeAttr("href"):c.attr("href",d)},switchNode:function(a,b){b.open||!h.canAsync(a,b)?j.expandCollapseNode(a,b,!b.open):a.async.enable?j.asyncNode(a,b)||j.expandCollapseNode(a,b,!b.open):b&&j.expandCollapseNode(a,b,!b.open)}};r.fn.zTree={consts:{className:{BUTTON:"button", |
| | | LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch",NAME:"node_name"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove",SELECTED:"ztree_selected",UNSELECTED:"ztree_unselected"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",NOLINE:"noline",LINE:"line"},folder:{OPEN:"open", |
| | | CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:h,view:j,event:n,data:e},getZTreeObj:function(a){return(a=e.getZTreeTools(a))?a:null},destroy:function(a){if(a&&a.length>0)j.destroy(e.getSetting(a));else for(var b in t)j.destroy(t[b])},init:function(a,b,c){var d=h.clone(P);r.extend(!0,d,b);d.treeId=a.attr("id");d.treeObj=a;d.treeObj.empty();t[d.treeId]=d;if(typeof document.body.style.maxHeight==="undefined")d.view.expandSpeed="";e.initRoot(d);a=e.getRoot(d);c=c?h.clone(h.isArray(c)? |
| | | c:[c]):[];d.data.simpleData.enable?e.nodeChildren(d,a,e.transformTozTreeFormat(d,c)):e.nodeChildren(d,a,c);e.initCache(d);n.unbindTree(d);n.bindTree(d);n.unbindEvent(d);n.bindEvent(d);var f={setting:d,addNodes:function(a,b,c,f){function g(){j.addNodes(d,a,b,n,f==!0)}a||(a=null);var l=e.nodeIsParent(d,a);if(a&&!l&&d.data.keep.leaf)return null;l=parseInt(b,10);isNaN(l)?(f=!!c,c=b,b=-1):b=l;if(!c)return null;var n=h.clone(h.isArray(c)?c:[c]);h.canAsync(d,a)?j.asyncNode(d,a,f,g):g();return n},cancelSelectedNode:function(a){j.cancelPreSelectedNode(d, |
| | | a)},destroy:function(){j.destroy(d)},expandAll:function(a){a=!!a;j.expandCollapseSonNode(d,null,a,!0);return a},expandNode:function(a,b,c,f,g){function n(){var b=l(a,d).get(0);b&&f!==!1&&j.scrollIntoView(d,b)}if(!a||!e.nodeIsParent(d,a))return null;b!==!0&&b!==!1&&(b=!a.open);if((g=!!g)&&b&&h.apply(d.callback.beforeExpand,[d.treeId,a],!0)==!1)return null;else if(g&&!b&&h.apply(d.callback.beforeCollapse,[d.treeId,a],!0)==!1)return null;b&&a.parentTId&&j.expandCollapseParentNode(d,a.getParentNode(), |
| | | b,!1);if(b===a.open&&!c)return null;e.getRoot(d).expandTriggerFlag=g;!h.canAsync(d,a)&&c?j.expandCollapseSonNode(d,a,b,!0,n):(a.open=!b,j.switchNode(this.setting,a),n());return b},getNodes:function(){return e.getNodes(d)},getNodeByParam:function(a,b,c){return!a?null:e.getNodeByParam(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b)},getNodeByTId:function(a){return e.getNodeCache(d,a)},getNodesByParam:function(a,b,c){return!a?null:e.getNodesByParam(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b)},getNodesByParamFuzzy:function(a, |
| | | b,c){return!a?null:e.getNodesByParamFuzzy(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b)},getNodesByFilter:function(a,b,c,f){b=!!b;return!a||typeof a!="function"?b?null:[]:e.getNodesByFilter(d,c?e.nodeChildren(d,c):e.getNodes(d),a,b,f)},getNodeIndex:function(a){if(!a)return null;for(var b=a.parentTId?a.getParentNode():e.getRoot(d),b=e.nodeChildren(d,b),c=0,f=b.length;c<f;c++)if(b[c]==a)return c;return-1},getSelectedNodes:function(){for(var a=[],b=e.getRoot(d).curSelectedList,c=0,f=b.length;c<f;c++)a.push(b[c]); |
| | | return a},isSelectedNode:function(a){return e.isSelectedNode(d,a)},reAsyncChildNodesPromise:function(a,b,c){return new Promise(function(d,e){try{f.reAsyncChildNodes(a,b,c,function(){d(a)})}catch(g){e(g)}})},reAsyncChildNodes:function(a,b,c,f){if(this.setting.async.enable){var h=!a;h&&(a=e.getRoot(d));if(b=="refresh"){for(var b=e.nodeChildren(d,a),n=0,r=b?b.length:0;n<r;n++)e.removeNodeCache(d,b[n]);e.removeSelectedNode(d);e.nodeChildren(d,a,[]);h?this.setting.treeObj.empty():l(a,g.id.UL,d).empty()}j.asyncNode(this.setting, |
| | | h?null:a,!!c,f)}},refresh:function(){this.setting.treeObj.empty();var a=e.getRoot(d),b=e.nodeChildren(d,a);e.initRoot(d);e.nodeChildren(d,a,b);e.initCache(d);j.createNodes(d,0,e.nodeChildren(d,a),null,-1)},removeChildNodes:function(a){if(!a)return null;var b=e.nodeChildren(d,a);j.removeChildNodes(d,a);return b?b:null},removeNode:function(a,b){a&&(b=!!b,b&&h.apply(d.callback.beforeRemove,[d.treeId,a],!0)==!1||(j.removeNode(d,a),b&&this.setting.treeObj.trigger(g.event.REMOVE,[d.treeId,a])))},selectNode:function(a, |
| | | b,c){function e(){if(!c){var b=l(a,d).get(0);j.scrollIntoView(d,b)}}if(a&&h.uCanDo(d)){b=d.view.selectedMulti&&b;if(a.parentTId)j.expandCollapseParentNode(d,a.getParentNode(),!0,!1,e);else if(!c)try{l(a,d).focus().blur()}catch(f){}j.selectNode(d,a,b)}},transformTozTreeNodes:function(a){return e.transformTozTreeFormat(d,a)},transformToArray:function(a){return e.transformToArrayFormat(d,a)},updateNode:function(a){a&&l(a,d).get(0)&&h.uCanDo(d)&&(j.setNodeName(d,a),j.setNodeTarget(d,a),j.setNodeUrl(d, |
| | | a),j.setNodeLineIcos(d,a),j.setNodeFontCss(d,a))}};a.treeTools=f;e.setZTreeTools(d,f);(c=e.nodeChildren(d,a))&&c.length>0?j.createNodes(d,0,c,null,-1):d.async.enable&&d.async.url&&d.async.url!==""&&j.asyncNode(d);return f}};var Q=r.fn.zTree,l=h.$,g=Q.consts})(jQuery); |
New file |
| | |
| | | /* |
| | | * JQuery zTree excheck v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function ($) { |
| | | //default consts of excheck |
| | | var _consts = { |
| | | event: { |
| | | CHECK: "ztree_check" |
| | | }, |
| | | id: { |
| | | CHECK: "_check" |
| | | }, |
| | | checkbox: { |
| | | STYLE: "checkbox", |
| | | DEFAULT: "chk", |
| | | DISABLED: "disable", |
| | | FALSE: "false", |
| | | TRUE: "true", |
| | | FULL: "full", |
| | | PART: "part", |
| | | FOCUS: "focus" |
| | | }, |
| | | radio: { |
| | | STYLE: "radio", |
| | | TYPE_ALL: "all", |
| | | TYPE_LEVEL: "level" |
| | | } |
| | | }, |
| | | //default setting of excheck |
| | | _setting = { |
| | | check: { |
| | | enable: false, |
| | | autoCheckTrigger: false, |
| | | chkStyle: _consts.checkbox.STYLE, |
| | | nocheckInherit: false, |
| | | chkDisabledInherit: false, |
| | | radioType: _consts.radio.TYPE_LEVEL, |
| | | chkboxType: { |
| | | "Y": "ps", |
| | | "N": "ps" |
| | | } |
| | | }, |
| | | data: { |
| | | key: { |
| | | checked: "checked" |
| | | } |
| | | }, |
| | | callback: { |
| | | beforeCheck: null, |
| | | onCheck: null |
| | | } |
| | | }, |
| | | //default root of excheck |
| | | _initRoot = function (setting) { |
| | | var r = data.getRoot(setting); |
| | | r.radioCheckedList = []; |
| | | }, |
| | | //default cache of excheck |
| | | _initCache = function (treeId) { |
| | | }, |
| | | //default bind event of excheck |
| | | _bindEvent = function (setting) { |
| | | var o = setting.treeObj, |
| | | c = consts.event; |
| | | o.bind(c.CHECK, function (event, srcEvent, treeId, node) { |
| | | event.srcEvent = srcEvent; |
| | | tools.apply(setting.callback.onCheck, [event, treeId, node]); |
| | | }); |
| | | }, |
| | | _unbindEvent = function (setting) { |
| | | var o = setting.treeObj, |
| | | c = consts.event; |
| | | o.unbind(c.CHECK); |
| | | }, |
| | | //default event proxy of excheck |
| | | _eventProxy = function (e) { |
| | | var target = e.target, |
| | | setting = data.getSetting(e.data.treeId), |
| | | tId = "", node = null, |
| | | nodeEventType = "", treeEventType = "", |
| | | nodeEventCallback = null, treeEventCallback = null; |
| | | |
| | | if (tools.eqs(e.type, "mouseover")) { |
| | | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode" + consts.id.CHECK) !== null) { |
| | | tId = tools.getNodeMainDom(target).id; |
| | | nodeEventType = "mouseoverCheck"; |
| | | } |
| | | } else if (tools.eqs(e.type, "mouseout")) { |
| | | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode" + consts.id.CHECK) !== null) { |
| | | tId = tools.getNodeMainDom(target).id; |
| | | nodeEventType = "mouseoutCheck"; |
| | | } |
| | | } else if (tools.eqs(e.type, "click")) { |
| | | if (setting.check.enable && tools.eqs(target.tagName, "span") && target.getAttribute("treeNode" + consts.id.CHECK) !== null) { |
| | | tId = tools.getNodeMainDom(target).id; |
| | | nodeEventType = "checkNode"; |
| | | } |
| | | } |
| | | if (tId.length > 0) { |
| | | node = data.getNodeCache(setting, tId); |
| | | switch (nodeEventType) { |
| | | case "checkNode" : |
| | | nodeEventCallback = _handler.onCheckNode; |
| | | break; |
| | | case "mouseoverCheck" : |
| | | nodeEventCallback = _handler.onMouseoverCheck; |
| | | break; |
| | | case "mouseoutCheck" : |
| | | nodeEventCallback = _handler.onMouseoutCheck; |
| | | break; |
| | | } |
| | | } |
| | | var proxyResult = { |
| | | stop: nodeEventType === "checkNode", |
| | | node: node, |
| | | nodeEventType: nodeEventType, |
| | | nodeEventCallback: nodeEventCallback, |
| | | treeEventType: treeEventType, |
| | | treeEventCallback: treeEventCallback |
| | | }; |
| | | return proxyResult |
| | | }, |
| | | //default init node of excheck |
| | | _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { |
| | | if (!n) return; |
| | | var checked = data.nodeChecked(setting, n); |
| | | n.checkedOld = checked; |
| | | if (typeof n.nocheck == "string") n.nocheck = tools.eqs(n.nocheck, "true"); |
| | | n.nocheck = !!n.nocheck || (setting.check.nocheckInherit && parentNode && !!parentNode.nocheck); |
| | | if (typeof n.chkDisabled == "string") n.chkDisabled = tools.eqs(n.chkDisabled, "true"); |
| | | n.chkDisabled = !!n.chkDisabled || (setting.check.chkDisabledInherit && parentNode && !!parentNode.chkDisabled); |
| | | if (typeof n.halfCheck == "string") n.halfCheck = tools.eqs(n.halfCheck, "true"); |
| | | n.halfCheck = !!n.halfCheck; |
| | | n.check_Child_State = -1; |
| | | n.check_Focus = false; |
| | | n.getCheckStatus = function () { |
| | | return data.getCheckStatus(setting, n); |
| | | }; |
| | | |
| | | if (setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL && checked) { |
| | | var r = data.getRoot(setting); |
| | | r.radioCheckedList.push(n); |
| | | } |
| | | }, |
| | | //add dom for check |
| | | _beforeA = function (setting, node, html) { |
| | | if (setting.check.enable) { |
| | | data.makeChkFlag(setting, node); |
| | | html.push("<span ID='", node.tId, consts.id.CHECK, "' class='", view.makeChkClass(setting, node), "' treeNode", consts.id.CHECK, (node.nocheck === true ? " style='display:none;'" : ""), "></span>"); |
| | | } |
| | | }, |
| | | //update zTreeObj, add method of check |
| | | _zTreeTools = function (setting, zTreeTools) { |
| | | zTreeTools.checkNode = function (node, checked, checkTypeFlag, callbackFlag) { |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | if (node.chkDisabled === true) return; |
| | | if (checked !== true && checked !== false) { |
| | | checked = !nodeChecked; |
| | | } |
| | | callbackFlag = !!callbackFlag; |
| | | |
| | | if (nodeChecked === checked && !checkTypeFlag) { |
| | | return; |
| | | } else if (callbackFlag && tools.apply(this.setting.callback.beforeCheck, [this.setting.treeId, node], true) == false) { |
| | | return; |
| | | } |
| | | if (tools.uCanDo(this.setting) && this.setting.check.enable && node.nocheck !== true) { |
| | | data.nodeChecked(setting, node, checked); |
| | | var checkObj = $$(node, consts.id.CHECK, this.setting); |
| | | if (checkTypeFlag || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node); |
| | | view.setChkClass(this.setting, checkObj, node); |
| | | view.repairParentChkClassWithSelf(this.setting, node); |
| | | if (callbackFlag) { |
| | | this.setting.treeObj.trigger(consts.event.CHECK, [null, this.setting.treeId, node]); |
| | | } |
| | | } |
| | | } |
| | | |
| | | zTreeTools.checkAllNodes = function (checked) { |
| | | view.repairAllChk(this.setting, !!checked); |
| | | } |
| | | |
| | | zTreeTools.getCheckedNodes = function (checked) { |
| | | var checked = (checked !== false); |
| | | var children = data.nodeChildren(setting, data.getRoot(this.setting)); |
| | | return data.getTreeCheckedNodes(this.setting, children, checked); |
| | | } |
| | | |
| | | zTreeTools.getChangeCheckedNodes = function () { |
| | | var children = data.nodeChildren(setting, data.getRoot(this.setting)); |
| | | return data.getTreeChangeCheckedNodes(this.setting, children); |
| | | } |
| | | |
| | | zTreeTools.setChkDisabled = function (node, disabled, inheritParent, inheritChildren) { |
| | | disabled = !!disabled; |
| | | inheritParent = !!inheritParent; |
| | | inheritChildren = !!inheritChildren; |
| | | view.repairSonChkDisabled(this.setting, node, disabled, inheritChildren); |
| | | view.repairParentChkDisabled(this.setting, node.getParentNode(), disabled, inheritParent); |
| | | } |
| | | |
| | | var _updateNode = zTreeTools.updateNode; |
| | | zTreeTools.updateNode = function (node, checkTypeFlag) { |
| | | if (_updateNode) _updateNode.apply(zTreeTools, arguments); |
| | | if (!node || !this.setting.check.enable) return; |
| | | var nObj = $$(node, this.setting); |
| | | if (nObj.get(0) && tools.uCanDo(this.setting)) { |
| | | var checkObj = $$(node, consts.id.CHECK, this.setting); |
| | | if (checkTypeFlag == true || this.setting.check.chkStyle === consts.radio.STYLE) view.checkNodeRelation(this.setting, node); |
| | | view.setChkClass(this.setting, checkObj, node); |
| | | view.repairParentChkClassWithSelf(this.setting, node); |
| | | } |
| | | } |
| | | }, |
| | | //method of operate data |
| | | _data = { |
| | | getRadioCheckedList: function (setting) { |
| | | var checkedList = data.getRoot(setting).radioCheckedList; |
| | | for (var i = 0, j = checkedList.length; i < j; i++) { |
| | | if (!data.getNodeCache(setting, checkedList[i].tId)) { |
| | | checkedList.splice(i, 1); |
| | | i--; |
| | | j--; |
| | | } |
| | | } |
| | | return checkedList; |
| | | }, |
| | | getCheckStatus: function (setting, node) { |
| | | if (!setting.check.enable || node.nocheck || node.chkDisabled) return null; |
| | | var checked = data.nodeChecked(setting, node), |
| | | r = { |
| | | checked: checked, |
| | | half: node.halfCheck ? node.halfCheck : (setting.check.chkStyle == consts.radio.STYLE ? (node.check_Child_State === 2) : (checked ? (node.check_Child_State > -1 && node.check_Child_State < 2) : (node.check_Child_State > 0))) |
| | | }; |
| | | return r; |
| | | }, |
| | | getTreeCheckedNodes: function (setting, nodes, checked, results) { |
| | | if (!nodes) return []; |
| | | var onlyOne = (checked && setting.check.chkStyle == consts.radio.STYLE && setting.check.radioType == consts.radio.TYPE_ALL); |
| | | results = !results ? [] : results; |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | var children = data.nodeChildren(setting, node); |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | if (node.nocheck !== true && node.chkDisabled !== true && nodeChecked == checked) { |
| | | results.push(node); |
| | | if (onlyOne) { |
| | | break; |
| | | } |
| | | } |
| | | data.getTreeCheckedNodes(setting, children, checked, results); |
| | | if (onlyOne && results.length > 0) { |
| | | break; |
| | | } |
| | | } |
| | | return results; |
| | | }, |
| | | getTreeChangeCheckedNodes: function (setting, nodes, results) { |
| | | if (!nodes) return []; |
| | | results = !results ? [] : results; |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | var node = nodes[i]; |
| | | var children = data.nodeChildren(setting, node); |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | if (node.nocheck !== true && node.chkDisabled !== true && nodeChecked != node.checkedOld) { |
| | | results.push(node); |
| | | } |
| | | data.getTreeChangeCheckedNodes(setting, children, results); |
| | | } |
| | | return results; |
| | | }, |
| | | makeChkFlag: function (setting, node) { |
| | | if (!node) return; |
| | | var chkFlag = -1; |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children) { |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | var cNode = children[i]; |
| | | var nodeChecked = data.nodeChecked(setting, cNode); |
| | | var tmp = -1; |
| | | if (setting.check.chkStyle == consts.radio.STYLE) { |
| | | if (cNode.nocheck === true || cNode.chkDisabled === true) { |
| | | tmp = cNode.check_Child_State; |
| | | } else if (cNode.halfCheck === true) { |
| | | tmp = 2; |
| | | } else if (nodeChecked) { |
| | | tmp = 2; |
| | | } else { |
| | | tmp = cNode.check_Child_State > 0 ? 2 : 0; |
| | | } |
| | | if (tmp == 2) { |
| | | chkFlag = 2; |
| | | break; |
| | | } else if (tmp == 0) { |
| | | chkFlag = 0; |
| | | } |
| | | } else if (setting.check.chkStyle == consts.checkbox.STYLE) { |
| | | if (cNode.nocheck === true || cNode.chkDisabled === true) { |
| | | tmp = cNode.check_Child_State; |
| | | } else if (cNode.halfCheck === true) { |
| | | tmp = 1; |
| | | } else if (nodeChecked) { |
| | | tmp = (cNode.check_Child_State === -1 || cNode.check_Child_State === 2) ? 2 : 1; |
| | | } else { |
| | | tmp = (cNode.check_Child_State > 0) ? 1 : 0; |
| | | } |
| | | if (tmp === 1) { |
| | | chkFlag = 1; |
| | | break; |
| | | } else if (tmp === 2 && chkFlag > -1 && i > 0 && tmp !== chkFlag) { |
| | | chkFlag = 1; |
| | | break; |
| | | } else if (chkFlag === 2 && tmp > -1 && tmp < 2) { |
| | | chkFlag = 1; |
| | | break; |
| | | } else if (tmp > -1) { |
| | | chkFlag = tmp; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | node.check_Child_State = chkFlag; |
| | | } |
| | | }, |
| | | //method of event proxy |
| | | _event = {}, |
| | | //method of event handler |
| | | _handler = { |
| | | onCheckNode: function (event, node) { |
| | | if (node.chkDisabled === true) return false; |
| | | var setting = data.getSetting(event.data.treeId); |
| | | if (tools.apply(setting.callback.beforeCheck, [setting.treeId, node], true) == false) return true; |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | data.nodeChecked(setting, node, !nodeChecked); |
| | | view.checkNodeRelation(setting, node); |
| | | var checkObj = $$(node, consts.id.CHECK, setting); |
| | | view.setChkClass(setting, checkObj, node); |
| | | view.repairParentChkClassWithSelf(setting, node); |
| | | setting.treeObj.trigger(consts.event.CHECK, [event, setting.treeId, node]); |
| | | return true; |
| | | }, |
| | | onMouseoverCheck: function (event, node) { |
| | | if (node.chkDisabled === true) return false; |
| | | var setting = data.getSetting(event.data.treeId), |
| | | checkObj = $$(node, consts.id.CHECK, setting); |
| | | node.check_Focus = true; |
| | | view.setChkClass(setting, checkObj, node); |
| | | return true; |
| | | }, |
| | | onMouseoutCheck: function (event, node) { |
| | | if (node.chkDisabled === true) return false; |
| | | var setting = data.getSetting(event.data.treeId), |
| | | checkObj = $$(node, consts.id.CHECK, setting); |
| | | node.check_Focus = false; |
| | | view.setChkClass(setting, checkObj, node); |
| | | return true; |
| | | } |
| | | }, |
| | | //method of tools for zTree |
| | | _tools = {}, |
| | | //method of operate ztree dom |
| | | _view = { |
| | | checkNodeRelation: function (setting, node) { |
| | | var pNode, i, l, |
| | | r = consts.radio; |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | if (setting.check.chkStyle == r.STYLE) { |
| | | var checkedList = data.getRadioCheckedList(setting); |
| | | if (nodeChecked) { |
| | | if (setting.check.radioType == r.TYPE_ALL) { |
| | | for (i = checkedList.length - 1; i >= 0; i--) { |
| | | pNode = checkedList[i]; |
| | | var pNodeChecked = data.nodeChecked(setting, pNode); |
| | | if (pNodeChecked && pNode != node) { |
| | | data.nodeChecked(setting, pNode, false); |
| | | checkedList.splice(i, 1); |
| | | |
| | | view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode); |
| | | if (pNode.parentTId != node.parentTId) { |
| | | view.repairParentChkClassWithSelf(setting, pNode); |
| | | } |
| | | } |
| | | } |
| | | checkedList.push(node); |
| | | } else { |
| | | var parentNode = (node.parentTId) ? node.getParentNode() : data.getRoot(setting); |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | for (i = 0, l = children.length; i < l; i++) { |
| | | pNode = children[i]; |
| | | var pNodeChecked = data.nodeChecked(setting, pNode); |
| | | if (pNodeChecked && pNode != node) { |
| | | data.nodeChecked(setting, pNode, false); |
| | | view.setChkClass(setting, $$(pNode, consts.id.CHECK, setting), pNode); |
| | | } |
| | | } |
| | | } |
| | | } else if (setting.check.radioType == r.TYPE_ALL) { |
| | | for (i = 0, l = checkedList.length; i < l; i++) { |
| | | if (node == checkedList[i]) { |
| | | checkedList.splice(i, 1); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | var children = data.nodeChildren(setting, node); |
| | | if (nodeChecked && (!children || children.length == 0 || setting.check.chkboxType.Y.indexOf("s") > -1)) { |
| | | view.setSonNodeCheckBox(setting, node, true); |
| | | } |
| | | if (!nodeChecked && (!children || children.length == 0 || setting.check.chkboxType.N.indexOf("s") > -1)) { |
| | | view.setSonNodeCheckBox(setting, node, false); |
| | | } |
| | | if (nodeChecked && setting.check.chkboxType.Y.indexOf("p") > -1) { |
| | | view.setParentNodeCheckBox(setting, node, true); |
| | | } |
| | | if (!nodeChecked && setting.check.chkboxType.N.indexOf("p") > -1) { |
| | | view.setParentNodeCheckBox(setting, node, false); |
| | | } |
| | | } |
| | | }, |
| | | makeChkClass: function (setting, node) { |
| | | var c = consts.checkbox, r = consts.radio, |
| | | fullStyle = ""; |
| | | var nodeChecked = data.nodeChecked(setting, node); |
| | | if (node.chkDisabled === true) { |
| | | fullStyle = c.DISABLED; |
| | | } else if (node.halfCheck) { |
| | | fullStyle = c.PART; |
| | | } else if (setting.check.chkStyle == r.STYLE) { |
| | | fullStyle = (node.check_Child_State < 1) ? c.FULL : c.PART; |
| | | } else { |
| | | fullStyle = nodeChecked ? ((node.check_Child_State === 2 || node.check_Child_State === -1) ? c.FULL : c.PART) : ((node.check_Child_State < 1) ? c.FULL : c.PART); |
| | | } |
| | | var chkName = setting.check.chkStyle + "_" + (nodeChecked ? c.TRUE : c.FALSE) + "_" + fullStyle; |
| | | chkName = (node.check_Focus && node.chkDisabled !== true) ? chkName + "_" + c.FOCUS : chkName; |
| | | return consts.className.BUTTON + " " + c.DEFAULT + " " + chkName; |
| | | }, |
| | | repairAllChk: function (setting, checked) { |
| | | if (setting.check.enable && setting.check.chkStyle === consts.checkbox.STYLE) { |
| | | var root = data.getRoot(setting); |
| | | var children = data.nodeChildren(setting, root); |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | var node = children[i]; |
| | | if (node.nocheck !== true && node.chkDisabled !== true) { |
| | | data.nodeChecked(setting, node, checked); |
| | | } |
| | | view.setSonNodeCheckBox(setting, node, checked); |
| | | } |
| | | } |
| | | }, |
| | | repairChkClass: function (setting, node) { |
| | | if (!node) return; |
| | | data.makeChkFlag(setting, node); |
| | | if (node.nocheck !== true) { |
| | | var checkObj = $$(node, consts.id.CHECK, setting); |
| | | view.setChkClass(setting, checkObj, node); |
| | | } |
| | | }, |
| | | repairParentChkClass: function (setting, node) { |
| | | if (!node || !node.parentTId) return; |
| | | var pNode = node.getParentNode(); |
| | | view.repairChkClass(setting, pNode); |
| | | view.repairParentChkClass(setting, pNode); |
| | | }, |
| | | repairParentChkClassWithSelf: function (setting, node) { |
| | | if (!node) return; |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children && children.length > 0) { |
| | | view.repairParentChkClass(setting, children[0]); |
| | | } else { |
| | | view.repairParentChkClass(setting, node); |
| | | } |
| | | }, |
| | | repairSonChkDisabled: function (setting, node, chkDisabled, inherit) { |
| | | if (!node) return; |
| | | if (node.chkDisabled != chkDisabled) { |
| | | node.chkDisabled = chkDisabled; |
| | | } |
| | | view.repairChkClass(setting, node); |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children && inherit) { |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | var sNode = children[i]; |
| | | view.repairSonChkDisabled(setting, sNode, chkDisabled, inherit); |
| | | } |
| | | } |
| | | }, |
| | | repairParentChkDisabled: function (setting, node, chkDisabled, inherit) { |
| | | if (!node) return; |
| | | if (node.chkDisabled != chkDisabled && inherit) { |
| | | node.chkDisabled = chkDisabled; |
| | | } |
| | | view.repairChkClass(setting, node); |
| | | view.repairParentChkDisabled(setting, node.getParentNode(), chkDisabled, inherit); |
| | | }, |
| | | setChkClass: function (setting, obj, node) { |
| | | if (!obj) return; |
| | | if (node.nocheck === true) { |
| | | obj.hide(); |
| | | } else { |
| | | obj.show(); |
| | | } |
| | | obj.attr('class', view.makeChkClass(setting, node)); |
| | | }, |
| | | setParentNodeCheckBox: function (setting, node, value, srcNode) { |
| | | var checkObj = $$(node, consts.id.CHECK, setting); |
| | | if (!srcNode) srcNode = node; |
| | | data.makeChkFlag(setting, node); |
| | | if (node.nocheck !== true && node.chkDisabled !== true) { |
| | | data.nodeChecked(setting, node, value); |
| | | view.setChkClass(setting, checkObj, node); |
| | | if (setting.check.autoCheckTrigger && node != srcNode) { |
| | | setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]); |
| | | } |
| | | } |
| | | if (node.parentTId) { |
| | | var pSign = true; |
| | | if (!value) { |
| | | var pNodes = data.nodeChildren(setting, node.getParentNode()); |
| | | for (var i = 0, l = pNodes.length; i < l; i++) { |
| | | var pNode = pNodes[i]; |
| | | var nodeChecked = data.nodeChecked(setting, pNode); |
| | | if ((pNode.nocheck !== true && pNode.chkDisabled !== true && nodeChecked) |
| | | || ((pNode.nocheck === true || pNode.chkDisabled === true) && pNode.check_Child_State > 0)) { |
| | | pSign = false; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (pSign) { |
| | | view.setParentNodeCheckBox(setting, node.getParentNode(), value, srcNode); |
| | | } |
| | | } |
| | | }, |
| | | setSonNodeCheckBox: function (setting, node, value, srcNode) { |
| | | if (!node) return; |
| | | var checkObj = $$(node, consts.id.CHECK, setting); |
| | | if (!srcNode) srcNode = node; |
| | | |
| | | var hasDisable = false; |
| | | var children = data.nodeChildren(setting, node); |
| | | if (children) { |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | var sNode = children[i]; |
| | | view.setSonNodeCheckBox(setting, sNode, value, srcNode); |
| | | if (sNode.chkDisabled === true) hasDisable = true; |
| | | } |
| | | } |
| | | |
| | | if (node != data.getRoot(setting) && node.chkDisabled !== true) { |
| | | if (hasDisable && node.nocheck !== true) { |
| | | data.makeChkFlag(setting, node); |
| | | } |
| | | if (node.nocheck !== true && node.chkDisabled !== true) { |
| | | data.nodeChecked(setting, node, value); |
| | | if (!hasDisable) node.check_Child_State = (children && children.length > 0) ? (value ? 2 : 0) : -1; |
| | | } else { |
| | | node.check_Child_State = -1; |
| | | } |
| | | view.setChkClass(setting, checkObj, node); |
| | | if (setting.check.autoCheckTrigger && node != srcNode && node.nocheck !== true && node.chkDisabled !== true) { |
| | | setting.treeObj.trigger(consts.event.CHECK, [null, setting.treeId, node]); |
| | | } |
| | | } |
| | | |
| | | } |
| | | }, |
| | | |
| | | _z = { |
| | | tools: _tools, |
| | | view: _view, |
| | | event: _event, |
| | | data: _data |
| | | }; |
| | | $.extend(true, $.fn.zTree.consts, _consts); |
| | | $.extend(true, $.fn.zTree._z, _z); |
| | | |
| | | var zt = $.fn.zTree, |
| | | tools = zt._z.tools, |
| | | consts = zt.consts, |
| | | view = zt._z.view, |
| | | data = zt._z.data, |
| | | event = zt._z.event, |
| | | $$ = tools.$; |
| | | |
| | | data.nodeChecked = function (setting, node, newChecked) { |
| | | if (!node) { |
| | | return false; |
| | | } |
| | | var key = setting.data.key.checked; |
| | | if (typeof newChecked !== 'undefined') { |
| | | if (typeof newChecked === "string") { |
| | | newChecked = tools.eqs(newChecked, "true"); |
| | | } |
| | | newChecked = !!newChecked; |
| | | node[key] = newChecked; |
| | | } else if (typeof node[key] == "string"){ |
| | | node[key] = tools.eqs(node[key], "true"); |
| | | } else { |
| | | node[key] = !!node[key]; |
| | | } |
| | | return node[key]; |
| | | }; |
| | | |
| | | data.exSetting(_setting); |
| | | data.addInitBind(_bindEvent); |
| | | data.addInitUnBind(_unbindEvent); |
| | | data.addInitCache(_initCache); |
| | | data.addInitNode(_initNode); |
| | | data.addInitProxy(_eventProxy, true); |
| | | data.addInitRoot(_initRoot); |
| | | data.addBeforeA(_beforeA); |
| | | data.addZTreeTools(_zTreeTools); |
| | | |
| | | var _createNodes = view.createNodes; |
| | | view.createNodes = function (setting, level, nodes, parentNode, index) { |
| | | if (_createNodes) _createNodes.apply(view, arguments); |
| | | if (!nodes) return; |
| | | view.repairParentChkClassWithSelf(setting, parentNode); |
| | | } |
| | | var _removeNode = view.removeNode; |
| | | view.removeNode = function (setting, node) { |
| | | var parentNode = node.getParentNode(); |
| | | if (_removeNode) _removeNode.apply(view, arguments); |
| | | if (!node || !parentNode) return; |
| | | view.repairChkClass(setting, parentNode); |
| | | view.repairParentChkClass(setting, parentNode); |
| | | } |
| | | |
| | | var _appendNodes = view.appendNodes; |
| | | view.appendNodes = function (setting, level, nodes, parentNode, index, initFlag, openFlag) { |
| | | var html = ""; |
| | | if (_appendNodes) { |
| | | html = _appendNodes.apply(view, arguments); |
| | | } |
| | | if (parentNode) { |
| | | data.makeChkFlag(setting, parentNode); |
| | | } |
| | | return html; |
| | | } |
| | | })(jQuery); |
New file |
| | |
| | | /* |
| | | * JQuery zTree excheck v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function(m){var p,q,r,o={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},v={check:{enable:!1,autoCheckTrigger:!1,chkStyle:o.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:o.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};p=function(c, |
| | | a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId);if(i.apply(b.callback.beforeCheck,[b.treeId,a],!0)==!1)return!0;var d=f.nodeChecked(b,a);f.nodeChecked(b,a,!d);e.checkNodeRelation(b,a);d=n(a,h.id.CHECK,b);e.setChkClass(b,d,a);e.repairParentChkClassWithSelf(b,a);b.treeObj.trigger(h.event.CHECK,[c,b.treeId,a]);return!0};q=function(c,a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,h.id.CHECK,b);a.check_Focus=!0;e.setChkClass(b,d,a);return!0};r=function(c, |
| | | a){if(a.chkDisabled===!0)return!1;var b=f.getSetting(c.data.treeId),d=n(a,h.id.CHECK,b);a.check_Focus=!1;e.setChkClass(b,d,a);return!0};m.extend(!0,m.fn.zTree.consts,o);m.extend(!0,m.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(c,a){var b,d,j;d=h.radio;b=f.nodeChecked(c,a);if(c.check.chkStyle==d.STYLE){var g=f.getRadioCheckedList(c);if(b)if(c.check.radioType==d.TYPE_ALL){for(d=g.length-1;d>=0;d--){b=g[d];var k=f.nodeChecked(c,b);k&&b!=a&&(f.nodeChecked(c,b,!1),g.splice(d,1),e.setChkClass(c, |
| | | n(b,h.id.CHECK,c),b),b.parentTId!=a.parentTId&&e.repairParentChkClassWithSelf(c,b))}g.push(a)}else{g=a.parentTId?a.getParentNode():f.getRoot(c);g=f.nodeChildren(c,g);for(d=0,j=g.length;d<j;d++)if(b=g[d],(k=f.nodeChecked(c,b))&&b!=a)f.nodeChecked(c,b,!1),e.setChkClass(c,n(b,h.id.CHECK,c),b)}else if(c.check.radioType==d.TYPE_ALL)for(d=0,j=g.length;d<j;d++)if(a==g[d]){g.splice(d,1);break}}else g=f.nodeChildren(c,a),b&&(!g||g.length==0||c.check.chkboxType.Y.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,a, |
| | | !0),!b&&(!g||g.length==0||c.check.chkboxType.N.indexOf("s")>-1)&&e.setSonNodeCheckBox(c,a,!1),b&&c.check.chkboxType.Y.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!0),!b&&c.check.chkboxType.N.indexOf("p")>-1&&e.setParentNodeCheckBox(c,a,!1)},makeChkClass:function(c,a){var b=h.checkbox,d=h.radio,j="",g=f.nodeChecked(c,a),j=a.chkDisabled===!0?b.DISABLED:a.halfCheck?b.PART:c.check.chkStyle==d.STYLE?a.check_Child_State<1?b.FULL:b.PART:g?a.check_Child_State===2||a.check_Child_State===-1?b.FULL:b.PART: |
| | | a.check_Child_State<1?b.FULL:b.PART,d=c.check.chkStyle+"_"+(g?b.TRUE:b.FALSE)+"_"+j,d=a.check_Focus&&a.chkDisabled!==!0?d+"_"+b.FOCUS:d;return h.className.BUTTON+" "+b.DEFAULT+" "+d},repairAllChk:function(c,a){if(c.check.enable&&c.check.chkStyle===h.checkbox.STYLE)for(var b=f.getRoot(c),b=f.nodeChildren(c,b),d=0,j=b.length;d<j;d++){var g=b[d];g.nocheck!==!0&&g.chkDisabled!==!0&&f.nodeChecked(c,g,a);e.setSonNodeCheckBox(c,g,a)}},repairChkClass:function(c,a){if(a&&(f.makeChkFlag(c,a),a.nocheck!==!0)){var b= |
| | | n(a,h.id.CHECK,c);e.setChkClass(c,b,a)}},repairParentChkClass:function(c,a){if(a&&a.parentTId){var b=a.getParentNode();e.repairChkClass(c,b);e.repairParentChkClass(c,b)}},repairParentChkClassWithSelf:function(c,a){if(a){var b=f.nodeChildren(c,a);b&&b.length>0?e.repairParentChkClass(c,b[0]):e.repairParentChkClass(c,a)}},repairSonChkDisabled:function(c,a,b,d){if(a){if(a.chkDisabled!=b)a.chkDisabled=b;e.repairChkClass(c,a);if((a=f.nodeChildren(c,a))&&d)for(var j=0,g=a.length;j<g;j++)e.repairSonChkDisabled(c, |
| | | a[j],b,d)}},repairParentChkDisabled:function(c,a,b,d){if(a){if(a.chkDisabled!=b&&d)a.chkDisabled=b;e.repairChkClass(c,a);e.repairParentChkDisabled(c,a.getParentNode(),b,d)}},setChkClass:function(c,a,b){a&&(b.nocheck===!0?a.hide():a.show(),a.attr("class",e.makeChkClass(c,b)))},setParentNodeCheckBox:function(c,a,b,d){var j=n(a,h.id.CHECK,c);d||(d=a);f.makeChkFlag(c,a);a.nocheck!==!0&&a.chkDisabled!==!0&&(f.nodeChecked(c,a,b),e.setChkClass(c,j,a),c.check.autoCheckTrigger&&a!=d&&c.treeObj.trigger(h.event.CHECK, |
| | | [null,c.treeId,a]));if(a.parentTId){j=!0;if(!b)for(var g=f.nodeChildren(c,a.getParentNode()),k=0,w=g.length;k<w;k++){var l=g[k],i=f.nodeChecked(c,l);if(l.nocheck!==!0&&l.chkDisabled!==!0&&i||(l.nocheck===!0||l.chkDisabled===!0)&&l.check_Child_State>0){j=!1;break}}j&&e.setParentNodeCheckBox(c,a.getParentNode(),b,d)}},setSonNodeCheckBox:function(c,a,b,d){if(a){var j=n(a,h.id.CHECK,c);d||(d=a);var g=!1,k=f.nodeChildren(c,a);if(k)for(var i=0,l=k.length;i<l;i++){var m=k[i];e.setSonNodeCheckBox(c,m,b,d); |
| | | m.chkDisabled===!0&&(g=!0)}if(a!=f.getRoot(c)&&a.chkDisabled!==!0){g&&a.nocheck!==!0&&f.makeChkFlag(c,a);if(a.nocheck!==!0&&a.chkDisabled!==!0){if(f.nodeChecked(c,a,b),!g)a.check_Child_State=k&&k.length>0?b?2:0:-1}else a.check_Child_State=-1;e.setChkClass(c,j,a);c.check.autoCheckTrigger&&a!=d&&a.nocheck!==!0&&a.chkDisabled!==!0&&c.treeObj.trigger(h.event.CHECK,[null,c.treeId,a])}}}},event:{},data:{getRadioCheckedList:function(c){for(var a=f.getRoot(c).radioCheckedList,b=0,d=a.length;b<d;b++)f.getNodeCache(c, |
| | | a[b].tId)||(a.splice(b,1),b--,d--);return a},getCheckStatus:function(c,a){if(!c.check.enable||a.nocheck||a.chkDisabled)return null;var b=f.nodeChecked(c,a);return{checked:b,half:a.halfCheck?a.halfCheck:c.check.chkStyle==h.radio.STYLE?a.check_Child_State===2:b?a.check_Child_State>-1&&a.check_Child_State<2:a.check_Child_State>0}},getTreeCheckedNodes:function(c,a,b,d){if(!a)return[];for(var j=b&&c.check.chkStyle==h.radio.STYLE&&c.check.radioType==h.radio.TYPE_ALL,d=!d?[]:d,g=0,e=a.length;g<e;g++){var i= |
| | | a[g],l=f.nodeChildren(c,i),m=f.nodeChecked(c,i);if(i.nocheck!==!0&&i.chkDisabled!==!0&&m==b&&(d.push(i),j))break;f.getTreeCheckedNodes(c,l,b,d);if(j&&d.length>0)break}return d},getTreeChangeCheckedNodes:function(c,a,b){if(!a)return[];for(var b=!b?[]:b,d=0,j=a.length;d<j;d++){var g=a[d],e=f.nodeChildren(c,g),h=f.nodeChecked(c,g);g.nocheck!==!0&&g.chkDisabled!==!0&&h!=g.checkedOld&&b.push(g);f.getTreeChangeCheckedNodes(c,e,b)}return b},makeChkFlag:function(c,a){if(a){var b=-1,d=f.nodeChildren(c,a); |
| | | if(d)for(var j=0,g=d.length;j<g;j++){var e=d[j],i=f.nodeChecked(c,e),l=-1;if(c.check.chkStyle==h.radio.STYLE)if(l=e.nocheck===!0||e.chkDisabled===!0?e.check_Child_State:e.halfCheck===!0?2:i?2:e.check_Child_State>0?2:0,l==2){b=2;break}else l==0&&(b=0);else if(c.check.chkStyle==h.checkbox.STYLE)if(l=e.nocheck===!0||e.chkDisabled===!0?e.check_Child_State:e.halfCheck===!0?1:i?e.check_Child_State===-1||e.check_Child_State===2?2:1:e.check_Child_State>0?1:0,l===1){b=1;break}else if(l===2&&b>-1&&j>0&&l!== |
| | | b){b=1;break}else if(b===2&&l>-1&&l<2){b=1;break}else l>-1&&(b=l)}a.check_Child_State=b}}}});var m=m.fn.zTree,i=m._z.tools,h=m.consts,e=m._z.view,f=m._z.data,n=i.$;f.nodeChecked=function(c,a,b){if(!a)return!1;c=c.data.key.checked;typeof b!=="undefined"?(typeof b==="string"&&(b=i.eqs(b,"true")),a[c]=!!b):a[c]=typeof a[c]=="string"?i.eqs(a[c],"true"):!!a[c];return a[c]};f.exSetting(v);f.addInitBind(function(c){c.treeObj.bind(h.event.CHECK,function(a,b,d,e){a.srcEvent=b;i.apply(c.callback.onCheck,[a, |
| | | d,e])})});f.addInitUnBind(function(c){c.treeObj.unbind(h.event.CHECK)});f.addInitCache(function(){});f.addInitNode(function(c,a,b,d){if(b){a=f.nodeChecked(c,b);b.checkedOld=a;if(typeof b.nocheck=="string")b.nocheck=i.eqs(b.nocheck,"true");b.nocheck=!!b.nocheck||c.check.nocheckInherit&&d&&!!d.nocheck;if(typeof b.chkDisabled=="string")b.chkDisabled=i.eqs(b.chkDisabled,"true");b.chkDisabled=!!b.chkDisabled||c.check.chkDisabledInherit&&d&&!!d.chkDisabled;if(typeof b.halfCheck=="string")b.halfCheck=i.eqs(b.halfCheck, |
| | | "true");b.halfCheck=!!b.halfCheck;b.check_Child_State=-1;b.check_Focus=!1;b.getCheckStatus=function(){return f.getCheckStatus(c,b)};c.check.chkStyle==h.radio.STYLE&&c.check.radioType==h.radio.TYPE_ALL&&a&&f.getRoot(c).radioCheckedList.push(b)}});f.addInitProxy(function(c){var a=c.target,b=f.getSetting(c.data.treeId),d="",e=null,g="",k=null;if(i.eqs(c.type,"mouseover")){if(b.check.enable&&i.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+h.id.CHECK)!==null)d=i.getNodeMainDom(a).id,g="mouseoverCheck"}else if(i.eqs(c.type, |
| | | "mouseout")){if(b.check.enable&&i.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+h.id.CHECK)!==null)d=i.getNodeMainDom(a).id,g="mouseoutCheck"}else if(i.eqs(c.type,"click")&&b.check.enable&&i.eqs(a.tagName,"span")&&a.getAttribute("treeNode"+h.id.CHECK)!==null)d=i.getNodeMainDom(a).id,g="checkNode";if(d.length>0)switch(e=f.getNodeCache(b,d),g){case "checkNode":k=p;break;case "mouseoverCheck":k=q;break;case "mouseoutCheck":k=r}return{stop:g==="checkNode",node:e,nodeEventType:g,nodeEventCallback:k, |
| | | treeEventType:"",treeEventCallback:null}},!0);f.addInitRoot(function(c){f.getRoot(c).radioCheckedList=[]});f.addBeforeA(function(c,a,b){c.check.enable&&(f.makeChkFlag(c,a),b.push("<span ID='",a.tId,h.id.CHECK,"' class='",e.makeChkClass(c,a),"' treeNode",h.id.CHECK,a.nocheck===!0?" style='display:none;'":"","></span>"))});f.addZTreeTools(function(c,a){a.checkNode=function(a,b,g,k){var m=f.nodeChecked(c,a);if(a.chkDisabled!==!0&&(b!==!0&&b!==!1&&(b=!m),k=!!k,(m!==b||g)&&!(k&&i.apply(this.setting.callback.beforeCheck, |
| | | [this.setting.treeId,a],!0)==!1)&&i.uCanDo(this.setting)&&this.setting.check.enable&&a.nocheck!==!0))f.nodeChecked(c,a,b),b=n(a,h.id.CHECK,this.setting),(g||this.setting.check.chkStyle===h.radio.STYLE)&&e.checkNodeRelation(this.setting,a),e.setChkClass(this.setting,b,a),e.repairParentChkClassWithSelf(this.setting,a),k&&this.setting.treeObj.trigger(h.event.CHECK,[null,this.setting.treeId,a])};a.checkAllNodes=function(a){e.repairAllChk(this.setting,!!a)};a.getCheckedNodes=function(a){var a=a!==!1,b= |
| | | f.nodeChildren(c,f.getRoot(this.setting));return f.getTreeCheckedNodes(this.setting,b,a)};a.getChangeCheckedNodes=function(){var a=f.nodeChildren(c,f.getRoot(this.setting));return f.getTreeChangeCheckedNodes(this.setting,a)};a.setChkDisabled=function(a,b,c,f){b=!!b;c=!!c;e.repairSonChkDisabled(this.setting,a,b,!!f);e.repairParentChkDisabled(this.setting,a.getParentNode(),b,c)};var b=a.updateNode;a.updateNode=function(c,f){b&&b.apply(a,arguments);if(c&&this.setting.check.enable&&n(c,this.setting).get(0)&& |
| | | i.uCanDo(this.setting)){var g=n(c,h.id.CHECK,this.setting);(f==!0||this.setting.check.chkStyle===h.radio.STYLE)&&e.checkNodeRelation(this.setting,c);e.setChkClass(this.setting,g,c);e.repairParentChkClassWithSelf(this.setting,c)}}});var s=e.createNodes;e.createNodes=function(c,a,b,d,f){s&&s.apply(e,arguments);b&&e.repairParentChkClassWithSelf(c,d)};var t=e.removeNode;e.removeNode=function(c,a){var b=a.getParentNode();t&&t.apply(e,arguments);a&&b&&(e.repairChkClass(c,b),e.repairParentChkClass(c,b))}; |
| | | var u=e.appendNodes;e.appendNodes=function(c,a,b,d,h,g,i){var m="";u&&(m=u.apply(e,arguments));d&&f.makeChkFlag(c,d);return m}})(jQuery); |
New file |
| | |
| | | /* |
| | | * JQuery zTree exedit v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function ($) { |
| | | //default consts of exedit |
| | | var _consts = { |
| | | event: { |
| | | DRAG: "ztree_drag", |
| | | DROP: "ztree_drop", |
| | | RENAME: "ztree_rename", |
| | | DRAGMOVE: "ztree_dragmove" |
| | | }, |
| | | id: { |
| | | EDIT: "_edit", |
| | | INPUT: "_input", |
| | | REMOVE: "_remove" |
| | | }, |
| | | move: { |
| | | TYPE_INNER: "inner", |
| | | TYPE_PREV: "prev", |
| | | TYPE_NEXT: "next" |
| | | }, |
| | | node: { |
| | | CURSELECTED_EDIT: "curSelectedNode_Edit", |
| | | TMPTARGET_TREE: "tmpTargetzTree", |
| | | TMPTARGET_NODE: "tmpTargetNode" |
| | | } |
| | | }, |
| | | //default setting of exedit |
| | | _setting = { |
| | | edit: { |
| | | enable: false, |
| | | editNameSelectAll: false, |
| | | showRemoveBtn: true, |
| | | showRenameBtn: true, |
| | | removeTitle: "remove", |
| | | renameTitle: "rename", |
| | | drag: { |
| | | autoExpandTrigger: false, |
| | | isCopy: true, |
| | | isMove: true, |
| | | prev: true, |
| | | next: true, |
| | | inner: true, |
| | | minMoveSize: 5, |
| | | borderMax: 10, |
| | | borderMin: -5, |
| | | maxShowNodeNum: 5, |
| | | autoOpenTime: 500 |
| | | } |
| | | }, |
| | | view: { |
| | | addHoverDom: null, |
| | | removeHoverDom: null |
| | | }, |
| | | callback: { |
| | | beforeDrag: null, |
| | | beforeDragOpen: null, |
| | | beforeDrop: null, |
| | | beforeEditName: null, |
| | | beforeRename: null, |
| | | onDrag: null, |
| | | onDragMove: null, |
| | | onDrop: null, |
| | | onRename: null |
| | | } |
| | | }, |
| | | //default root of exedit |
| | | _initRoot = function (setting) { |
| | | var r = data.getRoot(setting), rs = data.getRoots(); |
| | | r.curEditNode = null; |
| | | r.curEditInput = null; |
| | | r.curHoverNode = null; |
| | | r.dragFlag = 0; |
| | | r.dragNodeShowBefore = []; |
| | | r.dragMaskList = new Array(); |
| | | rs.showHoverDom = true; |
| | | }, |
| | | //default cache of exedit |
| | | _initCache = function (treeId) { |
| | | }, |
| | | //default bind event of exedit |
| | | _bindEvent = function (setting) { |
| | | var o = setting.treeObj; |
| | | var c = consts.event; |
| | | o.bind(c.RENAME, function (event, treeId, treeNode, isCancel) { |
| | | tools.apply(setting.callback.onRename, [event, treeId, treeNode, isCancel]); |
| | | }); |
| | | |
| | | o.bind(c.DRAG, function (event, srcEvent, treeId, treeNodes) { |
| | | tools.apply(setting.callback.onDrag, [srcEvent, treeId, treeNodes]); |
| | | }); |
| | | |
| | | o.bind(c.DRAGMOVE, function (event, srcEvent, treeId, treeNodes) { |
| | | tools.apply(setting.callback.onDragMove, [srcEvent, treeId, treeNodes]); |
| | | }); |
| | | |
| | | o.bind(c.DROP, function (event, srcEvent, treeId, treeNodes, targetNode, moveType, isCopy) { |
| | | tools.apply(setting.callback.onDrop, [srcEvent, treeId, treeNodes, targetNode, moveType, isCopy]); |
| | | }); |
| | | }, |
| | | _unbindEvent = function (setting) { |
| | | var o = setting.treeObj; |
| | | var c = consts.event; |
| | | o.unbind(c.RENAME); |
| | | o.unbind(c.DRAG); |
| | | o.unbind(c.DRAGMOVE); |
| | | o.unbind(c.DROP); |
| | | }, |
| | | //default event proxy of exedit |
| | | _eventProxy = function (e) { |
| | | var target = e.target, |
| | | setting = data.getSetting(e.data.treeId), |
| | | relatedTarget = e.relatedTarget, |
| | | tId = "", node = null, |
| | | nodeEventType = "", treeEventType = "", |
| | | nodeEventCallback = null, treeEventCallback = null, |
| | | tmp = null; |
| | | |
| | | if (tools.eqs(e.type, "mouseover")) { |
| | | tmp = tools.getMDom(setting, target, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (tmp) { |
| | | tId = tools.getNodeMainDom(tmp).id; |
| | | nodeEventType = "hoverOverNode"; |
| | | } |
| | | } else if (tools.eqs(e.type, "mouseout")) { |
| | | tmp = tools.getMDom(setting, relatedTarget, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (!tmp) { |
| | | tId = "remove"; |
| | | nodeEventType = "hoverOutNode"; |
| | | } |
| | | } else if (tools.eqs(e.type, "mousedown")) { |
| | | tmp = tools.getMDom(setting, target, [{tagName: "a", attrName: "treeNode" + consts.id.A}]); |
| | | if (tmp) { |
| | | tId = tools.getNodeMainDom(tmp).id; |
| | | nodeEventType = "mousedownNode"; |
| | | } |
| | | } |
| | | if (tId.length > 0) { |
| | | node = data.getNodeCache(setting, tId); |
| | | switch (nodeEventType) { |
| | | case "mousedownNode" : |
| | | nodeEventCallback = _handler.onMousedownNode; |
| | | break; |
| | | case "hoverOverNode" : |
| | | nodeEventCallback = _handler.onHoverOverNode; |
| | | break; |
| | | case "hoverOutNode" : |
| | | nodeEventCallback = _handler.onHoverOutNode; |
| | | break; |
| | | } |
| | | } |
| | | var proxyResult = { |
| | | stop: false, |
| | | node: node, |
| | | nodeEventType: nodeEventType, |
| | | nodeEventCallback: nodeEventCallback, |
| | | treeEventType: treeEventType, |
| | | treeEventCallback: treeEventCallback |
| | | }; |
| | | return proxyResult |
| | | }, |
| | | //default init node of exedit |
| | | _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { |
| | | if (!n) return; |
| | | n.isHover = false; |
| | | n.editNameFlag = false; |
| | | }, |
| | | //update zTreeObj, add method of edit |
| | | _zTreeTools = function (setting, zTreeTools) { |
| | | zTreeTools.cancelEditName = function (newName) { |
| | | var root = data.getRoot(this.setting); |
| | | if (!root.curEditNode) return; |
| | | view.cancelCurEditNode(this.setting, newName ? newName : null, true); |
| | | } |
| | | zTreeTools.copyNode = function (targetNode, node, moveType, isSilent) { |
| | | if (!node) return null; |
| | | var isParent = data.nodeIsParent(setting, targetNode); |
| | | if (targetNode && !isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) return null; |
| | | var _this = this, |
| | | newNode = tools.clone(node); |
| | | if (!targetNode) { |
| | | targetNode = null; |
| | | moveType = consts.move.TYPE_INNER; |
| | | } |
| | | if (moveType == consts.move.TYPE_INNER) { |
| | | function copyCallback() { |
| | | view.addNodes(_this.setting, targetNode, -1, [newNode], isSilent); |
| | | } |
| | | |
| | | if (tools.canAsync(this.setting, targetNode)) { |
| | | view.asyncNode(this.setting, targetNode, isSilent, copyCallback); |
| | | } else { |
| | | copyCallback(); |
| | | } |
| | | } else { |
| | | view.addNodes(this.setting, targetNode.parentNode, -1, [newNode], isSilent); |
| | | view.moveNode(this.setting, targetNode, newNode, moveType, false, isSilent); |
| | | } |
| | | return newNode; |
| | | } |
| | | zTreeTools.editName = function (node) { |
| | | if (!node || !node.tId || node !== data.getNodeCache(this.setting, node.tId)) return; |
| | | if (node.parentTId) view.expandCollapseParentNode(this.setting, node.getParentNode(), true); |
| | | view.editNode(this.setting, node) |
| | | } |
| | | zTreeTools.moveNode = function (targetNode, node, moveType, isSilent) { |
| | | if (!node) return node; |
| | | var isParent = data.nodeIsParent(setting, targetNode); |
| | | if (targetNode && !isParent && this.setting.data.keep.leaf && moveType === consts.move.TYPE_INNER) { |
| | | return null; |
| | | } else if (targetNode && ((node.parentTId == targetNode.tId && moveType == consts.move.TYPE_INNER) || $$(node, this.setting).find("#" + targetNode.tId).length > 0)) { |
| | | return null; |
| | | } else if (!targetNode) { |
| | | targetNode = null; |
| | | } |
| | | var _this = this; |
| | | |
| | | function moveCallback() { |
| | | view.moveNode(_this.setting, targetNode, node, moveType, false, isSilent); |
| | | } |
| | | |
| | | if (tools.canAsync(this.setting, targetNode) && moveType === consts.move.TYPE_INNER) { |
| | | view.asyncNode(this.setting, targetNode, isSilent, moveCallback); |
| | | } else { |
| | | moveCallback(); |
| | | } |
| | | return node; |
| | | } |
| | | zTreeTools.setEditable = function (editable) { |
| | | this.setting.confirm.enable = editable; |
| | | return this.refresh(); |
| | | } |
| | | }, |
| | | //method of operate data |
| | | _data = { |
| | | setSonNodeLevel: function (setting, parentNode, node) { |
| | | if (!node) return; |
| | | var children = data.nodeChildren(setting, node); |
| | | node.level = (parentNode) ? parentNode.level + 1 : 0; |
| | | if (!children) return; |
| | | for (var i = 0, l = children.length; i < l; i++) { |
| | | if (children[i]) data.setSonNodeLevel(setting, node, children[i]); |
| | | } |
| | | } |
| | | }, |
| | | //method of event proxy |
| | | _event = {}, |
| | | //method of event handler |
| | | _handler = { |
| | | onHoverOverNode: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId), |
| | | root = data.getRoot(setting); |
| | | if (root.curHoverNode != node) { |
| | | _handler.onHoverOutNode(event); |
| | | } |
| | | root.curHoverNode = node; |
| | | view.addHoverDom(setting, node); |
| | | }, |
| | | onHoverOutNode: function (event, node) { |
| | | var setting = data.getSetting(event.data.treeId), |
| | | root = data.getRoot(setting); |
| | | if (root.curHoverNode && !data.isSelectedNode(setting, root.curHoverNode)) { |
| | | view.removeTreeDom(setting, root.curHoverNode); |
| | | root.curHoverNode = null; |
| | | } |
| | | }, |
| | | onMousedownNode: function (eventMouseDown, _node) { |
| | | var i, l, |
| | | setting = data.getSetting(eventMouseDown.data.treeId), |
| | | root = data.getRoot(setting), roots = data.getRoots(); |
| | | //right click can't drag & drop |
| | | if (eventMouseDown.button == 2 || !setting.confirm.enable || (!setting.confirm.drag.isCopy && !setting.confirm.drag.isMove)) return true; |
| | | |
| | | //input of edit node name can't drag & drop |
| | | var target = eventMouseDown.target, |
| | | _nodes = data.getRoot(setting).curSelectedList, |
| | | nodes = []; |
| | | if (!data.isSelectedNode(setting, _node)) { |
| | | nodes = [_node]; |
| | | } else { |
| | | for (i = 0, l = _nodes.length; i < l; i++) { |
| | | if (_nodes[i].editNameFlag && tools.eqs(target.tagName, "input") && target.getAttribute("treeNode" + consts.id.INPUT) !== null) { |
| | | return true; |
| | | } |
| | | nodes.push(_nodes[i]); |
| | | if (nodes[0].parentTId !== _nodes[i].parentTId) { |
| | | nodes = [_node]; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | view.editNodeBlur = true; |
| | | view.cancelCurEditNode(setting); |
| | | |
| | | var doc = $(setting.treeObj.get(0).ownerDocument), |
| | | body = $(setting.treeObj.get(0).ownerDocument.body), curNode, tmpArrow, tmpTarget, |
| | | isOtherTree = false, |
| | | targetSetting = setting, |
| | | sourceSetting = setting, |
| | | preNode, nextNode, |
| | | preTmpTargetNodeId = null, |
| | | preTmpMoveType = null, |
| | | tmpTargetNodeId = null, |
| | | moveType = consts.move.TYPE_INNER, |
| | | mouseDownX = eventMouseDown.clientX, |
| | | mouseDownY = eventMouseDown.clientY, |
| | | startTime = (new Date()).getTime(); |
| | | |
| | | if (tools.uCanDo(setting)) { |
| | | doc.bind("mousemove", _docMouseMove); |
| | | } |
| | | |
| | | function _docMouseMove(event) { |
| | | //avoid start drag after click node |
| | | if (root.dragFlag == 0 && Math.abs(mouseDownX - event.clientX) < setting.confirm.drag.minMoveSize |
| | | && Math.abs(mouseDownY - event.clientY) < setting.confirm.drag.minMoveSize) { |
| | | return true; |
| | | } |
| | | var i, l, tmpNode, tmpDom, tmpNodes; |
| | | body.css("cursor", "pointer"); |
| | | |
| | | if (root.dragFlag == 0) { |
| | | if (tools.apply(setting.callback.beforeDrag, [setting.treeId, nodes], true) == false) { |
| | | _docMouseUp(event); |
| | | return true; |
| | | } |
| | | |
| | | for (i = 0, l = nodes.length; i < l; i++) { |
| | | if (i == 0) { |
| | | root.dragNodeShowBefore = []; |
| | | } |
| | | tmpNode = nodes[i]; |
| | | if (data.nodeIsParent(setting, tmpNode) && tmpNode.open) { |
| | | view.expandCollapseNode(setting, tmpNode, !tmpNode.open); |
| | | root.dragNodeShowBefore[tmpNode.tId] = true; |
| | | } else { |
| | | root.dragNodeShowBefore[tmpNode.tId] = false; |
| | | } |
| | | } |
| | | |
| | | root.dragFlag = 1; |
| | | roots.showHoverDom = false; |
| | | tools.showIfameMask(setting, true); |
| | | |
| | | //sort |
| | | var isOrder = true, lastIndex = -1; |
| | | if (nodes.length > 1) { |
| | | var pNodes = nodes[0].parentTId ? data.nodeChildren(setting, nodes[0].getParentNode()) : data.getNodes(setting); |
| | | tmpNodes = []; |
| | | for (i = 0, l = pNodes.length; i < l; i++) { |
| | | if (root.dragNodeShowBefore[pNodes[i].tId] !== undefined) { |
| | | if (isOrder && lastIndex > -1 && (lastIndex + 1) !== i) { |
| | | isOrder = false; |
| | | } |
| | | tmpNodes.push(pNodes[i]); |
| | | lastIndex = i; |
| | | } |
| | | if (nodes.length === tmpNodes.length) { |
| | | nodes = tmpNodes; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (isOrder) { |
| | | preNode = nodes[0].getPreNode(); |
| | | nextNode = nodes[nodes.length - 1].getNextNode(); |
| | | } |
| | | |
| | | //set node in selected |
| | | curNode = $$("<ul class='zTreeDragUL'></ul>", setting); |
| | | for (i = 0, l = nodes.length; i < l; i++) { |
| | | tmpNode = nodes[i]; |
| | | tmpNode.editNameFlag = false; |
| | | view.selectNode(setting, tmpNode, i > 0); |
| | | view.removeTreeDom(setting, tmpNode); |
| | | |
| | | if (i > setting.confirm.drag.maxShowNodeNum - 1) { |
| | | continue; |
| | | } |
| | | |
| | | tmpDom = $$("<li id='" + tmpNode.tId + "_tmp'></li>", setting); |
| | | tmpDom.append($$(tmpNode, consts.id.A, setting).clone()); |
| | | tmpDom.css("padding", "0"); |
| | | tmpDom.children("#" + tmpNode.tId + consts.id.A).removeClass(consts.node.CURSELECTED); |
| | | curNode.append(tmpDom); |
| | | if (i == setting.confirm.drag.maxShowNodeNum - 1) { |
| | | tmpDom = $$("<li id='" + tmpNode.tId + "_moretmp'><a> ... </a></li>", setting); |
| | | curNode.append(tmpDom); |
| | | } |
| | | } |
| | | curNode.attr("id", nodes[0].tId + consts.id.UL + "_tmp"); |
| | | curNode.addClass(setting.treeObj.attr("class")); |
| | | curNode.appendTo(body); |
| | | |
| | | tmpArrow = $$("<span class='tmpzTreeMove_arrow'></span>", setting); |
| | | tmpArrow.attr("id", "zTreeMove_arrow_tmp"); |
| | | tmpArrow.appendTo(body); |
| | | |
| | | setting.treeObj.trigger(consts.event.DRAG, [event, setting.treeId, nodes]); |
| | | } |
| | | |
| | | if (root.dragFlag == 1) { |
| | | if (tmpTarget && tmpArrow.attr("id") == event.target.id && tmpTargetNodeId && (event.clientX + doc.scrollLeft() + 2) > ($("#" + tmpTargetNodeId + consts.id.A, tmpTarget).offset().left)) { |
| | | var xT = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget); |
| | | event.target = (xT.length > 0) ? xT.get(0) : event.target; |
| | | } else if (tmpTarget) { |
| | | tmpTarget.removeClass(consts.node.TMPTARGET_TREE); |
| | | if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV) |
| | | .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER); |
| | | } |
| | | tmpTarget = null; |
| | | tmpTargetNodeId = null; |
| | | |
| | | //judge drag & drop in multi ztree |
| | | isOtherTree = false; |
| | | targetSetting = setting; |
| | | var settings = data.getSettings(); |
| | | for (var s in settings) { |
| | | if (settings[s].treeId && settings[s].confirm.enable && settings[s].treeId != setting.treeId |
| | | && (event.target.id == settings[s].treeId || $(event.target).parents("#" + settings[s].treeId).length > 0)) { |
| | | isOtherTree = true; |
| | | targetSetting = settings[s]; |
| | | } |
| | | } |
| | | |
| | | var docScrollTop = doc.scrollTop(), |
| | | docScrollLeft = doc.scrollLeft(), |
| | | treeOffset = targetSetting.treeObj.offset(), |
| | | scrollHeight = targetSetting.treeObj.get(0).scrollHeight, |
| | | scrollWidth = targetSetting.treeObj.get(0).scrollWidth, |
| | | dTop = (event.clientY + docScrollTop - treeOffset.top), |
| | | dBottom = (targetSetting.treeObj.height() + treeOffset.top - event.clientY - docScrollTop), |
| | | dLeft = (event.clientX + docScrollLeft - treeOffset.left), |
| | | dRight = (targetSetting.treeObj.width() + treeOffset.left - event.clientX - docScrollLeft), |
| | | isTop = (dTop < setting.confirm.drag.borderMax && dTop > setting.confirm.drag.borderMin), |
| | | isBottom = (dBottom < setting.confirm.drag.borderMax && dBottom > setting.confirm.drag.borderMin), |
| | | isLeft = (dLeft < setting.confirm.drag.borderMax && dLeft > setting.confirm.drag.borderMin), |
| | | isRight = (dRight < setting.confirm.drag.borderMax && dRight > setting.confirm.drag.borderMin), |
| | | isTreeInner = dTop > setting.confirm.drag.borderMin && dBottom > setting.confirm.drag.borderMin && dLeft > setting.confirm.drag.borderMin && dRight > setting.confirm.drag.borderMin, |
| | | isTreeTop = (isTop && targetSetting.treeObj.scrollTop() <= 0), |
| | | isTreeBottom = (isBottom && (targetSetting.treeObj.scrollTop() + targetSetting.treeObj.height() + 10) >= scrollHeight), |
| | | isTreeLeft = (isLeft && targetSetting.treeObj.scrollLeft() <= 0), |
| | | isTreeRight = (isRight && (targetSetting.treeObj.scrollLeft() + targetSetting.treeObj.width() + 10) >= scrollWidth); |
| | | |
| | | if (event.target && tools.isChildOrSelf(event.target, targetSetting.treeId)) { |
| | | //get node <li> dom |
| | | var targetObj = event.target; |
| | | while (targetObj && targetObj.tagName && !tools.eqs(targetObj.tagName, "li") && targetObj.id != targetSetting.treeId) { |
| | | targetObj = targetObj.parentNode; |
| | | } |
| | | |
| | | var canMove = true; |
| | | //don't move to self or children of self |
| | | for (i = 0, l = nodes.length; i < l; i++) { |
| | | tmpNode = nodes[i]; |
| | | if (targetObj.id === tmpNode.tId) { |
| | | canMove = false; |
| | | break; |
| | | } else if ($$(tmpNode, setting).find("#" + targetObj.id).length > 0) { |
| | | canMove = false; |
| | | break; |
| | | } |
| | | } |
| | | if (canMove && event.target && tools.isChildOrSelf(event.target, targetObj.id + consts.id.A)) { |
| | | tmpTarget = $(targetObj); |
| | | tmpTargetNodeId = targetObj.id; |
| | | } |
| | | } |
| | | |
| | | //the mouse must be in zTree |
| | | tmpNode = nodes[0]; |
| | | if (isTreeInner && tools.isChildOrSelf(event.target, targetSetting.treeId)) { |
| | | //judge mouse move in root of ztree |
| | | if (!tmpTarget && (event.target.id == targetSetting.treeId || isTreeTop || isTreeBottom || isTreeLeft || isTreeRight) && (isOtherTree || (!isOtherTree && tmpNode.parentTId))) { |
| | | tmpTarget = targetSetting.treeObj; |
| | | } |
| | | //auto scroll top |
| | | if (isTop) { |
| | | targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop() - 10); |
| | | } else if (isBottom) { |
| | | targetSetting.treeObj.scrollTop(targetSetting.treeObj.scrollTop() + 10); |
| | | } |
| | | if (isLeft) { |
| | | targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft() - 10); |
| | | } else if (isRight) { |
| | | targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft() + 10); |
| | | } |
| | | //auto scroll left |
| | | if (tmpTarget && tmpTarget != targetSetting.treeObj && tmpTarget.offset().left < targetSetting.treeObj.offset().left) { |
| | | targetSetting.treeObj.scrollLeft(targetSetting.treeObj.scrollLeft() + tmpTarget.offset().left - targetSetting.treeObj.offset().left); |
| | | } |
| | | } |
| | | |
| | | curNode.css({ |
| | | "top": (event.clientY + docScrollTop + 3) + "px", |
| | | "left": (event.clientX + docScrollLeft + 3) + "px" |
| | | }); |
| | | |
| | | var dX = 0; |
| | | var dY = 0; |
| | | if (tmpTarget && tmpTarget.attr("id") != targetSetting.treeId) { |
| | | var tmpTargetNode = tmpTargetNodeId == null ? null : data.getNodeCache(targetSetting, tmpTargetNodeId), |
| | | isCopy = ((event.ctrlKey || event.metaKey) && setting.confirm.drag.isMove && setting.confirm.drag.isCopy) || (!setting.confirm.drag.isMove && setting.confirm.drag.isCopy), |
| | | isPrev = !!(preNode && tmpTargetNodeId === preNode.tId), |
| | | isNext = !!(nextNode && tmpTargetNodeId === nextNode.tId), |
| | | isInner = (tmpNode.parentTId && tmpNode.parentTId == tmpTargetNodeId), |
| | | canPrev = (isCopy || !isNext) && tools.apply(targetSetting.confirm.drag.prev, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.confirm.drag.prev), |
| | | canNext = (isCopy || !isPrev) && tools.apply(targetSetting.confirm.drag.next, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.confirm.drag.next), |
| | | canInner = (isCopy || !isInner) && !(targetSetting.data.keep.leaf && !data.nodeIsParent(setting, tmpTargetNode)) && tools.apply(targetSetting.confirm.drag.inner, [targetSetting.treeId, nodes, tmpTargetNode], !!targetSetting.confirm.drag.inner); |
| | | |
| | | function clearMove() { |
| | | tmpTarget = null; |
| | | tmpTargetNodeId = ""; |
| | | moveType = consts.move.TYPE_INNER; |
| | | tmpArrow.css({ |
| | | "display": "none" |
| | | }); |
| | | if (window.zTreeMoveTimer) { |
| | | clearTimeout(window.zTreeMoveTimer); |
| | | window.zTreeMoveTargetNodeTId = null |
| | | } |
| | | } |
| | | |
| | | if (!canPrev && !canNext && !canInner) { |
| | | clearMove(); |
| | | } else { |
| | | var tmpTargetA = $("#" + tmpTargetNodeId + consts.id.A, tmpTarget), |
| | | tmpNextA = tmpTargetNode.isLastNode ? null : $("#" + tmpTargetNode.getNextNode().tId + consts.id.A, tmpTarget.next()), |
| | | tmpTop = tmpTargetA.offset().top, |
| | | tmpLeft = tmpTargetA.offset().left, |
| | | prevPercent = canPrev ? (canInner ? 0.25 : (canNext ? 0.5 : 1)) : -1, |
| | | nextPercent = canNext ? (canInner ? 0.75 : (canPrev ? 0.5 : 0)) : -1, |
| | | dY_percent = (event.clientY + docScrollTop - tmpTop) / tmpTargetA.height(); |
| | | |
| | | if ((prevPercent == 1 || dY_percent <= prevPercent && dY_percent >= -.2) && canPrev) { |
| | | dX = 1 - tmpArrow.width(); |
| | | dY = tmpTop - tmpArrow.height() / 2; |
| | | moveType = consts.move.TYPE_PREV; |
| | | } else if ((nextPercent == 0 || dY_percent >= nextPercent && dY_percent <= 1.2) && canNext) { |
| | | dX = 1 - tmpArrow.width(); |
| | | dY = (tmpNextA == null || (data.nodeIsParent(setting, tmpTargetNode) && tmpTargetNode.open)) ? (tmpTop + tmpTargetA.height() - tmpArrow.height() / 2) : (tmpNextA.offset().top - tmpArrow.height() / 2); |
| | | moveType = consts.move.TYPE_NEXT; |
| | | } else if (canInner) { |
| | | dX = 5 - tmpArrow.width(); |
| | | dY = tmpTop; |
| | | moveType = consts.move.TYPE_INNER; |
| | | } else { |
| | | clearMove(); |
| | | } |
| | | |
| | | if (tmpTarget) { |
| | | tmpArrow.css({ |
| | | "display": "block", |
| | | "top": dY + "px", |
| | | "left": (tmpLeft + dX) + "px" |
| | | }); |
| | | tmpTargetA.addClass(consts.node.TMPTARGET_NODE + "_" + moveType); |
| | | |
| | | if (preTmpTargetNodeId != tmpTargetNodeId || preTmpMoveType != moveType) { |
| | | startTime = (new Date()).getTime(); |
| | | } |
| | | if (tmpTargetNode && data.nodeIsParent(setting, tmpTargetNode) && moveType == consts.move.TYPE_INNER) { |
| | | var startTimer = true; |
| | | if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId !== tmpTargetNode.tId) { |
| | | clearTimeout(window.zTreeMoveTimer); |
| | | window.zTreeMoveTargetNodeTId = null; |
| | | } else if (window.zTreeMoveTimer && window.zTreeMoveTargetNodeTId === tmpTargetNode.tId) { |
| | | startTimer = false; |
| | | } |
| | | if (startTimer) { |
| | | window.zTreeMoveTimer = setTimeout(function () { |
| | | if (moveType != consts.move.TYPE_INNER) return; |
| | | if (tmpTargetNode && data.nodeIsParent(setting, tmpTargetNode) && !tmpTargetNode.open && (new Date()).getTime() - startTime > targetSetting.confirm.drag.autoOpenTime |
| | | && tools.apply(targetSetting.callback.beforeDragOpen, [targetSetting.treeId, tmpTargetNode], true)) { |
| | | view.switchNode(targetSetting, tmpTargetNode); |
| | | if (targetSetting.confirm.drag.autoExpandTrigger) { |
| | | targetSetting.treeObj.trigger(consts.event.EXPAND, [targetSetting.treeId, tmpTargetNode]); |
| | | } |
| | | } |
| | | }, targetSetting.confirm.drag.autoOpenTime + 50); |
| | | window.zTreeMoveTargetNodeTId = tmpTargetNode.tId; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | moveType = consts.move.TYPE_INNER; |
| | | if (tmpTarget && tools.apply(targetSetting.confirm.drag.inner, [targetSetting.treeId, nodes, null], !!targetSetting.confirm.drag.inner)) { |
| | | tmpTarget.addClass(consts.node.TMPTARGET_TREE); |
| | | } else { |
| | | tmpTarget = null; |
| | | } |
| | | tmpArrow.css({ |
| | | "display": "none" |
| | | }); |
| | | if (window.zTreeMoveTimer) { |
| | | clearTimeout(window.zTreeMoveTimer); |
| | | window.zTreeMoveTargetNodeTId = null; |
| | | } |
| | | } |
| | | preTmpTargetNodeId = tmpTargetNodeId; |
| | | preTmpMoveType = moveType; |
| | | |
| | | setting.treeObj.trigger(consts.event.DRAGMOVE, [event, setting.treeId, nodes]); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | doc.bind("mouseup", _docMouseUp); |
| | | |
| | | function _docMouseUp(event) { |
| | | if (window.zTreeMoveTimer) { |
| | | clearTimeout(window.zTreeMoveTimer); |
| | | window.zTreeMoveTargetNodeTId = null; |
| | | } |
| | | preTmpTargetNodeId = null; |
| | | preTmpMoveType = null; |
| | | doc.unbind("mousemove", _docMouseMove); |
| | | doc.unbind("mouseup", _docMouseUp); |
| | | doc.unbind("selectstart", _docSelect); |
| | | body.css("cursor", ""); |
| | | if (tmpTarget) { |
| | | tmpTarget.removeClass(consts.node.TMPTARGET_TREE); |
| | | if (tmpTargetNodeId) $("#" + tmpTargetNodeId + consts.id.A, tmpTarget).removeClass(consts.node.TMPTARGET_NODE + "_" + consts.move.TYPE_PREV) |
| | | .removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_NEXT).removeClass(consts.node.TMPTARGET_NODE + "_" + _consts.move.TYPE_INNER); |
| | | } |
| | | tools.showIfameMask(setting, false); |
| | | |
| | | roots.showHoverDom = true; |
| | | if (root.dragFlag == 0) return; |
| | | root.dragFlag = 0; |
| | | |
| | | var i, l, tmpNode; |
| | | for (i = 0, l = nodes.length; i < l; i++) { |
| | | tmpNode = nodes[i]; |
| | | if (data.nodeIsParent(setting, tmpNode) && root.dragNodeShowBefore[tmpNode.tId] && !tmpNode.open) { |
| | | view.expandCollapseNode(setting, tmpNode, !tmpNode.open); |
| | | delete root.dragNodeShowBefore[tmpNode.tId]; |
| | | } |
| | | } |
| | | |
| | | if (curNode) curNode.remove(); |
| | | if (tmpArrow) tmpArrow.remove(); |
| | | |
| | | var isCopy = ((event.ctrlKey || event.metaKey) && setting.confirm.drag.isMove && setting.confirm.drag.isCopy) || (!setting.confirm.drag.isMove && setting.confirm.drag.isCopy); |
| | | if (!isCopy && tmpTarget && tmpTargetNodeId && nodes[0].parentTId && tmpTargetNodeId == nodes[0].parentTId && moveType == consts.move.TYPE_INNER) { |
| | | tmpTarget = null; |
| | | } |
| | | if (tmpTarget) { |
| | | var dragTargetNode = tmpTargetNodeId == null ? null : data.getNodeCache(targetSetting, tmpTargetNodeId); |
| | | if (tools.apply(setting.callback.beforeDrop, [targetSetting.treeId, nodes, dragTargetNode, moveType, isCopy], true) == false) { |
| | | view.selectNodes(sourceSetting, nodes); |
| | | return; |
| | | } |
| | | var newNodes = isCopy ? tools.clone(nodes) : nodes; |
| | | |
| | | function dropCallback() { |
| | | if (isOtherTree) { |
| | | if (!isCopy) { |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | view.removeNode(setting, nodes[i]); |
| | | } |
| | | } |
| | | if (moveType == consts.move.TYPE_INNER) { |
| | | view.addNodes(targetSetting, dragTargetNode, -1, newNodes); |
| | | } else { |
| | | view.addNodes(targetSetting, dragTargetNode.getParentNode(), moveType == consts.move.TYPE_PREV ? dragTargetNode.getIndex() : dragTargetNode.getIndex() + 1, newNodes); |
| | | } |
| | | } else { |
| | | if (isCopy && moveType == consts.move.TYPE_INNER) { |
| | | view.addNodes(targetSetting, dragTargetNode, -1, newNodes); |
| | | } else if (isCopy) { |
| | | view.addNodes(targetSetting, dragTargetNode.getParentNode(), moveType == consts.move.TYPE_PREV ? dragTargetNode.getIndex() : dragTargetNode.getIndex() + 1, newNodes); |
| | | } else { |
| | | if (moveType != consts.move.TYPE_NEXT) { |
| | | for (i = 0, l = newNodes.length; i < l; i++) { |
| | | view.moveNode(targetSetting, dragTargetNode, newNodes[i], moveType, false); |
| | | } |
| | | } else { |
| | | for (i = -1, l = newNodes.length - 1; i < l; l--) { |
| | | view.moveNode(targetSetting, dragTargetNode, newNodes[l], moveType, false); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | view.selectNodes(targetSetting, newNodes); |
| | | |
| | | var a = $$(newNodes[0], setting).get(0); |
| | | view.scrollIntoView(setting, a); |
| | | |
| | | setting.treeObj.trigger(consts.event.DROP, [event, targetSetting.treeId, newNodes, dragTargetNode, moveType, isCopy]); |
| | | } |
| | | |
| | | if (moveType == consts.move.TYPE_INNER && tools.canAsync(targetSetting, dragTargetNode)) { |
| | | view.asyncNode(targetSetting, dragTargetNode, false, dropCallback); |
| | | } else { |
| | | dropCallback(); |
| | | } |
| | | |
| | | } else { |
| | | view.selectNodes(sourceSetting, nodes); |
| | | setting.treeObj.trigger(consts.event.DROP, [event, setting.treeId, nodes, null, null, null]); |
| | | } |
| | | } |
| | | |
| | | doc.bind("selectstart", _docSelect); |
| | | |
| | | function _docSelect() { |
| | | return false; |
| | | } |
| | | |
| | | // 2018-03-30 FireFox has fixed this issue. |
| | | //Avoid FireFox's Bug |
| | | //If zTree Div CSS set 'overflow', so drag node outside of zTree, and event.target is error. |
| | | // if(eventMouseDown.preventDefault) { |
| | | // eventMouseDown.preventDefault(); |
| | | // } |
| | | return true; |
| | | } |
| | | }, |
| | | //method of tools for zTree |
| | | _tools = { |
| | | getAbs: function (obj) { |
| | | var oRect = obj.getBoundingClientRect(), |
| | | scrollTop = document.body.scrollTop + document.documentElement.scrollTop, |
| | | scrollLeft = document.body.scrollLeft + document.documentElement.scrollLeft; |
| | | return [oRect.left + scrollLeft, oRect.top + scrollTop]; |
| | | }, |
| | | inputFocus: function (inputObj) { |
| | | if (inputObj.get(0)) { |
| | | inputObj.focus(); |
| | | tools.setCursorPosition(inputObj.get(0), inputObj.val().length); |
| | | } |
| | | }, |
| | | inputSelect: function (inputObj) { |
| | | if (inputObj.get(0)) { |
| | | inputObj.focus(); |
| | | inputObj.select(); |
| | | } |
| | | }, |
| | | setCursorPosition: function (obj, pos) { |
| | | if (obj.setSelectionRange) { |
| | | obj.focus(); |
| | | obj.setSelectionRange(pos, pos); |
| | | } else if (obj.createTextRange) { |
| | | var range = obj.createTextRange(); |
| | | range.collapse(true); |
| | | range.moveEnd('character', pos); |
| | | range.moveStart('character', pos); |
| | | range.select(); |
| | | } |
| | | }, |
| | | showIfameMask: function (setting, showSign) { |
| | | var root = data.getRoot(setting); |
| | | //clear full mask |
| | | while (root.dragMaskList.length > 0) { |
| | | root.dragMaskList[0].remove(); |
| | | root.dragMaskList.shift(); |
| | | } |
| | | if (showSign) { |
| | | //show mask |
| | | var iframeList = $$("iframe", setting); |
| | | for (var i = 0, l = iframeList.length; i < l; i++) { |
| | | var obj = iframeList.get(i), |
| | | r = tools.getAbs(obj), |
| | | dragMask = $$("<div id='zTreeMask_" + i + "' class='zTreeMask' style='top:" + r[1] + "px; left:" + r[0] + "px; width:" + obj.offsetWidth + "px; height:" + obj.offsetHeight + "px;'></div>", setting); |
| | | dragMask.appendTo($$("body", setting)); |
| | | root.dragMaskList.push(dragMask); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | //method of operate ztree dom |
| | | _view = { |
| | | addEditBtn: function (setting, node) { |
| | | if (node.editNameFlag || $$(node, consts.id.EDIT, setting).length > 0) { |
| | | return; |
| | | } |
| | | if (!tools.apply(setting.confirm.showRenameBtn, [setting.treeId, node], setting.confirm.showRenameBtn)) { |
| | | return; |
| | | } |
| | | var aObj = $$(node, consts.id.A, setting), |
| | | editStr = "<span class='" + consts.className.BUTTON + " edit' id='" + node.tId + consts.id.EDIT + "' title='" + tools.apply(setting.confirm.renameTitle, [setting.treeId, node], setting.confirm.renameTitle) + "' treeNode" + consts.id.EDIT + " style='display:none;'></span>"; |
| | | aObj.append(editStr); |
| | | |
| | | $$(node, consts.id.EDIT, setting).bind('click', |
| | | function () { |
| | | if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeEditName, [setting.treeId, node], true) == false) return false; |
| | | view.editNode(setting, node); |
| | | return false; |
| | | } |
| | | ).show(); |
| | | }, |
| | | addRemoveBtn: function (setting, node) { |
| | | if (node.editNameFlag || $$(node, consts.id.REMOVE, setting).length > 0) { |
| | | return; |
| | | } |
| | | if (!tools.apply(setting.confirm.showRemoveBtn, [setting.treeId, node], setting.confirm.showRemoveBtn)) { |
| | | return; |
| | | } |
| | | var aObj = $$(node, consts.id.A, setting), |
| | | removeStr = "<span class='" + consts.className.BUTTON + " remove' id='" + node.tId + consts.id.REMOVE + "' title='" + tools.apply(setting.confirm.removeTitle, [setting.treeId, node], setting.confirm.removeTitle) + "' treeNode" + consts.id.REMOVE + " style='display:none;'></span>"; |
| | | aObj.append(removeStr); |
| | | |
| | | $$(node, consts.id.REMOVE, setting).bind('click', |
| | | function () { |
| | | if (!tools.uCanDo(setting) || tools.apply(setting.callback.beforeRemove, [setting.treeId, node], true) == false) return false; |
| | | view.removeNode(setting, node); |
| | | setting.treeObj.trigger(consts.event.REMOVE, [setting.treeId, node]); |
| | | return false; |
| | | } |
| | | ).bind('mousedown', |
| | | function (eventMouseDown) { |
| | | return true; |
| | | } |
| | | ).show(); |
| | | }, |
| | | addHoverDom: function (setting, node) { |
| | | if (data.getRoots().showHoverDom) { |
| | | node.isHover = true; |
| | | if (setting.confirm.enable) { |
| | | view.addEditBtn(setting, node); |
| | | view.addRemoveBtn(setting, node); |
| | | } |
| | | tools.apply(setting.view.addHoverDom, [setting.treeId, node]); |
| | | } |
| | | }, |
| | | cancelCurEditNode: function (setting, forceName, isCancel) { |
| | | var root = data.getRoot(setting), |
| | | node = root.curEditNode; |
| | | |
| | | if (node) { |
| | | var inputObj = root.curEditInput, |
| | | newName = forceName ? forceName : (isCancel ? data.nodeName(setting, node) : inputObj.val()); |
| | | if (tools.apply(setting.callback.beforeRename, [setting.treeId, node, newName, isCancel], true) === false) { |
| | | return false; |
| | | } |
| | | data.nodeName(setting, node, newName); |
| | | var aObj = $$(node, consts.id.A, setting); |
| | | aObj.removeClass(consts.node.CURSELECTED_EDIT); |
| | | inputObj.unbind(); |
| | | view.setNodeName(setting, node); |
| | | node.editNameFlag = false; |
| | | root.curEditNode = null; |
| | | root.curEditInput = null; |
| | | view.selectNode(setting, node, false); |
| | | setting.treeObj.trigger(consts.event.RENAME, [setting.treeId, node, isCancel]); |
| | | } |
| | | root.noSelection = true; |
| | | return true; |
| | | }, |
| | | editNode: function (setting, node) { |
| | | var root = data.getRoot(setting); |
| | | view.editNodeBlur = false; |
| | | if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) { |
| | | setTimeout(function () { |
| | | tools.inputFocus(root.curEditInput); |
| | | }, 0); |
| | | return; |
| | | } |
| | | node.editNameFlag = true; |
| | | view.removeTreeDom(setting, node); |
| | | view.cancelCurEditNode(setting); |
| | | view.selectNode(setting, node, false); |
| | | $$(node, consts.id.SPAN, setting).html("<input type=text class='rename' id='" + node.tId + consts.id.INPUT + "' treeNode" + consts.id.INPUT + " >"); |
| | | var inputObj = $$(node, consts.id.INPUT, setting); |
| | | inputObj.attr("value", data.nodeName(setting, node)); |
| | | if (setting.confirm.editNameSelectAll) { |
| | | tools.inputSelect(inputObj); |
| | | } else { |
| | | tools.inputFocus(inputObj); |
| | | } |
| | | |
| | | inputObj.bind('blur', function (event) { |
| | | if (!view.editNodeBlur) { |
| | | view.cancelCurEditNode(setting); |
| | | } |
| | | }).bind('keydown', function (event) { |
| | | if (event.keyCode == "13") { |
| | | view.editNodeBlur = true; |
| | | view.cancelCurEditNode(setting); |
| | | } else if (event.keyCode == "27") { |
| | | view.cancelCurEditNode(setting, null, true); |
| | | } |
| | | }).bind('click', function (event) { |
| | | return false; |
| | | }).bind('dblclick', function (event) { |
| | | return false; |
| | | }); |
| | | |
| | | $$(node, consts.id.A, setting).addClass(consts.node.CURSELECTED_EDIT); |
| | | root.curEditInput = inputObj; |
| | | root.noSelection = false; |
| | | root.curEditNode = node; |
| | | }, |
| | | moveNode: function (setting, targetNode, node, moveType, animateFlag, isSilent) { |
| | | var root = data.getRoot(setting); |
| | | if (targetNode == node) return; |
| | | if (setting.data.keep.leaf && targetNode && !data.nodeIsParent(setting, targetNode) && moveType == consts.move.TYPE_INNER) return; |
| | | var oldParentNode = (node.parentTId ? node.getParentNode() : root), |
| | | targetNodeIsRoot = (targetNode === null || targetNode == root); |
| | | if (targetNodeIsRoot && targetNode === null) targetNode = root; |
| | | if (targetNodeIsRoot) moveType = consts.move.TYPE_INNER; |
| | | var targetParentNode = (targetNode.parentTId ? targetNode.getParentNode() : root); |
| | | |
| | | if (moveType != consts.move.TYPE_PREV && moveType != consts.move.TYPE_NEXT) { |
| | | moveType = consts.move.TYPE_INNER; |
| | | } |
| | | |
| | | if (moveType == consts.move.TYPE_INNER) { |
| | | if (targetNodeIsRoot) { |
| | | //parentTId of root node is null |
| | | node.parentTId = null; |
| | | } else { |
| | | if (!data.nodeIsParent(setting, targetNode)) { |
| | | data.nodeIsParent(setting, targetNode, true); |
| | | targetNode.open = !!targetNode.open; |
| | | view.setNodeLineIcos(setting, targetNode); |
| | | } |
| | | node.parentTId = targetNode.tId; |
| | | } |
| | | } |
| | | |
| | | //move node Dom |
| | | var targetObj, target_ulObj; |
| | | if (targetNodeIsRoot) { |
| | | targetObj = setting.treeObj; |
| | | target_ulObj = targetObj; |
| | | } else { |
| | | if (!isSilent && moveType == consts.move.TYPE_INNER) { |
| | | view.expandCollapseNode(setting, targetNode, true, false); |
| | | } else if (!isSilent) { |
| | | view.expandCollapseNode(setting, targetNode.getParentNode(), true, false); |
| | | } |
| | | targetObj = $$(targetNode, setting); |
| | | target_ulObj = $$(targetNode, consts.id.UL, setting); |
| | | if (!!targetObj.get(0) && !target_ulObj.get(0)) { |
| | | var ulstr = []; |
| | | view.makeUlHtml(setting, targetNode, ulstr, ''); |
| | | targetObj.append(ulstr.join('')); |
| | | } |
| | | target_ulObj = $$(targetNode, consts.id.UL, setting); |
| | | } |
| | | var nodeDom = $$(node, setting); |
| | | if (!nodeDom.get(0)) { |
| | | nodeDom = view.appendNodes(setting, node.level, [node], null, -1, false, true).join(''); |
| | | } else if (!targetObj.get(0)) { |
| | | nodeDom.remove(); |
| | | } |
| | | if (target_ulObj.get(0) && moveType == consts.move.TYPE_INNER) { |
| | | target_ulObj.append(nodeDom); |
| | | } else if (targetObj.get(0) && moveType == consts.move.TYPE_PREV) { |
| | | targetObj.before(nodeDom); |
| | | } else if (targetObj.get(0) && moveType == consts.move.TYPE_NEXT) { |
| | | targetObj.after(nodeDom); |
| | | } |
| | | |
| | | //repair the data after move |
| | | var i, l, |
| | | tmpSrcIndex = -1, |
| | | tmpTargetIndex = 0, |
| | | oldNeighbor = null, |
| | | newNeighbor = null, |
| | | oldLevel = node.level; |
| | | var oldChildren = data.nodeChildren(setting, oldParentNode); |
| | | var targetParentChildren = data.nodeChildren(setting, targetParentNode); |
| | | var targetChildren = data.nodeChildren(setting, targetNode); |
| | | if (node.isFirstNode) { |
| | | tmpSrcIndex = 0; |
| | | if (oldChildren.length > 1) { |
| | | oldNeighbor = oldChildren[1]; |
| | | oldNeighbor.isFirstNode = true; |
| | | } |
| | | } else if (node.isLastNode) { |
| | | tmpSrcIndex = oldChildren.length - 1; |
| | | oldNeighbor = oldChildren[tmpSrcIndex - 1]; |
| | | oldNeighbor.isLastNode = true; |
| | | } else { |
| | | for (i = 0, l = oldChildren.length; i < l; i++) { |
| | | if (oldChildren[i].tId == node.tId) { |
| | | tmpSrcIndex = i; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (tmpSrcIndex >= 0) { |
| | | oldChildren.splice(tmpSrcIndex, 1); |
| | | } |
| | | if (moveType != consts.move.TYPE_INNER) { |
| | | for (i = 0, l = targetParentChildren.length; i < l; i++) { |
| | | if (targetParentChildren[i].tId == targetNode.tId) tmpTargetIndex = i; |
| | | } |
| | | } |
| | | if (moveType == consts.move.TYPE_INNER) { |
| | | if (!targetChildren) { |
| | | targetChildren = data.nodeChildren(setting, targetNode, []); |
| | | } |
| | | if (targetChildren.length > 0) { |
| | | newNeighbor = targetChildren[targetChildren.length - 1]; |
| | | newNeighbor.isLastNode = false; |
| | | } |
| | | targetChildren.splice(targetChildren.length, 0, node); |
| | | node.isLastNode = true; |
| | | node.isFirstNode = (targetChildren.length == 1); |
| | | } else if (targetNode.isFirstNode && moveType == consts.move.TYPE_PREV) { |
| | | targetParentChildren.splice(tmpTargetIndex, 0, node); |
| | | newNeighbor = targetNode; |
| | | newNeighbor.isFirstNode = false; |
| | | node.parentTId = targetNode.parentTId; |
| | | node.isFirstNode = true; |
| | | node.isLastNode = false; |
| | | |
| | | } else if (targetNode.isLastNode && moveType == consts.move.TYPE_NEXT) { |
| | | targetParentChildren.splice(tmpTargetIndex + 1, 0, node); |
| | | newNeighbor = targetNode; |
| | | newNeighbor.isLastNode = false; |
| | | node.parentTId = targetNode.parentTId; |
| | | node.isFirstNode = false; |
| | | node.isLastNode = true; |
| | | |
| | | } else { |
| | | if (moveType == consts.move.TYPE_PREV) { |
| | | targetParentChildren.splice(tmpTargetIndex, 0, node); |
| | | } else { |
| | | targetParentChildren.splice(tmpTargetIndex + 1, 0, node); |
| | | } |
| | | node.parentTId = targetNode.parentTId; |
| | | node.isFirstNode = false; |
| | | node.isLastNode = false; |
| | | } |
| | | data.fixPIdKeyValue(setting, node); |
| | | data.setSonNodeLevel(setting, node.getParentNode(), node); |
| | | |
| | | //repair node what been moved |
| | | view.setNodeLineIcos(setting, node); |
| | | view.repairNodeLevelClass(setting, node, oldLevel); |
| | | |
| | | //repair node's old parentNode dom |
| | | if (!setting.data.keep.parent && oldChildren.length < 1) { |
| | | //old parentNode has no child nodes |
| | | data.nodeIsParent(setting, oldParentNode, false); |
| | | oldParentNode.open = false; |
| | | var tmp_ulObj = $$(oldParentNode, consts.id.UL, setting), |
| | | tmp_switchObj = $$(oldParentNode, consts.id.SWITCH, setting), |
| | | tmp_icoObj = $$(oldParentNode, consts.id.ICON, setting); |
| | | view.replaceSwitchClass(oldParentNode, tmp_switchObj, consts.folder.DOCU); |
| | | view.replaceIcoClass(oldParentNode, tmp_icoObj, consts.folder.DOCU); |
| | | tmp_ulObj.css("display", "none"); |
| | | |
| | | } else if (oldNeighbor) { |
| | | //old neigbor node |
| | | view.setNodeLineIcos(setting, oldNeighbor); |
| | | } |
| | | |
| | | //new neigbor node |
| | | if (newNeighbor) { |
| | | view.setNodeLineIcos(setting, newNeighbor); |
| | | } |
| | | |
| | | //repair checkbox / radio |
| | | if (!!setting.check && setting.check.enable && view.repairChkClass) { |
| | | view.repairChkClass(setting, oldParentNode); |
| | | view.repairParentChkClassWithSelf(setting, oldParentNode); |
| | | if (oldParentNode != node.parent) |
| | | view.repairParentChkClassWithSelf(setting, node); |
| | | } |
| | | |
| | | //expand parents after move |
| | | if (!isSilent) { |
| | | view.expandCollapseParentNode(setting, node.getParentNode(), true, animateFlag); |
| | | } |
| | | }, |
| | | removeEditBtn: function (setting, node) { |
| | | $$(node, consts.id.EDIT, setting).unbind().remove(); |
| | | }, |
| | | removeRemoveBtn: function (setting, node) { |
| | | $$(node, consts.id.REMOVE, setting).unbind().remove(); |
| | | }, |
| | | removeTreeDom: function (setting, node) { |
| | | node.isHover = false; |
| | | view.removeEditBtn(setting, node); |
| | | view.removeRemoveBtn(setting, node); |
| | | tools.apply(setting.view.removeHoverDom, [setting.treeId, node]); |
| | | }, |
| | | repairNodeLevelClass: function (setting, node, oldLevel) { |
| | | if (oldLevel === node.level) return; |
| | | var liObj = $$(node, setting), |
| | | aObj = $$(node, consts.id.A, setting), |
| | | ulObj = $$(node, consts.id.UL, setting), |
| | | oldClass = consts.className.LEVEL + oldLevel, |
| | | newClass = consts.className.LEVEL + node.level; |
| | | liObj.removeClass(oldClass); |
| | | liObj.addClass(newClass); |
| | | aObj.removeClass(oldClass); |
| | | aObj.addClass(newClass); |
| | | ulObj.removeClass(oldClass); |
| | | ulObj.addClass(newClass); |
| | | }, |
| | | selectNodes: function (setting, nodes) { |
| | | for (var i = 0, l = nodes.length; i < l; i++) { |
| | | view.selectNode(setting, nodes[i], i > 0); |
| | | } |
| | | } |
| | | }, |
| | | |
| | | _z = { |
| | | tools: _tools, |
| | | view: _view, |
| | | event: _event, |
| | | data: _data |
| | | }; |
| | | $.extend(true, $.fn.zTree.consts, _consts); |
| | | $.extend(true, $.fn.zTree._z, _z); |
| | | |
| | | var zt = $.fn.zTree, |
| | | tools = zt._z.tools, |
| | | consts = zt.consts, |
| | | view = zt._z.view, |
| | | data = zt._z.data, |
| | | event = zt._z.event, |
| | | $$ = tools.$; |
| | | |
| | | data.exSetting(_setting); |
| | | data.addInitBind(_bindEvent); |
| | | data.addInitUnBind(_unbindEvent); |
| | | data.addInitCache(_initCache); |
| | | data.addInitNode(_initNode); |
| | | data.addInitProxy(_eventProxy); |
| | | data.addInitRoot(_initRoot); |
| | | data.addZTreeTools(_zTreeTools); |
| | | |
| | | var _cancelPreSelectedNode = view.cancelPreSelectedNode; |
| | | view.cancelPreSelectedNode = function (setting, node) { |
| | | var list = data.getRoot(setting).curSelectedList; |
| | | for (var i = 0, j = list.length; i < j; i++) { |
| | | if (!node || node === list[i]) { |
| | | view.removeTreeDom(setting, list[i]); |
| | | if (node) break; |
| | | } |
| | | } |
| | | if (_cancelPreSelectedNode) _cancelPreSelectedNode.apply(view, arguments); |
| | | } |
| | | |
| | | var _createNodes = view.createNodes; |
| | | view.createNodes = function (setting, level, nodes, parentNode, index) { |
| | | if (_createNodes) { |
| | | _createNodes.apply(view, arguments); |
| | | } |
| | | if (!nodes) return; |
| | | if (view.repairParentChkClassWithSelf) { |
| | | view.repairParentChkClassWithSelf(setting, parentNode); |
| | | } |
| | | } |
| | | |
| | | var _makeNodeUrl = view.makeNodeUrl; |
| | | view.makeNodeUrl = function (setting, node) { |
| | | return setting.confirm.enable ? null : (_makeNodeUrl.apply(view, arguments)); |
| | | } |
| | | |
| | | var _removeNode = view.removeNode; |
| | | view.removeNode = function (setting, node) { |
| | | var root = data.getRoot(setting); |
| | | if (root.curEditNode === node) root.curEditNode = null; |
| | | if (_removeNode) { |
| | | _removeNode.apply(view, arguments); |
| | | } |
| | | } |
| | | |
| | | var _selectNode = view.selectNode; |
| | | view.selectNode = function (setting, node, addFlag) { |
| | | var root = data.getRoot(setting); |
| | | if (data.isSelectedNode(setting, node) && root.curEditNode == node && node.editNameFlag) { |
| | | return false; |
| | | } |
| | | if (_selectNode) _selectNode.apply(view, arguments); |
| | | view.addHoverDom(setting, node); |
| | | return true; |
| | | } |
| | | |
| | | var _uCanDo = tools.uCanDo; |
| | | tools.uCanDo = function (setting, e) { |
| | | var root = data.getRoot(setting); |
| | | if (e && (tools.eqs(e.type, "mouseover") || tools.eqs(e.type, "mouseout") || tools.eqs(e.type, "mousedown") || tools.eqs(e.type, "mouseup"))) { |
| | | return true; |
| | | } |
| | | if (root.curEditNode) { |
| | | view.editNodeBlur = false; |
| | | root.curEditInput.focus(); |
| | | } |
| | | return (!root.curEditNode) && (_uCanDo ? _uCanDo.apply(view, arguments) : true); |
| | | } |
| | | })(jQuery); |
New file |
| | |
| | | /* |
| | | * JQuery zTree exedit v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function(B){var I={event:{DRAG:"ztree_drag",DROP:"ztree_drop",RENAME:"ztree_rename",DRAGMOVE:"ztree_dragmove"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},v={onHoverOverNode:function(a,b){var c=i.getSetting(a.data.treeId),d=i.getRoot(c);if(d.curHoverNode!=b)v.onHoverOutNode(a);d.curHoverNode=b;e.addHoverDom(c,b)},onHoverOutNode:function(a){var a= |
| | | i.getSetting(a.data.treeId),b=i.getRoot(a);if(b.curHoverNode&&!i.isSelectedNode(a,b.curHoverNode))e.removeTreeDom(a,b.curHoverNode),b.curHoverNode=null},onMousedownNode:function(a,b){function c(a){if(m.dragFlag==0&&Math.abs(N-a.clientX)<f.confirm.drag.minMoveSize&&Math.abs(O-a.clientY)<f.confirm.drag.minMoveSize)return!0;var b,c,g,j;L.css("cursor","pointer");if(m.dragFlag==0){if(k.apply(f.callback.beforeDrag,[f.treeId,n],!0)==!1)return l(a),!0;for(b=0,c=n.length; b<c; b++){if(b==0)m.dragNodeShowBefore=[]; |
| | | g=n[b];i.nodeIsParent(f,g)&&g.open?(e.expandCollapseNode(f,g,!g.open),m.dragNodeShowBefore[g.tId]=!0):m.dragNodeShowBefore[g.tId]=!1}m.dragFlag=1;y.showHoverDom=!1;k.showIfameMask(f,!0);j=!0;var p=-1;if(n.length>1){var o=n[0].parentTId?i.nodeChildren(f,n[0].getParentNode()):i.getNodes(f);g=[];for(b=0,c=o.length;b<c;b++)if(m.dragNodeShowBefore[o[b].tId]!==void 0&&(j&&p>-1&&p+1!==b&&(j=!1),g.push(o[b]),p=b),n.length===g.length){n=g;break}}j&&(H=n[0].getPreNode(),Q=n[n.length-1].getNextNode());C=q("<ul class='zTreeDragUL'></ul>", |
| | | f);for(b=0,c=n.length;b<c;b++)g=n[b],g.editNameFlag=!1,e.selectNode(f,g,b>0),e.removeTreeDom(f,g),b>f.confirm.drag.maxShowNodeNum-1||(j=q("<li id='"+g.tId+"_tmp'></li>",f),j.append(q(g,d.id.A,f).clone()),j.css("padding","0"),j.children("#"+g.tId+d.id.A).removeClass(d.node.CURSELECTED),C.append(j),b==f.confirm.drag.maxShowNodeNum-1&&(j=q("<li id='"+g.tId+"_moretmp'><a> ... </a></li>",f),C.append(j)));C.attr("id",n[0].tId+d.id.UL+"_tmp");C.addClass(f.treeObj.attr("class"));C.appendTo(L);u=q("<span class='tmpzTreeMove_arrow'></span>", |
| | | f);u.attr("id","zTreeMove_arrow_tmp");u.appendTo(L);f.treeObj.trigger(d.event.DRAG,[a,f.treeId,n])}if(m.dragFlag==1){t&&u.attr("id")==a.target.id&&w&&a.clientX+G.scrollLeft()+2>B("#"+w+d.id.A,t).offset().left?(g=B("#"+w+d.id.A,t),a.target=g.length>0?g.get(0):a.target):t&&(t.removeClass(d.node.TMPTARGET_TREE),w&&B("#"+w+d.id.A,t).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER)); |
| | | w=t=null;J=!1;h=f;g=i.getSettings();for(var z in g)if(g[z].treeId&&g[z].confirm.enable&&g[z].treeId!=f.treeId&&(a.target.id==g[z].treeId||B(a.target).parents("#"+g[z].treeId).length>0))J=!0,h=g[z];z=G.scrollTop();j=G.scrollLeft();p=h.treeObj.offset();b=h.treeObj.get(0).scrollHeight;g=h.treeObj.get(0).scrollWidth;c=a.clientY+z-p.top;var E=h.treeObj.height()+p.top-a.clientY-z,r=a.clientX+j-p.left,s=h.treeObj.width()+p.left-a.clientX-j,p=c<f.confirm.drag.borderMax&&c>f.confirm.drag.borderMin,o=E<f.confirm.drag.borderMax&& |
| | | E>f.confirm.drag.borderMin,F=r<f.confirm.drag.borderMax&&r>f.confirm.drag.borderMin,v=s<f.confirm.drag.borderMax&&s>f.confirm.drag.borderMin,E=c>f.confirm.drag.borderMin&&E>f.confirm.drag.borderMin&&r>f.confirm.drag.borderMin&&s>f.confirm.drag.borderMin,r=p&&h.treeObj.scrollTop()<=0,s=o&&h.treeObj.scrollTop()+h.treeObj.height()+10>=b,M=F&&h.treeObj.scrollLeft()<=0,P=v&&h.treeObj.scrollLeft()+h.treeObj.width()+10>=g;if(a.target&&k.isChildOrSelf(a.target,h.treeId)){for(var D=a.target; D&&D.tagName&&!k.eqs(D.tagName,"li")&&D.id!= |
| | | h.treeId;)D=D.parentNode;var R=!0;for(b=0,c=n.length;b<c;b++)if(g=n[b],D.id===g.tId){R=!1;break}else if(q(g,f).find("#"+D.id).length>0){R=!1;break}if(R&&a.target&&k.isChildOrSelf(a.target,D.id+d.id.A))t=B(D),w=D.id}g=n[0];if(E&&k.isChildOrSelf(a.target,h.treeId)){if(!t&&(a.target.id==h.treeId||r||s||M||P)&&(J||!J&&g.parentTId))t=h.treeObj;p?h.treeObj.scrollTop(h.treeObj.scrollTop()-10):o&&h.treeObj.scrollTop(h.treeObj.scrollTop()+10);F?h.treeObj.scrollLeft(h.treeObj.scrollLeft()-10):v&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+ |
| | | 10);t&&t!=h.treeObj&&t.offset().left<h.treeObj.offset().left&&h.treeObj.scrollLeft(h.treeObj.scrollLeft()+t.offset().left-h.treeObj.offset().left)}C.css({top:a.clientY+z+3+"px",left:a.clientX+j+3+"px"});b=j=0;if(t&&t.attr("id")!=h.treeId){var A=w==null?null:i.getNodeCache(h,w),p=(a.ctrlKey||a.metaKey)&&f.confirm.drag.isMove&&f.confirm.drag.isCopy||!f.confirm.drag.isMove&&f.confirm.drag.isCopy;c=!!(H&&w===H.tId);F=!!(Q&&w===Q.tId);o=g.parentTId&&g.parentTId==w;g=(p||!F)&&k.apply(h.confirm.drag.prev,[h.treeId,n,A], |
| | | !!h.confirm.drag.prev);c=(p||!c)&&k.apply(h.confirm.drag.next,[h.treeId,n,A],!!h.confirm.drag.next);p=(p||!o)&&!(h.data.keep.leaf&&!i.nodeIsParent(f,A))&&k.apply(h.confirm.drag.inner,[h.treeId,n,A],!!h.confirm.drag.inner);o=function(){t=null;w="";x=d.move.TYPE_INNER;u.css({display:"none"});if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null};if(!g&&!c&&!p)o();else if(F=B("#"+w+d.id.A,t),v=A.isLastNode?null:B("#"+A.getNextNode().tId+d.id.A,t.next()),E=F.offset().top,r= |
| | | F.offset().left,s=g?p?0.25:c?0.5:1:-1,M=c?p?0.75:g?0.5:0:-1,z=(a.clientY+z-E)/F.height(),(s==1||z<=s&&z>=-0.2)&&g?(j=1-u.width(),b=E-u.height()/2,x=d.move.TYPE_PREV):(M==0||z>=M&&z<=1.2)&&c?(j=1-u.width(),b=v==null||i.nodeIsParent(f,A)&&A.open?E+F.height()-u.height()/2:v.offset().top-u.height()/2,x=d.move.TYPE_NEXT):p?(j=5-u.width(),b=E,x=d.move.TYPE_INNER):o(),t){u.css({display:"block",top:b+"px",left:r+j+"px"});F.addClass(d.node.TMPTARGET_NODE+"_"+x);if(S!=w||T!=x)K=(new Date).getTime();if(A&&i.nodeIsParent(f, |
| | | A)&&x==d.move.TYPE_INNER&&(z=!0,window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId!==A.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===A.tId&&(z=!1),z))window.zTreeMoveTimer=setTimeout(function(){x==d.move.TYPE_INNER&&A&&i.nodeIsParent(f,A)&&!A.open&&(new Date).getTime()-K>h.confirm.drag.autoOpenTime&&k.apply(h.callback.beforeDragOpen,[h.treeId,A],!0)&&(e.switchNode(h,A),h.confirm.drag.autoExpandTrigger&&h.treeObj.trigger(d.event.EXPAND, |
| | | [h.treeId,A]))},h.confirm.drag.autoOpenTime+50),window.zTreeMoveTargetNodeTId=A.tId}}else if(x=d.move.TYPE_INNER,t&&k.apply(h.confirm.drag.inner,[h.treeId,n,null],!!h.confirm.drag.inner)?t.addClass(d.node.TMPTARGET_TREE):t=null,u.css({display:"none"}),window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null;S=w;T=x;f.treeObj.trigger(d.event.DRAGMOVE,[a,f.treeId,n])}return!1}function l(a){if(window.zTreeMoveTimer)clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId= |
| | | null;T=S=null;G.unbind("mousemove",c);G.unbind("mouseup",l);G.unbind("selectstart",g);L.css("cursor","");t&&(t.removeClass(d.node.TMPTARGET_TREE),w&&B("#"+w+d.id.A,t).removeClass(d.node.TMPTARGET_NODE+"_"+d.move.TYPE_PREV).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_NEXT).removeClass(d.node.TMPTARGET_NODE+"_"+I.move.TYPE_INNER));k.showIfameMask(f,!1);y.showHoverDom=!0;if(m.dragFlag!=0){m.dragFlag=0;var b,j,o;for(b=0,j=n.length;b<j;b++)o=n[b],i.nodeIsParent(f,o)&&m.dragNodeShowBefore[o.tId]&& |
| | | !o.open&&(e.expandCollapseNode(f,o,!o.open),delete m.dragNodeShowBefore[o.tId]);C&&C.remove();u&&u.remove();var r=(a.ctrlKey||a.metaKey)&&f.confirm.drag.isMove&&f.confirm.drag.isCopy||!f.confirm.drag.isMove&&f.confirm.drag.isCopy;!r&&t&&w&&n[0].parentTId&&w==n[0].parentTId&&x==d.move.TYPE_INNER&&(t=null);if(t){var p=w==null?null:i.getNodeCache(h,w);if(k.apply(f.callback.beforeDrop,[h.treeId,n,p,x,r],!0)==!1)e.selectNodes(v,n);else{var s=r?k.clone(n):n;b=function(){if(J){if(!r)for(var b=0,c=n.length; b<c; b++)e.removeNode(f, |
| | | n[b]);x==d.move.TYPE_INNER?e.addNodes(h,p,-1,s):e.addNodes(h,p.getParentNode(),x==d.move.TYPE_PREV?p.getIndex():p.getIndex()+1,s)}else if(r&&x==d.move.TYPE_INNER)e.addNodes(h,p,-1,s);else if(r)e.addNodes(h,p.getParentNode(),x==d.move.TYPE_PREV?p.getIndex():p.getIndex()+1,s);else if(x!=d.move.TYPE_NEXT)for(b=0,c=s.length;b<c;b++)e.moveNode(h,p,s[b],x,!1);else for(b=-1,c=s.length-1;b<c;c--)e.moveNode(h,p,s[c],x,!1);e.selectNodes(h,s);b=q(s[0],f).get(0);e.scrollIntoView(f,b);f.treeObj.trigger(d.event.DROP, |
| | | [a,h.treeId,s,p,x,r])};x==d.move.TYPE_INNER&&k.canAsync(h,p)?e.asyncNode(h,p,!1,b):b()}}else e.selectNodes(v,n),f.treeObj.trigger(d.event.DROP,[a,f.treeId,n,null,null,null])}}function g(){return!1}var o,j,f=i.getSetting(a.data.treeId),m=i.getRoot(f),y=i.getRoots();if(a.button==2||!f.confirm.enable||!f.confirm.drag.isCopy&&!f.confirm.drag.isMove)return!0;var r=a.target,s=i.getRoot(f).curSelectedList,n=[];if(i.isSelectedNode(f,b))for(o=0,j=s.length; o<j; o++){if(s[o].editNameFlag&&k.eqs(r.tagName,"input")&&r.getAttribute("treeNode"+ |
| | | d.id.INPUT)!==null)return!0;n.push(s[o]);if(n[0].parentTId!==s[o].parentTId){n=[b];break}}else n=[b];e.editNodeBlur=!0;e.cancelCurEditNode(f);var G=B(f.treeObj.get(0).ownerDocument),L=B(f.treeObj.get(0).ownerDocument.body),C,u,t,J=!1,h=f,v=f,H,Q,S=null,T=null,w=null,x=d.move.TYPE_INNER,N=a.clientX,O=a.clientY,K=(new Date).getTime();k.uCanDo(f)&&G.bind("mousemove",c);G.bind("mouseup",l);G.bind("selectstart",g);return!0}};B.extend(!0,B.fn.zTree.consts,I);B.extend(!0,B.fn.zTree._z,{tools:{getAbs:function(a){a= |
| | | a.getBoundingClientRect();return[a.left+(document.body.scrollLeft+document.documentElement.scrollLeft),a.top+(document.body.scrollTop+document.documentElement.scrollTop)]},inputFocus:function(a){a.get(0)&&(a.focus(),k.setCursorPosition(a.get(0),a.val().length))},inputSelect:function(a){a.get(0)&&(a.focus(),a.select())},setCursorPosition:function(a,b){if(a.setSelectionRange)a.focus(),a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0);c.moveEnd("character", |
| | | b);c.moveStart("character",b);c.select()}},showIfameMask:function(a,b){for(var c=i.getRoot(a);c.dragMaskList.length>0;)c.dragMaskList[0].remove(),c.dragMaskList.shift();if(b)for(var d=q("iframe",a),g=0,e=d.length;g<e;g++){var j=d.get(g),f=k.getAbs(j),j=q("<div id='zTreeMask_"+g+"' class='zTreeMask' style='top:"+f[1]+"px; left:"+f[0]+"px; width:"+j.offsetWidth+"px; height:"+j.offsetHeight+"px;'></div>",a);j.appendTo(q("body",a));c.dragMaskList.push(j)}}},view:{addEditBtn:function(a,b){if(!(b.editNameFlag|| |
| | | q(b,d.id.EDIT,a).length>0)&&k.apply(a.confirm.showRenameBtn,[a.treeId,b],a.confirm.showRenameBtn)){var c=q(b,d.id.A,a),l="<span class='"+d.className.BUTTON+" edit' id='"+b.tId+d.id.EDIT+"' title='"+k.apply(a.confirm.renameTitle,[a.treeId,b],a.confirm.renameTitle)+"' treeNode"+d.id.EDIT+" style='display:none;'></span>";c.append(l);q(b,d.id.EDIT,a).bind("click",function(){if(!k.uCanDo(a)||k.apply(a.callback.beforeEditName,[a.treeId,b],!0)==!1)return!1;e.editNode(a,b);return!1}).show()}},addRemoveBtn:function(a, |
| | | b){if(!(b.editNameFlag||q(b,d.id.REMOVE,a).length>0)&&k.apply(a.confirm.showRemoveBtn,[a.treeId,b],a.confirm.showRemoveBtn)){var c=q(b,d.id.A,a),l="<span class='"+d.className.BUTTON+" remove' id='"+b.tId+d.id.REMOVE+"' title='"+k.apply(a.confirm.removeTitle,[a.treeId,b],a.confirm.removeTitle)+"' treeNode"+d.id.REMOVE+" style='display:none;'></span>";c.append(l);q(b,d.id.REMOVE,a).bind("click",function(){if(!k.uCanDo(a)||k.apply(a.callback.beforeRemove,[a.treeId,b],!0)==!1)return!1;e.removeNode(a,b);a.treeObj.trigger(d.event.REMOVE, |
| | | [a.treeId,b]);return!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(a,b){if(i.getRoots().showHoverDom)b.isHover=!0,a.confirm.enable&&(e.addEditBtn(a,b),e.addRemoveBtn(a,b)),k.apply(a.view.addHoverDom,[a.treeId,b])},cancelCurEditNode:function(a, b, c){var l=i.getRoot(a),g=l.curEditNode;if(g){var o=l.curEditInput,b=b?b:c?i.nodeName(a,g):o.val();if(k.apply(a.callback.beforeRename,[a.treeId,g,b,c],!0)===!1)return!1;i.nodeName(a,g,b);q(g,d.id.A,a).removeClass(d.node.CURSELECTED_EDIT); |
| | | o.unbind();e.setNodeName(a,g);g.editNameFlag=!1;l.curEditNode=null;l.curEditInput=null;e.selectNode(a,g,!1);a.treeObj.trigger(d.event.RENAME,[a.treeId,g,c])}return l.noSelection=!0},editNode:function(a,b){var c=i.getRoot(a);e.editNodeBlur=!1;if(i.isSelectedNode(a,b)&&c.curEditNode==b&&b.editNameFlag)setTimeout(function(){k.inputFocus(c.curEditInput)},0);else{b.editNameFlag=!0;e.removeTreeDom(a,b);e.cancelCurEditNode(a);e.selectNode(a,b,!1);q(b,d.id.SPAN,a).html("<input type=text class='rename' id='"+ |
| | | b.tId+d.id.INPUT+"' treeNode"+d.id.INPUT+" >");var l=q(b,d.id.INPUT,a);l.attr("value",i.nodeName(a,b));a.confirm.editNameSelectAll?k.inputSelect(l):k.inputFocus(l);l.bind("blur",function(){e.editNodeBlur||e.cancelCurEditNode(a)}).bind("keydown",function(b){b.keyCode=="13"?(e.editNodeBlur=!0,e.cancelCurEditNode(a)):b.keyCode=="27"&&e.cancelCurEditNode(a,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1});q(b,d.id.A,a).addClass(d.node.CURSELECTED_EDIT);c.curEditInput=l; |
| | | c.noSelection=!1;c.curEditNode=b}},moveNode:function(a,b,c,l,g,k){var j=i.getRoot(a);if(b!=c&&(!a.data.keep.leaf||!b||i.nodeIsParent(a,b)||l!=d.move.TYPE_INNER)){var f=c.parentTId?c.getParentNode():j,m=b===null||b==j;m&&b===null&&(b=j);if(m)l=d.move.TYPE_INNER;j=b.parentTId?b.getParentNode():j;if(l!=d.move.TYPE_PREV&&l!=d.move.TYPE_NEXT)l=d.move.TYPE_INNER;if(l==d.move.TYPE_INNER)if(m)c.parentTId=null;else{if(!i.nodeIsParent(a,b))i.nodeIsParent(a,b,!0),b.open=!!b.open,e.setNodeLineIcos(a,b);c.parentTId= |
| | | b.tId}var y;m?y=m=a.treeObj:(!k&&l==d.move.TYPE_INNER?e.expandCollapseNode(a,b,!0,!1):k||e.expandCollapseNode(a,b.getParentNode(),!0,!1),m=q(b,a),y=q(b,d.id.UL,a),m.get(0)&&!y.get(0)&&(y=[],e.makeUlHtml(a,b,y,""),m.append(y.join(""))),y=q(b,d.id.UL,a));var r=q(c,a);r.get(0)?m.get(0)||r.remove():r=e.appendNodes(a,c.level,[c],null,-1,!1,!0).join("");y.get(0)&&l==d.move.TYPE_INNER?y.append(r):m.get(0)&&l==d.move.TYPE_PREV?m.before(r):m.get(0)&&l==d.move.TYPE_NEXT&&m.after(r);var s;y=-1;var r=0,n=null, |
| | | m=null,B=c.level,v=i.nodeChildren(a,f),C=i.nodeChildren(a,j),u=i.nodeChildren(a,b);if(c.isFirstNode){if(y=0,v.length>1)n=v[1],n.isFirstNode=!0}else if(c.isLastNode)y=v.length-1,n=v[y-1],n.isLastNode=!0;else for(j=0,s=v.length;j<s;j++)if(v[j].tId==c.tId){y=j;break}y>=0&&v.splice(y,1);if(l!=d.move.TYPE_INNER)for(j=0,s=C.length;j<s;j++)C[j].tId==b.tId&&(r=j);if(l==d.move.TYPE_INNER){u||(u=i.nodeChildren(a,b,[]));if(u.length>0)m=u[u.length-1],m.isLastNode=!1;u.splice(u.length,0,c);c.isLastNode=!0;c.isFirstNode= |
| | | u.length==1}else b.isFirstNode&&l==d.move.TYPE_PREV?(C.splice(r,0,c),m=b,m.isFirstNode=!1,c.parentTId=b.parentTId,c.isFirstNode=!0,c.isLastNode=!1):b.isLastNode&&l==d.move.TYPE_NEXT?(C.splice(r+1,0,c),m=b,m.isLastNode=!1,c.parentTId=b.parentTId,c.isFirstNode=!1,c.isLastNode=!0):(l==d.move.TYPE_PREV?C.splice(r,0,c):C.splice(r+1,0,c),c.parentTId=b.parentTId,c.isFirstNode=!1,c.isLastNode=!1);i.fixPIdKeyValue(a,c);i.setSonNodeLevel(a,c.getParentNode(),c);e.setNodeLineIcos(a,c);e.repairNodeLevelClass(a, |
| | | c,B);!a.data.keep.parent&&v.length<1?(i.nodeIsParent(a,f,!1),f.open=!1,b=q(f,d.id.UL,a),l=q(f,d.id.SWITCH,a),j=q(f,d.id.ICON,a),e.replaceSwitchClass(f,l,d.folder.DOCU),e.replaceIcoClass(f,j,d.folder.DOCU),b.css("display","none")):n&&e.setNodeLineIcos(a,n);m&&e.setNodeLineIcos(a,m);a.check&&a.check.enable&&e.repairChkClass&&(e.repairChkClass(a,f),e.repairParentChkClassWithSelf(a,f),f!=c.parent&&e.repairParentChkClassWithSelf(a,c));k||e.expandCollapseParentNode(a,c.getParentNode(),!0,g)}},removeEditBtn:function(a, |
| | | b){q(b,d.id.EDIT,a).unbind().remove()},removeRemoveBtn:function(a,b){q(b,d.id.REMOVE,a).unbind().remove()},removeTreeDom:function(a,b){b.isHover=!1;e.removeEditBtn(a,b);e.removeRemoveBtn(a,b);k.apply(a.view.removeHoverDom,[a.treeId,b])},repairNodeLevelClass:function(a,b,c){if(c!==b.level){var e=q(b,a),g=q(b,d.id.A,a),a=q(b,d.id.UL,a),c=d.className.LEVEL+c,b=d.className.LEVEL+b.level;e.removeClass(c);e.addClass(b);g.removeClass(c);g.addClass(b);a.removeClass(c);a.addClass(b)}},selectNodes:function(a, |
| | | b){for(var c=0,d=b.length;c<d;c++)e.selectNode(a,b[c],c>0)}},event:{},data:{setSonNodeLevel:function(a,b,c){if(c){var d=i.nodeChildren(a,c);c.level=b?b.level+1:0;if(d)for(var b=0,g=d.length;b<g;b++)d[b]&&i.setSonNodeLevel(a,c,d[b])}}}});var H=B.fn.zTree,k=H._z.tools,d=H.consts,e=H._z.view,i=H._z.data,q=k.$;i.exSetting({edit:{enable:!1,editNameSelectAll:!1,showRemoveBtn:!0,showRenameBtn:!0,removeTitle:"remove",renameTitle:"rename",drag:{autoExpandTrigger:!1,isCopy:!0,isMove:!0,prev:!0,next:!0,inner:!0, |
| | | minMoveSize:5,borderMax:10,borderMin:-5,maxShowNodeNum:5,autoOpenTime:500}},view:{addHoverDom:null,removeHoverDom:null},callback:{beforeDrag:null,beforeDragOpen:null,beforeDrop:null,beforeEditName:null,beforeRename:null,onDrag:null,onDragMove:null,onDrop:null,onRename:null}});i.addInitBind(function(a){var b=a.treeObj,c=d.event;b.bind(c.RENAME,function(b,c,d,e){k.apply(a.callback.onRename,[b,c,d,e])});b.bind(c.DRAG,function(b,c,d,e){k.apply(a.callback.onDrag,[c,d,e])});b.bind(c.DRAGMOVE,function(b, |
| | | c,d,e){k.apply(a.callback.onDragMove,[c,d,e])});b.bind(c.DROP,function(b,c,d,e,f,i,q){k.apply(a.callback.onDrop,[c,d,e,f,i,q])})});i.addInitUnBind(function(a){var a=a.treeObj,b=d.event;a.unbind(b.RENAME);a.unbind(b.DRAG);a.unbind(b.DRAGMOVE);a.unbind(b.DROP)});i.addInitCache(function(){});i.addInitNode(function(a,b,c){if(c)c.isHover=!1,c.editNameFlag=!1});i.addInitProxy(function(a){var b=a.target,c=i.getSetting(a.data.treeId),e=a.relatedTarget,g="",o=null,j="",f=null,m=null;if(k.eqs(a.type,"mouseover")){if(m= |
| | | k.getMDom(c,b,[{tagName:"a",attrName:"treeNode"+d.id.A}]))g=k.getNodeMainDom(m).id,j="hoverOverNode"}else if(k.eqs(a.type,"mouseout"))m=k.getMDom(c,e,[{tagName:"a",attrName:"treeNode"+d.id.A}]),m||(g="remove",j="hoverOutNode");else if(k.eqs(a.type,"mousedown")&&(m=k.getMDom(c,b,[{tagName:"a",attrName:"treeNode"+d.id.A}])))g=k.getNodeMainDom(m).id,j="mousedownNode";if(g.length>0)switch(o=i.getNodeCache(c,g),j){case "mousedownNode":f=v.onMousedownNode;break;case "hoverOverNode":f=v.onHoverOverNode; |
| | | break;case "hoverOutNode":f=v.onHoverOutNode}return{stop:!1,node:o,nodeEventType:j,nodeEventCallback:f,treeEventType:"",treeEventCallback:null}});i.addInitRoot(function(a){var a=i.getRoot(a),b=i.getRoots();a.curEditNode=null;a.curEditInput=null;a.curHoverNode=null;a.dragFlag=0;a.dragNodeShowBefore=[];a.dragMaskList=[];b.showHoverDom=!0});i.addZTreeTools(function(a,b){b.cancelEditName=function(a){i.getRoot(this.setting).curEditNode&&e.cancelCurEditNode(this.setting,a?a:null,!0)};b.copyNode=function(b, |
| | | l,g,o){if(!l)return null;var j=i.nodeIsParent(a,b);if(b&&!j&&this.setting.data.keep.leaf&&g===d.move.TYPE_INNER)return null;var f=this,m=k.clone(l);if(!b)b=null,g=d.move.TYPE_INNER;g==d.move.TYPE_INNER?(l=function(){e.addNodes(f.setting,b,-1,[m],o)},k.canAsync(this.setting,b)?e.asyncNode(this.setting,b,o,l):l()):(e.addNodes(this.setting,b.parentNode,-1,[m],o),e.moveNode(this.setting,b,m,g,!1,o));return m};b.editName=function(a){a&&a.tId&&a===i.getNodeCache(this.setting,a.tId)&&(a.parentTId&&e.expandCollapseParentNode(this.setting, |
| | | a.getParentNode(),!0),e.editNode(this.setting,a))};b.moveNode=function(b,l,g,o){function j(){e.moveNode(m.setting,b,l,g,!1,o)}if(!l)return l;var f=i.nodeIsParent(a,b);if(b&&!f&&this.setting.data.keep.leaf&&g===d.move.TYPE_INNER)return null;else if(b&&(l.parentTId==b.tId&&g==d.move.TYPE_INNER||q(l,this.setting).find("#"+b.tId).length>0))return null;else b||(b=null);var m=this;k.canAsync(this.setting,b)&&g===d.move.TYPE_INNER?e.asyncNode(this.setting,b,o,j):j();return l};b.setEditable=function(a){this.setting.confirm.enable= |
| | | a;return this.refresh()}});var N=e.cancelPreSelectedNode;e.cancelPreSelectedNode=function(a,b){for(var c=i.getRoot(a).curSelectedList,d=0,g=c.length;d<g;d++)if(!b||b===c[d])if(e.removeTreeDom(a,c[d]),b)break;N&&N.apply(e,arguments)};var O=e.createNodes;e.createNodes=function(a,b,c,d,g){O&&O.apply(e,arguments);c&&e.repairParentChkClassWithSelf&&e.repairParentChkClassWithSelf(a,d)};var V=e.makeNodeUrl;e.makeNodeUrl=function(a,b){return a.confirm.enable?null:V.apply(e,arguments)};var K=e.removeNode;e.removeNode= |
| | | function(a,b){var c=i.getRoot(a);if(c.curEditNode===b)c.curEditNode=null;K&&K.apply(e,arguments)};var P=e.selectNode;e.selectNode=function(a,b,c){var d=i.getRoot(a);if(i.isSelectedNode(a,b)&&d.curEditNode==b&&b.editNameFlag)return!1;P&&P.apply(e,arguments);e.addHoverDom(a,b);return!0};var U=k.uCanDo;k.uCanDo=function(a,b){var c=i.getRoot(a);if(b&&(k.eqs(b.type,"mouseover")||k.eqs(b.type,"mouseout")||k.eqs(b.type,"mousedown")||k.eqs(b.type,"mouseup")))return!0;if(c.curEditNode)e.editNodeBlur=!1,c.curEditInput.focus(); |
| | | return!c.curEditNode&&(U?U.apply(e,arguments):!0)}})(jQuery); |
New file |
| | |
| | | /* |
| | | * JQuery zTree exHideNodes v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function ($) { |
| | | var _setting = { |
| | | data: { |
| | | key: { |
| | | isHidden: "isHidden" |
| | | } |
| | | } |
| | | }; |
| | | //default init node of exLib |
| | | var _initNode = function (setting, level, n, parentNode, isFirstNode, isLastNode, openFlag) { |
| | | var isHidden = data.isHidden(setting, n); |
| | | data.isHidden(setting, n, isHidden); |
| | | data.initHideForExCheck(setting, n); |
| | | }, |
| | | //add dom for check |
| | | _beforeA = function (setting, node, html) { |
| | | }, |
| | | //update zTreeObj, add method of exLib |
| | | _zTreeTools = function (setting, zTreeTools) { |
| | | zTreeTools.showNodes = function (nodes, options) { |
| | | view.showNodes(setting, nodes, options); |
| | | } |
| | | zTreeTools.showNode = function (node, options) { |
| | | if (!node) { |
| | | return; |
| | | } |
| | | view.showNodes(setting, [node], options); |
| | | } |
| | | zTreeTools.hideNodes = function (nodes, options) { |
| | | view.hideNodes(setting, nodes, options); |
| | | } |
| | | zTreeTools.hideNode = function (node, options) { |
| | | if (!node) { |
| | | return; |
| | | } |
| | | view.hideNodes(setting, [node], options); |
| | | } |
| | | |
| | | var _checkNode = zTreeTools.checkNode; |
| | | if (_checkNode) { |
| | | zTreeTools.checkNode = function (node, checked, checkTypeFlag, callbackFlag) { |
| | | if (!!node && !!data.isHidden(setting, node)) { |
| | | return; |
| | | } |
| | | _checkNode.apply(zTreeTools, arguments); |
| | | } |
| | | } |
| | | }, |
| | | //method of operate data |
| | | _data = { |
| | | initHideForExCheck: function (setting, n) { |
| | | var isHidden = data.isHidden(setting, n); |
| | | if (isHidden && setting.check && setting.check.enable) { |
| | | if (typeof n._nocheck == "undefined") { |
| | | n._nocheck = !!n.nocheck |
| | | n.nocheck = true; |
| | | } |
| | | n.check_Child_State = -1; |
| | | if (view.repairParentChkClassWithSelf) { |
| | | view.repairParentChkClassWithSelf(setting, n); |
| | | } |
| | | } |
| | | }, |
| | | initShowForExCheck: function (setting, n) { |
| | | var isHidden = data.isHidden(setting, n); |
| | | if (!isHidden && setting.check && setting.check.enable) { |
| | | if (typeof n._nocheck != "undefined") { |
| | | n.nocheck = n._nocheck; |
| | | delete n._nocheck; |
| | | } |
| | | if (view.setChkClass) { |
| | | var checkObj = $$(n, consts.id.CHECK, setting); |
| | | view.setChkClass(setting, checkObj, n); |
| | | } |
| | | if (view.repairParentChkClassWithSelf) { |
| | | view.repairParentChkClassWithSelf(setting, n); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | //method of operate ztree dom |
| | | _view = { |
| | | clearOldFirstNode: function (setting, node) { |
| | | var n = node.getNextNode(); |
| | | while (!!n) { |
| | | if (n.isFirstNode) { |
| | | n.isFirstNode = false; |
| | | view.setNodeLineIcos(setting, n); |
| | | break; |
| | | } |
| | | if (n.isLastNode) { |
| | | break; |
| | | } |
| | | n = n.getNextNode(); |
| | | } |
| | | }, |
| | | clearOldLastNode: function (setting, node, openFlag) { |
| | | var n = node.getPreNode(); |
| | | while (!!n) { |
| | | if (n.isLastNode) { |
| | | n.isLastNode = false; |
| | | if (openFlag) { |
| | | view.setNodeLineIcos(setting, n); |
| | | } |
| | | break; |
| | | } |
| | | if (n.isFirstNode) { |
| | | break; |
| | | } |
| | | n = n.getPreNode(); |
| | | } |
| | | }, |
| | | makeDOMNodeMainBefore: function (html, setting, node) { |
| | | var isHidden = data.isHidden(setting, node); |
| | | html.push("<li ", (isHidden ? "style='display:none;' " : ""), "id='", node.tId, "' class='", consts.className.LEVEL, node.level, "' tabindex='0' hidefocus='true' treenode>"); |
| | | }, |
| | | showNode: function (setting, node, options) { |
| | | data.isHidden(setting, node, false); |
| | | data.initShowForExCheck(setting, node); |
| | | $$(node, setting).show(); |
| | | }, |
| | | showNodes: function (setting, nodes, options) { |
| | | if (!nodes || nodes.length == 0) { |
| | | return; |
| | | } |
| | | var pList = {}, i, j; |
| | | for (i = 0, j = nodes.length; i < j; i++) { |
| | | var n = nodes[i]; |
| | | if (!pList[n.parentTId]) { |
| | | var pn = n.getParentNode(); |
| | | pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode(); |
| | | } |
| | | view.showNode(setting, n, options); |
| | | } |
| | | for (var tId in pList) { |
| | | var children = data.nodeChildren(setting, pList[tId]); |
| | | view.setFirstNodeForShow(setting, children); |
| | | view.setLastNodeForShow(setting, children); |
| | | } |
| | | }, |
| | | hideNode: function (setting, node, options) { |
| | | data.isHidden(setting, node, true); |
| | | node.isFirstNode = false; |
| | | node.isLastNode = false; |
| | | data.initHideForExCheck(setting, node); |
| | | view.cancelPreSelectedNode(setting, node); |
| | | $$(node, setting).hide(); |
| | | }, |
| | | hideNodes: function (setting, nodes, options) { |
| | | if (!nodes || nodes.length == 0) { |
| | | return; |
| | | } |
| | | var pList = {}, i, j; |
| | | for (i = 0, j = nodes.length; i < j; i++) { |
| | | var n = nodes[i]; |
| | | if ((n.isFirstNode || n.isLastNode) && !pList[n.parentTId]) { |
| | | var pn = n.getParentNode(); |
| | | pList[n.parentTId] = (pn === null) ? data.getRoot(setting) : n.getParentNode(); |
| | | } |
| | | view.hideNode(setting, n, options); |
| | | } |
| | | for (var tId in pList) { |
| | | var children = data.nodeChildren(setting, pList[tId]); |
| | | view.setFirstNodeForHide(setting, children); |
| | | view.setLastNodeForHide(setting, children); |
| | | } |
| | | }, |
| | | setFirstNode: function (setting, parentNode) { |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | var isHidden = data.isHidden(setting, children[0], false); |
| | | if (children.length > 0 && !isHidden) { |
| | | children[0].isFirstNode = true; |
| | | } else if (children.length > 0) { |
| | | view.setFirstNodeForHide(setting, children); |
| | | } |
| | | }, |
| | | setLastNode: function (setting, parentNode) { |
| | | var children = data.nodeChildren(setting, parentNode); |
| | | var isHidden = data.isHidden(setting, children[0]); |
| | | if (children.length > 0 && !isHidden) { |
| | | children[children.length - 1].isLastNode = true; |
| | | } else if (children.length > 0) { |
| | | view.setLastNodeForHide(setting, children); |
| | | } |
| | | }, |
| | | setFirstNodeForHide: function (setting, nodes) { |
| | | var n, i, j; |
| | | for (i = 0, j = nodes.length; i < j; i++) { |
| | | n = nodes[i]; |
| | | if (n.isFirstNode) { |
| | | break; |
| | | } |
| | | var isHidden = data.isHidden(setting, n); |
| | | if (!isHidden && !n.isFirstNode) { |
| | | n.isFirstNode = true; |
| | | view.setNodeLineIcos(setting, n); |
| | | break; |
| | | } else { |
| | | n = null; |
| | | } |
| | | } |
| | | return n; |
| | | }, |
| | | setFirstNodeForShow: function (setting, nodes) { |
| | | var n, i, j, first, old; |
| | | for (i = 0, j = nodes.length; i < j; i++) { |
| | | n = nodes[i]; |
| | | var isHidden = data.isHidden(setting, n); |
| | | if (!first && !isHidden && n.isFirstNode) { |
| | | first = n; |
| | | break; |
| | | } else if (!first && !isHidden && !n.isFirstNode) { |
| | | n.isFirstNode = true; |
| | | first = n; |
| | | view.setNodeLineIcos(setting, n); |
| | | } else if (first && n.isFirstNode) { |
| | | n.isFirstNode = false; |
| | | old = n; |
| | | view.setNodeLineIcos(setting, n); |
| | | break; |
| | | } else { |
| | | n = null; |
| | | } |
| | | } |
| | | return {"new": first, "old": old}; |
| | | }, |
| | | setLastNodeForHide: function (setting, nodes) { |
| | | var n, i; |
| | | for (i = nodes.length - 1; i >= 0; i--) { |
| | | n = nodes[i]; |
| | | if (n.isLastNode) { |
| | | break; |
| | | } |
| | | var isHidden = data.isHidden(setting, n); |
| | | if (!isHidden && !n.isLastNode) { |
| | | n.isLastNode = true; |
| | | view.setNodeLineIcos(setting, n); |
| | | break; |
| | | } else { |
| | | n = null; |
| | | } |
| | | } |
| | | return n; |
| | | }, |
| | | setLastNodeForShow: function (setting, nodes) { |
| | | var n, i, j, last, old; |
| | | for (i = nodes.length - 1; i >= 0; i--) { |
| | | n = nodes[i]; |
| | | var isHidden = data.isHidden(setting, n); |
| | | if (!last && !isHidden && n.isLastNode) { |
| | | last = n; |
| | | break; |
| | | } else if (!last && !isHidden && !n.isLastNode) { |
| | | n.isLastNode = true; |
| | | last = n; |
| | | view.setNodeLineIcos(setting, n); |
| | | } else if (last && n.isLastNode) { |
| | | n.isLastNode = false; |
| | | old = n; |
| | | view.setNodeLineIcos(setting, n); |
| | | break; |
| | | } else { |
| | | n = null; |
| | | } |
| | | } |
| | | return {"new": last, "old": old}; |
| | | } |
| | | }, |
| | | |
| | | _z = { |
| | | view: _view, |
| | | data: _data |
| | | }; |
| | | $.extend(true, $.fn.zTree._z, _z); |
| | | |
| | | var zt = $.fn.zTree, |
| | | tools = zt._z.tools, |
| | | consts = zt.consts, |
| | | view = zt._z.view, |
| | | data = zt._z.data, |
| | | event = zt._z.event, |
| | | $$ = tools.$; |
| | | |
| | | data.isHidden = function (setting, node, newIsHidden) { |
| | | if (!node) { |
| | | return false; |
| | | } |
| | | var key = setting.data.key.isHidden; |
| | | if (typeof newIsHidden !== 'undefined') { |
| | | if (typeof newIsHidden === "string") { |
| | | newIsHidden = tools.eqs(newIsHidden, "true"); |
| | | } |
| | | newIsHidden = !!newIsHidden; |
| | | node[key] = newIsHidden; |
| | | } else if (typeof node[key] == "string"){ |
| | | node[key] = tools.eqs(node[key], "true"); |
| | | } else { |
| | | node[key] = !!node[key]; |
| | | } |
| | | return node[key]; |
| | | }; |
| | | |
| | | data.exSetting(_setting); |
| | | data.addInitNode(_initNode); |
| | | data.addBeforeA(_beforeA); |
| | | data.addZTreeTools(_zTreeTools); |
| | | |
| | | // Override method in core |
| | | var _dInitNode = data.initNode; |
| | | data.initNode = function (setting, level, node, parentNode, isFirstNode, isLastNode, openFlag) { |
| | | var tmpPNode = (parentNode) ? parentNode : data.getRoot(setting), |
| | | children = tmpPNode[setting.data.key.children]; |
| | | data.tmpHideFirstNode = view.setFirstNodeForHide(setting, children); |
| | | data.tmpHideLastNode = view.setLastNodeForHide(setting, children); |
| | | if (openFlag) { |
| | | view.setNodeLineIcos(setting, data.tmpHideFirstNode); |
| | | view.setNodeLineIcos(setting, data.tmpHideLastNode); |
| | | } |
| | | isFirstNode = (data.tmpHideFirstNode === node); |
| | | isLastNode = (data.tmpHideLastNode === node); |
| | | if (_dInitNode) _dInitNode.apply(data, arguments); |
| | | if (openFlag && isLastNode) { |
| | | view.clearOldLastNode(setting, node, openFlag); |
| | | } |
| | | }; |
| | | |
| | | var _makeChkFlag = data.makeChkFlag; |
| | | if (!!_makeChkFlag) { |
| | | data.makeChkFlag = function (setting, node) { |
| | | if (!!node && !!data.isHidden(setting, node)) { |
| | | return; |
| | | } |
| | | _makeChkFlag.apply(data, arguments); |
| | | } |
| | | } |
| | | |
| | | var _getTreeCheckedNodes = data.getTreeCheckedNodes; |
| | | if (!!_getTreeCheckedNodes) { |
| | | data.getTreeCheckedNodes = function (setting, nodes, checked, results) { |
| | | if (!!nodes && nodes.length > 0) { |
| | | var p = nodes[0].getParentNode(); |
| | | if (!!p && !!data.isHidden(setting, p)) { |
| | | return []; |
| | | } |
| | | } |
| | | return _getTreeCheckedNodes.apply(data, arguments); |
| | | } |
| | | } |
| | | |
| | | var _getTreeChangeCheckedNodes = data.getTreeChangeCheckedNodes; |
| | | if (!!_getTreeChangeCheckedNodes) { |
| | | data.getTreeChangeCheckedNodes = function (setting, nodes, results) { |
| | | if (!!nodes && nodes.length > 0) { |
| | | var p = nodes[0].getParentNode(); |
| | | if (!!p && !!data.isHidden(setting, p)) { |
| | | return []; |
| | | } |
| | | } |
| | | return _getTreeChangeCheckedNodes.apply(data, arguments); |
| | | } |
| | | } |
| | | |
| | | var _expandCollapseSonNode = view.expandCollapseSonNode; |
| | | if (!!_expandCollapseSonNode) { |
| | | view.expandCollapseSonNode = function (setting, node, expandFlag, animateFlag, callback) { |
| | | if (!!node && !!data.isHidden(setting, node)) { |
| | | return; |
| | | } |
| | | _expandCollapseSonNode.apply(view, arguments); |
| | | } |
| | | } |
| | | |
| | | var _setSonNodeCheckBox = view.setSonNodeCheckBox; |
| | | if (!!_setSonNodeCheckBox) { |
| | | view.setSonNodeCheckBox = function (setting, node, value, srcNode) { |
| | | if (!!node && !!data.isHidden(setting, node)) { |
| | | return; |
| | | } |
| | | _setSonNodeCheckBox.apply(view, arguments); |
| | | } |
| | | } |
| | | |
| | | var _repairParentChkClassWithSelf = view.repairParentChkClassWithSelf; |
| | | if (!!_repairParentChkClassWithSelf) { |
| | | view.repairParentChkClassWithSelf = function (setting, node) { |
| | | if (!!node && !!data.isHidden(setting, node)) { |
| | | return; |
| | | } |
| | | _repairParentChkClassWithSelf.apply(view, arguments); |
| | | } |
| | | } |
| | | })(jQuery); |
New file |
| | |
| | | /* |
| | | * JQuery zTree exHideNodes v3.5.40 |
| | | * http://treejs.cn/ |
| | | * |
| | | * Copyright (c) 2010 Hunter.z |
| | | * |
| | | * Licensed same as jquery - MIT License |
| | | * http://www.opensource.org/licenses/mit-license.php |
| | | * |
| | | * email: hunter.z@263.net |
| | | * Date: 2019-01-18 |
| | | */ |
| | | (function(j){j.extend(!0,j.fn.zTree._z,{view:{clearOldFirstNode:function(c,a){for(var b=a.getNextNode();b;){if(b.isFirstNode){b.isFirstNode=!1;e.setNodeLineIcos(c,b);break}if(b.isLastNode)break;b=b.getNextNode()}},clearOldLastNode:function(c,a,b){for(a=a.getPreNode();a;){if(a.isLastNode){a.isLastNode=!1;b&&e.setNodeLineIcos(c,a);break}if(a.isFirstNode)break;a=a.getPreNode()}},makeDOMNodeMainBefore:function(c,a,b){a=d.isHidden(a,b);c.push("<li ",a?"style='display:none;' ":"","id='",b.tId,"' class='", |
| | | m.className.LEVEL,b.level,"' tabindex='0' hidefocus='true' treenode>")},showNode:function(c,a){d.isHidden(c,a,!1);d.initShowForExCheck(c,a);k(a,c).show()},showNodes:function(c,a,b){if(a&&a.length!=0){var f={},g,i;for(g=0,i=a.length;g<i;g++){var h=a[g];if(!f[h.parentTId]){var u=h.getParentNode();f[h.parentTId]=u===null?d.getRoot(c):h.getParentNode()}e.showNode(c,h,b)}for(var j in f)a=d.nodeChildren(c,f[j]),e.setFirstNodeForShow(c,a),e.setLastNodeForShow(c,a)}},hideNode:function(c,a){d.isHidden(c,a, |
| | | !0);a.isFirstNode=!1;a.isLastNode=!1;d.initHideForExCheck(c,a);e.cancelPreSelectedNode(c,a);k(a,c).hide()},hideNodes:function(c,a,b){if(a&&a.length!=0){var f={},g,i;for(g=0,i=a.length;g<i;g++){var h=a[g];if((h.isFirstNode||h.isLastNode)&&!f[h.parentTId]){var j=h.getParentNode();f[h.parentTId]=j===null?d.getRoot(c):h.getParentNode()}e.hideNode(c,h,b)}for(var k in f)a=d.nodeChildren(c,f[k]),e.setFirstNodeForHide(c,a),e.setLastNodeForHide(c,a)}},setFirstNode:function(c,a){var b=d.nodeChildren(c,a),f= |
| | | d.isHidden(c,b[0],!1);b.length>0&&!f?b[0].isFirstNode=!0:b.length>0&&e.setFirstNodeForHide(c,b)},setLastNode:function(c,a){var b=d.nodeChildren(c,a),f=d.isHidden(c,b[0]);b.length>0&&!f?b[b.length-1].isLastNode=!0:b.length>0&&e.setLastNodeForHide(c,b)},setFirstNodeForHide:function(c,a){var b,f,g;for(f=0,g=a.length;f<g;f++){b=a[f];if(b.isFirstNode)break;if(!d.isHidden(c,b)&&!b.isFirstNode){b.isFirstNode=!0;e.setNodeLineIcos(c,b);break}else b=null}return b},setFirstNodeForShow:function(c,a){var b,f, |
| | | g,i,h;for(f=0,g=a.length;f<g;f++){b=a[f];var j=d.isHidden(c,b);if(!i&&!j&&b.isFirstNode){i=b;break}else if(!i&&!j&&!b.isFirstNode)b.isFirstNode=!0,i=b,e.setNodeLineIcos(c,b);else if(i&&b.isFirstNode){b.isFirstNode=!1;h=b;e.setNodeLineIcos(c,b);break}}return{"new":i,old:h}},setLastNodeForHide:function(c,a){var b,f;for(f=a.length-1;f>=0;f--){b=a[f];if(b.isLastNode)break;if(!d.isHidden(c,b)&&!b.isLastNode){b.isLastNode=!0;e.setNodeLineIcos(c,b);break}else b=null}return b},setLastNodeForShow:function(c, |
| | | a){var b,f,g,i;for(f=a.length-1;f>=0;f--){b=a[f];var h=d.isHidden(c,b);if(!g&&!h&&b.isLastNode){g=b;break}else if(!g&&!h&&!b.isLastNode)b.isLastNode=!0,g=b,e.setNodeLineIcos(c,b);else if(g&&b.isLastNode){b.isLastNode=!1;i=b;e.setNodeLineIcos(c,b);break}}return{"new":g,old:i}}},data:{initHideForExCheck:function(c,a){if(d.isHidden(c,a)&&c.check&&c.check.enable){if(typeof a._nocheck=="undefined")a._nocheck=!!a.nocheck,a.nocheck=!0;a.check_Child_State=-1;e.repairParentChkClassWithSelf&&e.repairParentChkClassWithSelf(c, |
| | | a)}},initShowForExCheck:function(c,a){if(!d.isHidden(c,a)&&c.check&&c.check.enable){if(typeof a._nocheck!="undefined")a.nocheck=a._nocheck,delete a._nocheck;if(e.setChkClass){var b=k(a,m.id.CHECK,c);e.setChkClass(c,b,a)}e.repairParentChkClassWithSelf&&e.repairParentChkClassWithSelf(c,a)}}}});var j=j.fn.zTree,l=j._z.tools,m=j.consts,e=j._z.view,d=j._z.data,k=l.$;d.isHidden=function(c,a,b){if(!a)return!1;c=c.data.key.isHidden;typeof b!=="undefined"?(typeof b==="string"&&(b=l.eqs(b,"true")),a[c]=!!b): |
| | | a[c]=typeof a[c]=="string"?l.eqs(a[c],"true"):!!a[c];return a[c]};d.exSetting({data:{key:{isHidden:"isHidden"}}});d.addInitNode(function(c,a,b){a=d.isHidden(c,b);d.isHidden(c,b,a);d.initHideForExCheck(c,b)});d.addBeforeA(function(){});d.addZTreeTools(function(c,a){a.showNodes=function(a,b){e.showNodes(c,a,b)};a.showNode=function(a,b){a&&e.showNodes(c,[a],b)};a.hideNodes=function(a,b){e.hideNodes(c,a,b)};a.hideNode=function(a,b){a&&e.hideNodes(c,[a],b)};var b=a.checkNode;if(b)a.checkNode=function(f, |
| | | e,i,h){(!f||!d.isHidden(c,f))&&b.apply(a,arguments)}});var n=d.initNode;d.initNode=function(c,a,b,f,g,i,h){var j=(f?f:d.getRoot(c))[c.data.key.children];d.tmpHideFirstNode=e.setFirstNodeForHide(c,j);d.tmpHideLastNode=e.setLastNodeForHide(c,j);h&&(e.setNodeLineIcos(c,d.tmpHideFirstNode),e.setNodeLineIcos(c,d.tmpHideLastNode));g=d.tmpHideFirstNode===b;i=d.tmpHideLastNode===b;n&&n.apply(d,arguments);h&&i&&e.clearOldLastNode(c,b,h)};var o=d.makeChkFlag;if(o)d.makeChkFlag=function(c,a){(!a||!d.isHidden(c, |
| | | a))&&o.apply(d,arguments)};var p=d.getTreeCheckedNodes;if(p)d.getTreeCheckedNodes=function(c,a,b,f){if(a&&a.length>0){var e=a[0].getParentNode();if(e&&d.isHidden(c,e))return[]}return p.apply(d,arguments)};var q=d.getTreeChangeCheckedNodes;if(q)d.getTreeChangeCheckedNodes=function(c,a,b){if(a&&a.length>0){var e=a[0].getParentNode();if(e&&d.isHidden(c,e))return[]}return q.apply(d,arguments)};var r=e.expandCollapseSonNode;if(r)e.expandCollapseSonNode=function(c,a,b,f,g){(!a||!d.isHidden(c,a))&&r.apply(e, |
| | | arguments)};var s=e.setSonNodeCheckBox;if(s)e.setSonNodeCheckBox=function(c,a,b,f){(!a||!d.isHidden(c,a))&&s.apply(e,arguments)};var t=e.repairParentChkClassWithSelf;if(t)e.repairParentChkClassWithSelf=function(c,a){(!a||!d.isHidden(c,a))&&t.apply(e,arguments)}})(jQuery); |
| | |
| | | import router, { constantRoutes, dynamicRoutes } from '@/router' |
| | | import { getRouters } from '@/api/menu' |
| | | import Layout from '@/layout/index' |
| | | import ParentView from '@/components/ParentView' |
| | | import ParentView from '@/components/RuoYi/ParentView' |
| | | import InnerLink from '@/layout/components/InnerLink' |
| | | |
| | | const permission = { |
| | |
| | | import { login, logout, getInfo } from '@/api/login' |
| | | import { getToken, setToken, removeToken } from '@/utils/auth' |
| | | import log from "@/views/monitor/job/log"; |
| | | import {encrypt} from '@/utils/jsencrypt' |
| | | |
| | | const user = { |
| | | state: { |
| | |
| | | // 登录 |
| | | Login({ commit }, userInfo) { |
| | | const username = userInfo.username.trim() |
| | | const password = userInfo.password |
| | | // const password = userInfo.password |
| | | const password = encrypt(userInfo.password) |
| | | const code = userInfo.code |
| | | const uuid = userInfo.uuid |
| | | const loginType = userInfo.loginType |
New file |
| | |
| | | // Base Url |
| | | export function getBaseUrl() { |
| | | return globalConf.baseUrl |
| | | } |
| | | |
| | | // Ftp Url |
| | | export function getFtpUrl() { |
| | | return globalConf.ftpUrl |
| | | } |
| | | |
| | | // Ftp 上传地址 |
| | | export function getUploadUrl() { |
| | | return getBaseUrl() + '/v1/base/upload/file/fileUpload' |
| | | } |
New file |
| | |
| | | export function formatDate(date, fmt) { |
| | | try { |
| | | if (!(date instanceof Date)) { |
| | | date = new Date(date) |
| | | } |
| | | if (fmt == undefined || fmt == '') { |
| | | fmt = 'yyyy-MM-dd hh:mm:ss' |
| | | } |
| | | if (/(y+)/.test(fmt)) { |
| | | fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) |
| | | } |
| | | const o = { |
| | | 'M+': date.getMonth() + 1, |
| | | 'd+': date.getDate(), |
| | | 'h+': date.getHours(), |
| | | 'm+': date.getMinutes(), |
| | | 's+': date.getSeconds() |
| | | } |
| | | for (const k in o) { |
| | | if (new RegExp(`(${k})`).test(fmt)) { |
| | | const str = o[k] + '' |
| | | fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : padLeftZero(str)) |
| | | } |
| | | } |
| | | return fmt |
| | | } catch (e) { |
| | | console.log(e) |
| | | return '-' |
| | | } |
| | | } |
| | | |
| | | function padLeftZero(str) { |
| | | return ('00' + str).substr(str.length) |
| | | } |
| | | |
| | | /** |
| | | * @Author wh |
| | | * @Date 2022/2/25 - 14:35 |
| | | * @Description //日期比较 |
| | | **/ |
| | | export function compare(date1, date2) { |
| | | const dates1 = new Date(date1) |
| | | const dates2 = new Date(date2) |
| | | if (dates1 > dates2) { |
| | | return true |
| | | } else { |
| | | return false |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @Author wh |
| | | * @Date 2022/5/13 - 15:43 |
| | | * @Description //时间格式转换 |
| | | * 传值时自动调用了toJSON()函数,手动转成你想要的字符串格式 |
| | | **/ |
| | | export function FormatTime(t, date) { |
| | | var date = new Date(date) |
| | | var o = { |
| | | 'M+': date.getMonth() + 1, // 月份 |
| | | 'd+': date.getDate(), // 日 |
| | | 'h+': date.getHours(), // 小时 |
| | | 'm+': date.getMinutes(), // 分 |
| | | 's+': date.getSeconds(), // 秒 |
| | | 'q+': Math.floor((date.getMonth() + 3) / 3), // 季度 |
| | | 'S': date.getMilliseconds() // 毫秒 |
| | | } |
| | | if (/(y+)/.test(t)) { |
| | | t = t.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) |
| | | } |
| | | for (var k in o) { |
| | | if (new RegExp('(' + k + ')').test(t)) { |
| | | t = t.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) |
| | | } |
| | | } |
| | | return t |
| | | } |
| | |
| | | |
| | | // 密钥对生成 http://web.chacuo.net/netrsakeypair |
| | | |
| | | const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' + |
| | | 'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==' |
| | | const publicKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTREknOkrusbeH7kBe3mSw4AwVT438IWmX/jKmcvYxaAWRrBJiMl7gk37L78HBG/ZstLLcdKBYYdj/5cvVWDQfv+uxbv/piZhOmQej98jWIXEA8aFEk724nFRJ7nfcEhHSWfzbTfgZw0KDO1mWdjWHnHIx/MtD0HIFFIyzg3aO7wIDAQAB' |
| | | |
| | | const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' + |
| | | '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' + |
| | |
| | | return encryptor.encrypt(txt) // 对数据进行加密 |
| | | } |
| | | |
| | | // 解密 |
| | | // 解密(客户端不会实现解密,2023-04-07) |
| | | export function decrypt(txt) { |
| | | const encryptor = new JSEncrypt() |
| | | encryptor.setPrivateKey(privateKey) // 设置私钥 |
New file |
| | |
| | | /** |
| | | * 对象深度拷贝 |
| | | * @param obj |
| | | * @returns {Array} |
| | | */ |
| | | export function objClone(obj) { |
| | | const result = Array.isArray(obj) ? [] : {} |
| | | if (obj == undefined) { |
| | | return result |
| | | } |
| | | for (const key in obj) { |
| | | if (obj.hasOwnProperty(key)) { |
| | | if (typeof obj[key] === 'object') { |
| | | result[key] = objClone(obj[key]) // 递归复制 |
| | | } else { |
| | | result[key] = obj[key] |
| | | } |
| | | } |
| | | } |
| | | return result |
| | | } |
| | | |
| | | /* 检查空 */ |
| | | export function isBlank(str) { |
| | | return str === undefined || str === 'undefined' || str === null || str === '' || str === 'null' || str === '[]' || str === '{}' || str === null || str === JSON.stringify({}) || str === JSON.stringify([]) |
| | | } |
| | | |
| | | export function isNotBlank(str) { |
| | | return !isBlank(str) |
| | | } |
| | | |
| | | /** |
| | | * 两数相加 arg1 + arg2 |
| | | * @param arg1 |
| | | * @param arg2 |
| | | * @returns {number} |
| | | */ |
| | | export function add(arg1, arg2) { |
| | | let t = 0 |
| | | arg1 = arg1 ? arg1.toString() : '0' |
| | | arg2 = arg2 ? arg2.toString() : '0' |
| | | if (arg1.includes('.')) { |
| | | t = arg1.split('.')[1].length |
| | | } |
| | | if (arg2.includes('.')) { |
| | | t = Math.max(arg2.split('.')[1].length, t) |
| | | } |
| | | const m = Math.pow(10, t) |
| | | return (multiply(arg1, m) + multiply(arg2, m)) / m |
| | | } |
| | | |
| | | /** |
| | | * 两数相减 arg1 - arg2 |
| | | * @param arg1 |
| | | * @param arg2 |
| | | * @returns {number} |
| | | */ |
| | | export function subtract(arg1, arg2) { |
| | | let t = 0 |
| | | arg1 = arg1 ? arg1.toString() : '0' |
| | | arg2 = arg2 ? arg2.toString() : '0' |
| | | if (arg1.includes('.')) { |
| | | t = arg1.split('.')[1].length |
| | | } |
| | | if (arg2.includes('.')) { |
| | | t = Math.max(arg2.split('.')[1].length, t) |
| | | } |
| | | const m = Math.pow(10, t) |
| | | return Number(((multiply(arg1, m) - multiply(arg2, m)) / m).toFixed(t)) |
| | | } |
| | | |
| | | /** |
| | | * 两数相乘 arg1 * arg2 |
| | | * @param arg1 |
| | | * @param arg2 |
| | | * @returns {number} |
| | | */ |
| | | export function multiply(arg1, arg2) { |
| | | let t = 0 |
| | | arg1 = arg1 ? arg1.toString() : '0' |
| | | arg2 = arg2 ? arg2.toString() : '0' |
| | | if (arg1.includes('.')) { |
| | | t += arg1.split('.')[1].length |
| | | } |
| | | if (arg2.includes('.')) { |
| | | t += arg2.split('.')[1].length |
| | | } |
| | | const r1 = Number(arg1.replace('.', '')) |
| | | const r2 = Number(arg2.replace('.', '')) |
| | | return (r1 * r2) / Math.pow(10, t) |
| | | } |
| | | |
| | | /** |
| | | * 两数相除 arg1 / arg2 |
| | | * @param arg1 |
| | | * @param arg2 |
| | | * @returns {number} |
| | | */ |
| | | export function abs(arg1, arg2) { |
| | | let t = 0 |
| | | arg1 = arg1 ? arg1.toString() : '0' |
| | | arg2 = arg2 ? arg2.toString() : '0' |
| | | if (arg2.includes('.')) { |
| | | t = arg2.split('.')[1].length |
| | | } |
| | | if (arg1.includes('.')) { |
| | | t -= arg1.split('.')[1].length |
| | | } |
| | | const r1 = Number(arg1.replace('.', '')) |
| | | const r2 = Number(arg2.replace('.', '')) |
| | | return multiply((r1 / r2), Math.pow(10, t)) |
| | | } |
| | | |
| | | /** |
| | | * array转Str |
| | | * @param array |
| | | * @returns {*} |
| | | */ |
| | | export function array2Str(array) { |
| | | if (array == null || array.length == 0) { |
| | | return null |
| | | } |
| | | return array.length == 0 ? null : JSON.stringify(array) |
| | | } |
| | | |
| | | /** |
| | | * Str转Array |
| | | * @param array |
| | | * @returns {*} |
| | | */ |
| | | export function str2Array(str) { |
| | | if (!str) { |
| | | return [] |
| | | } |
| | | if (typeof (str) == 'object') { |
| | | return str |
| | | } |
| | | return JSON.parse(str) |
| | | } |
| | | |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-08-16 10:52 |
| | | * @Description :uuid |
| | | */ |
| | | export function guid() { |
| | | return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { |
| | | const r = Math.random() * 16 | 0 |
| | | const v = c == 'x' ? r : (r & 0x3 | 0x8) |
| | | return v.toString(16) |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * @author Lx |
| | | * @description 详情显示附件展示 |
| | | * @return 返回一个对象,用isShow判断附件是否为空; 用data循环附件数据 |
| | | * */ |
| | | export function showAppendix(appendix) { |
| | | const appendixArray = JSON.parse(appendix) |
| | | // 附件数据 |
| | | const appendixData = [] |
| | | // 判断附件是否为空,如果不为空组织数据 |
| | | let isShow = false |
| | | if (appendix) { |
| | | isShow = true |
| | | appendixArray.forEach(item => { |
| | | appendixData.push({ |
| | | path: globalConf.ftpUrl + item.path, |
| | | name: item.name |
| | | }) |
| | | }) |
| | | } |
| | | return { |
| | | isShow: isShow, |
| | | data: appendixData |
| | | } |
| | | } |
| | | |
| | | export function showImage(appendix) { |
| | | const appendixArray = JSON.parse(appendix) |
| | | // 附件数据 |
| | | const appendixData = [] |
| | | // 判断附件是否为空,如果不为空组织数据 |
| | | let isShow = false |
| | | if (appendix) { |
| | | isShow = true |
| | | appendixArray.forEach(item => { |
| | | appendixData.push({ |
| | | path: item.path, |
| | | name: item.name |
| | | }) |
| | | }) |
| | | } |
| | | return { |
| | | isShow: isShow, |
| | | data: appendixData |
| | | } |
| | | } |
| | | |
| | | export function uuid(len, radix) { |
| | | var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('') |
| | | var uuid = []; var i |
| | | radix = radix || chars.length |
| | | |
| | | if (len) { |
| | | // Compact form |
| | | for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix] |
| | | } else { |
| | | // rfc4122, version 4 form |
| | | var r |
| | | |
| | | // rfc4122 requires these characters |
| | | uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-' |
| | | uuid[14] = '4' |
| | | |
| | | // Fill in random data. At i==19 set the high bits of clock sequence as |
| | | // per rfc4122, sec. 4.1.5 |
| | | for (i = 0; i < 36; i++) { |
| | | if (!uuid[i]) { |
| | | r = 0 | Math.random() * 16 |
| | | uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r] |
| | | } |
| | | } |
| | | } |
| | | |
| | | return uuid.join('') |
| | | } |
New file |
| | |
| | | <template> |
| | | <a-dropdown style="margin-left: 5px;" :trigger="['click','hover']"> |
| | | <a-button size="small"> |
| | | 更多 |
| | | <a-icon type="down" /> |
| | | </a-button> |
| | | <a-menu slot="overlay"> |
| | | <a-menu-item key="1"> |
| | | <span @click="testC(1)">1st item</span> |
| | | </a-menu-item> |
| | | <a-menu-item key="2"> |
| | | <span @click="testC(2)">1st item</span> |
| | | </a-menu-item> |
| | | <a-menu-item key="3"> |
| | | <span @click="testC(3)">1st item</span> |
| | | </a-menu-item> |
| | | </a-menu> |
| | | </a-dropdown> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | methods: { |
| | | testC(e) { |
| | | console.log('click', e) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .a-button-cus{ |
| | | font-size: 12px; |
| | | } |
| | | .ant-btn-sm { |
| | | padding: 0px 7px; |
| | | font-size: 12px; |
| | | border-radius: 3px; |
| | | height: 20px; |
| | | } |
| | | .ant-btn > .anticon + span, .ant-btn > span + .anticon { |
| | | margin-left: unset; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <el-row :gutter="20" style="margin-bottom: 10px"> |
| | | <el-col :span="18"> |
| | | <!--<el-form :inline="true" :model="myForm">--> |
| | | <!--<el-form-item label="地址">--> |
| | | <el-input id="place" v-model="myForm.address" type="textarea" :rows="1" placeholder="输入可以检索地址" /> |
| | | <span style="color: #F56C6C;">自动识别的地址存在误差。如有错误,请自行更正!</span> |
| | | <!--</el-form-item>--> |
| | | <!--<el-form-item>--> |
| | | <!--</el-form-item>--> |
| | | <!--</el-form>--> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-button type="primary" @click="save">确定</el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <!--<el-form :inline="true" label-width="100px" :model="myForm" class="demo-form-inline">--> |
| | | <!--<!–<el-form-item label="检索地址">–>--> |
| | | <!--<!–<el-input id="place" v-model="myForm.address" placeholder="检索地址" />–>--> |
| | | <!--<!–</el-form-item>–>--> |
| | | <!--<el-form-item label="省">--> |
| | | <!--<el-input v-model="myForm.prov" />--> |
| | | <!--</el-form-item>--> |
| | | <!--<el-form-item label="市">--> |
| | | <!--<el-input v-model="myForm.city" />--> |
| | | <!--</el-form-item>--> |
| | | <!--<el-form-item label="区">--> |
| | | <!--<el-input v-model="myForm.area" />--> |
| | | <!--</el-form-item>--> |
| | | <!--<el-form-item label="经度">--> |
| | | <!--<el-input v-model="myForm.lat" />--> |
| | | <!--</el-form-item>--> |
| | | <!--<el-form-item label="维度">--> |
| | | <!--<el-input v-model="myForm.lng" />--> |
| | | <!--</el-form-item>--> |
| | | <!--<el-form-item>--> |
| | | <!--<el-button type="primary" @click="save">确定</el-button>--> |
| | | <!--</el-form-item>--> |
| | | <!--</el-form>--> |
| | | <div id="container" style="width: 100%;height: 500px" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | myForm: { |
| | | prov: '', |
| | | city: '', |
| | | area: '', |
| | | address: '', |
| | | lat: '', |
| | | lng: '' |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | mounted() { |
| | | this.init() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | // console.log(this.myForm) |
| | | const that = this |
| | | const center = new window.qq.maps.LatLng(39.916527, 116.397128) // 地图的中心地理坐标。 |
| | | const map = new window.qq.maps.Map(document.getElementById('container'), { |
| | | center: center, |
| | | zoom: 13 |
| | | }) |
| | | // 获取城市列表接口设置中心点 |
| | | const citylocation = new window.qq.maps.CityService({ |
| | | complete: function(result) { |
| | | map.setCenter(result.detailWin.latLng) |
| | | } |
| | | }) |
| | | // 调用searchLocalCity();方法 根据用户IP查询城市信息。 |
| | | citylocation.searchLocalCity() |
| | | |
| | | const geocoder = new window.qq.maps.Geocoder() |
| | | // 设置服务请求成功的回调函数 |
| | | geocoder.setComplete(function(result) { |
| | | // console.log('逆地址解析', result) |
| | | const addressComponents = result.detailWin.addressComponents |
| | | that.myForm.prov = addressComponents.province |
| | | that.myForm.city = addressComponents.city |
| | | that.myForm.area = addressComponents.district |
| | | const location = result.detailWin.location |
| | | that.myForm.lat = location.lat |
| | | that.myForm.lng = location.lng |
| | | const nearPois = result.detailWin.nearPois |
| | | that.myForm.address = nearPois[0].address + ' ' + nearPois[0].name |
| | | |
| | | var marker = new window.qq.maps.Marker({ |
| | | position: location, |
| | | map: map |
| | | }) |
| | | window.qq.maps.event.addListener(map, 'click', function(event) { |
| | | marker.setMap(null) |
| | | }) |
| | | |
| | | map.setCenter(location) |
| | | map.zoomTo(18) |
| | | |
| | | // console.log(JSON.stringify(that.myForm)) |
| | | }) |
| | | |
| | | // 添加监听事件 获取鼠标点击事件 |
| | | window.qq.maps.event.addListener(map, 'click', function(event) { |
| | | // var marker = new qq.maps.Marker({ |
| | | // position: event.latLng, |
| | | // map: map |
| | | // }) |
| | | // qq.maps.event.addListener(map, 'click', function(event) { |
| | | // marker.setMap(null) |
| | | // }) |
| | | // // 添加到提示窗 |
| | | // const info = new qq.maps.InfoWindow({ |
| | | // map: map |
| | | // }) |
| | | // // 添加标记点击事件 |
| | | // qq.maps.event.addListener(marker, 'click', function() { |
| | | // info.open() |
| | | // info.setContent('<div style="text-align:center;white-space:nowrap;' + |
| | | // 'margin:10px;">单击标记</div>') |
| | | // info.setPosition(event.latLng) |
| | | // }) |
| | | |
| | | geocoder.getAddress(event.latLng) |
| | | }) |
| | | |
| | | var ap = new window.qq.maps.place.Autocomplete(document.getElementById('place'), { |
| | | zIndex: 999999 |
| | | }) |
| | | var keyword = '' |
| | | // 调用Poi检索类。用于进行本地检索、周边检索等服务。 |
| | | var searchService = new qq.maps.SearchService({ |
| | | complete: function(results) { |
| | | // console.log(results) |
| | | if (results.type === 'CITY_LIST') { |
| | | searchService.setLocation(results.detailWin.cities[0].cityName) |
| | | searchService.search(keyword) |
| | | return |
| | | } |
| | | var pois = results.detailWin.pois |
| | | var latlngBounds = new qq.maps.LatLngBounds() |
| | | |
| | | geocoder.getAddress(pois[0].latLng) |
| | | |
| | | // for (var i = 0, l = pois.length; i < l; i++) { |
| | | |
| | | // var poi = pois[i] |
| | | // if (i == 0) { |
| | | // geocoder.getAddress(poi.latLng) |
| | | // |
| | | // // that.myForm.address = poi.address + ' ' + poi.name |
| | | // } |
| | | // latlngBounds.extend(poi.latLng) |
| | | // var marker = new qq.maps.Marker({ |
| | | // map: map, |
| | | // position: poi.latLng |
| | | // }) |
| | | // |
| | | // // 添加到提示窗 |
| | | // const info = new qq.maps.InfoWindow({ |
| | | // map: map |
| | | // }) |
| | | // |
| | | // // 添加标记点击事件 |
| | | // qq.maps.event.addListener(marker, 'click', function() { |
| | | // info.open() |
| | | // info.setContent('<div style="text-align:center;white-space:nowrap;' + |
| | | // 'margin:10px;">单击标记</div>') |
| | | // info.setPosition(poi.latLng) |
| | | // }) |
| | | // |
| | | // marker.setTitle(poi.name) |
| | | // } |
| | | map.fitBounds(latlngBounds) |
| | | } |
| | | }) |
| | | // 添加监听事件 |
| | | window.qq.maps.event.addListener(ap, 'confirm', function(res) { |
| | | keyword = res.value |
| | | searchService.search(keyword) |
| | | }) |
| | | }, |
| | | save() { |
| | | if (this.myForm.lat == '' || this.myForm.lat == '') { |
| | | this.$message.error('请先标记地图位置!') |
| | | return false |
| | | } |
| | | this.$emit('save', this.myForm) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | body >div:last-child{ |
| | | z-index: 1000000000 !important; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <el-date-picker |
| | | v-model="timeArr" |
| | | :type="mySetting.type" |
| | | :picker-options="pickerOptions" |
| | | :placeholder="mySetting.placeholder" |
| | | :range-separator="mySetting.separator" |
| | | :start-placeholder="mySetting.startPlaceholder" |
| | | :end-placeholder="mySetting.endPlaceholder" |
| | | :format="mySetting.format" |
| | | :value-format="mySetting.valueFormat" |
| | | :default-time="mySetting.defaultTime" |
| | | :align="mySetting.align" |
| | | :clearable="mySetting.clearable" |
| | | :editable="mySetting.editable" |
| | | :disabled="mySetting.disabled" |
| | | :readonly="mySetting.readonly" |
| | | :unlink-panels="mySetting.unLink" |
| | | :style="defaultStyle" |
| | | @change="change" |
| | | /> |
| | | </template> |
| | | <script> |
| | | /** |
| | | daterange 日期范围选择 (默认) |
| | | date 日期单选 |
| | | datetimerange 日期时间范围选择 |
| | | datetime 日期时间单选 |
| | | monthrange 月份范围选择 |
| | | */ |
| | | export default { |
| | | props: { |
| | | setting: { |
| | | type: Object, |
| | | default: () => { |
| | | return {} |
| | | } |
| | | }, |
| | | options: { |
| | | type: Object, |
| | | default: () => { |
| | | return {} |
| | | } |
| | | }, |
| | | value: { |
| | | // type: [Array, String], |
| | | required: true |
| | | }, |
| | | myStyle: { |
| | | type: Object, |
| | | default: () => { |
| | | return {} |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | timeArr: null, |
| | | mySetting: { |
| | | shortcut: true, // 使用快捷选项 |
| | | shortcuts: [], // 使用的预设的快捷选项 (当shortcut为 true 且未自定义快捷选项时有效) 数组值为shortcutObj定义的key |
| | | clearable: true, // 可清空 |
| | | editable: true, // 可编辑 |
| | | disabled: false, // 禁用 |
| | | readonly: false, // 只读 |
| | | afterToday: false, // 只能选择之后的日期 |
| | | beforeToday: false, // 只能选择之前的日期 |
| | | unLink: true, // 取消多个日期面板的联动 |
| | | type: 'daterange', // 类型 可选项 year/month/date/dates/ week/datetime/datetimerange/daterange/monthrange |
| | | format: 'yyyy-MM-dd', // 显示在输入框的格式化类型 |
| | | valueFormat: 'yyyy-MM-dd HH:mm:ss', // 绑定值的格式化类型 |
| | | align: 'right', // 对齐方式 可选项 left, center, right |
| | | placeholder: '请选择日期', |
| | | separator: '至', // 范围选择时的分隔符 |
| | | startPlaceholder: '开始日期', // 范围选择时开始占位文本 |
| | | endPlaceholder: '结束日期', // 范围选择时结束占位文本 |
| | | defaultTime: ['00:00:00', '23:59:59'] // 范围选择时选中日期所使用的当日内具体时刻 |
| | | }, |
| | | pickerOptions: { // 组件配置 详情参考官网 |
| | | shortcuts: null, // 设置快捷选项,需要传入 { text, onClick } type: Array |
| | | disabledDate: null, // 设置禁用状态,参数为当前日期,要求返回 Boolean type: Function |
| | | firstDayOfWeek: 7, // 周起始日 1 到 7 type: number |
| | | onPick: null // 选中日期后会执行的回调,只有当daterange或datetimerange才生效 type:Function({ maxDate, minDate }) |
| | | }, |
| | | defaultStyle: {} // 默认样式 |
| | | } |
| | | }, |
| | | watch: { |
| | | value(val) { |
| | | this.init(val) |
| | | } |
| | | }, |
| | | created() { |
| | | this.init(this.value) |
| | | }, |
| | | mounted() { |
| | | window.zxc = this |
| | | }, |
| | | methods: { |
| | | /** |
| | | * 根据type 初始化默认配置信息 |
| | | * @author zxc |
| | | * @Date 2019/7/9 11:19 |
| | | **/ |
| | | init(obj) { |
| | | /** **********************************************初始化配置信息************************************************************/ |
| | | const type = this.setting.type || this.mySetting.type |
| | | switch (type) { |
| | | case 'datetimerange': // 日期时间范围 |
| | | this.mySetting.format = 'yyyy-MM-dd HH:mm:ss' |
| | | if (obj.length > 0 && obj.every(item => item)) { |
| | | this.timeArr = [].concat(obj) |
| | | } else { |
| | | this.timeArr = null |
| | | } |
| | | break |
| | | case 'daterange': // 日期范围 |
| | | this.mySetting.format = 'yyyy-MM-dd' |
| | | if (obj.length > 0 && obj.every(item => item)) { |
| | | this.timeArr = [].concat(obj) |
| | | } else { |
| | | this.timeArr = null |
| | | } |
| | | break |
| | | case 'monthrange': // 日期范围 |
| | | this.mySetting.format = 'yyyy-MM' |
| | | if (obj.length > 0 && obj.every(item => item)) { |
| | | this.timeArr = [].concat(obj) |
| | | } else { |
| | | this.timeArr = null |
| | | } |
| | | break |
| | | case 'datetime': |
| | | this.mySetting.format = 'yyyy-MM-dd HH:mm:ss' |
| | | this.mySetting.defaultTime = null // 不置空会报错 |
| | | this.timeArr = this.value |
| | | break |
| | | case 'date': |
| | | this.mySetting.format = 'yyyy-MM-dd' |
| | | this.mySetting.defaultTime = null // 不置空会报错 |
| | | this.timeArr = this.value |
| | | break |
| | | default: |
| | | break |
| | | } |
| | | Object.assign(this.mySetting, this.setting) |
| | | Object.assign(this.defaultStyle, this.myStyle) |
| | | Object.assign(this.pickerOptions, this.options) |
| | | defaultTime = this.mySetting.defaultTime |
| | | /** **********************************************初始禁用项************************************************************/ |
| | | if (this.pickerOptions.disabledDate == null) { |
| | | if (this.mySetting.afterToday) { // 只能选择之后的日期 |
| | | this.pickerOptions.disabledDate = (date) => { |
| | | let da = new Date() |
| | | switch (type) { |
| | | case 'date': |
| | | case 'datetime': |
| | | case 'datetimerange': |
| | | case 'daterange': |
| | | da = new Date(da.getFullYear(), da.getMonth(), da.getDate()) |
| | | break |
| | | case 'monthrange': |
| | | da = new Date(da.getFullYear(), da.getMonth()) |
| | | break |
| | | } |
| | | return da > date |
| | | } |
| | | } else if (this.mySetting.beforeToday) { // 只能选择之前的日期 |
| | | this.pickerOptions.disabledDate = (date) => { |
| | | let da = new Date() |
| | | switch (type) { |
| | | case 'date': |
| | | case 'datetime': |
| | | case 'datetimerange': |
| | | case 'daterange': |
| | | da = new Date(da.getFullYear(), da.getMonth(), da.getDate(), 23, 59, 59) |
| | | break |
| | | case 'monthrange': // 月份设置 日时分秒为 0 |
| | | da = new Date(da.getFullYear(), da.getMonth() + 1, 0, 23, 59, 59) |
| | | break |
| | | } |
| | | return da < date |
| | | } |
| | | } |
| | | } |
| | | /** **********************************************初始化快捷选项************************************************************/ |
| | | // 使用快捷选项 且 未定义选项时赋予默认值 |
| | | if (this.mySetting.shortcut && this.pickerOptions.shortcuts == null) { |
| | | if (this.mySetting.shortcuts.length > 0) { |
| | | this.pickerOptions.shortcuts = shortcut(this.mySetting.shortcuts) |
| | | } else if (this.mySetting.afterToday) { // 之后日期快捷选项 |
| | | switch (this.mySetting.type) { |
| | | case 'datetimerange': |
| | | case 'daterange': |
| | | this.pickerOptions.shortcuts = shortcut(['DA1W', 'DA1M', 'DA3M', 'DATYe']) |
| | | break |
| | | case 'monthrange': |
| | | this.pickerOptions.shortcuts = shortcut(['MTT', 'MA6M', 'MA1Y', 'MATYe']) |
| | | break |
| | | } |
| | | } else if (this.mySetting.beforeToday) { // 之前日期快捷选项 |
| | | switch (this.mySetting.type) { |
| | | case 'datetimerange': |
| | | case 'daterange': |
| | | this.pickerOptions.shortcuts = shortcut(['DB1W', 'DB1M', 'DB3M', 'DBYbT']) |
| | | break |
| | | case 'monthrange': |
| | | this.pickerOptions.shortcuts = shortcut(['MTT', 'MB6M', 'MB1Y', 'MBYbT']) |
| | | break |
| | | } |
| | | } else { // 默认快捷选项 |
| | | switch (this.mySetting.type) { |
| | | case 'datetimerange': |
| | | case 'daterange': |
| | | this.pickerOptions.shortcuts = shortcut(['DB1W', 'DB1M', 'DB3M', 'DBYbT']) |
| | | break |
| | | case 'monthrange': |
| | | this.pickerOptions.shortcuts = shortcut(['MTT', 'MB6M', 'MB1Y', 'MBYbT']) |
| | | break |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | /** |
| | | * 选中后的回调 |
| | | * @author zxc |
| | | * @Date 2019/7/9 11:17 |
| | | **/ |
| | | change(val) { |
| | | switch (this.mySetting.type) { |
| | | case 'monthrange': |
| | | if (val == null) { |
| | | this.value.length = 0 |
| | | } else { |
| | | // 月份结束日期设为当月最后一天 (默认为 1号) |
| | | const d = new Date(val[1]) |
| | | d.setMonth(d.getMonth() + 1) |
| | | d.setDate(d.getDate() - 1) |
| | | val[1] = this.formatDate(d, this.mySetting.valueFormat) |
| | | for (const i in val) { |
| | | this.value[i] = val[i] |
| | | } |
| | | } |
| | | break |
| | | case 'datetimerange': |
| | | case 'daterange': |
| | | if (val == null) { |
| | | this.value.length = 0 |
| | | } else { |
| | | for (const i in val) { |
| | | this.value[i] = val[i] |
| | | } |
| | | } |
| | | break |
| | | case 'datetime': // 须绑定change事件 | 调用 getContent 方法获取选中时间 |
| | | break |
| | | } |
| | | console.log(val) |
| | | this.$emit('change', val) |
| | | }, |
| | | /** |
| | | * 日期格式化 |
| | | * @author zxc |
| | | * @Date 2019/8/28 19:17 |
| | | **/ |
| | | formatDate(date, fmt) { |
| | | try { |
| | | if (!(date instanceof Date)) { |
| | | date = new Date(date) |
| | | } |
| | | if (fmt == undefined || fmt == '') { |
| | | fmt = 'yyyy-MM-dd HH:mm:ss' |
| | | } |
| | | if (/(y+)/.test(fmt)) { |
| | | fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)) |
| | | } |
| | | const o = { |
| | | 'M+': date.getMonth() + 1, |
| | | 'd+': date.getDate(), |
| | | 'H+': date.getHours(), |
| | | 'm+': date.getMinutes(), |
| | | 's+': date.getSeconds() |
| | | } |
| | | for (const k in o) { |
| | | if (new RegExp(`(${k})`).test(fmt)) { |
| | | const str = o[k] + '' |
| | | fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : this.padLeftZero(str)) |
| | | } |
| | | } |
| | | return fmt |
| | | } catch (e) { |
| | | console.log(e) |
| | | return '-' |
| | | } |
| | | }, |
| | | padLeftZero(str) { |
| | | return ('00' + str).substr(str.length) |
| | | }, |
| | | /** |
| | | * 获取选中日期 |
| | | * 返回值类型与type相关 通过 this.$refs['refVal'].getContent() 调用 |
| | | * @author zxc |
| | | * @Date 2019/7/9 11:18 |
| | | **/ |
| | | getContent() { |
| | | return this.timeArr |
| | | } |
| | | } |
| | | } |
| | | |
| | | let defaultTime = null |
| | | /** |
| | | * 设置快捷选项 |
| | | * @author zxc |
| | | * @Date 2019/8/28 19:18 |
| | | **/ |
| | | function shortcut(arr) { |
| | | const returnArr = [] |
| | | for (const a of arr) { |
| | | if (shortcutObj[a]) { |
| | | returnArr.push(shortcutObj[a]) |
| | | } |
| | | } |
| | | return returnArr.length > 0 ? returnArr : null |
| | | } |
| | | /** |
| | | * 设置默认时间 |
| | | * @author zxc |
| | | * @Date 2019/8/28 19:17 |
| | | **/ |
| | | function setTime(start, end) { |
| | | if (Array.isArray(defaultTime)) { |
| | | // beginTime |
| | | const s = (defaultTime[0]).split(':') |
| | | start.setHours(Number(s[0])) |
| | | start.setMinutes(Number(s[1])) |
| | | start.setSeconds(Number(s[2])) |
| | | // endTime |
| | | const e = (defaultTime[1]).split(':') |
| | | end.setHours(Number(e[0])) |
| | | end.setMinutes(Number(e[1])) |
| | | end.setSeconds(Number(e[2])) |
| | | } |
| | | } |
| | | /** |
| | | * 快捷选项key命名规则: |
| | | * 第一位: T/D/M/Y T:时间范围选择 D:日期范围选择 M:月份范围选择 Y:年份范围选择 (暂无) |
| | | * 第二位: A/B/T A:该选项是之后的日期(未来) B:该选项是之前的日期(最近) T:该选项是当前的日期 (本) |
| | | * 第三位之后: m/H/D/W/M/Y/T m:分 H:时 D:天 W:周 M:月 Y:年 (与数字组成具体时间段) T:当前日期 |
| | | * Wb:周初 We:周末 Mb:月初 Me:月末 Yb:年初 Ye: 年末 (搭配 T 使用) |
| | | * @author zxc |
| | | * @Date 2019/8/25 10:13 |
| | | **/ |
| | | const shortcutObj = { |
| | | 'DA1W': { |
| | | text: '未来一周', |
| | | onClick: (picker) => { |
| | | const start = new Date() |
| | | const end = new Date(start) |
| | | end.setDate(start.getDate() + 6) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'DA1M': { |
| | | text: '未来一个月', |
| | | onClick: (picker) => { |
| | | const start = new Date() |
| | | const end = new Date(start) |
| | | end.setMonth(start.getMonth() + 1) |
| | | end.setDate(start.getDate() - 1) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'DA3M': { |
| | | text: '未来三个月', |
| | | onClick: (picker) => { |
| | | const start = new Date() |
| | | const end = new Date(start) |
| | | end.setMonth(start.getMonth() + 3) |
| | | end.setDate(start.getDate() - 1) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'DATYe': { |
| | | text: '今日至年末', |
| | | onClick: (picker) => { |
| | | const start = new Date() |
| | | const end = new Date(start.getFullYear() + 1, 0, 0) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'MTT': { |
| | | text: '本月', |
| | | onClick: (picker) => { |
| | | const temp = new Date() |
| | | const start = new Date(temp.getFullYear(), temp.getMonth(), 1) |
| | | const end = new Date(temp.getFullYear(), temp.getMonth(), 0) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'MA6M': { |
| | | text: '未来半年', |
| | | onClick: (picker) => { |
| | | const temp = new Date() |
| | | const start = new Date(temp.getFullYear(), temp.getMonth(), 1) |
| | | const end = new Date(temp.getFullYear(), temp.getMonth() + 5, 1) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'MA1Y': { |
| | | text: '未来一年', |
| | | onClick: (picker) => { |
| | | const temp = new Date() |
| | | const start = new Date(temp.getFullYear(), temp.getMonth(), 1) |
| | | const end = new Date(temp.getFullYear(), temp.getMonth() + 11, 1) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'MATYe': { |
| | | text: '本月至年末', |
| | | onClick: (picker) => { |
| | | const temp = new Date() |
| | | const start = new Date(temp.getFullYear(), temp.getMonth(), 1) |
| | | const end = new Date(temp.getFullYear(), 11, 1) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'DB1W': { |
| | | text: '最近一周', |
| | | onClick: (picker) => { |
| | | const end = new Date() |
| | | const start = new Date(end) |
| | | start.setDate(end.getDate() - 6) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'DB1M': { |
| | | text: '最近一个月', |
| | | onClick: (picker) => { |
| | | const end = new Date() |
| | | const start = new Date(end) |
| | | start.setMonth(end.getMonth() - 1) |
| | | start.setDate(end.getDate() + 1) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'DB3M': { |
| | | text: '最近三个月', |
| | | onClick: (picker) => { |
| | | const end = new Date() |
| | | const start = new Date(end) |
| | | start.setMonth(end.getMonth() - 3) |
| | | start.setDate(end.getDate() + 1) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'DBYbT': { |
| | | text: '今年至今', |
| | | onClick: (picker) => { |
| | | const end = new Date() |
| | | const start = new Date(end.getFullYear(), 0) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'MB6M': { |
| | | text: '最近半年', |
| | | onClick: (picker) => { |
| | | const temp = new Date() |
| | | const start = new Date(temp.getFullYear(), temp.getMonth() - 5, 1) |
| | | const end = new Date(temp.getFullYear(), temp.getMonth(), 0) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'MB1Y': { |
| | | text: '最近一年', |
| | | onClick: (picker) => { |
| | | const temp = new Date() |
| | | const start = new Date(temp.getFullYear(), temp.getMonth() - 11, 1) |
| | | const end = new Date(temp.getFullYear(), temp.getMonth(), 0) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | }, |
| | | 'MBYbT': { |
| | | text: '今年至今', |
| | | onClick: (picker) => { |
| | | const temp = new Date() |
| | | const start = new Date(temp.getFullYear(), 0, 1) |
| | | const end = new Date(temp.getFullYear(), temp.getMonth(), 0) |
| | | setTime(start, end) |
| | | picker.$emit('pick', [start, end]) |
| | | } |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <div class="edit-cell" @click="onFieldClick"> |
| | | <el-tooltip |
| | | v-if="!editMode && !showInput" |
| | | :placement="toolTipPlacement" |
| | | :open-delay="toolTipDelay" |
| | | :content="toolTipContent" |
| | | > |
| | | <div |
| | | tabindex="0" |
| | | class="cell-content" |
| | | :class="{'edit-enabled-cell': canEdit}" |
| | | > |
| | | <!-- @keyup.enter="onFieldClick"--> |
| | | <slot name="content" /> |
| | | </div> |
| | | |
| | | </el-tooltip> |
| | | <!--@focus="onFieldClick"--> |
| | | <el-input |
| | | v-if="editMode || showInput" |
| | | ref="input" |
| | | v-model="model" |
| | | placeholder="请输入内容" |
| | | :class="error" |
| | | @keyup.enter.native="onInputEnter" |
| | | v-on="listeners" |
| | | /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { multiply, abs } from '@/utils/tools' |
| | | import { validInteger } from '@/utils/validate' |
| | | export default { |
| | | name: 'EditableCell', |
| | | inheritAttrs: false, |
| | | props: { |
| | | value: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | toolTipContent: { |
| | | type: String, |
| | | default: '点击编辑' |
| | | }, |
| | | toolTipDelay: { |
| | | type: Number, |
| | | default: 500 |
| | | }, |
| | | toolTipPlacement: { |
| | | type: String, |
| | | default: 'top-start' |
| | | }, |
| | | showInput: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | editableComponent: { |
| | | type: String, |
| | | default: 'el-input' |
| | | }, |
| | | closeEvent: { |
| | | type: String, |
| | | default: 'blur' |
| | | }, |
| | | canEdit: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | rowData: { |
| | | type: Object, |
| | | default: function() { |
| | | return {} |
| | | } |
| | | }, |
| | | flag: { |
| | | type: String |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | editMode: false, |
| | | error: '' |
| | | } |
| | | }, |
| | | computed: { |
| | | model: { |
| | | get() { |
| | | return this.value |
| | | }, |
| | | set(val) { |
| | | this.$emit('input', val) |
| | | } |
| | | }, |
| | | listeners() { |
| | | return { |
| | | [this.closeEvent]: this.onInputExit, |
| | | ...this.$listeners |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | onFieldClick() { |
| | | if (this.canEdit) { |
| | | this.editMode = true |
| | | this.$nextTick(() => { |
| | | const inputRef = this.$refs.input |
| | | if (inputRef && inputRef.focus) { |
| | | inputRef.focus() |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | onInputEnter() { |
| | | // enter 触发blur |
| | | this.$refs.input.blur() |
| | | }, |
| | | // 在这里做自定义校验 |
| | | onInputExit() { |
| | | this.error = '' |
| | | console.log(this.rowData) |
| | | if (this.flag == 'bargain') { |
| | | const rate = this.rowData.minEarningRate |
| | | const price = abs(this.rowData.negotiatedPrice * (1 + abs(rate, 100)), 100) |
| | | console.log('控制价:', price) |
| | | console.log('输入价:', this.model) |
| | | if (this.model < price) { |
| | | this.$refs.input.focus() |
| | | this.$message.error('不能小于最低盈利率') |
| | | this.error = 'error' |
| | | return false |
| | | } |
| | | } else { |
| | | const ratio = this.rowData.batchRatio |
| | | if (!validInteger(ratio)) { |
| | | this.$message.error('请输入整数') |
| | | return false |
| | | } |
| | | if (ratio < 0 || ratio > 100) { |
| | | this.$message.error('请输入0~100之间的数字') |
| | | return false |
| | | } |
| | | } |
| | | this.editMode = false |
| | | return false |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style> |
| | | .cell-content { |
| | | min-height: 28px; |
| | | padding-left: 5px; |
| | | padding-top: 2px; |
| | | border: 1px solid transparent; |
| | | } |
| | | .error input{ |
| | | border-color: red!important; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <win2 :title="setting.type == 1 ? '备注' : '沟通记录'" @close="close"> |
| | | <el-form ref="formData" :model="formData" :rules="rules" label-width="100px"> |
| | | <el-form-item :label="setting.type == 1 ? '备注' : '沟通记录' + ':'" prop="content"> |
| | | <el-input |
| | | v-model="formData.content" |
| | | type="textarea" |
| | | :rows="3" |
| | | maxlength="500" |
| | | show-word-limit |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="附件:"> |
| | | <upload ref="appendix" :settings="settings" :values="formData.appendix" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" align="center" class="dialog-footer"> |
| | | <my-button-v2 name="取消" site="form" @click="close" /> |
| | | <my-button-v2 name="保存" site="form" @click="save" /> |
| | | </div> |
| | | </win2> |
| | | </template> |
| | | |
| | | <script> |
| | | import win2 from '@/views/components/win2' |
| | | import upload from '@/views/components/upload' |
| | | import myButtonV2 from '@/views/components/myButtonV2' |
| | | import { getUploadUrl } from '@/utils/base' |
| | | import { saveRemark } from '@/api/common.js' |
| | | export default { |
| | | components: { win2, upload, myButtonV2 }, |
| | | props: { |
| | | setting: { |
| | | type: Object, |
| | | default: function() { |
| | | return {} |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | settings: { |
| | | uploadUrl: getUploadUrl(), |
| | | num: 1, |
| | | accept: '.jpg,.jpeg,.png,.bmp,.pdf,.doc,.docx,.xls,.xlsx,.zip,' // 限制格式 |
| | | }, |
| | | formData: { |
| | | id: null, |
| | | businessType: null, |
| | | businessId: null, |
| | | type: null, |
| | | content: null, |
| | | appendix: [] |
| | | }, |
| | | rules: { |
| | | content: [ |
| | | { required: true, message: '必填项', trigger: 'blur' } |
| | | ] |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | Object.assign(this.formData, this.setting) |
| | | }, |
| | | methods: { |
| | | close() { |
| | | this.$emit('close') |
| | | }, |
| | | save() { |
| | | this.$refs.formData.validate(valid => { |
| | | if (valid) { |
| | | const params = Object.assign({}, this.formData) |
| | | const appendix = this.$refs.appendix.getContent() |
| | | if (appendix.length > 0) { |
| | | params.appendix = JSON.stringify(appendix) |
| | | } |
| | | if (!params.businessType || !params.businessId || !params.type) { |
| | | this.$message.error('缺少业务ID,业务类型,备注类型!') |
| | | return false |
| | | } |
| | | saveRemark(params).then(response => { |
| | | if (response.code == 10000 && response.data > 0) { |
| | | this.$message.success('保存成功!') |
| | | this.close() |
| | | } else { |
| | | this.$message.error(response.description || '保存失败!') |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <div class="app-container"> |
| | | <el-timeline> |
| | | <el-timeline-item v-for="(item ,idx) in activities" :key="idx"> |
| | | <h4>{{ item.content }}</h4> |
| | | <p v-if="showAppendix(item.appendix)"><el-link target="_blank" :href="getAppendix(item.appendix).path" type="primary">{{ getAppendix(item.appendix).name }}</el-link></p> |
| | | <p class="timeline-user"><span>{{ item.createUserName }}</span> <span>{{ getFormatDate(item.createTime) }}</span></p> |
| | | </el-timeline-item> |
| | | </el-timeline> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getReamrkList } from '@/api/common.js' |
| | | import { formatDate } from '@/utils/date.js' |
| | | export default { |
| | | props: { |
| | | setting: { |
| | | type: Object, |
| | | default: function() { |
| | | return {} |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | activities: [] |
| | | } |
| | | }, |
| | | watch: { |
| | | setting: { |
| | | handler(v, o) { |
| | | if (v.businessId !== o.businessId) { |
| | | this.init() |
| | | } |
| | | }, |
| | | deep: true |
| | | } |
| | | }, |
| | | created() { |
| | | this.init() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | if (this.setting.businessType && this.setting.businessId && this.setting.type) { |
| | | getReamrkList(this.setting).then(res => { |
| | | this.activities = res.data |
| | | }) |
| | | } |
| | | }, |
| | | showAppendix(appendix) { |
| | | if (appendix) { |
| | | return true |
| | | } |
| | | return false |
| | | }, |
| | | getAppendix(appendix) { |
| | | const appendixArray = JSON.parse(appendix) |
| | | return { |
| | | path: globalConf.ftpUrl + appendixArray[0].path, |
| | | name: appendixArray[0].name |
| | | } |
| | | }, |
| | | getFormatDate(time) { |
| | | return formatDate(time, 'yyyy-MM-dd hh:mm:ss') |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <el-tooltip class="item" effect="dark" placement="top-start"> |
| | | <div slot="content" v-html="contents" /> |
| | | <svg-icon icon-class="help" /> |
| | | </el-tooltip> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | content: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | contents: this.content |
| | | } |
| | | }, |
| | | watch: { |
| | | content(v) { |
| | | this.contents = v |
| | | } |
| | | }, |
| | | created() { |
| | | this.contents = this.content |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <!--工具条--> |
| | | <div class="table-tool-bar"> |
| | | <!--自定义工具--> |
| | | <my-button-v2 |
| | | v-for="(custom,idx) in myTable.tools.custom" |
| | | :key="idx" |
| | | :check-permission="custom.checkPermission" |
| | | :name="custom.name" |
| | | site="tools" |
| | | @click="custom.click" |
| | | /> |
| | | </div> |
| | | <!--table列表--> |
| | | <el-row :gutter="20" style="margin: 10px 0;"> |
| | | <el-col v-for="(item,index) in myTable.rows" :key="index" :span="4"> |
| | | <div> |
| | | <!-- 弹出框 --> |
| | | <el-popover placement="right" width="190" trigger="hover" transition="none"> |
| | | <ul> |
| | | <li> |
| | | 姓名: |
| | | <span>{{ item.name }}</span> |
| | | </li> |
| | | <li> |
| | | 职务: |
| | | <span>{{ item.duties }}</span> |
| | | </li> |
| | | <li> |
| | | 职称: |
| | | <span>{{ item.title }}</span> |
| | | </li> |
| | | <li> |
| | | 手机号: |
| | | <span>{{ item.tel }}</span> |
| | | </li> |
| | | </ul> |
| | | <!-- 测试图片 --> |
| | | <img v-if="item.sex===2" slot="reference" :src="item.photo ? getImagePath(item.photo) : womanHeadSculpture" class="image" @click="clickInfo(item)"> |
| | | <img v-else slot="reference" :src="item.photo ? getImagePath(item.photo) : manHeadSculpture" class="image" @click="clickInfo(item)"> |
| | | </el-popover> |
| | | <div style="padding: 10px 5px;"> |
| | | <span>{{ item.name }}({{ item.duties }})</span> |
| | | <div class="bottom clearfix"> |
| | | <!-- 操作按钮部分 --> |
| | | <div class="operation"> |
| | | <template v-for="(custom,idx) in myTable.operation.attr"> |
| | | <my-button-v2 |
| | | :key="idx" |
| | | :name="custom.title" |
| | | site="operation" |
| | | @click="custom.events(item)" |
| | | /> |
| | | </template> |
| | | |
| | | <template v-if="myTable.operation.more && myTable.operation.more.length>0"> |
| | | <a-dropdown |
| | | :trigger="['hover','click']" |
| | | :overlay-style="{'z-index':'999999!important'}" |
| | | > |
| | | <a-button style="margin-left: 8px" size="small"> |
| | | 更多 |
| | | <a-icon type="down" /> |
| | | </a-button> |
| | | <a-menu slot="overlay"> |
| | | <template v-for="(m,i) in myTable.operation.more"> |
| | | <a-menu-item :key="i" @click="m.events(item)"> |
| | | <my-button-v2 :name="m.title" :check-permission="m.checkPermission" /> |
| | | </a-menu-item> |
| | | </template> |
| | | </a-menu> |
| | | </a-dropdown> |
| | | </template> |
| | | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-pagination |
| | | :current-page="myTable.paging.page.pageNumber" |
| | | :page-size="myTable.paging.page.pageSize" |
| | | :page-sizes="[24, 24*2 ,24*5,24*10]" |
| | | :small="myTable.paging.page.small" |
| | | :total="myTable.paging.page.total" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | @current-change="handleCurrentChange" |
| | | @size-change="handleSizeChange" |
| | | /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import request from '@/utils/request' |
| | | import myButtonV2 from '@/views/components/myButtonV2' |
| | | import { str2Array } from '@/utils/tools' |
| | | import femaleImg from '@/assets/images/staff-female.jpg' |
| | | import maleImg from '@/assets/images/staff-male.jpg' |
| | | export default { |
| | | components: { myButtonV2 }, |
| | | props: { |
| | | table: { |
| | | type: Object, |
| | | default() { |
| | | return null |
| | | } |
| | | }, |
| | | filter: { |
| | | type: Object, |
| | | default() { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | /** table列表数据*/ |
| | | myTable: { |
| | | url: '', |
| | | // 工具条 |
| | | tools: { |
| | | custom: [] |
| | | }, |
| | | rows: [], |
| | | operation: { |
| | | attr: [], // 操作 |
| | | more: [] // 更多 |
| | | }, |
| | | paging: { |
| | | show: true, // 显示分页 |
| | | // 分页信息 |
| | | page: { |
| | | small: false, |
| | | pageNumber: 1, |
| | | pageSize: 24, |
| | | total: 0 |
| | | } |
| | | } |
| | | }, |
| | | // 用户为男性的头像 |
| | | manHeadSculpture: maleImg, |
| | | // 用户为女性的头像 |
| | | womanHeadSculpture: femaleImg |
| | | } |
| | | }, |
| | | created() { |
| | | if (this.table != null) { |
| | | Object.assign(this.myTable, this.table) |
| | | if (this.myTable.paging.page == undefined) { |
| | | this.$set(this.myTable.paging, 'page', { |
| | | small: false, |
| | | pageNumber: 1, |
| | | pageSize: 10, |
| | | total: 0 |
| | | }) |
| | | } |
| | | this.$nextTick(() => { |
| | | this.search({}) |
| | | }) |
| | | } |
| | | }, |
| | | methods: { |
| | | search(param) { |
| | | this.$nextTick(() => { |
| | | this.myTable.loading = true |
| | | const params = Object.assign({}, this.filter) |
| | | params.pageSize = this.myTable.paging.page.pageSize |
| | | if (param && param.pageNumber) { |
| | | this.myTable.paging.page.pageNumber = param.pageNumber |
| | | } |
| | | params.pageNumber = this.myTable.paging.page.pageNumber |
| | | request({ |
| | | url: this.myTable.url, |
| | | method: 'get', |
| | | params: params |
| | | }).then(res => { |
| | | this.$set(this.myTable, 'rows', res.data.rows) |
| | | this.$set( |
| | | this.myTable.paging, |
| | | 'page', |
| | | Object.assign(this.myTable.paging.page, { |
| | | pageSize: res.data.pageSize, |
| | | pageNumber: res.data.pageNumber, |
| | | total: res.data.total |
| | | }) |
| | | ) |
| | | this.myTable.loading = false |
| | | }) |
| | | }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 14:22 |
| | | * @Description :切换pageSize |
| | | */ |
| | | handleSizeChange(pageSize) { |
| | | this.myTable.paging.page.pageSize = pageSize |
| | | this.search({ pageNumber: 1 }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 14:22 |
| | | * @Description :切换pageNumber |
| | | */ |
| | | handleCurrentChange(pageNumber) { |
| | | this.myTable.paging.page.pageNumber = pageNumber |
| | | this.search() |
| | | }, |
| | | getImagePath(str) { |
| | | const strArray = str2Array(str) |
| | | return globalConf.ftpUrl + strArray[0].path |
| | | }, |
| | | clickInfo(params) { |
| | | this.$emit('clickInfo', params) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | /*详情表单*/ |
| | | .demo-table-expand .el-form-item { |
| | | width: 100%; |
| | | } |
| | | .el-col-4 { |
| | | margin: 10px 0; |
| | | } |
| | | .el-col-4 > div { |
| | | border: 1px solid rgb(242, 242, 242); |
| | | } |
| | | .table-tool-bar { |
| | | text-align: left; |
| | | } |
| | | /* 列表块 */ |
| | | .grid-content bg-purple { |
| | | text-align: center; |
| | | } |
| | | .el-card__body img { |
| | | width: 80%; |
| | | margin-top: 10px; |
| | | } |
| | | .el-card__body > div { |
| | | text-align: center; |
| | | font-size: 16px; |
| | | } |
| | | /* 操作按钮区域 */ |
| | | .operation .el-button--mini:nth-of-type(1) { |
| | | margin-left: 10px; |
| | | } |
| | | .operation .el-button--mini { |
| | | padding: 2px 5px; |
| | | margin-left: 5px; |
| | | } |
| | | .ant-dropdown-trigger{ |
| | | margin-left: 2px!important; |
| | | } |
| | | .ant-dropdown-menu-item .el-button--mini{ |
| | | padding: 2px 7px!important; |
| | | } |
| | | /* 弹出层样式 */ |
| | | .el-popover ul { |
| | | list-style: none; |
| | | margin: 0; |
| | | padding-left: 10px; |
| | | } |
| | | .el-popover ul li { |
| | | color: rgb(51, 51, 51); |
| | | font-size: 13px; |
| | | margin-bottom: 20px; |
| | | } |
| | | .el-popover ul li:last-of-type { |
| | | margin-bottom: 0; |
| | | } |
| | | /*列表内文字过长加省略*/ |
| | | .content-text { |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | white-space: nowrap; |
| | | } |
| | | |
| | | /*分页上边距*/ |
| | | .el-pagination { |
| | | white-space: nowrap; |
| | | padding: 2px 5px; |
| | | color: #303133; |
| | | font-weight: 700; |
| | | margin-top: 10px; |
| | | } |
| | | .el-radio { |
| | | margin-right: 10px; |
| | | } |
| | | .el-radio__label { |
| | | font-size: 14px; |
| | | padding-left: 2px !important; |
| | | } |
| | | |
| | | .a-button-cus { |
| | | font-size: 12px; |
| | | } |
| | | .ant-btn-sm { |
| | | padding: 0px 7px; |
| | | font-size: 12px; |
| | | border-radius: 3px; |
| | | height: 20px; |
| | | } |
| | | .ant-btn > .anticon + span, |
| | | .ant-btn > span + .anticon { |
| | | margin-left: unset; |
| | | } |
| | | .ant-dropdown { |
| | | z-index: 9999 !important; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <el-button v-if="show" :loading="loading" :icon="myIcon" :round="myRound" :plain="myPlain" :size="mySize" :type="myType" @click="click"> |
| | | {{ myName }} |
| | | </el-button> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | name: 'MyButton', |
| | | props: { |
| | | checkPermission: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | type: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | name: { |
| | | type: String, |
| | | default: '按钮' |
| | | }, |
| | | icon: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | size: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | plain: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | clazz: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | loading: false, |
| | | myType: this.type, // 按钮类型 |
| | | myName: this.name, // 按钮名称 |
| | | myIcon: this.icon, // 按钮图标 |
| | | mySize: this.size, // 按钮大小 |
| | | myRound: false, // 是否圆角按钮 |
| | | myPlain: this.plain, // 是否朴素按钮 |
| | | show: true, // 是否显示 |
| | | myClazz: this.clazz |
| | | } |
| | | }, |
| | | created() { |
| | | if (this.checkPermission != '' && this.$store.getters.myButtonPermission && this.$store.getters.myButtonPermission.indexOf(this.checkPermission) < 0) { |
| | | this.show = false |
| | | } |
| | | const name = this.myName |
| | | |
| | | if (this.myClazz == 'tools') { |
| | | if (name == '添加') { |
| | | this.setDefault({ |
| | | myIcon: 'el-icon-circle-plus-outline', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name.includes('导入')) { |
| | | this.setDefault({ |
| | | myIcon: 'el-icon-upload2', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name.includes('导出')) { |
| | | this.setDefault({ |
| | | myIcon: 'el-icon-download', |
| | | mySize: 'small' |
| | | }) |
| | | } |
| | | return |
| | | } |
| | | if (name == '搜索') { |
| | | this.setDefault({ |
| | | myType: 'primary', |
| | | myIcon: 'el-icon-search', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name == '重置') { |
| | | this.setDefault({ |
| | | myType: 'success', |
| | | myIcon: 'el-icon-refresh', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name == '保存' || name == '保 存') { |
| | | this.setDefault({ |
| | | myType: 'primary', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name == '添加') { |
| | | this.setDefault({ |
| | | myType: 'primary', |
| | | myIcon: 'el-icon-edit', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name == '发布') { |
| | | this.setDefault({ |
| | | myType: 'primary', |
| | | myIcon: 'el-icon-plus', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name == '确定' || name == '确 定') { |
| | | this.setDefault({ |
| | | myType: 'primary', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name.includes('导入')) { |
| | | this.setDefault({ |
| | | myType: 'primary', |
| | | myIcon: 'el-icon-upload2', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name.includes('导出')) { |
| | | this.setDefault({ |
| | | myType: 'primary', |
| | | myIcon: 'el-icon-download', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name == '批量删除') { |
| | | this.setDefault({ |
| | | myType: 'danger', |
| | | myIcon: 'el-icon-delete', |
| | | mySize: 'small' |
| | | }) |
| | | } else if (name == '编辑') { |
| | | this.setDefault({ |
| | | myType: 'primary', |
| | | mySize: 'mini', |
| | | myPlain: true |
| | | }) |
| | | } else if (name == '删除') { |
| | | this.setDefault({ |
| | | myType: 'danger', |
| | | mySize: 'mini', |
| | | myPlain: true |
| | | }) |
| | | } else if (name == '上架商品') { |
| | | this.setDefault({ |
| | | myType: 'primary', |
| | | myIcon: 'el-icon-edit', |
| | | mySize: 'small' |
| | | }) |
| | | } else { |
| | | this.setDefault({ |
| | | myType: 'primary', |
| | | mySize: 'small', |
| | | myPlain: false |
| | | }) |
| | | } |
| | | }, |
| | | methods: { |
| | | click() { |
| | | this.loading = true |
| | | this.$emit('click') |
| | | setTimeout(() => { |
| | | this.loading = false |
| | | }, 1000)// 一秒内不能重复点击 |
| | | }, |
| | | setDefault(param) { |
| | | Object.keys(param).forEach(key => { |
| | | if (this[key] == '') { |
| | | this[key] = param[key] |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <el-link |
| | | v-if="site==='operation'&&show" |
| | | style="padding: 0 10px" |
| | | :icon="myIcon" |
| | | :loading="loading" |
| | | :plain="myPlain" |
| | | :size="mySize" |
| | | :type="myType" |
| | | @click="click" |
| | | >{{ myName }} |
| | | </el-link> |
| | | <el-button |
| | | v-else-if="show" |
| | | :icon="myIcon" |
| | | :loading="loading" |
| | | :plain="myPlain" |
| | | :size="mySize" |
| | | :type="myType" |
| | | @click="click" |
| | | >{{ myName }} |
| | | </el-button> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | name: 'MyButtonV2', |
| | | props: { |
| | | checkPermission: { // 按钮权限 |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | site: { // filter 搜索条,tools 工具条,operation 操作栏,form 表单 |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | type: {// 按钮类型 |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | name: {// 按钮名称 |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | icons: {// 图标 |
| | | type: String, |
| | | default: null |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | filter: {// 搜索条上的按钮名称集合 |
| | | size: 'small', |
| | | plain: false, |
| | | other: { |
| | | '搜索': { |
| | | type: 'primary', |
| | | icon: 'el-icon-search' |
| | | }, |
| | | '重置': { |
| | | type: '', |
| | | icon: 'el-icon-refresh' |
| | | }, |
| | | '完结': { |
| | | type: 'warning', |
| | | icon: 'el-icon-warning-outline' |
| | | }, |
| | | '进入系统': { |
| | | type: '', |
| | | icon: 'el-icon-login' |
| | | } |
| | | } |
| | | }, |
| | | tools: {// 工具条上的按钮集合 |
| | | size: 'mini', |
| | | plain: false, |
| | | type: 'default', |
| | | other: { |
| | | '添加': { |
| | | icon: 'el-icon-edit-outline' |
| | | }, |
| | | '批量删除': { |
| | | icon: 'el-icon-delete' |
| | | }, |
| | | '批量启用': { |
| | | icon: 'el-icon-refresh' |
| | | }, |
| | | '导入': { |
| | | icon: 'el-icon-upload2' |
| | | }, |
| | | '导入模板下载': { |
| | | icon: 'el-icon-download' |
| | | }, |
| | | '批量导入': { |
| | | icon: 'el-icon-upload2' |
| | | }, |
| | | '导出': { |
| | | icon: 'el-icon-download' |
| | | }, |
| | | '批量下架': { |
| | | icon: 'el-icon-edit-outline' |
| | | }, |
| | | '批量延期': { |
| | | icon: 'el-icon-date' |
| | | }, |
| | | '查重': { |
| | | icon: 'el-icon-s-help' |
| | | }, |
| | | '打印': { |
| | | icon: 'el-icon-printer' |
| | | }, |
| | | '导出EXCEL': { |
| | | icon: 'el-icon-download' |
| | | }, |
| | | '导出EXCEL(不分页)': { |
| | | icon: 'el-icon-download' |
| | | }, |
| | | '导出EXCEL(分页)': { |
| | | icon: 'el-icon-download' |
| | | }, |
| | | '导出WORD': { |
| | | icon: 'el-icon-download' |
| | | }, |
| | | '导出PDF': { |
| | | icon: 'el-icon-download' |
| | | } |
| | | } |
| | | }, |
| | | operation: {// 操作栏上的按钮集合 |
| | | size: 'mini', |
| | | plain: true, |
| | | other: { |
| | | '编辑': { |
| | | type: 'success' |
| | | }, |
| | | '处理': { |
| | | type: 'primary' |
| | | }, |
| | | '审批': { |
| | | type: 'success' |
| | | }, |
| | | '事务反馈': { |
| | | type: 'primary' |
| | | }, |
| | | '发布': { |
| | | type: 'primary' |
| | | }, |
| | | '删除': { |
| | | type: 'primary' |
| | | }, |
| | | '权限': { |
| | | type: 'warning' |
| | | }, |
| | | '角色': { |
| | | type: 'info' |
| | | }, |
| | | '重置密码': { |
| | | type: 'warning' |
| | | }, |
| | | '组织架构': { |
| | | type: 'danger' |
| | | }, |
| | | '人员': { |
| | | type: 'success' |
| | | }, |
| | | '上架': { |
| | | type: 'success' |
| | | }, |
| | | '下架': { |
| | | type: 'danger' |
| | | }, |
| | | '延期': { |
| | | type: 'warning' |
| | | }, |
| | | '备件需求': { |
| | | type: 'warning' |
| | | }, |
| | | '维修/改造': { |
| | | type: 'success' |
| | | }, |
| | | '备注': { |
| | | type: 'warning' |
| | | }, |
| | | '沟通记录': { |
| | | type: 'success' |
| | | }, |
| | | '查看备注': { |
| | | type: 'info' |
| | | }, |
| | | '查看沟通记录': { |
| | | type: 'success' |
| | | }, |
| | | '启用': { |
| | | type: 'success' |
| | | }, |
| | | '禁用': { |
| | | type: 'warning' |
| | | }, |
| | | '启用黑名单': { |
| | | type: 'success' |
| | | }, |
| | | '加入黑名单': { |
| | | type: 'danger' |
| | | }, |
| | | '授权用户': { |
| | | type: 'danger' |
| | | }, |
| | | '查看': { |
| | | type: 'success' |
| | | }, |
| | | '查看详情': { |
| | | type: 'info' |
| | | }, |
| | | '记录': { |
| | | type: 'primary' |
| | | }, |
| | | '设置利润率': { |
| | | type: 'success' |
| | | }, |
| | | '审核': { |
| | | type: 'success' |
| | | }, |
| | | '采购': { |
| | | type: 'success' |
| | | }, |
| | | '质检确认': { |
| | | type: 'success' |
| | | }, |
| | | '关联客户经理': { |
| | | type: 'primary' |
| | | }, |
| | | '处理确认': { |
| | | type: 'primary' |
| | | }, |
| | | '详情': { |
| | | type: 'success' |
| | | }, |
| | | '委外加工': { |
| | | type: 'primary' |
| | | }, |
| | | '制造进度': { |
| | | type: 'warning' |
| | | }, |
| | | '入库确认': { |
| | | type: 'warning' |
| | | }, |
| | | '定价': { |
| | | type: 'danger' |
| | | }, |
| | | '虚拟入库': { |
| | | type: 'primary' |
| | | }, |
| | | '受理审核': { |
| | | type: 'primary' |
| | | }, |
| | | '查看记录': { |
| | | type: 'info' |
| | | }, |
| | | '关联该商品': { |
| | | type: 'info' |
| | | }, |
| | | '议价处理': { |
| | | type: 'warning' |
| | | }, |
| | | '分期审批': { |
| | | type: 'success' |
| | | }, |
| | | '签合同': { |
| | | type: 'success' |
| | | }, |
| | | '设计': { |
| | | type: 'primary' |
| | | }, |
| | | '测量': { |
| | | type: 'success' |
| | | }, |
| | | '开票': { |
| | | type: 'success' |
| | | }, |
| | | '受理确认': { |
| | | type: 'success' |
| | | }, |
| | | '售后处理': { |
| | | type: 'success' |
| | | }, |
| | | '确认支付': { |
| | | type: 'warning' |
| | | }, |
| | | '上传发票': { |
| | | type: 'primary' |
| | | }, |
| | | '确认收款': { |
| | | type: 'warning' |
| | | }, |
| | | '收款详细': { |
| | | type: 'success' |
| | | }, |
| | | '预览': { |
| | | type: 'warning' |
| | | } |
| | | } |
| | | }, |
| | | form: { // 表单上的按钮 |
| | | size: 'small', |
| | | plain: false, |
| | | other: { |
| | | '提交': { |
| | | type: 'primary' |
| | | }, |
| | | '发布': { |
| | | type: 'primary' |
| | | }, |
| | | '关闭': { |
| | | type: 'default' |
| | | }, |
| | | '保存': { |
| | | type: 'primary' |
| | | }, |
| | | '取消': { |
| | | type: 'default' |
| | | }, |
| | | '重置': { |
| | | type: 'default' |
| | | }, |
| | | '暂存': { |
| | | type: 'warning' |
| | | }, |
| | | '查询': { |
| | | type: 'primary' |
| | | }, |
| | | '关联该用户': { |
| | | type: 'success' |
| | | }, |
| | | '确认': { |
| | | type: 'primary' |
| | | }, |
| | | '确定': { |
| | | type: 'primary' |
| | | }, |
| | | '报价': { |
| | | type: 'success' |
| | | }, |
| | | '下一步': { |
| | | type: 'primary' |
| | | }, |
| | | '上一步': { |
| | | type: 'default' |
| | | }, |
| | | '选择': { |
| | | type: 'primary' |
| | | }, |
| | | '驳回': { |
| | | type: 'primary' |
| | | }, |
| | | '通过': { |
| | | type: 'success' |
| | | } |
| | | } |
| | | }, |
| | | text: { // 表单上的按钮 |
| | | size: 'mini', |
| | | type: 'text', |
| | | icon: '', |
| | | other: { |
| | | '添加': { |
| | | icon: 'el-icon-circle-plus-outline' |
| | | } |
| | | } |
| | | }, |
| | | loading: false, |
| | | myType: this.type, // 按钮类型 |
| | | myName: this.name, // 按钮名称 |
| | | myIcon: this.icon, // 按钮图标 |
| | | mySize: this.size, // 按钮大小 |
| | | myPlain: this.plain, // 是否朴素按钮 |
| | | show: true // 是否显示 |
| | | } |
| | | }, |
| | | created() { |
| | | if (this.checkPermission != '' && this.$store.getters.myButtonPermission.indexOf(this.checkPermission) < 0) { |
| | | this.show = false |
| | | return |
| | | } |
| | | this.myName = this.name |
| | | if (this.site == 'filter') { |
| | | this.mySize = this.filter.size |
| | | this.myPlain = this.filter.plain |
| | | this.myType = (this && this.type) || this.filter.other[this.myName].type |
| | | this.myIcon = this.filter.other[this.myName].icon |
| | | } else if (this.site == 'tools') { |
| | | this.mySize = this.tools.size |
| | | this.myPlain = this.tools.plain |
| | | this.myType = (this && this.type) || this.tools.type |
| | | if (this.icons != null) { |
| | | this.myIcon = this.icons |
| | | } else { |
| | | this.myIcon = this.tools.other[this.myName].icon |
| | | } |
| | | } else if (this.site == 'operation') { |
| | | this.mySize = this.operation.size |
| | | this.myPlain = this.operation.plain |
| | | this.myType = this.type || (this.operation.other[this.myName] ? this.operation.other[this.myName].type : '') |
| | | } else if (this.site == 'form') { |
| | | this.mySize = this.form.size |
| | | this.myPlain = this.form.plain |
| | | this.myType = (this && this.type) || this.form.other[this.myName].type |
| | | } else if (this.site == 'text') { |
| | | this.mySize = this.text.size |
| | | this.myType = (this && this.type) || this.text.type |
| | | this.myIcon = this.text.other[this.myName].icon |
| | | } else { |
| | | this.mySize = 'mini' |
| | | this.myPlain = false |
| | | this.myType = 'text' |
| | | } |
| | | }, |
| | | methods: { |
| | | click() { |
| | | if (this.site == 'form') { |
| | | this.loading = true |
| | | } |
| | | this.$emit('click') |
| | | setTimeout(() => { |
| | | this.loading = false |
| | | }, 1500)// 1.5秒内不能重复点击 |
| | | } |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <el-dialog |
| | | v-if="dialogShow" |
| | | width="40%" |
| | | :center="true" |
| | | :close-on-click-modal="false" |
| | | :close-on-press-escape="false" |
| | | :title="dialogTitle" |
| | | :before-close="beforeClose" |
| | | :visible="dialogShow" |
| | | > |
| | | <el-row v-loading="loading" element-loading-text="数据导入中"> |
| | | <el-col :span="24"> |
| | | <el-form> |
| | | <el-form-item v-if="templateSettings.templateUrl != null" label="下载模板:" prop="lon"> |
| | | <a class="blue-txt" style="color:#409EFF" :href="templateSettings.templateUrl" target="_blank">{{ templateSettings.templateName }}</a> |
| | | </el-form-item> |
| | | <el-form-item label="选取文件:" prop="lon"> |
| | | <el-upload |
| | | :ref="fileSettings.ref" |
| | | class="upload-demo" |
| | | name="file" |
| | | :action="fileSettings.uploadUrl" |
| | | :before-upload="beforeAvatarUpload" |
| | | :on-success="handleUploadSuccess" |
| | | :on-change="file" |
| | | :multiple="fileSettings.multiple" |
| | | :limit="fileSettings.num" |
| | | :accept="fileSettings.accept" |
| | | :auto-upload="fileSettings.autoUpload" |
| | | > |
| | | <el-button size="small" type="primary">{{ fileSettings.title }}</el-button> |
| | | <div slot="tip" class="el-upload__tip">只能上传{{ fileSettings.num }}个格式为{{ fileSettings.accept }}的文件,且不超过{{ fileSettings.max }}kb</div> |
| | | </el-upload> |
| | | </el-form-item> |
| | | <el-form-item label="导入数据:" prop="lon"> |
| | | <el-button style="margin-left: 10px;" size="small" type="success" @click="handleSubmit">开始导入</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </el-col> |
| | | </el-row> |
| | | </el-dialog> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | props: { |
| | | importSetting: { |
| | | type: Object, |
| | | default: () => { |
| | | return {} |
| | | } |
| | | }, |
| | | dialogShow: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | dialogTitle: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | |
| | | loading: false, |
| | | /* 文件上传 */ |
| | | fileSettings: { |
| | | ref: 'myFile', |
| | | title: '点击上传', |
| | | max: 1024, // 最大大小,单位kb |
| | | num: 1, // 支持上传文件个数 |
| | | accept: '.csv', // 限制格式 |
| | | uploadUrl: '', // 上传路径 |
| | | type: 'text', // text/picture |
| | | multiple: false, // 是否支持批量上传 |
| | | disabled: false, // 是否禁用 |
| | | autoUpload: false, // 是否在选取文件后立即进行上传 |
| | | onSuccess: null // 上传成功回调 |
| | | }, |
| | | isUpload:false, |
| | | /* 模板下载*/ |
| | | templateSettings: { |
| | | templateName: '模板下载', // 名称 |
| | | templateUrl: null // 下载地址 |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | dialogShow(val) { |
| | | console.log('dialogShow') |
| | | if (val) { |
| | | this.fileSettings = Object.assign(this.fileSettings, this.importSetting.fileSettings) |
| | | this.templateSettings = Object.assign(this.templateSettings, this.importSetting.templateSettings) |
| | | console.log(this.templateSettings) |
| | | this.fileSettings.onSuccess = this.importSetting.onSuccess |
| | | } |
| | | } |
| | | }, |
| | | methods: { |
| | | /* 关闭窗口 */ |
| | | beforeClose() { |
| | | if (this.loading) { |
| | | this.$confirm('正在执行导入,确认关闭?').then(() => { |
| | | this.importSetting.dialogShow = false |
| | | this.loading=false |
| | | }).catch() |
| | | } else { |
| | | this.importSetting.dialogShow = false |
| | | } |
| | | }, |
| | | /* 校验文件 */ |
| | | beforeAvatarUpload(file) { |
| | | const isFormat = this.fileSettings.accept.split(',').indexOf(file.name.substr(file.name.lastIndexOf('.'), file.name.length).toLocaleString()) > -1 |
| | | if (!isFormat) { |
| | | this.$message.error(`上传文件只能是 ${this.fileSettings.accept} 格式!`) |
| | | } |
| | | const isLtMaxKB = file.size / 1024 < this.fileSettings.max |
| | | |
| | | if (!isLtMaxKB) { |
| | | this.$message.error('上传文件大小不能超过 ' + this.fileSettings.max + 'kb!') |
| | | } |
| | | return isFormat && isLtMaxKB |
| | | }, |
| | | /* 开始导入 */ |
| | | handleSubmit() { |
| | | if(!this.isUpload){ |
| | | this.$message.error(`请上传文件`) |
| | | }else { |
| | | this.$refs[this.fileSettings.ref].submit() |
| | | } |
| | | }, |
| | | file(file,list){ |
| | | if(file){ |
| | | this.isUpload=true |
| | | } |
| | | |
| | | }, |
| | | /* 上传成功执行导入 */ |
| | | handleUploadSuccess(response, file, fileList) { |
| | | if (this.fileSettings.onSuccess) { |
| | | this.loading = true |
| | | this.fileSettings.onSuccess(response, () => { this.loading = false; this.importSetting.dialogShow = false }) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | <!-- |
| | | 调用须知: |
| | | @search 为搜索方法:参数{pageSize:10,pageNumber:1} |
| | | :page 分页属性 |
| | | { |
| | | small: false, // 是否使用小型分页 |
| | | total: 0, // 总条数 |
| | | pageNumber: 1, // 第几页 |
| | | pageSize: 10 // 每页多少条 |
| | | } |
| | | --> |
| | | <template> |
| | | <div> |
| | | <el-pagination |
| | | :small="pages.small" |
| | | :current-page="pages.pageNumber" |
| | | :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]" |
| | | :page-size="pages.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="pages.total" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | /> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | export default { |
| | | props: { |
| | | page: { |
| | | type: Object, |
| | | default: function() { |
| | | return {} |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | pages: { |
| | | small: false, // 是否使用小型分页 |
| | | total: 0, // 总条数 |
| | | pageNumber: 1, // 第几页 |
| | | pageSize: 10 // 每页多少条 |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | // Object.assign(this.pages, this.page) |
| | | this.pages = this.page |
| | | }, |
| | | methods: { |
| | | // 切换pageSize |
| | | handleSizeChange(pageSize) { |
| | | this.pages.pageSize = pageSize |
| | | this.pages.pageNumber = 1 |
| | | this.$emit('search', { pageSize: this.pages.pageSize, pageNumber: this.pages.pageNumber }) |
| | | }, |
| | | // 切换pageNumber |
| | | handleCurrentChange(pageNumber) { |
| | | this.pages.pageNumber = pageNumber |
| | | this.$emit('search', { pageSize: this.pages.pageSize, pageNumber: this.pages.pageNumber }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <span @click.stop="click"> |
| | | <!-- disabled: 主动禁用 permission: 权限 switchable: 操作后一定时间内禁用 --> |
| | | <el-switch |
| | | :disabled="disabled || permission() || switchable" |
| | | :value="value" |
| | | active-color="#bd1a2d" |
| | | inactive-color="#f2f2f2" |
| | | /> |
| | | </span> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | checkPermission: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | value: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | disabled: { |
| | | type: Boolean, |
| | | default: false |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | switchable: false |
| | | } |
| | | }, |
| | | methods: { |
| | | click() { |
| | | if (!(this.disabled || this.permission() || this.switchable)) { |
| | | this.switchable = true |
| | | this.$emit('click') |
| | | setTimeout(() => { |
| | | this.switchable = false |
| | | }, 1000)// 一秒内不能重复点击 |
| | | } |
| | | }, |
| | | // 检查按钮权限 |
| | | permission() { |
| | | if (this.checkPermission && this.$store.getters.myButtonPermission.indexOf(this.checkPermission) < 0) { |
| | | return true |
| | | } |
| | | return false |
| | | } |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <el-card shadow="never"> |
| | | <el-table |
| | | :key="timeStamp" |
| | | :ref="myTable.ref" |
| | | v-loading="myLoading" |
| | | :data="myTable.rows" |
| | | :max-height="myTable.maxHeight" |
| | | :height="myTable.height" |
| | | :size="myTable.size" |
| | | :cell-class-name="className" |
| | | selection-change="handleSelectionChange" |
| | | @select="handleSelect" |
| | | @select-all="handleSelectAll" |
| | | @cell-click="cellClick" |
| | | > |
| | | <el-table-column v-if="myTable.expand" type="expand"> |
| | | <template slot-scope="{row}"> |
| | | <el-form size="mini" label-position="left" :inline="false" class="demo-table-expand"> |
| | | <template> |
| | | <el-form-item |
| | | v-for="(more,index) in columnHidden" |
| | | :key="index" |
| | | size="mini" |
| | | :label="more.title+':'" |
| | | > |
| | | <template v-if="more.tag"> |
| | | <el-tag size="mini" :type="more.tag(row).type"> |
| | | {{ more.tag(row).value }} {{ more }} |
| | | </el-tag> |
| | | </template> |
| | | <template v-else> |
| | | <span v-if="more.formatter">{{ more.formatter(row) }}</span> |
| | | <span v-else-if="more.formatterRate">{{ more.formatterRate(row) }}</span> |
| | | <span v-else-if="more.formatterHigh">{{ more.formatterHigh(row).value }}</span> |
| | | <span v-else-if="more.switch">{{ more.switch(row).label }}</span> |
| | | <span v-else>{{ row[more.field] }}</span> |
| | | </template> |
| | | </el-form-item> |
| | | </template> |
| | | </el-form> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | v-if="myTable.showCheckBox" |
| | | type="selection" |
| | | width="55" |
| | | /> |
| | | <!--序号 有分页时--> |
| | | <el-table-column |
| | | v-if="myTable.showIndex && myTable.page.pageSize!=undefined" |
| | | label="序号" |
| | | align="center" |
| | | width="50" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span> |
| | | {{ scope.$index+(myTable.page.pageNumber - 1) * myTable.page.pageSize + 1 }} |
| | | </span> |
| | | </template> |
| | | </el-table-column> |
| | | <!--序号 无分页时--> |
| | | <el-table-column |
| | | v-if="myTable.showIndex && myTable.page.pageSize==undefined" |
| | | type="index" |
| | | label="序号" |
| | | align="center" |
| | | width="60" |
| | | /> |
| | | |
| | | <!--show-overflow-tooltip--> |
| | | <template v-for="(column, index) in columnNotHidden"> |
| | | <el-table-column |
| | | v-if="!(column.hidden||false)" |
| | | :key="index" |
| | | :sortable="column.sortable" |
| | | :label="column.title" |
| | | :type="column.type" |
| | | :width="column.width" |
| | | :min-width="column.minWidth" |
| | | :align="column.align" |
| | | :header-align="column.align" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <template v-if="column.tag"> |
| | | <el-tag size="mini" :type="column.tag(scope.row).type"> |
| | | {{ column.tag(scope.row).value }} |
| | | </el-tag> |
| | | </template> |
| | | <template v-else-if="column.switch"> |
| | | <my-switch |
| | | :value="column.switch(scope.row).value" |
| | | :check-permission="column.checkPermission" |
| | | :disabled="column.switch(scope.row).disabled" |
| | | @click="switchClick(column.switch(scope.row).click)" |
| | | /> |
| | | </template> |
| | | <template v-else-if="column.formatterHigh"> |
| | | <span slot="reference" class="content-text" :style="setStyle(column.formatterHigh(scope.row))" @click="handleClick(column.formatterHigh(scope.row))">{{ column.formatterHigh(scope.row).value }}</span> |
| | | </template> |
| | | <template v-else> |
| | | <el-popover |
| | | placement="top-start" |
| | | trigger="click" |
| | | :content="getPopoverContent(scope.row,column)" |
| | | > |
| | | <span v-if="column.formatter" slot="reference" class="content-text">{{ column.formatter(scope.row) }}</span> |
| | | <span v-else-if="column.formatterRate" slot="reference" class="content-text"><el-rate :value="column.formatterRate(scope.row)" disabled /></span> |
| | | <span v-else slot="reference" class="content-text">{{ scope.row[column.field] }}</span> |
| | | </el-popover> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | |
| | | <el-table-column |
| | | v-if="myTable.operation.length>0" |
| | | label="操作" |
| | | align="center" |
| | | :width="colWidth" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <template> |
| | | <div v-for="(operation, index) in myTable.operation" :key="index" style="display:inline-block"> |
| | | <my-button |
| | | v-if="!(operation.hidden && operation.hidden(scope.row))" |
| | | |
| | | :name="operation.title" |
| | | size="mini" |
| | | :type="operation.type" |
| | | :check-permission="operation.checkPermission" |
| | | @click="operation.events(scope.row)" |
| | | /> |
| | | </div> |
| | | <!--<el-button--> |
| | | <!--v-if="!(operation.hidden && operation.hidden(scope.row))"--> |
| | | <!--:key="index"--> |
| | | <!--type="text"--> |
| | | <!--size="small"--> |
| | | <!--@click="operation.events(scope.row)"--> |
| | | <!-->{{ operation.title }}</el-button>--> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div v-if="myTable.paging" style="margin-top: 10px;"> |
| | | <my-paging :page="myTable.page" @search="search" /> |
| | | </div> |
| | | </el-card> |
| | | </template> |
| | | |
| | | <script> |
| | | import myPaging from './myPaging' |
| | | import mySwitch from './mySwitch' |
| | | import myButton from '@/views/components/myButton' |
| | | |
| | | export default { |
| | | components: { myPaging, myButton, mySwitch }, |
| | | props: { |
| | | // 加载 |
| | | loading: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | table: { // 列表数据 |
| | | type: Object, |
| | | default() { |
| | | return {} |
| | | } |
| | | }, |
| | | parentSelectionsObject: { // 默认选中的数据 |
| | | type: Array, |
| | | default() { |
| | | return [] |
| | | } |
| | | }, |
| | | parentSelection: { // 默认选中的数据id |
| | | type: Array, |
| | | default() { |
| | | return [] |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | xx: true, |
| | | myLoading: false, // 加载 |
| | | selection: [], // 存储复选框选中的ID |
| | | selectionObject: [], // 存储复选框选中的对象 |
| | | myTable: { |
| | | ref: 'myTable', // table的名称 |
| | | expand: true, // 是否显示展开行 |
| | | // height: 500, // 默认高度自动单位px |
| | | // maxHeight: 500, //默认不设置单位px |
| | | size: 'medium', // Table 的尺寸 medium / small / mini |
| | | showCheckBox: false, // 是否显示复选框 |
| | | showIndex: true, // 是否显示序号 |
| | | columns: [], |
| | | rows: [], |
| | | operation: [], |
| | | paging: true, |
| | | page: {} |
| | | }, |
| | | colWidth: 172, // 操作列的默认宽度 |
| | | timeStamp: new Date().getTime() |
| | | } |
| | | }, |
| | | computed: { |
| | | // 通过计算属性过滤掉列表中不需要显示的项目 |
| | | columnHidden: function() { |
| | | return this.myTable.columns.filter(function(x) { |
| | | return x.hidden |
| | | }) |
| | | }, |
| | | columnNotHidden: function() { |
| | | return this.myTable.columns.filter(function(x) { |
| | | return !x.hidden |
| | | }) |
| | | } |
| | | }, |
| | | watch: { |
| | | loading(v) { |
| | | this.myLoading = v |
| | | }, |
| | | parentSelectionsObject(e) { |
| | | // 初始化默认选中的列 |
| | | this.selectionObject = e |
| | | this.selectionObject.forEach(sel => { |
| | | if (!this.selection.includes(sel.id)) { |
| | | this.selection.push(sel.id) |
| | | } |
| | | }) |
| | | }, |
| | | table(e) { |
| | | Object.assign(this.myTable, e) |
| | | this.reloadCheckBox() |
| | | } |
| | | }, |
| | | mounted() { |
| | | const changeTipClass = () => { |
| | | } |
| | | const Fun = function(e) { |
| | | e = e || window.event |
| | | if (e.wheelDelta) { |
| | | // IE/Opera/Chrome |
| | | changeTipClass() |
| | | } else if (e.detailWin) { |
| | | // FireFox |
| | | changeTipClass() |
| | | } |
| | | } |
| | | if (document.addEventListener) { |
| | | document.addEventListener('DOMMouseScroll', Fun, false) |
| | | } // FireFox |
| | | window.onmousewheel = document.onmousewheel = Fun // IE/Opera/Chrome |
| | | }, |
| | | created() { |
| | | const that = this |
| | | |
| | | window.onresize = function() { |
| | | that.timeStamp = new Date().getTime() |
| | | } |
| | | this.myLoading = this.loading |
| | | this.selection = this.parentSelection |
| | | // 初始化默认选中的列(如果selectionObject,selection同时存在则以selectionObject为主) |
| | | this.selectionObject = this.parentSelectionsObject |
| | | this.selectionObject.forEach(sel => { |
| | | this.selection.push(sel.id) |
| | | }) |
| | | this.reloadCheckBox() |
| | | // 初始化table数据 |
| | | Object.assign(this.myTable, this.table) |
| | | this.changeOperWidth() |
| | | }, |
| | | methods: { |
| | | handleHover() { |
| | | console.log('滚') |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-12 18:15 |
| | | * @Description : 设置高级格式化 formatterHigh的颜色 |
| | | */ |
| | | setStyle(format) { |
| | | let styles = '' |
| | | if (format.click != undefined) { |
| | | styles += 'cursor: pointer;' |
| | | } |
| | | if (format.type != undefined) { |
| | | if (format.type == 'primary') { |
| | | styles += 'color:#409EFF;' |
| | | } else if (format.type == 'danger') { |
| | | styles += 'color:#F56C6C;' |
| | | } else if (format.type == 'success') { |
| | | styles += 'color:#67C23A;' |
| | | } else if (format.type == 'warning') { |
| | | styles += 'color:#E6A23C;' |
| | | } else if (format.type == 'info') { |
| | | styles += 'color:#909399;' |
| | | } |
| | | } |
| | | return styles |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-12 18:36 |
| | | * @Description:formatterHigh点击 |
| | | */ |
| | | handleClick(format) { |
| | | if (format.click != undefined) { |
| | | format.click() |
| | | } |
| | | }, |
| | | switchClick(click) { |
| | | if (typeof click === 'function') { |
| | | click() |
| | | } |
| | | }, |
| | | search(param) { |
| | | this.$emit('search', param) |
| | | }, |
| | | // 单选 |
| | | handleSelect(selection, row) { |
| | | // 检查selection中是否包含row,如果包含则为选中,否则取消选中 |
| | | let _b = false |
| | | selection.forEach(sel => { |
| | | if (sel.id === row.id) { |
| | | _b = true |
| | | return false |
| | | } |
| | | }) |
| | | if (_b) { // 包含=选中 |
| | | this.selection.push(row.id) |
| | | this.selectionObject.push(row) |
| | | } else { // 不包含=取消选中 |
| | | this.selectionObject = this.selectionObject.filter(({ id }) => id !== row.id) |
| | | this.selection = this.selection.filter(id => id !== row.id) |
| | | // for (let m = 0; m < this.selection.length; m++) { |
| | | // if (row.id === this.selection[m]) { |
| | | // this.selection.splice(m, 1) |
| | | // this.selectionObject.splice(m, 1) |
| | | // break |
| | | // } |
| | | // } |
| | | } |
| | | }, |
| | | // 全选 |
| | | handleSelectAll(selection) { |
| | | // 如果selection.length>0遍历,存在则忽略,不存在则添加. 否则移除本页所有数据。 |
| | | if (selection.length > 0) { // 全选 |
| | | // 遍历 不存在则加入 |
| | | selection.forEach(sel => { |
| | | if (this.selection.indexOf(sel.id) < 0) { |
| | | this.selection.push(sel.id) |
| | | this.selectionObject.push(sel) |
| | | } |
| | | }) |
| | | } else { // 全不选 |
| | | this.myTable.rows.forEach(row => { |
| | | const index = this.selection.indexOf(row.id) |
| | | if (index > -1) { |
| | | this.selection.splice(index, 1) |
| | | this.selectionObject.splice(index, 1) |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | reloadCheckBox() { |
| | | setTimeout(() => { |
| | | // 重新勾选被选中项 |
| | | this.$refs[this.myTable.ref].clearSelection() |
| | | this.selectionObject.length = 0 |
| | | if (this.selection.length > 0) { |
| | | this.myTable.rows.forEach(row => { |
| | | for (let m = 0; m < this.selection.length; m++) { |
| | | if (row.id == this.selection[m]) { |
| | | this.$refs[this.myTable.ref].toggleRowSelection(row, true) |
| | | this.selectionObject.push(row) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }, 1) |
| | | }, |
| | | cellClick(row, column, cell, event) { |
| | | this.$emit('rowClick', { row, column, cell, event }) |
| | | }, |
| | | |
| | | getPopoverContent(row, column) { |
| | | if (column.formatterHigh) { |
| | | return column.formatterHigh(row).value + '' |
| | | } else if (column.formatter) { |
| | | return column.formatter(row) + '' |
| | | } else { |
| | | return row[column.field] + '' |
| | | } |
| | | }, |
| | | // 改变操作列的宽度 |
| | | changeOperWidth() { |
| | | if (this.myTable.operation.length > 2) { |
| | | this.colWidth = this.colWidth + 50 * (this.myTable.operation.length - 2) |
| | | } |
| | | }, |
| | | getChedkIds() { |
| | | return this.selection |
| | | }, |
| | | getChedkObject() { |
| | | return this.selectionObject |
| | | }, |
| | | className({ row, column, rowIndex, columnIndex }) { |
| | | if (column.label == '操作') { |
| | | return 'oper' |
| | | } else { |
| | | return '' |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .demo-table-expand .el-form-item{ |
| | | width: 100%; |
| | | } |
| | | .content-text{ |
| | | overflow:hidden; |
| | | text-overflow:ellipsis; |
| | | white-space:nowrap |
| | | } |
| | | .oper>.cell{ |
| | | white-space: nowrap; |
| | | word-break:normal; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <el-card shadow="never"> |
| | | <!--工具条--> |
| | | <div class="table-tool-bar"> |
| | | <!--自定义工具--> |
| | | <my-button |
| | | v-for="(custom,idx) in myTable.tools.custom" |
| | | :key="idx" |
| | | :check-permission="custom.checkPermission" |
| | | :name="custom.name" |
| | | site="tools" |
| | | @click="custom.click" |
| | | /> |
| | | <!--列控制--> |
| | | <el-popover |
| | | placement="bottom" |
| | | style="float: right;" |
| | | trigger="click" |
| | | width="150" |
| | | > |
| | | <el-form label-width="10px" style="max-height: 500px;overflow-y: auto;"> |
| | | <el-form-item label=""> |
| | | <el-checkbox-group v-model="checkColumns" @change="changeColumns"> |
| | | <el-checkbox v-for="(column,index) in myTable.columns" :key="index" :label="index">{{ column.title }} |
| | | </el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-button slot="reference" icon="el-icon-setting" size="mini">设置列</el-button> |
| | | </el-popover> |
| | | </div> |
| | | <!--table列表--> |
| | | <el-table |
| | | ref="myTable" |
| | | v-loading="myTable.loading" |
| | | :data="myTable.data" |
| | | row-key="id" |
| | | :default-expand-all="myTable.expandAll" |
| | | :tree-props="{children: 'children'}" |
| | | :fit="false" |
| | | :highlight-current-row="true" |
| | | border |
| | | size="medium" |
| | | > |
| | | <!--列内容--> |
| | | <el-table-column |
| | | v-for="(column, index) in myTable.columns" |
| | | v-if="!column.hidden" |
| | | :key="index" |
| | | :align="column.align" |
| | | :header-align="column.align" |
| | | :label="column.title" |
| | | :min-width="column.width" |
| | | :sortable="column.sortable" |
| | | :type="column.type" |
| | | :width="column.width" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <!--图片展示--> |
| | | <template v-if="column.img"> |
| | | <preview-picture img-style="width:40px;height:40px;" :imgs="column.img(scope.row).imgs" /> |
| | | </template> |
| | | <!--开关(生成开关按钮)--> |
| | | <template v-else-if="column.switch"> |
| | | <my-switch |
| | | :check-permission="column.checkPermission" |
| | | :disabled="column.switch(scope.row).disabled" |
| | | :value="column.switch(scope.row).value" |
| | | @click="switchClick(column.switch(scope.row).click)" |
| | | /> |
| | | </template> |
| | | <!--格式化(显示颜色,内容,点击事件控制)--> |
| | | <template v-else-if="column.formatter"> |
| | | <span |
| | | slot="reference" |
| | | :style="setStyle(column.formatter(scope.row))" |
| | | class="content-text" |
| | | @click="handleClick(column.formatter(scope.row))" |
| | | >{{ column.formatter(scope.row).value }}</span> |
| | | </template> |
| | | <template v-else> |
| | | <!--点击弹出单元格内容--> |
| | | <el-popover |
| | | :content="getPopoverContent(scope.row,column)" |
| | | placement="top-start" |
| | | trigger="click" |
| | | > |
| | | <span slot="reference" class="content-text">{{ scope.row[column.field] }}</span> |
| | | </el-popover> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <!--操作列--> |
| | | <el-table-column |
| | | v-if="myTable.operation.show" |
| | | :width="myTable.operation.width" |
| | | align="center" |
| | | label="操作" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <template v-for="(operation, index) in myTable.operation.attr"> |
| | | <my-button-v2 |
| | | v-if="!(operation.hidden && operation.hidden(scope.row))" |
| | | :key="index" |
| | | :check-permission="operation.checkPermission" |
| | | :name="operation.title" |
| | | :type="operation.type" |
| | | site="operation" |
| | | @click="operation.events(scope.row)" |
| | | /> |
| | | </template> |
| | | <template v-if="myTable.operation.more && myTable.operation.more.length>0"> |
| | | <a-dropdown :trigger="['click']" style="margin-left: 5px;"> |
| | | <a-button size="small"> |
| | | 更多 |
| | | <a-icon type="down" /> |
| | | </a-button> |
| | | <a-menu slot="overlay"> |
| | | <template v-for="(m,i) in myTable.operation.more"> |
| | | <a-menu-item :key="i" @click="m.events(scope.row)"> |
| | | <my-button-v2 |
| | | v-if="!(m.hidden && m.hidden(scope.row))" |
| | | :check-permission="m.checkPermission" |
| | | :name="m.title" |
| | | /> |
| | | </a-menu-item> |
| | | </template> |
| | | </a-menu> |
| | | </a-dropdown> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-card> |
| | | </template> |
| | | |
| | | <script> |
| | | import myButton from '@/views/components/myButton' |
| | | import myButtonV2 from '@/views/components/myButtonV2' |
| | | import mySwitch from '@/views/components/mySwitch' |
| | | import request from '@/utils/request' |
| | | import previewPicture from '@/views/components/previewPicture' |
| | | |
| | | export default { |
| | | components: { myButton, mySwitch, previewPicture, myButtonV2 }, |
| | | props: { |
| | | table: { |
| | | type: Object, |
| | | default() { |
| | | return null |
| | | } |
| | | }, |
| | | filter: { |
| | | type: Object, |
| | | default() { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | /** table列表数据*/ |
| | | myTable: { |
| | | url: '', |
| | | params: {}, |
| | | expandAll: true, // 展开 |
| | | loading: false, // 加载效果 |
| | | size: 'small', // Table 的尺寸 medium / small / mini |
| | | // 工具条 |
| | | tools: { |
| | | custom: [] // 自定义工具条按钮 |
| | | }, |
| | | columns: [], // 列属性配置 |
| | | operation: { // 操作列 |
| | | show: false, // 显示操作列 |
| | | width: '250', // 宽度 |
| | | attr: [], // 操作 |
| | | more: []// 更多 |
| | | }, |
| | | data: [], // 列表数据 |
| | | paging: { |
| | | show: true, // 显示分页 |
| | | // 分页信息 |
| | | page: { |
| | | small: false, |
| | | pageNumber: 1, |
| | | pageSize: 10, |
| | | total: 0 |
| | | } |
| | | } |
| | | }, |
| | | checkColumns: [] // 记录列控制中选中的列 |
| | | } |
| | | }, |
| | | watch: { |
| | | filter: { |
| | | handler() { |
| | | this.search() |
| | | }, |
| | | deep: true |
| | | } |
| | | }, |
| | | created() { |
| | | if (this.table != null) { |
| | | Object.assign(this.myTable, this.table) |
| | | this.myTable.columns.forEach((column, idx) => { |
| | | if (!column.hidden) { |
| | | this.checkColumns.push(idx) |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | methods: { |
| | | // 搜索 |
| | | search() { |
| | | this.myTable.loading = true |
| | | const params = Object.assign({}, this.filter) |
| | | request({ |
| | | url: this.myTable.url, |
| | | method: 'get', |
| | | params: params |
| | | }).then(res => { |
| | | this.$set(this.myTable, 'data', res.data) |
| | | this.myTable.loading = false |
| | | }) |
| | | }, |
| | | // 获取设置列表弹层内容 |
| | | getPopoverContent(row, column) { |
| | | if (column.formatterHigh) { |
| | | return column.formatterHigh(row).value + '' |
| | | } else if (column.formatter) { |
| | | return column.formatter(row) + '' |
| | | } else { |
| | | return row[column.field] + '' |
| | | } |
| | | }, |
| | | // 单元格内容格式化样式 |
| | | setStyle(format) { |
| | | let styles = '' |
| | | if (format.click != undefined) { |
| | | styles += 'cursor: pointer;' |
| | | } |
| | | if (format.type != undefined) { |
| | | if (format.type == 'primary') { |
| | | styles += 'color:#409EFF;' |
| | | } else if (format.type == 'danger') { |
| | | styles += 'color:#F56C6C;' |
| | | } else if (format.type == 'success') { |
| | | styles += 'color:#67C23A;' |
| | | } else if (format.type == 'warning') { |
| | | styles += 'color:#E6A23C;' |
| | | } else if (format.type == 'info') { |
| | | styles += 'color:#909399;' |
| | | } |
| | | } |
| | | return styles |
| | | }, |
| | | // formatter 点击事件 |
| | | handleClick(format) { |
| | | if (format.click != undefined) { |
| | | format.click() |
| | | } |
| | | }, |
| | | // 开关点击事件 |
| | | switchClick(click) { |
| | | if (typeof click === 'function') { |
| | | click() |
| | | } |
| | | }, |
| | | // 列控制 |
| | | changeColumns() { |
| | | this.myTable.columns.forEach((column, idx) => { |
| | | if (this.checkColumns.includes(idx)) { |
| | | column.hidden = false |
| | | } else { |
| | | column.hidden = true |
| | | } |
| | | this.$set(this.myTable.columns, idx, column) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | /*详情表单*/ |
| | | .demo-table-expand .el-form-item{ |
| | | width: 100%; |
| | | } |
| | | |
| | | /*列表内文字过长加省略*/ |
| | | .content-text{ |
| | | overflow:hidden; |
| | | text-overflow:ellipsis; |
| | | white-space:nowrap |
| | | } |
| | | |
| | | /*分页上边距*/ |
| | | .el-pagination { |
| | | white-space: nowrap; |
| | | padding: 2px 5px; |
| | | color: #303133; |
| | | font-weight: 700; |
| | | margin-top: 10px; |
| | | } |
| | | .el-radio { |
| | | margin-right: 10px; |
| | | } |
| | | .el-radio__label { |
| | | font-size: 14px; |
| | | padding-left: 2px !important; |
| | | } |
| | | |
| | | .a-button-cus{ |
| | | font-size: 12px; |
| | | } |
| | | .ant-btn-sm { |
| | | padding: 0px 7px; |
| | | font-size: 12px; |
| | | border-radius: 3px; |
| | | height: 20px; |
| | | } |
| | | .ant-btn > .anticon + span, .ant-btn > span + .anticon { |
| | | margin-left: unset; |
| | | } |
| | | |
| | | </style> |
New file |
| | |
| | | import MSDataTransfer from './tableTreeUtil.js' |
| | | export default { |
| | | MSDataTransfer |
| | | } |
New file |
| | |
| | | import Vue from 'vue' |
| | | function DataTransfer(data) { |
| | | if (!(this instanceof DataTransfer)) { |
| | | return new DataTransfer(data, null, null) |
| | | } |
| | | } |
| | | |
| | | DataTransfer.treeToArray = function(data, parent, level, expandedAll) { |
| | | let tmp = [] |
| | | Array.from(data).forEach(function(record) { |
| | | if (record._expanded === undefined) { |
| | | Vue.set(record, '_expanded', expandedAll) |
| | | } |
| | | if (parent) { |
| | | Vue.set(record, '_parent', parent) |
| | | } |
| | | let _level = 0 |
| | | if (level !== undefined && level !== null) { |
| | | _level = level + 1 |
| | | } |
| | | Vue.set(record, '_level', _level) |
| | | tmp.push(record) |
| | | if (record.child && record.child.length > 0) { |
| | | const child = DataTransfer.treeToArray(record.child, record, _level, expandedAll) |
| | | // delete record['child'] |
| | | tmp = tmp.concat(child) |
| | | } |
| | | }) |
| | | return tmp |
| | | } |
| | | |
| | | export default DataTransfer |
New file |
| | |
| | | <template> |
| | | <el-card shadow="never"> |
| | | <el-table |
| | | :ref="myTable.ref" |
| | | v-loading="myLoading" |
| | | :data="myTable.rows" |
| | | :max-height="myTable.maxHeight" |
| | | :height="myTable.height" |
| | | :size="myTable.size" |
| | | :cell-class-name="className" |
| | | selection-change="handleSelectionChange" |
| | | @select="handleSelect" |
| | | @select-all="handleSelectAll" |
| | | @cell-click="cellClick" |
| | | > |
| | | <el-table-column v-if="myTable.expand" type="expand"> |
| | | <template slot-scope="{row}"> |
| | | <el-form size="mini" label-position="left" :inline="false" class="demo-table-expand"> |
| | | <template> |
| | | <el-form-item |
| | | v-for="(more,index) in columnHidden" |
| | | :key="index" |
| | | size="mini" |
| | | :label="more.title+':'" |
| | | > |
| | | <template v-if="more.tag"> |
| | | <el-tag size="mini" :type="more.tag(row).type"> |
| | | {{ more.tag(row).value }} {{ more }} |
| | | </el-tag> |
| | | </template> |
| | | <template v-else> |
| | | <span v-if="more.formatter">{{ more.formatter(row) }}</span> |
| | | <span v-else-if="more.formatterRate">{{ more.formatterRate(row) }}</span> |
| | | <span v-else-if="more.formatterHigh">{{ more.formatterHigh(row).value }}</span> |
| | | <span v-else-if="more.switch">{{ more.switch(row).label }}</span> |
| | | <span v-else>{{ row[more.field] }}</span> |
| | | </template> |
| | | </el-form-item> |
| | | </template> |
| | | </el-form> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <el-table-column |
| | | v-if="myTable.showCheckBox" |
| | | type="selection" |
| | | width="55" |
| | | /> |
| | | |
| | | <el-table-column |
| | | v-if="myTable.showIndex && myTable.page.pageSize!=undefined" |
| | | label="序号" |
| | | width="50" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span> |
| | | {{ scope.$index+(myTable.page.pageNumber - 1) * myTable.page.pageSize + 1 }} |
| | | </span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if="myTable.showIndex && myTable.page.pageSize==undefined" |
| | | type="index" |
| | | label="序号" |
| | | width="50" |
| | | /> |
| | | |
| | | <!--show-overflow-tooltip--> |
| | | <template v-for="(column, index) in columnNotHidden"> |
| | | <el-table-column |
| | | v-if="!(column.hidden||false)" |
| | | :key="index" |
| | | :sortable="column.sortable" |
| | | :label="column.title" |
| | | :type="column.type" |
| | | :width="column.width" |
| | | :align="column.align" |
| | | :header-align="column.align" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <template v-if="column.tag"> |
| | | <el-tag size="mini" :type="column.tag(scope.row).type"> |
| | | {{ column.tag(scope.row).value }} |
| | | </el-tag> |
| | | </template> |
| | | <template v-else-if="column.switch"> |
| | | <my-switch |
| | | :value="column.switch(scope.row).value" |
| | | :check-permission="column.checkPermission" |
| | | :disabled="column.switch(scope.row).disabled" |
| | | @click="switchClick(column.switch(scope.row).click)" |
| | | /> |
| | | </template> |
| | | <template v-else-if="column.formatterHigh"> |
| | | <span slot="reference" class="content-text" :style="setStyle(column.formatterHigh(scope.row))" @click="handleClick(column.formatterHigh(scope.row))">{{ column.formatterHigh(scope.row).value }}</span> |
| | | </template> |
| | | <template v-else> |
| | | <el-popover |
| | | placement="top-start" |
| | | trigger="click" |
| | | :content="getPopoverContent(scope.row,column)" |
| | | > |
| | | <span v-if="column.formatter" slot="reference" class="content-text">{{ column.formatter(scope.row) }}</span> |
| | | <span v-else-if="column.formatterRate" slot="reference" class="content-text"><el-rate :value="column.formatterRate(scope.row)" disabled :colors="['#99A9BF', '#F7BA2A', '#FF9900']" /></span> |
| | | <span v-else slot="reference" class="content-text">{{ scope.row[column.field] }}</span> |
| | | </el-popover> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | |
| | | <el-table-column |
| | | v-if="myTable.operation.length>0" |
| | | label="操作" |
| | | align="center" |
| | | :width="colWidth" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <template> |
| | | <div v-for="(operation, index) in myTable.operation" :key="index" style="display: inline-block"> |
| | | <my-button |
| | | v-if="!(operation.hidden && operation.hidden(scope.row))" |
| | | :name="operation.title" |
| | | size="mini" |
| | | :type="operation.type" |
| | | :check-permission="operation.checkPermission" |
| | | @click="operation.events(scope.row)" |
| | | /> |
| | | </div> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <div v-if="myTable.paging" style="margin-top: 10px;"> |
| | | <my-paging :page="myTable.page" @search="search" /> |
| | | </div> |
| | | </el-card> |
| | | </template> |
| | | |
| | | <script> |
| | | import myPaging from './myPaging' |
| | | import mySwitch from './mySwitch' |
| | | import myButton from '@/views/components/myButton' |
| | | |
| | | export default { |
| | | components: { myPaging, myButton, mySwitch }, |
| | | props: { |
| | | // 加载 |
| | | loading: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | table: { // 列表数据 |
| | | type: Object, |
| | | default() { |
| | | return {} |
| | | } |
| | | }, |
| | | parentSelectionsObject: { // 默认选中的数据 |
| | | type: Array, |
| | | default() { |
| | | return [] |
| | | } |
| | | }, |
| | | parentSelection: { // 默认选中的数据id |
| | | type: Array, |
| | | default() { |
| | | return [] |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | myLoading: false, // 加载 |
| | | selection: [], // 存储复选框选中的ID |
| | | selectionObject: [], // 存储复选框选中的对象 |
| | | myTable: { |
| | | ref: 'myTable', // table的名称 |
| | | expand: true, // 是否显示展开行 |
| | | // height: 500, // 默认高度自动单位px |
| | | // maxHeight: 500, //默认不设置单位px |
| | | size: 'medium', // Table 的尺寸 medium / small / mini |
| | | showCheckBox: false, // 是否显示复选框 |
| | | showIndex: true, // 是否显示序号 |
| | | columns: [], |
| | | rows: [], |
| | | operation: [], |
| | | paging: true, |
| | | page: {} |
| | | }, |
| | | colWidth: 172// 操作列的默认宽度 |
| | | } |
| | | }, |
| | | computed: { |
| | | // 通过计算属性过滤掉列表中不需要显示的项目 |
| | | columnHidden: function() { |
| | | return this.myTable.columns.filter(function(x) { |
| | | return x.hidden |
| | | }) |
| | | }, |
| | | columnNotHidden: function() { |
| | | return this.myTable.columns.filter(function(x) { |
| | | return !x.hidden |
| | | }) |
| | | } |
| | | }, |
| | | watch: { |
| | | loading(v) { |
| | | this.myLoading = v |
| | | }, |
| | | table(e) { |
| | | Object.assign(this.myTable, e) |
| | | this.reloadCheckBox() |
| | | } |
| | | }, |
| | | mounted() { |
| | | const changeTipClass = () => { |
| | | } |
| | | const Fun = function(e) { |
| | | e = e || window.event |
| | | if (e.wheelDelta) { |
| | | // IE/Opera/Chrome |
| | | changeTipClass() |
| | | } else if (e.detailWin) { |
| | | // FireFox |
| | | changeTipClass() |
| | | } |
| | | } |
| | | if (document.addEventListener) { |
| | | document.addEventListener('DOMMouseScroll', Fun, false) |
| | | } // FireFox |
| | | window.onmousewheel = document.onmousewheel = Fun // IE/Opera/Chrome |
| | | }, |
| | | created() { |
| | | this.myLoading = this.loading |
| | | // 接受父组件传来的 选中对象 ,解析为自己可以用的数据 |
| | | const psobj = Object.assign([], this.parentSelectionsObject) |
| | | if (psobj.length > 0) { |
| | | psobj.forEach(pso => { |
| | | this.selection.push(pso.id)// 存储复选框选中的ID |
| | | this.selectionObject.push(pso)// 存储复选框选中的对象 |
| | | }) |
| | | } |
| | | |
| | | // 初始化table数据 |
| | | Object.assign(this.myTable, this.table) |
| | | this.changeOperWidth() |
| | | this.reloadCheckBox() |
| | | }, |
| | | methods: { |
| | | handleHover() { |
| | | console.log('滚') |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-12 18:15 |
| | | * @Description : 设置高级格式化 formatterHigh的颜色 |
| | | */ |
| | | setStyle(format) { |
| | | let styles = '' |
| | | if (format.click != undefined) { |
| | | styles += 'cursor: pointer;' |
| | | } |
| | | if (format.type != undefined) { |
| | | if (format.type == 'primary') { |
| | | styles += 'color:#409EFF;' |
| | | } else if (format.type == 'danger') { |
| | | styles += 'color:#F56C6C;' |
| | | } else if (format.type == 'success') { |
| | | styles += 'color:#67C23A;' |
| | | } else if (format.type == 'warning') { |
| | | styles += 'color:#E6A23C;' |
| | | } else if (format.type == 'info') { |
| | | styles += 'color:#909399;' |
| | | } |
| | | } |
| | | return styles |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-12 18:36 |
| | | * @Description:formatterHigh点击 |
| | | */ |
| | | handleClick(format) { |
| | | if (format.click != undefined) { |
| | | format.click() |
| | | } |
| | | }, |
| | | switchClick(click) { |
| | | if (typeof click === 'function') { |
| | | click() |
| | | } |
| | | }, |
| | | search(param) { |
| | | this.$emit('search', param) |
| | | }, |
| | | // 单选 |
| | | handleSelect(selection, row) { |
| | | // 检查selection中是否包含row,如果包含则为选中,否则取消选中 |
| | | let _b = false |
| | | selection.forEach(sel => { |
| | | if (sel.id === row.id) { |
| | | _b = true |
| | | return false |
| | | } |
| | | }) |
| | | if (_b) { // 包含=选中 |
| | | if (!this.selection.includes(row.id)) { |
| | | this.selection.push(row.id) |
| | | this.selectionObject.push(row) |
| | | } |
| | | } else { // 不包含=取消选中 |
| | | for (let m = 0; m < this.selection.length; m++) { |
| | | if (row.id === this.selection[m]) { |
| | | if (this.selection.includes(row.id)) { |
| | | this.selection.splice(m, 1) |
| | | this.selectionObject.splice(m, 1) |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | // 全选 |
| | | handleSelectAll(selection) { |
| | | // 如果selection.length>0遍历,存在则忽略,不存在则添加. 否则移除本页所有数据。 |
| | | if (selection.length > 0) { // 全选 |
| | | // 遍历 不存在则加入 |
| | | selection.forEach(sel => { |
| | | if (!this.selection.includes(sel.id)) { |
| | | this.selection.push(sel.id) |
| | | this.selectionObject.push(sel) |
| | | } |
| | | }) |
| | | } else { // 全不选 |
| | | this.myTable.rows.forEach(row => { |
| | | const index = this.selection.indexOf(row.id) |
| | | if (index > -1) { |
| | | this.selection.splice(index, 1) |
| | | this.selectionObject.splice(index, 1) |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | reloadCheckBox() { |
| | | setTimeout(() => { |
| | | // 重新勾选被选中项 |
| | | try { |
| | | this.$refs[this.myTable.ref].clearSelection() |
| | | if (this.selection.length > 0) { |
| | | this.myTable.rows.forEach(row => { |
| | | for (let m = 0; m < this.selection.length; m++) { |
| | | if (row.id == this.selection[m]) { |
| | | this.$refs[this.myTable.ref].toggleRowSelection(row, true) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } catch (e) { console.error(e) } |
| | | }, 1) |
| | | }, |
| | | cellClick(row, column, cell, event) { |
| | | this.$emit('rowClick', { row, column, cell, event }) |
| | | }, |
| | | |
| | | getPopoverContent(row, column) { |
| | | if (column.formatterHigh) { |
| | | return column.formatterHigh(row).value + '' |
| | | } else if (column.formatter) { |
| | | return column.formatter(row) + '' |
| | | } else { |
| | | return row[column.field] + '' |
| | | } |
| | | }, |
| | | // 改变操作列的宽度 |
| | | changeOperWidth() { |
| | | if (this.myTable.operation.length > 2) { |
| | | this.colWidth = this.colWidth + 50 * (this.myTable.operation.length - 2) |
| | | } |
| | | }, |
| | | className({ row, column, rowIndex, columnIndex }) { |
| | | if (column.label == '操作') { |
| | | return 'oper' |
| | | } else { |
| | | return '' |
| | | } |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-13 13:46 |
| | | * @Description : 获取选中项 |
| | | */ |
| | | getCheckedRows() { |
| | | return this.selectionObject |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-13 13:46 |
| | | * @Description : 获取选中项id |
| | | */ |
| | | getCheckedIds() { |
| | | return this.selection |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped> |
| | | .demo-table-expand .el-form-item{ |
| | | width: 100%; |
| | | } |
| | | .content-text{ |
| | | overflow:hidden; |
| | | text-overflow:ellipsis; |
| | | white-space:nowrap |
| | | } |
| | | .oper>.cell{ |
| | | white-space: nowrap; |
| | | word-break:normal; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <el-card shadow="never"> |
| | | <!--工具条--> |
| | | <div v-if="!myTable.isTopFrame" class="table-tool-bar" style="overflow: hidden"> |
| | | <!--自定义工具--> |
| | | <my-button |
| | | v-for="(custom, idx) in myTable.tools.custom" |
| | | :key="idx" |
| | | site="tools" |
| | | :check-permission="custom.checkPermission" |
| | | :name="custom.name" |
| | | @click="custom.click" |
| | | /> |
| | | <!--导出--> |
| | | <el-popover v-model="visible" placement="right-start" width="250" trigger="click"> |
| | | <el-form ref="exportParams" :model="exportParams" :rules="rules" label-position="right" size="mini" label-width="65px"> |
| | | <el-form-item label="名称" prop="fileName"><el-input v-model="exportParams.fileName" /></el-form-item> |
| | | <el-form-item label="格式" class="require"> |
| | | <el-radio-group v-model="exportParams.fileFormat" size="mini"><el-radio label=".xls">.xls</el-radio></el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="数据" class="require"> |
| | | <el-radio-group v-model="exportParams.page" size="mini" @change="changePageSize"> |
| | | <el-radio label="1">本页</el-radio> |
| | | <el-radio label="2">全部</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="页码" style="display: none;" prop="pageNumber"><el-input v-model="exportParams.pageNumber" /></el-form-item> |
| | | <el-form-item label="步长" style="display: none;" prop="pageSize"><el-input v-model="exportParams.pageSize" /></el-form-item> |
| | | </el-form> |
| | | <div style="text-align: right; margin: 0"> |
| | | <el-button size="mini" type="default" @click="visible = false">取消</el-button> |
| | | <el-button type="primary" size="mini" @click="_export_">确定</el-button> |
| | | </div> |
| | | <my-button v-if="myTable.tools.generalExport.show" slot="reference" site="tools" name="导出" /> |
| | | </el-popover> |
| | | |
| | | <!--列控制--> |
| | | <el-popover v-if="myTable.tools.columnsCtrl.show" style="float: right;" trigger="click" placement="bottom" width="150"> |
| | | <el-form label-width="10px" style="max-height: 500px;overflow-y: auto;"> |
| | | <el-form-item label=""> |
| | | <el-checkbox-group v-model="checkColumns" @change="changeColumns"> |
| | | <el-checkbox v-for="(column, index) in myTable.columns" :key="index" :label="index">{{ column.title }}</el-checkbox> |
| | | </el-checkbox-group> |
| | | </el-form-item> |
| | | </el-form> |
| | | <el-button slot="reference" icon="el-icon-setting" size="mini">设置列</el-button> |
| | | </el-popover> |
| | | </div> |
| | | <!--table列表--> |
| | | <el-table |
| | | :key="timeStamp" |
| | | :ref="myTable.ref" |
| | | v-loading="myTable.loading" |
| | | :data="myTable.rows" |
| | | :max-height="myTable.maxHeight" |
| | | :height="myTable.height" |
| | | :size="myTable.size" |
| | | :fit="false" |
| | | :highlight-current-row="true" |
| | | border |
| | | > |
| | | <!--详情--> |
| | | <el-table-column v-if="myTable.expand" width="50" type="expand"> |
| | | <template slot-scope="{ row }"> |
| | | <el-form size="mini" label-position="left" :inline="false" class="demo-table-expand"> |
| | | <el-form-item v-for="(more, index) in columnHidden" :key="index" size="mini" :label="more.title + ':'"> |
| | | <template v-if="more.tag"> |
| | | <el-tag size="mini" :type="more.tag(row).type">{{ more.tag(row).value }} {{ more }}</el-tag> |
| | | </template> |
| | | <template v-else> |
| | | <span v-if="more.formatter">{{ more.formatter(row).value }}</span> |
| | | <span v-else-if="more.switch">{{ more.switch(row).label }}</span> |
| | | <span v-else>{{ row[more.field] }}</span> |
| | | </template> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <!--序号 有分页时--> |
| | | <el-table-column v-if="myTable.showIndex && myTable.paging.page.pageSize != undefined" label="序号" align="center" width="60"> |
| | | <template slot-scope="scope"> |
| | | <span>{{ scope.$index + (myTable.paging.page.pageNumber - 1) * myTable.paging.page.pageSize + 1 }}</span> |
| | | </template> |
| | | </el-table-column> |
| | | |
| | | <!--序号 无分页时--> |
| | | <el-table-column v-if="myTable.showIndex && myTable.paging.page.pageSize == undefined" type="index" align="center" label="序号" width="60" /> |
| | | <template v-for="(column,index) in columnNotHidden"> |
| | | <!--列内容--> |
| | | <el-table-column |
| | | v-if="!(column.hidden||false)" |
| | | :key="index" |
| | | :sortable="column.sortable" |
| | | :label="column.title" |
| | | :type="column.type" |
| | | :width="column.width" |
| | | :min-width="column.minWidth" |
| | | :align="column.align" |
| | | :header-align="column.align" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <!--开关(生成开关按钮)--> |
| | | <template v-if="column.switch"> |
| | | <my-switch |
| | | :value="column.switch(scope.row).value" |
| | | :check-permission="column.checkPermission" |
| | | :disabled="column.switch(scope.row).disabled" |
| | | @click="switchClick(column.switch(scope.row).click)" |
| | | /> |
| | | </template> |
| | | <template v-else-if="column.tag"> |
| | | <el-tag size="mini" :type="column.tag(scope.row).type">{{ column.tag(scope.row).value }}</el-tag> |
| | | </template> |
| | | <template v-else-if="column.img"> |
| | | <preview-picture img-style="width:40px;height:40px;" :imgs="column.img(scope.row).imgs" /> |
| | | </template> |
| | | <!--格式化(显示颜色,内容,点击事件控制)--> |
| | | <template v-else-if="column.formatter"> |
| | | <span slot="reference" class="content-text" :style="setStyle(column.formatter(scope.row))" @click="handleClick(column.formatter(scope.row))" v-html="column.formatter(scope.row).value" /> |
| | | </template> |
| | | <template v-else> |
| | | <!--点击弹出单元格内容--> |
| | | <el-popover placement="top-start" trigger="click" :content="getPopoverContent(scope.row, column)"> |
| | | <span slot="reference" class="content-text">{{ scope.row[column.field] }}</span> |
| | | </el-popover> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | </template> |
| | | |
| | | <!--操作列--> |
| | | <el-table-column |
| | | v-if="myTable.operation.show" |
| | | label="操作" |
| | | align="center" |
| | | :width="myTable.operation.width" |
| | | fixed="right" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <template v-for="(operation, index) in myTable.operation.attr"> |
| | | <my-button-v2 |
| | | v-if="!(operation.hidden && operation.hidden(scope.row))" |
| | | :key="index" |
| | | :name="operation.title" |
| | | site="operation" |
| | | :type="operation.type" |
| | | :check-permission="operation.checkPermission" |
| | | @click="operation.events(scope.row)" |
| | | /> |
| | | </template> |
| | | <template v-if="myTable.operation.more && myTable.operation.more.length > 0"> |
| | | <el-dropdown style="margin-left: 5px;" trigger="click"> |
| | | <el-button size="small" type="text"> |
| | | 更多 |
| | | <i class="el-icon-arrow-down el-icon--right" /> |
| | | </el-button> |
| | | <el-dropdown-menu slot="dropdown"> |
| | | <template v-for="(m, i) in myTable.operation.more"> |
| | | <el-dropdown-item v-if="!(m.hidden && m.hidden(scope.row))" :key="i"> |
| | | <my-button-v2 |
| | | :name="m.title" |
| | | site="operation" |
| | | :type="m.type" |
| | | :check-permission="m.checkPermission" |
| | | @click="m.events(scope.row)" |
| | | /> |
| | | </el-dropdown-item> |
| | | </template> |
| | | </el-dropdown-menu> |
| | | </el-dropdown> |
| | | </template> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <el-pagination |
| | | :small="myTable.paging.page.small" |
| | | :current-page="myTable.paging.page.pageNumber" |
| | | :page-sizes="[5, 10, 20, 50, 100, 200, 300, 400, 500]" |
| | | :page-size="myTable.paging.page.pageSize" |
| | | layout="total, sizes, prev, pager, next, jumper" |
| | | :total="myTable.paging.page.total" |
| | | @size-change="handleSizeChange" |
| | | @current-change="handleCurrentChange" |
| | | /> |
| | | </el-card> |
| | | </template> |
| | | |
| | | <script> |
| | | import myButtonV2 from '@/views/components/myButtonV2' |
| | | import myButton from '@/views/components/myButton' |
| | | import mySwitch from './mySwitch' |
| | | import request from '@/utils/request' |
| | | import * as valid from '@/utils/validate' |
| | | import previewPicture from '@/views/components/previewPicture' |
| | | export default { |
| | | components: { myButtonV2, myButton, mySwitch, previewPicture }, |
| | | props: { |
| | | table: { |
| | | type: Object, |
| | | default() { |
| | | return null |
| | | } |
| | | }, |
| | | // 当点击重置按钮时,filter指向改变时不需要手动调用search方法, 仅改变filter内部值时需手动调用search |
| | | // 如: this.filter = {} 不需要调用search this.filter.name = null 时需调用search |
| | | filter: { |
| | | type: Object, |
| | | default() { |
| | | return null |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | const validatepageNumber = (rule, value, callback) => { |
| | | if (!valid.isNotEmpty(this.exportParams.pageNumber)) { |
| | | callback(new Error('请输入页码')) |
| | | } else if (!valid.isInteger(this.exportParams.pageNumber)) { |
| | | callback(new Error('页码为正整数')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | const validatepageSize = (rule, value, callback) => { |
| | | if (!valid.isNotEmpty(this.exportParams.pageSize)) { |
| | | callback(new Error('请输入步长')) |
| | | } else if (!valid.isInteger(this.exportParams.pageSize)) { |
| | | callback(new Error('步长为正整数')) |
| | | } else if (this.exportParams.pageSize > 20000 || this.exportParams.pageSize < 1) { |
| | | callback(new Error('单次导出步长范围1~20000')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | const validatefileName = (rule, value, callback) => { |
| | | if (!valid.isNotEmpty(this.exportParams.fileName)) { |
| | | callback(new Error('请输入文件名称')) |
| | | } else if (this.exportParams.fileName.length < 1 || this.exportParams.fileName.length > 10) { |
| | | callback(new Error('文件名称长度范围1~10')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | return { |
| | | /** table列表数据*/ |
| | | myTable: { |
| | | autoLoad: true, |
| | | url: '', |
| | | params: {}, |
| | | showIndex: true, // 是否显示序号 |
| | | expand: true, // 是否显示详情数据 |
| | | loading: false, // 加载效果 |
| | | // height: 500, // 默认高度自动单位px |
| | | // maxHeight: 500, //默认不设置单位px |
| | | size: 'medium', // Table 的尺寸 medium / small / mini |
| | | showCheckBox: false, // 是否显示复选框 |
| | | // 工具条 |
| | | tools: { |
| | | columnsCtrl: { |
| | | // 列控制按钮 |
| | | show: false |
| | | }, |
| | | generalExport: { |
| | | // 通用导出按钮 |
| | | show: false |
| | | }, |
| | | custom: [] // 自定义工具条按钮 |
| | | }, |
| | | columns: [], // 列属性配置custom |
| | | operation: { |
| | | // 操作列 |
| | | show: false, // 显示操作列 |
| | | showMoreSize: 3, // 超出几个显示更多按钮 |
| | | width: '250', // 宽度 |
| | | align: 'center', |
| | | attr: [], // 操作 |
| | | more: [] // 更多 |
| | | }, |
| | | rows: [], // 列表数据 |
| | | paging: { |
| | | show: true, // 显示分页 |
| | | // 分页信息 |
| | | page: { |
| | | small: false, |
| | | pageNumber: 1, |
| | | pageSize: 10, |
| | | total: 0 |
| | | } |
| | | } |
| | | }, |
| | | checkColumns: [], // 记录列控制中选中的列 |
| | | // 导出功能所需参数 |
| | | visible: false, // 控制导出表单的隐藏 |
| | | exportParams: { |
| | | fileName: '', |
| | | fileFormat: '.xls', |
| | | page: '2', |
| | | pageNumber: 1, |
| | | pageSize: 20000 |
| | | }, |
| | | // 导出表单校验 |
| | | rules: { |
| | | fileName: [{ required: true, validator: validatefileName, trigger: 'blur' }], |
| | | pageNumber: [{ required: true, validator: validatepageNumber, trigger: 'blur' }], |
| | | pageSize: [{ required: true, validator: validatepageSize, trigger: 'blur' }] |
| | | }, |
| | | timeStamp: new Date().getTime() |
| | | } |
| | | }, |
| | | computed: { |
| | | // 通过计算属性过滤掉列表中不需要显示的项目 |
| | | columnHidden: function() { |
| | | return this.myTable.columns.filter(function(x) { |
| | | return x.hidden |
| | | }) |
| | | }, |
| | | columnNotHidden: function() { |
| | | return this.myTable.columns.filter(function(x) { |
| | | return !x.hidden |
| | | }) |
| | | }, |
| | | operButtons() { |
| | | const that = this |
| | | return function(row) { |
| | | const arr = [] |
| | | that.myTable.operation.attr.map(item => { |
| | | console.log(item) |
| | | console.log(!(item.hidden && item.hidden(row)) && item.checkPermission) |
| | | if (!(item.hidden && item.hidden(row)) && item.checkPermission) { |
| | | arr.push(item) |
| | | } |
| | | }) |
| | | return arr |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | filter(val) { |
| | | this.search({ pageNumber: 1 }) |
| | | } |
| | | }, |
| | | created() { |
| | | const that = this |
| | | |
| | | window.onresize = function() { |
| | | that.timeStamp = new Date().getTime() |
| | | } |
| | | this.initTable() |
| | | }, |
| | | methods: { |
| | | initTable() { |
| | | if (this.table !== null) { |
| | | Object.assign(this.myTable, this.table) |
| | | if (this.myTable.paging.page === undefined) { |
| | | this.$set(this.myTable.paging, 'page', { |
| | | small: false, |
| | | pageNumber: 1, |
| | | pageSize: 10, |
| | | total: 0 |
| | | }) |
| | | } |
| | | this.myTable.columns.forEach((column, idx) => { |
| | | if (!column.hidden) { |
| | | this.checkColumns.push(idx) |
| | | } |
| | | }) |
| | | this.$nextTick(() => { |
| | | if (this.myTable.autoLoad) { |
| | | this.search({ pageNumber: 1 }) |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 10:52 |
| | | * @Description : 列表搜索 |
| | | */ |
| | | search(param) { |
| | | this.$nextTick(() => { |
| | | this.myTable.loading = true |
| | | const params = Object.assign({}, this.filter) |
| | | params.pageSize = this.myTable.paging.page.pageSize |
| | | if (param && param.pageNumber) { |
| | | this.myTable.paging.page.pageNumber = param.pageNumber |
| | | } |
| | | params.pageNumber = this.myTable.paging.page.pageNumber |
| | | request({ |
| | | url: this.myTable.url, |
| | | method: 'get', |
| | | params: params |
| | | }).then(res => { |
| | | if (res.data.rows) { |
| | | this.$set(this.myTable, 'rows', res.data.rows) |
| | | } |
| | | this.$set( |
| | | this.myTable.paging, |
| | | 'page', |
| | | Object.assign(this.myTable.paging.page, { |
| | | pageSize: res.data.pageSize, |
| | | pageNumber: res.data.pageNumber, |
| | | total: res.data.total |
| | | }) |
| | | ) |
| | | this.myTable.loading = false |
| | | }).catch(() => { |
| | | this.myTable.loading = false |
| | | }) |
| | | }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 10:48 |
| | | * @Description : 获取设置列表弹层内容 |
| | | */ |
| | | getPopoverContent(row, column) { |
| | | if (column.formatterHigh) { |
| | | return column.formatterHigh(row).value + '' |
| | | } else if (column.formatter) { |
| | | return column.formatter(row) + '' |
| | | } else { |
| | | return row[column.field] + '' |
| | | } |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 11:39 |
| | | * @Description :单元格内容格式化样式 |
| | | */ |
| | | setStyle(format) { |
| | | let styles = '' |
| | | if (format.click != undefined) { |
| | | styles += 'cursor: pointer;' |
| | | } |
| | | if (format.type != undefined) { |
| | | if (format.type == 'primary') { |
| | | styles += 'color:#409EFF;' |
| | | } else if (format.type == 'danger') { |
| | | styles += 'color:#F56C6C;' |
| | | } else if (format.type == 'success') { |
| | | styles += 'color:#67C23A;' |
| | | } else if (format.type == 'warning') { |
| | | styles += 'color:#E6A23C;' |
| | | } else if (format.type == 'info') { |
| | | styles += 'color:#909399;' |
| | | } |
| | | } |
| | | return styles |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 12:20 |
| | | * @Description : formatter 点击事件 |
| | | */ |
| | | handleClick(format) { |
| | | if (format.click != undefined) { |
| | | format.click() |
| | | } |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 12:21 |
| | | * @Description : 开关点击事件 |
| | | */ |
| | | switchClick(click) { |
| | | if (typeof click === 'function') { |
| | | click() |
| | | } |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 14:22 |
| | | * @Description :切换pageSize |
| | | */ |
| | | handleSizeChange(pageSize) { |
| | | this.myTable.paging.page.pageSize = pageSize |
| | | this.search({ pageNumber: 1 }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 14:22 |
| | | * @Description :切换pageNumber |
| | | */ |
| | | handleCurrentChange(pageNumber) { |
| | | this.myTable.paging.page.pageNumber = pageNumber |
| | | this.search({ pageNumber: pageNumber }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 14:52 |
| | | * @Description :列控制 |
| | | */ |
| | | changeColumns() { |
| | | this.myTable.columns.forEach((column, idx) => { |
| | | if (this.checkColumns.includes(idx)) { |
| | | column.hidden = false |
| | | } else { |
| | | column.hidden = true |
| | | } |
| | | this.$set(this.myTable.columns, idx, column) |
| | | }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-23 10:44 |
| | | * @Description : 修改导出 pageSize |
| | | */ |
| | | changePageSize() { |
| | | if (this.exportParams.page == 1) { |
| | | this.exportParams.pageSize = this.myTable.paging.page.pageSize |
| | | } else if (this.exportParams.page == 2) { |
| | | this.exportParams.pageSize = 20000 |
| | | } |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-17 16:38 |
| | | * @Description :通用导出 |
| | | */ |
| | | _export_() { |
| | | this.$refs['exportParams'].validate(valid => { |
| | | if (valid) { |
| | | // 判断总条数是否大于最大支持条数 |
| | | if (this.myTable.paging.page.total > 20000) { |
| | | this.$confirm(`当前筛选数据条数${this.myTable.paging.page.total},最大支持导出条数20000,是否继续导出?`, '提示', { |
| | | confirmButtonText: '是', |
| | | cancelButtonText: '否', |
| | | type: 'warning' |
| | | }) |
| | | .then(() => { |
| | | this._export_m() |
| | | }) |
| | | .catch(() => { |
| | | return false |
| | | }) |
| | | } else { |
| | | this._export_m() |
| | | } |
| | | } else { |
| | | return false |
| | | } |
| | | }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-23 11:22 |
| | | * @Description : 真正的导出 |
| | | */ |
| | | _export_m() { |
| | | const loading = this.$loading({ |
| | | lock: true, |
| | | text: '正在导出...', |
| | | spinner: 'el-icon-loading', |
| | | background: 'rgba(0, 0, 0, 0.7)' |
| | | }) |
| | | |
| | | this.visible = false |
| | | const params = {} |
| | | params.url = this.myTable.url |
| | | const columns = [] |
| | | this.myTable.columns.forEach(c => { |
| | | if (!c.hidden || c.export) { |
| | | columns.push({ |
| | | title: c.title, |
| | | field: c.field |
| | | }) |
| | | } |
| | | }) |
| | | params.columns = encodeURI(JSON.stringify(columns)) |
| | | params.filter = encodeURI( |
| | | JSON.stringify( |
| | | Object.assign( |
| | | { |
| | | pageNumber: this.exportParams.pageNumber, |
| | | pageSize: this.exportParams.pageSize |
| | | }, |
| | | this.filter |
| | | ) |
| | | ) |
| | | ) |
| | | params.fileName = encodeURI(this.exportParams.fileName) |
| | | if (this.myTable.tools.generalExport.formatter) { |
| | | params.formatter = encodeURI(JSON.stringify(this.myTable.tools.generalExport.formatter)) |
| | | } |
| | | |
| | | request({ |
| | | url: globalConf.baseUrl + '/v1/base/pc/export/generalExport3', // 请求地址, |
| | | method: 'post', |
| | | data: params |
| | | }).then(response => { |
| | | if (response.code == 10000) { |
| | | const link = globalConf.baseUrl + `/v1/base/web/common/downExcel?key=${response.data}` |
| | | window.location.href = link |
| | | } else { |
| | | this.$message({ |
| | | message: '哎呀,出意外了。。。', |
| | | type: 'warning' |
| | | }) |
| | | } |
| | | loading.close() |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | >>> .el-table__fixed-right { |
| | | height: 100% !important; |
| | | } |
| | | |
| | | /*详情表单*/ |
| | | .demo-table-expand .el-form-item{ |
| | | width: 100%; |
| | | } |
| | | |
| | | /*列表内文字过长加省略*/ |
| | | .content-text{ |
| | | overflow:hidden; |
| | | text-overflow:ellipsis; |
| | | white-space:nowrap |
| | | } |
| | | |
| | | /*分页上边距*/ |
| | | .el-pagination { |
| | | white-space: nowrap; |
| | | padding: 2px 5px; |
| | | color: #303133; |
| | | font-weight: 700; |
| | | margin-top: 10px; |
| | | } |
| | | .el-radio { |
| | | margin-right: 10px; |
| | | } |
| | | .el-radio__label { |
| | | font-size: 14px; |
| | | padding-left: 2px !important; |
| | | } |
| | | /deep/.el-table__empty-block { |
| | | width: 100%; |
| | | text-align: center; |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <viewer :images="images"> |
| | | <img |
| | | v-for="(src,index) in images" |
| | | :key="index" |
| | | class="v-img" |
| | | :src="src.url" |
| | | :alt="src.name" |
| | | :style="imgStyle" |
| | | :onerror="defaultImg" |
| | | > |
| | | </viewer> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getFtpUrl } from '@/utils/base' |
| | | import { str2Array } from '@/utils/tools' |
| | | export default { |
| | | props: { |
| | | imgs: { |
| | | type: [Array, String], |
| | | default: function() { |
| | | return [] |
| | | } |
| | | }, |
| | | imgStyle: { |
| | | type: String, |
| | | default: 'width:100px; height:100px;' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | defaultImg: 'this.src="' + require('../../../assets/404_images/404.png') + '"', |
| | | images: [] |
| | | } |
| | | }, |
| | | watch: { |
| | | imgs(val) { |
| | | if (typeof val === 'string') { |
| | | this.images = str2Array(val) |
| | | } else { |
| | | this.images = val |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | if (typeof this.imgs === 'string') { |
| | | this.images = str2Array(this.imgs) |
| | | } else { |
| | | this.images = this.imgs |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.images.forEach(obj => { |
| | | if (obj.path != undefined && obj.path.length > 0) { |
| | | obj.url = this.getUrl(obj.path) |
| | | } |
| | | }) |
| | | }, |
| | | methods: { |
| | | getUrl(path) { |
| | | return getFtpUrl() + path |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | /* 图片预览层级*/ |
| | | .viewer-container { |
| | | z-index: 90709102!important; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div class="upload-container"> |
| | | <el-button :style="{background:color,borderColor:color}" icon="el-icon-upload" size="mini" type="primary" @click=" dialogVisible=true"> |
| | | upload |
| | | </el-button> |
| | | <el-dialog :visible.sync="dialogVisible"> |
| | | <el-upload |
| | | :multiple="true" |
| | | :file-list="fileList" |
| | | :show-file-list="true" |
| | | :on-remove="handleRemove" |
| | | :on-success="handleSuccess" |
| | | :before-upload="beforeUpload" |
| | | class="editor-slide-upload" |
| | | action="https://httpbin.org/post" |
| | | list-type="picture-card" |
| | | > |
| | | <el-button size="small" type="primary"> |
| | | Click upload |
| | | </el-button> |
| | | </el-upload> |
| | | <el-button @click="dialogVisible = false"> |
| | | Cancel |
| | | </el-button> |
| | | <el-button type="primary" @click="handleSubmit"> |
| | | Confirm |
| | | </el-button> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | // import { getToken } from 'api/qiniu' |
| | | |
| | | export default { |
| | | name: 'EditorSlideUpload', |
| | | props: { |
| | | color: { |
| | | type: String, |
| | | default: '#1890ff' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | dialogVisible: false, |
| | | listObj: {}, |
| | | fileList: [] |
| | | } |
| | | }, |
| | | methods: { |
| | | checkAllSuccess() { |
| | | return Object.keys(this.listObj).every(item => this.listObj[item].hasSuccess) |
| | | }, |
| | | handleSubmit() { |
| | | const arr = Object.keys(this.listObj).map(v => this.listObj[v]) |
| | | if (!this.checkAllSuccess()) { |
| | | this.$message('Please wait for all images to be uploaded successfully. If there is a network problem, please refresh the page and upload again!') |
| | | return |
| | | } |
| | | this.$emit('successCBK', arr) |
| | | this.listObj = {} |
| | | this.fileList = [] |
| | | this.dialogVisible = false |
| | | }, |
| | | handleSuccess(response, file) { |
| | | const uid = file.uid |
| | | const objKeyArr = Object.keys(this.listObj) |
| | | for (let i = 0, len = objKeyArr.length; i < len; i++) { |
| | | if (this.listObj[objKeyArr[i]].uid === uid) { |
| | | this.listObj[objKeyArr[i]].url = response.files.file |
| | | this.listObj[objKeyArr[i]].hasSuccess = true |
| | | return |
| | | } |
| | | } |
| | | }, |
| | | handleRemove(file) { |
| | | const uid = file.uid |
| | | const objKeyArr = Object.keys(this.listObj) |
| | | for (let i = 0, len = objKeyArr.length; i < len; i++) { |
| | | if (this.listObj[objKeyArr[i]].uid === uid) { |
| | | delete this.listObj[objKeyArr[i]] |
| | | return |
| | | } |
| | | } |
| | | }, |
| | | beforeUpload(file) { |
| | | const _self = this |
| | | const _URL = window.URL || window.webkitURL |
| | | const fileName = file.uid |
| | | this.listObj[fileName] = {} |
| | | return new Promise((resolve, reject) => { |
| | | const img = new Image() |
| | | img.src = _URL.createObjectURL(file) |
| | | img.onload = function() { |
| | | _self.listObj[fileName] = { hasSuccess: false, uid: file.uid, width: this.width, height: this.height } |
| | | } |
| | | resolve(true) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .editor-slide-upload { |
| | | margin-bottom: 20px; |
| | | .el-upload--picture-card { |
| | | width: 100%; |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <textarea :id="id" /> |
| | | <!--<div class="editor-custom-btn-container">--> |
| | | <!--<editorImage color="#1890ff" class="editor-upload-btn" @successCBK="imageSuccessCBK" />--> |
| | | <!--</div>--> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | // import editorImage from './components/EditorImage' |
| | | import { getFtpUrl, getUploadUrl } from '@/utils/base' |
| | | import { guid } from '@/utils/tools' |
| | | |
| | | export default { |
| | | components: { |
| | | // editorImage |
| | | }, |
| | | props: { |
| | | width: { |
| | | type: String, |
| | | default: '100%' |
| | | }, |
| | | height: { |
| | | type: String, |
| | | default: '300px' |
| | | }, |
| | | value: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | config: { |
| | | type: Object, |
| | | default: function() { |
| | | return { |
| | | imgUploadUrl: getUploadUrl() |
| | | } |
| | | } |
| | | }, |
| | | tid: { |
| | | type: String, |
| | | default: 'edit-' + guid() |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | id: this.tid + new Date().getTime() |
| | | } |
| | | }, |
| | | watch: { |
| | | value(val) { |
| | | if (val == null) { val = '' } |
| | | window.tinymce.get(this.id).setContent(val) |
| | | } |
| | | }, |
| | | destroyed() { |
| | | this.destroyTinymce() |
| | | }, |
| | | mounted() { |
| | | // console.log(111) |
| | | this.init() |
| | | }, |
| | | methods: { |
| | | init() { |
| | | // console.log(this.id) |
| | | const _this = this |
| | | window.tinymce.init({ |
| | | selector: `#${this.id}`, |
| | | body_class: 'panel-body ', |
| | | skin: 'oxide', |
| | | language: 'zh_CN', |
| | | plugins: 'paste preview fullscreen code codesample lists image table hr emoticons', |
| | | width: this.width, |
| | | height: this.height, |
| | | toolbar: [ |
| | | 'paste fullscreen preview | undo redo | hr bold italic underline strikethrough | alignleft aligncenter alignright | outdent indent | removeformat subscript superscript', |
| | | 'bullist numlist link image charmap anchor pagebreak insertdatetime table emoticons forecolor backcolor' |
| | | ], |
| | | image_advtab: true, |
| | | images_upload_handler: (blobInfo, success, failure) => { |
| | | const xhr = new XMLHttpRequest() |
| | | xhr.withCredentials = false |
| | | xhr.open('POST', _this.config.imgUploadUrl) |
| | | const formData = new FormData() |
| | | formData.append('file', blobInfo.blob()) |
| | | xhr.onload = function(e) { |
| | | if (xhr.status != 200) { |
| | | failure('HTTP Error: ' + xhr.status) |
| | | return |
| | | } |
| | | const json = JSON.parse(this.responseText) |
| | | if (!json || typeof json.data[0].path != 'string') { |
| | | failure('Invalid JSON: ' + xhr.responseText) |
| | | return |
| | | } |
| | | success(getFtpUrl() + json.data[0].path) |
| | | } |
| | | xhr.send(formData) |
| | | // const img = 'data:image/jpeg;base64,' + blobInfo.base64() |
| | | // success(img) |
| | | }, |
| | | init_instance_callback: editor => { |
| | | if (_this.value) { |
| | | editor.setContent(_this.value) |
| | | } |
| | | _this.hasInit = true |
| | | editor.on('NodeChange Change KeyUp SetContent', () => { |
| | | // this.hasChange = true |
| | | this.$emit('input', editor.getContent()) |
| | | }) |
| | | } |
| | | // external_plugins: { |
| | | // 'powerpaste': 'http://www.server.com/application/external_plugins/powerpaste/plugin.js' |
| | | // } |
| | | }) |
| | | }, |
| | | destroyTinymce() { |
| | | const tinymce = window.tinymce.get(`#${this.id}`) |
| | | if (this.fullscreen) { |
| | | tinymce.execCommand('mceFullScreen') |
| | | } |
| | | if (tinymce) { |
| | | tinymce.destroy() |
| | | } |
| | | }, |
| | | setContent(value) { |
| | | window.tinymce.get(this.id).setContent(value) |
| | | }, |
| | | getContent() { |
| | | return window.tinymce.get(this.id).getContent() |
| | | }, |
| | | imageSuccessCBK(arr) { |
| | | const _this = this |
| | | arr.forEach(v => { |
| | | window.tinymce.get(_this.tinymceId).insertContent(`<img class="wscnph" src="${v.url}" >`) |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .tinymce-container { |
| | | position: relative; |
| | | line-height: normal; |
| | | } |
| | | .tinymce-container>>>.mce-fullscreen { |
| | | z-index: 10000; |
| | | } |
| | | .tinymce-textarea { |
| | | visibility: hidden; |
| | | z-index: -1; |
| | | } |
| | | .editor-custom-btn-container { |
| | | position: absolute; |
| | | right: 4px; |
| | | top: 4px; |
| | | /*z-index: 2005;*/ |
| | | } |
| | | .fullscreen .editor-custom-btn-container { |
| | | z-index: 10000; |
| | | position: fixed; |
| | | } |
| | | .editor-upload-btn { |
| | | display: inline-block; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <el-upload |
| | | class="upload-demo" |
| | | :action="defaultSettings.uploadUrl" |
| | | :multiple="defaultSettings.multiple" |
| | | name="file" |
| | | :accept="defaultSettings.accept" |
| | | :file-list="showList" |
| | | :list-type="defaultSettings.type" |
| | | :limit="defaultSettings.num" |
| | | :disabled="defaultSettings.disabled" |
| | | :on-exceed="handleExceed" |
| | | :on-preview="handlePreview" |
| | | :on-remove="handleRemove" |
| | | :before-upload="beforeUpload" |
| | | :on-success="handleUploadSuccess" |
| | | :headers="headers" |
| | | :drag="settings.drag" |
| | | > |
| | | <template v-if="settings.drag"> |
| | | <i class="el-icon-upload" /> |
| | | <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
| | | </template> |
| | | |
| | | <el-button v-if="!settings.drag" size="small" type="primary">{{ defaultSettings.title }}</el-button> |
| | | <div v-if="defaultSettings.tip" slot="tip" class="el-upload__tip">{{ defaultSettings.tip }}</div> |
| | | <div v-else slot="tip" class="el-upload__tip">只能上传{{ defaultSettings.num }}个格式为[{{ defaultSettings.accept }}]的文件,且不超过{{ defaultSettings.max/1024 }}M |
| | | </div> |
| | | |
| | | </el-upload> |
| | | <div id="uploadPreviewImages" style="display:none;"> |
| | | <span |
| | | v-for="(src,index) in fileList" |
| | | :key="index" |
| | | > |
| | | <img |
| | | v-if="checkImg(src.name)" |
| | | class="v-img" |
| | | :src="src.url" |
| | | :alt="src.name" |
| | | style="width: 100px;height: 100px;" |
| | | > |
| | | </span> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getToken } from '@/utils/auth' |
| | | import { sessionToken } from '@/settings' |
| | | import { getFtpUrl } from '@/utils/base' |
| | | import Viewer from 'viewerjs' |
| | | import 'viewerjs/dist/viewer.css' |
| | | let viewer = null |
| | | export default { |
| | | props: { |
| | | values: { |
| | | type: Array, |
| | | default: function() { |
| | | return [] |
| | | } |
| | | }, |
| | | settings: { |
| | | type: Object, |
| | | default: function() { |
| | | return {} |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | headers: { |
| | | |
| | | }, |
| | | showList: [], // 用于详情展示 |
| | | fileList: [], |
| | | defaultSettings: { |
| | | title: '点击上传', |
| | | max: 1024 * 100, // 最大大小,单位kb |
| | | num: 1, // 支持上传图片个数 |
| | | accept: '.jpg,.jpeg,.png,.bmp,.pdf,.doc,.docx,.xls,.xlsx,.zip,.apk', // 限制格式 |
| | | tip: '', // 提示 默认:`只能上传${this.defaultSettings.num}个${this.defaultSettings.accept}文件,且不超过${this.defaultSettings.max}kb` |
| | | uploadUrl: '', // 上传路径 |
| | | multiple: true, // 是否支持批量上传 |
| | | disabled: false, // 是否禁用 |
| | | type: 'picture' // text/picture |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | values(v) { |
| | | this.fileList = Object.assign([], v) |
| | | this.showList = Object.assign([], v) |
| | | this.$nextTick(() => { |
| | | this.initPreviewImg() |
| | | }) |
| | | } |
| | | }, |
| | | created() { |
| | | this.showList = Object.assign([], this.values) |
| | | this.fileList = Object.assign([], this.values) |
| | | |
| | | this.showList.forEach(obj => { |
| | | obj.url = this.getUrl(obj.path) |
| | | }) |
| | | |
| | | this.fileList.forEach(obj => { |
| | | obj.url = this.getUrl(obj.path) |
| | | }) |
| | | |
| | | this.defaultSettings = Object.assign(this.defaultSettings, this.settings) |
| | | // console.log(this.defaultSettings) |
| | | // this.$nextTick(() => { |
| | | // new Viewer(document.getElementsByClassName('el-upload-list')) |
| | | // }) |
| | | }, |
| | | mounted() { |
| | | this.initPreviewImg() |
| | | this.headers[sessionToken] = getToken() |
| | | }, |
| | | methods: { |
| | | handleRemove(file, fileList) { |
| | | for (let i = 0; i < this.fileList.length; i++) { |
| | | const img = this.fileList[i] |
| | | if (file.uid == img.uid) { |
| | | this.fileList.splice(i, 1) |
| | | break |
| | | } |
| | | } |
| | | |
| | | this.$nextTick(() => { |
| | | this.initPreviewImg() |
| | | }) |
| | | }, |
| | | |
| | | handleExceed(files, fileList) { |
| | | this.$message.warning('最多上传' + this.defaultSettings.num + '个文件') |
| | | }, |
| | | beforeUpload(file) { |
| | | // console.log('upload before') |
| | | let isRepeat = true |
| | | for (let i = 0; i < this.fileList.length; i++) { |
| | | const f = this.fileList[i] |
| | | if (file.name == f.name) { |
| | | isRepeat = false |
| | | break |
| | | } |
| | | } |
| | | |
| | | if (!isRepeat) { |
| | | this.$message.error('该文件已存在!') |
| | | } |
| | | const isImg = this.defaultSettings.accept.split(',').indexOf(file.name.substr(file.name.lastIndexOf('.'), file.name.length).toLocaleString()) > -1 |
| | | const isLt2M = file.size / 1024 < this.defaultSettings.max |
| | | if (!isImg) { |
| | | this.$message.error('上传文件格式只能是 ' + this.defaultSettings.accept + ' 格式!') |
| | | } |
| | | if (!isLt2M) { |
| | | this.$message.error('上传文件大小不能超过 ' + this.defaultSettings.max / 1024 + 'M!' + '当前文件大小:' + parseInt(file.size / 1024 / 1024) + 'M') |
| | | } |
| | | return isImg && isLt2M && isRepeat |
| | | }, |
| | | handleUploadSuccess(response, file, fileList) { |
| | | // console.log('upload sucess') |
| | | // console.log(response.data) |
| | | response.data.forEach(f => { |
| | | this.fileList.push({ |
| | | uid: file.uid, |
| | | name: f.name, |
| | | url: this.getUrl(f.path), |
| | | path: f.path, |
| | | attSize: f.attSize || null, |
| | | fileTime: f.fileTime || null |
| | | }) |
| | | }) |
| | | this.$nextTick(() => { |
| | | this.initPreviewImg() |
| | | }) |
| | | }, |
| | | getContent() { |
| | | return this.fileList |
| | | }, |
| | | handlePreview(file) { |
| | | if (!this.checkImg(file.name)) { |
| | | return false |
| | | } |
| | | let index = 0 |
| | | for (let i = 0; i < this.fileList.length; i++) { |
| | | const f = this.fileList[i] |
| | | if (this.checkImg(f.name)) { |
| | | if (file.uid == f.uid) { |
| | | break |
| | | } |
| | | index++ |
| | | } |
| | | } |
| | | // this.fileList.forEach((f, i) => { |
| | | // if (file.uid == f.uid) { |
| | | // index = i |
| | | // } |
| | | // }) |
| | | // document.querySelector('#uploadPreviewImages').children[0].click() |
| | | viewer.view(index) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-05-26 14:48 |
| | | * @Description : 初始化 |
| | | */ |
| | | initPreviewImg() { |
| | | if (viewer != null) { |
| | | viewer.destroy() |
| | | } |
| | | const ViewerDom = document.querySelector('#uploadPreviewImages') |
| | | viewer = new Viewer(ViewerDom, { |
| | | |
| | | }) |
| | | // console.log(this.fileList) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-05-26 14:48 |
| | | * @Description : 校验图片 |
| | | */ |
| | | checkImg(name) { |
| | | const suffix = name.substring(name.lastIndexOf('.'), name.length) |
| | | const imgArray = ['.jpg', '.jpeg', '.png', '.bmp'] |
| | | if (imgArray.indexOf(suffix) < 0) { |
| | | return false |
| | | } |
| | | return true |
| | | }, |
| | | getUrl(path) { |
| | | if (path.substr(0, 7).toLowerCase() == 'http://' || path.substr(0, 8).toLowerCase() == 'https://') { |
| | | return path |
| | | } else { |
| | | return getFtpUrl() + path |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | /* 图片预览层级*/ |
| | | .viewer-container { |
| | | z-index: 90709102!important; |
| | | } |
| | | |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <el-upload |
| | | class="upload-demo" |
| | | drag |
| | | :action="defaultSettings.uploadUrl" |
| | | :multiple="defaultSettings.multiple" |
| | | name="file" |
| | | :accept="defaultSettings.accept" |
| | | :file-list="showList" |
| | | :list-type="defaultSettings.type" |
| | | :limit="defaultSettings.num" |
| | | :disabled="defaultSettings.disabled" |
| | | :on-exceed="handleExceed" |
| | | :on-remove="handleRemove" |
| | | :before-upload="beforeUpload" |
| | | :on-success="handleUploadSuccess" |
| | | :headers="headers" |
| | | > |
| | | <i class="el-icon-upload" /> |
| | | <div class="el-upload__text">将文件拖到此处,或<em>{{ defaultSettings.title }}</em></div> |
| | | <div slot="tip" class="el-upload__tip"> |
| | | 只能上传{{ defaultSettings.num }}个,且格式为[{{ defaultSettings.accept }}]的文件, |
| | | 且不超过{{ defaultSettings.max }}MB |
| | | </div> |
| | | |
| | | </el-upload> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getToken } from '@/utils/auth' |
| | | import { sessionToken } from '@/settings' |
| | | import { getFtpUrl } from '@/utils/base' |
| | | |
| | | export default { |
| | | props: { |
| | | values: { |
| | | type: Array, |
| | | default: function() { |
| | | return [] |
| | | } |
| | | }, |
| | | settings: { |
| | | type: Object, |
| | | default: function() { |
| | | return {} |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | headers: { |
| | | |
| | | }, |
| | | showList: [], // 用于详情展示 |
| | | fileList: [], |
| | | defaultSettings: { |
| | | title: '点击上传', |
| | | max: 100, // 最大大小,单位MB |
| | | num: 1, // 支持上传文件个数 |
| | | accept: '.jpg,.png,.pdf,.doc,.docx,.xls,.xlsx,.zip,.txt,.rar,.ppt,.pptx,.xlt', // 限制格式 |
| | | tip: '', // 提示 默认:`只能上传${this.defaultSettings.num}个${this.defaultSettings.accept}文件,且不超过${this.defaultSettings.max}MB` |
| | | uploadUrl: '', // 上传路径 |
| | | multiple: true, // 是否支持批量上传 |
| | | disabled: false, // 是否禁用 |
| | | type: 'text' // text/picture |
| | | } |
| | | } |
| | | }, |
| | | watch: { |
| | | values(v) { |
| | | this.fileList = Object.assign([], v) |
| | | this.showList = Object.assign([], v) |
| | | this.showList.forEach(obj => { |
| | | obj.url = this.getUrl(obj.path) |
| | | }) |
| | | this.fileList.forEach(obj => { |
| | | obj.url = this.getUrl(obj.path) |
| | | }) |
| | | } |
| | | }, |
| | | created() { |
| | | this.showList = Object.assign([], this.values) |
| | | this.fileList = Object.assign([], this.values) |
| | | |
| | | this.showList.forEach(obj => { |
| | | obj.url = this.getUrl(obj.path) |
| | | }) |
| | | this.fileList.forEach(obj => { |
| | | obj.url = this.getUrl(obj.path) |
| | | }) |
| | | |
| | | this.defaultSettings = Object.assign(this.defaultSettings, this.settings) |
| | | }, |
| | | mounted() { |
| | | this.headers[sessionToken] = getToken() |
| | | }, |
| | | methods: { |
| | | handleRemove(file, fileList) { |
| | | for (let i = 0; i < this.fileList.length; i++) { |
| | | const img = this.fileList[i] |
| | | if (file.uid == img.uid) { |
| | | this.fileList.splice(i, 1) |
| | | break |
| | | } |
| | | } |
| | | }, |
| | | |
| | | handleExceed(files, fileList) { |
| | | this.$message.warning('最多上传' + this.defaultSettings.num + '个文件') |
| | | }, |
| | | beforeUpload(file) { |
| | | let isRepeat = true |
| | | for (let i = 0; i < this.fileList.length; i++) { |
| | | const f = this.fileList[i] |
| | | if (file.name == f.name) { |
| | | isRepeat = false |
| | | break |
| | | } |
| | | } |
| | | |
| | | if (!isRepeat) { |
| | | this.$message.error('该文件已存在!') |
| | | } |
| | | const isImg = this.defaultSettings.accept.split(',').indexOf(file.name.substr(file.name.lastIndexOf('.'), file.name.length).toLocaleString()) > -1 |
| | | const isLt2M = file.size / 1024 / 1024 < this.defaultSettings.max |
| | | if (!isImg) { |
| | | this.$message.error('上传文件格式只能是 ' + this.defaultSettings.accept + ' 格式!') |
| | | } |
| | | if (!isLt2M) { |
| | | this.$message.error('上传文件大小不能超过 ' + this.defaultSettings.max + 'MB') |
| | | } |
| | | return isImg && isLt2M && isRepeat |
| | | }, |
| | | handleUploadSuccess(response, file, fileList) { |
| | | if (response.code == 10000) { |
| | | response.data.forEach(f => { |
| | | this.fileList.push({ |
| | | uid: file.uid, |
| | | name: f.name, |
| | | url: this.getUrl(f.path), |
| | | path: f.path |
| | | }) |
| | | }) |
| | | } else { |
| | | // 上传失败,把显示的上传文件List中相应失败的文件剔除 |
| | | this.showList = this.fileList |
| | | console.log('上传失败!') |
| | | this.$message.warning('上传失败!') |
| | | } |
| | | }, |
| | | getContent() { |
| | | return this.fileList |
| | | }, |
| | | getUrl(path) { |
| | | if (path.substr(0, 7).toLowerCase() == 'http://' || path.substr(0, 8).toLowerCase() == 'https://') { |
| | | return path |
| | | } else { |
| | | return getFtpUrl() + path |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | /* 图片预览层级*/ |
| | | .viewer-container { |
| | | z-index: 90709102!important; |
| | | } |
| | | |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <win2 :title="title" @close="close"> |
| | | <ztree ref="ztree" :nodes="nodes" /> |
| | | <div slot="footer" align="center" class="dialog-footer"> |
| | | <my-button-v2 name="取消" site="form" @click="close" /> |
| | | <my-button-v2 name="保存" site="form" @click="save" /> |
| | | </div> |
| | | </win2> |
| | | </template> |
| | | |
| | | <script> |
| | | import win2 from '@/views/components/win2' |
| | | import myButtonV2 from '@/views/components/myButtonV2' |
| | | import ztree from '@/views/components/ztree' |
| | | import { getUserAuthZTree } from '@/api/common.js' |
| | | export default { |
| | | components: { win2, myButtonV2, ztree }, |
| | | props: { |
| | | setting: { |
| | | type: Object, |
| | | default: function() { |
| | | return {} |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | title: '选择用户', |
| | | nodes: [] |
| | | } |
| | | }, |
| | | created() { |
| | | this.getInfo() |
| | | }, |
| | | methods: { |
| | | getInfo() { |
| | | if (this.setting.businessType && this.setting.businessId) { |
| | | getUserAuthZTree(this.setting).then(res => { |
| | | this.nodes = res.data |
| | | }) |
| | | } |
| | | }, |
| | | close() { |
| | | this.$emit('close') |
| | | }, |
| | | save() { |
| | | const checkedNodes = this.$refs.ztree.getCheckedNodes() |
| | | // 如果是单选,需要判断选择的节点个数 |
| | | if (this.setting.isRadio != undefined && this.setting.isRadio && checkedNodes.length > 1) { |
| | | this.$message.info('只能选择一个人员,请检查重试!') |
| | | return |
| | | } |
| | | this.$emit('saveUser', checkedNodes) |
| | | this.close() |
| | | } |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | <template> |
| | | <win2 :title="title" @close="close"> |
| | | <el-form :model="formData" label-width="120px"> |
| | | <el-form-item label="已授权用户:"> |
| | | <span v-for="(item ,idx) in formData.userNames" :key="idx"> |
| | | {{ idx == 0?'':'、' }} |
| | | <el-tag type="success"> |
| | | {{ item }} |
| | | </el-tag> |
| | | </span> |
| | | </el-form-item> |
| | | <el-form-item label="授权用户:"> |
| | | <el-button size="mini" type="primary" @click="authShow=true">选择...</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div slot="footer" align="center" class="dialog-footer"> |
| | | <my-button-v2 name="取消" site="form" @click="close" /> |
| | | <my-button-v2 name="保存" site="form" @click="save" /> |
| | | </div> |
| | | <!--用户选择弹窗--> |
| | | <auth v-if="authShow" :setting="setting" @close="authShow=false" @saveUser="saveUser" /> |
| | | </win2> |
| | | </template> |
| | | |
| | | <script> |
| | | import win2 from '@/views/components/win2' |
| | | import myButtonV2 from '@/views/components/myButtonV2' |
| | | import { getAuthUser, saveUserAuth } from '@/api/common.js' |
| | | import auth from './auth' |
| | | export default { |
| | | components: { win2, myButtonV2, auth }, |
| | | props: { |
| | | setting: { |
| | | type: Object, |
| | | default: function() { |
| | | return {} |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | title: '授权用户', |
| | | formData: { |
| | | userIds: [], |
| | | userNames: [] |
| | | }, |
| | | authShow: false |
| | | } |
| | | }, |
| | | created() { |
| | | this.getInfo() |
| | | }, |
| | | methods: { |
| | | getInfo() { |
| | | if (this.setting.businessType && this.setting.businessId) { |
| | | getAuthUser(this.setting).then(res => { |
| | | const data = res.data |
| | | data.forEach(item => { |
| | | this.formData.userIds.push(item.userId) |
| | | this.formData.userNames.push(item.userName) |
| | | }) |
| | | }) |
| | | } |
| | | }, |
| | | saveUser(checkedNodes) { |
| | | const userIds = [] |
| | | const userNames = [] |
| | | checkedNodes.forEach(item => { |
| | | userIds.push(item.id) |
| | | userNames.push(item.name) |
| | | }) |
| | | this.formData.userIds = userIds |
| | | this.formData.userNames = userNames |
| | | }, |
| | | close() { |
| | | this.$emit('close') |
| | | }, |
| | | save() { |
| | | const params = { |
| | | businessType: this.setting.businessType, |
| | | businessId: this.setting.businessId, |
| | | userIds: this.formData.userIds.join(',') |
| | | } |
| | | if (!params.businessType || !params.businessId) { |
| | | this.$message.error('缺少业务ID,业务类型。') |
| | | return false |
| | | } |
| | | saveUserAuth(params).then(response => { |
| | | debugger |
| | | if (response.code == 10000 && response.data > 0) { |
| | | this.$message.success('保存成功!') |
| | | this.close() |
| | | } else { |
| | | this.$message.error(response.description || '保存失败!') |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
New file |
| | |
| | | body, html { |
| | | -webkit-tap-highlight-color:transparent |
| | | } |
| | | .userSelNone { |
| | | -moz-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | -khtml-user-select:none; |
| | | user-select:none |
| | | } |
| | | .td-sprite-icon { |
| | | background:url(data:image/png;base64,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) |
| | | } |
| | | @media(-webkit-min-device-pixel-ratio:1.5) { |
| | | .td-sprite-icon { |
| | | background:url(data:image/png;base64,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); |
| | | background-size:69px 628px; |
| | | -moz-background-size:69px 628px; |
| | | -webkit-background-size:69px 628px; |
| | | -o-background-size:69px 628px |
| | | } |
| | | } |
| | | .td-pop-slide-title { |
| | | padding:9px 0 11px 0; |
| | | overflow:hidden |
| | | } |
| | | .td-pop-3d-title { |
| | | text-align:left; |
| | | padding:9px 0 11px 0; |
| | | overflow:hidden |
| | | } |
| | | .td-pop-click-title { |
| | | text-align:left; |
| | | padding:13px 0 10px 0; |
| | | overflow:hidden |
| | | } |
| | | .td-pop-title { |
| | | float:left; |
| | | height:20px; |
| | | font-size:14px; |
| | | font-family:PingFangSC-Regular; |
| | | font-weight:400; |
| | | color:#515151; |
| | | line-height:20px; |
| | | z-index:99; |
| | | text-align:left |
| | | } |
| | | .td-pop-title-icon-test { |
| | | position:absolute; |
| | | -webkit-transform:scale(0.8); |
| | | -moz-transform:scale(0.8); |
| | | -ms-transform:scale(0.8); |
| | | -o-transform:scale(0.8); |
| | | transform:scale(0.8); |
| | | top:-1px; |
| | | left:325px; |
| | | width:24px; |
| | | height:24px |
| | | } |
| | | .td-pop-title-icon-test:hover>.td-icon-tooltip { |
| | | width:50px; |
| | | display:block; |
| | | opacity:.9; |
| | | top:2px; |
| | | left:-69px; |
| | | color:white |
| | | } |
| | | .td-pop-hint { |
| | | display:inline-block; |
| | | margin-left:6px; |
| | | width:auto |
| | | } |
| | | .td-pop-status { |
| | | display:inline-block |
| | | } |
| | | .td-pop-center-cnt { |
| | | position:relative |
| | | } |
| | | .td-pop-center { |
| | | width:320px; |
| | | height:180px; |
| | | background-size:cover; |
| | | position:relative; |
| | | -moz-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | -khtml-user-select:none; |
| | | user-select:none |
| | | } |
| | | .td-bg-img, .td-3d-bg-img { |
| | | position:absolute!important; |
| | | top:0!important; |
| | | left:0!important |
| | | } |
| | | .td-bg-slogan { |
| | | position:absolute; |
| | | right:7px; |
| | | bottom:6px; |
| | | font-size:12px; |
| | | color:#fff; |
| | | display:none |
| | | } |
| | | .td-bg-slogan .td-logo-transparent-icon { |
| | | width:12px; |
| | | height:12px; |
| | | line-height:12px; |
| | | display:inline-block; |
| | | vertical-align:middle; |
| | | margin-right:2px |
| | | } |
| | | .td-bg-slogan .td-logo-transparent-iconfont { |
| | | display:inline-block; |
| | | vertical-align:middle; |
| | | font-size:12px |
| | | } |
| | | .td-bg-slogan .td-logo-text { |
| | | vertical-align:middle; |
| | | -moz-user-select:none; |
| | | -o-user-select:none; |
| | | -khtml-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | user-select:none |
| | | } |
| | | .td-slide-wrap { |
| | | position:relative; |
| | | margin-top:20px |
| | | } |
| | | .td-pop-slidebar { |
| | | background-color:#eaeaea; |
| | | height:30px; |
| | | border-radius:19px; |
| | | margin-top:12px; |
| | | overflow:hidden |
| | | } |
| | | .td-pop-slidebar .td-pop-slidebar-tip { |
| | | -moz-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | -khtml-user-select:none; |
| | | user-select:none; |
| | | opacity:1; |
| | | -webkit-transition:opacity 2.3s; |
| | | -moz-transition:opacity 2.3s; |
| | | -ms-transition:opacity 2.3s; |
| | | -o-transition:opacity 2.3s; |
| | | transition:opacity 2.3s; |
| | | line-height:30px; |
| | | text-align:center; |
| | | font-family:PingFangSC-Regular; |
| | | font-size:12px; |
| | | font-weight:400; |
| | | color:rgba(141, 142, 146, 0.87); |
| | | letter-spacing:1px |
| | | } |
| | | .td-pop-slidebar .td-pop-slidebar-tip-sub { |
| | | font-family:'Fascinate', 'Arial Narrow', Arial, sans-serif; |
| | | line-height:32px; |
| | | text-align:center; |
| | | font-size:15px; |
| | | color:grey |
| | | } |
| | | .td-pop-slidebar .mousedown { |
| | | filter:alpha(opacity=0); |
| | | opacity:0; |
| | | -webkit-transition:opacity .4s; |
| | | -moz-transition:opacity .4s; |
| | | -ms-transition:opacity .4s; |
| | | -o-transition:opacity .4s; |
| | | transition:opacity .4s |
| | | } |
| | | @keyframes highLight { |
| | | 0% { |
| | | background-position:-84px 0 |
| | | } |
| | | 100% { |
| | | background-position:84px 0 |
| | | } |
| | | } |
| | | .td-pop-slide-identity { |
| | | position:absolute; |
| | | left:0; |
| | | top:100px; |
| | | -webkit-transform:translate(0px, 0px); |
| | | -moz-transform:translate(0px, 0px); |
| | | -ms-transform:translate(0px, 0px); |
| | | -o-transform:translate(0px, 0px); |
| | | transform:translate(0px, 0px); |
| | | filter:drop-shadow(0 0 4px rgba(0, 0, 0, 0.98)) |
| | | } |
| | | .td-pop-slidetrigger { |
| | | position:absolute; |
| | | cursor:pointer; |
| | | top:-4px; |
| | | width:58px; |
| | | height:40px; |
| | | -webkit-transform:translate(0px, 0px); |
| | | -moz-transform:translate(0px, 0px); |
| | | -ms-transform:translate(0px, 0px); |
| | | -o-transform:translate(0px, 0px); |
| | | transform:translate(0px, 0px) |
| | | } |
| | | .slide .td-pop-footer { |
| | | margin:15px 0 |
| | | } |
| | | .click .td-pop-footer { |
| | | margin:19px 0 15px 0 |
| | | } |
| | | .td-pop-footer { |
| | | -moz-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | -khtml-user-select:none; |
| | | user-select:none |
| | | } |
| | | .td-pop-footer .td-icon-set { |
| | | border-right:1px solid transparent; |
| | | box-sizing:content-box!important; |
| | | height:16px |
| | | } |
| | | .td-pop-footer .icon { |
| | | border:1px solid transparent; |
| | | width:18px; |
| | | height:18px; |
| | | cursor:pointer; |
| | | display:inline-block; |
| | | margin-left:17px; |
| | | position:relative; |
| | | float:right; |
| | | box-sizing:content-box!important |
| | | } |
| | | .td-pop-footer .icon:hover>.td-icon-tooltip { |
| | | display:block; |
| | | opacity:.9 |
| | | } |
| | | .td-pop-footer .td-icon-refresh { |
| | | vertical-align:top |
| | | } |
| | | .td-pop-footer .td-icon-info { |
| | | margin:0; |
| | | float:left; |
| | | width:18px; |
| | | height:18px |
| | | } |
| | | .td-pop-footer .td-home-link { |
| | | color:#919399; |
| | | text-decoration:none; |
| | | vertical-align:bottom; |
| | | line-height:16px; |
| | | font-size:12px; |
| | | float:right |
| | | } |
| | | .td-pop-footer .td-pop-info { |
| | | float:right; |
| | | font-size:12px; |
| | | color:#919399; |
| | | margin-top:-3px |
| | | } |
| | | .td-pop-footer .td-pop-info span { |
| | | line-height:16px; |
| | | vertical-align:top; |
| | | -moz-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | -khtml-user-select:none; |
| | | user-select:none |
| | | } |
| | | .td-pop-status { |
| | | position:absolute; |
| | | right:15px; |
| | | top:13px |
| | | } |
| | | .td-pop-status .td-pop-status-mark { |
| | | position:relative; |
| | | display:inline-block; |
| | | margin-left:2px; |
| | | vertical-align:top; |
| | | width:20px; |
| | | height:20px; |
| | | border:2px solid #a8a8a8; |
| | | border-radius:50%; |
| | | background-color:#FFF; |
| | | box-sizing:border-box; |
| | | -webkit-transition:all .3s ease; |
| | | -moz-transition:all .3s ease; |
| | | -ms-transition:all .3s ease; |
| | | -o-transition:all .3s ease; |
| | | transition:all .3s ease |
| | | } |
| | | .td-pop-status .td-pop-status-mark.checked { |
| | | border:2px solid #FFF; |
| | | background-color:#249be2; |
| | | box-shadow:0 0 5px black |
| | | } |
| | | .td-pop-status .td-pop-status-mark.checked .no { |
| | | color:white |
| | | } |
| | | .td-pop-status .td-pop-status-mark .no { |
| | | position:absolute; |
| | | top:50%; |
| | | left:0; |
| | | margin-top:-10px; |
| | | width:100%; |
| | | height:20px; |
| | | line-height:20px; |
| | | font-size:14px; |
| | | font-weight:bold; |
| | | color:#a8a8a8; |
| | | text-align:center; |
| | | cursor:default; |
| | | -moz-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | -khtml-user-select:none; |
| | | user-select:none |
| | | } |
| | | .td-click-mark { |
| | | position:absolute; |
| | | margin:-14px 0 0 -14px; |
| | | width:28px; |
| | | height:28px; |
| | | border:3px solid white; |
| | | border-radius:50%; |
| | | background-color:#249be2; |
| | | box-sizing:border-box; |
| | | box-shadow:0 0 10px black; |
| | | -webkit-transition:all .3s ease; |
| | | -moz-transition:all .3s ease; |
| | | -ms-transition:all .3s ease; |
| | | -o-transition:all .3s ease; |
| | | transition:all .3s ease; |
| | | opacity:0 |
| | | } |
| | | .td-click-mark .no { |
| | | position:absolute; |
| | | top:50%; |
| | | left:0; |
| | | margin-top:-12px; |
| | | width:100%; |
| | | height:24px; |
| | | line-height:24px; |
| | | font-size:18px; |
| | | font-weight:bold; |
| | | color:white; |
| | | text-align:center; |
| | | cursor:default; |
| | | -moz-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | -khtml-user-select:none; |
| | | user-select:none |
| | | } |
| | | .td-click-mark-sample { |
| | | position:absolute; |
| | | margin:-14px 0 0 -14px; |
| | | width:28px; |
| | | height:28px; |
| | | border:3px solid white; |
| | | border-radius:50%; |
| | | background-color:#aaa; |
| | | box-sizing:border-box; |
| | | box-shadow:0 0 10px black; |
| | | -webkit-transition:all .3s ease; |
| | | -moz-transition:all .3s ease; |
| | | -ms-transition:all .3s ease; |
| | | -o-transition:all .3s ease; |
| | | transition:all .3s ease; |
| | | opacity:0; |
| | | pointer-events:none |
| | | } |
| | | .td-click-mark-sample .no { |
| | | position:absolute; |
| | | top:50%; |
| | | left:0; |
| | | margin-top:-12px; |
| | | width:100%; |
| | | height:24px; |
| | | line-height:24px; |
| | | font-size:18px; |
| | | font-weight:bold; |
| | | color:white; |
| | | text-align:center; |
| | | cursor:default; |
| | | -moz-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | -khtml-user-select:none; |
| | | user-select:none |
| | | } |
| | | .td-icon-tooltip { |
| | | position:absolute; |
| | | top:-29px; |
| | | left:-9px; |
| | | border-radius:2px; |
| | | padding:0 4px; |
| | | height:19px; |
| | | line-height:19px; |
| | | background-color:#5f5f5f; |
| | | white-space:nowrap; |
| | | font-size:12px; |
| | | text-align:center; |
| | | color:white; |
| | | display:none; |
| | | z-index:999 |
| | | } |
| | | .td-outer-wrapper { |
| | | position:fixed; |
| | | width:100%; |
| | | height:100%; |
| | | left:0; |
| | | top:0; |
| | | z-index:100; |
| | | display:none |
| | | } |
| | | .td-outer-wrapper.feedback { |
| | | z-index:102 |
| | | } |
| | | .td-mask-common { |
| | | width:100%; |
| | | height:100% |
| | | } |
| | | .td-mask-common.grey { |
| | | background-color:#000; |
| | | opacity:.45; |
| | | filter:alpha(opacity=45) |
| | | } |
| | | .td-mask-feedback-cnt { |
| | | position:static; |
| | | display:inline-block; |
| | | margin:0 auto; |
| | | text-align:center; |
| | | z-index:103; |
| | | background:white; |
| | | width:180px; |
| | | display:none |
| | | } |
| | | .td-mask-feedback-cnt .title { |
| | | font-size:18px; |
| | | padding:18px 0 |
| | | } |
| | | .td-mask-feedback-cnt .footer { |
| | | font-size:12px; |
| | | line-height:30px; |
| | | color:#919399; |
| | | border-top:1px solid #eee |
| | | } |
| | | .td-tooltip-inner { |
| | | max-width:250px; |
| | | padding:6px 8px; |
| | | color:#fff; |
| | | text-align:left; |
| | | text-decoration:none; |
| | | background-color:rgba(0, 0, 0, 0.75); |
| | | border-radius:4px; |
| | | -webkit-box-shadow:0 2px 8px rgba(0, 0, 0, 0.15); |
| | | box-shadow:0 2px 8px rgba(0, 0, 0, 0.15); |
| | | min-height:32px |
| | | } |
| | | .td-pop-title-icon-test { |
| | | background-position:-17px -1819px |
| | | } |
| | | .td-logo-transparent-icon { |
| | | background-position:-24px 153px |
| | | } |
| | | .td-pop-slidetrigger { |
| | | background-position:-10px -294px |
| | | } |
| | | .td-pop-slidetrigger.mousedown { |
| | | background-position:-11px -249px |
| | | } |
| | | .td-btn-cnt .td-logo-icon { |
| | | background-position:-18px 97px |
| | | } |
| | | .td-btn-cnt .td-success-icon { |
| | | background-position:-18px 124px |
| | | } |
| | | .td-btn-cnt .td-fail-icon { |
| | | background-position:-16px -74px |
| | | } |
| | | .td_validate_box .td_logo_img { |
| | | background-position:-16px 190px |
| | | } |
| | | .td_fail_box .td_fail_img.td_validate_fail { |
| | | background-position:-19px -178px |
| | | } |
| | | .td_fail_box .td_fail_img.td_bad_network { |
| | | background-position:-15px -142px |
| | | } |
| | | .td_fail_box .td_fail_img.td_op2much { |
| | | background-position:-18px -216px |
| | | } |
| | | .td_success_box .td_success_img { |
| | | background-position:-14px -404px |
| | | } |
| | | .td-pop-footer .td-icon-close { |
| | | background-position:-17px -374px |
| | | } |
| | | .td-pop-footer .td-icon-refresh { |
| | | background-position:-15px -348px |
| | | } |
| | | .td-pop-footer .td-icon-info { |
| | | background-position:-17px 616px |
| | | } |
| | | img { |
| | | -moz-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | -khtml-user-select:none; |
| | | user-select:none |
| | | } |
| | | .td-btn-cnt { |
| | | color:#444; |
| | | -webkit-box-sizing:content-box; |
| | | -moz-box-sizing:content-box; |
| | | box-sizing:content-box |
| | | } |
| | | .td-btn-cnt span { |
| | | margin:0!important; |
| | | padding:0!important |
| | | } |
| | | .td-btn-cnt div { |
| | | margin:0!important; |
| | | padding:0!important; |
| | | -webkit-box-sizing:content-box; |
| | | -moz-box-sizing:content-box; |
| | | box-sizing:content-box |
| | | } |
| | | .td-btn-cnt .td-logo-icon { |
| | | margin:0 4px 1px 0!important; |
| | | padding:0!important; |
| | | display:inline-block; |
| | | vertical-align:middle; |
| | | width:24px; |
| | | height:24px |
| | | } |
| | | .td-btn-cnt .td-success-icon { |
| | | margin:0 4px 1px 0!important; |
| | | padding:0!important; |
| | | display:inline-block; |
| | | vertical-align:middle; |
| | | width:24px; |
| | | height:20px |
| | | } |
| | | .td-btn-cnt .td-fail-icon { |
| | | margin:0 4px 0 0!important; |
| | | padding:0!important; |
| | | display:inline-block; |
| | | vertical-align:middle; |
| | | width:24px; |
| | | height:24px; |
| | | margin:0 4px 2px 0 \9!important |
| | | } |
| | | .td-btn-cnt .td-btn-wrapper { |
| | | margin:0!important; |
| | | padding:0!important; |
| | | position:relative; |
| | | border-radius:2px; |
| | | text-align:center |
| | | } |
| | | .td-btn-cnt .td-btn-wrapper .td-btn-content { |
| | | line-height:40px; |
| | | color:#444; |
| | | font-size:14px |
| | | } |
| | | .td-btn-cnt .td-icon-container { |
| | | margin:0!important; |
| | | padding:0!important; |
| | | display:inline-block |
| | | } |
| | | .td-btn-cnt .td-btn-logo { |
| | | cursor:pointer; |
| | | display:block; |
| | | border:1px solid #ccc; |
| | | background:linear-gradient(#fcfcfc, #f5f5f5) |
| | | } |
| | | .td-btn-cnt .td-btn-logo:hover { |
| | | -webkit-transition:all .2s; |
| | | -moz-transition:all .2s; |
| | | -ms-transition:all .2s; |
| | | -o-transition:all .2s; |
| | | transition:all .2s; |
| | | background:linear-gradient(#f5f5f5, #fcfcfc); |
| | | color:#507fff |
| | | } |
| | | .td-btn-cnt .td-btn-loading { |
| | | border:1px solid #ccc; |
| | | background:linear-gradient(#fcfcfc, #f5f5f5); |
| | | display:none |
| | | } |
| | | .td-btn-cnt .td-btn-validate { |
| | | display:none; |
| | | border:1px solid #ccc; |
| | | background:linear-gradient(#fcfcfc, #f5f5f5) |
| | | } |
| | | .td-btn-cnt .td-btn-success { |
| | | margin:0!important; |
| | | padding:0!important; |
| | | position:absolute; |
| | | top:0; |
| | | left:0; |
| | | cursor:default; |
| | | height:0; |
| | | overflow:hidden; |
| | | background-color:rgba(80, 127, 255, 0.1); |
| | | -webkit-transition:height .33s ease-out; |
| | | -moz-transition:height .33s ease-out; |
| | | -ms-transition:height .33s ease-out; |
| | | -o-transition:height .33s ease-out; |
| | | transition:height .33s ease-out; |
| | | -webkit-transform:translateZ(0); |
| | | -moz-transform:translateZ(0); |
| | | -ms-transform:translateZ(0); |
| | | -o-transform:translateZ(0); |
| | | transform:translateZ(0) |
| | | } |
| | | .td-btn-cnt .td-btn-success span { |
| | | opacity:0; |
| | | -webkit-transition:opacity .36s; |
| | | -moz-transition:opacity .36s; |
| | | -ms-transition:opacity .36s; |
| | | -o-transition:opacity .36s; |
| | | transition:opacity .36s |
| | | } |
| | | .td-btn-cnt .td-btn-success .td-btn-success-content { |
| | | margin:0!important; |
| | | padding:0!important; |
| | | height:100%; |
| | | box-sizing:border-box; |
| | | width:100%; |
| | | -webkit-transition:height .1s .3s linear; |
| | | -moz-transition:height .1s .3s linear; |
| | | -ms-transition:height .1s .3s linear; |
| | | -o-transition:height .1s .3s linear; |
| | | transition:height .1s .3s linear; |
| | | border:1px solid #507fff; |
| | | -webkit-transform:translateZ(0); |
| | | -moz-transform:translateZ(0); |
| | | -ms-transform:translateZ(0); |
| | | -o-transform:translateZ(0); |
| | | transform:translateZ(0) |
| | | } |
| | | .td-btn-cnt .td-btn-fail { |
| | | display:none; |
| | | cursor:pointer; |
| | | border:1px solid #ccc; |
| | | background:linear-gradient(#fcfcfc, #f5f5f5) |
| | | } |
| | | .td-btn-cnt.loading .td-btn-validate { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.loading .td-btn-fail { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.loading .td-btn-logo { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.loading .td-btn-success { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.loading .td-btn-loading { |
| | | display:block |
| | | } |
| | | .td-btn-cnt.loading .td-btn-loading .td-logo-icon { |
| | | animation:icon_spin .9s ease infinite both |
| | | } |
| | | .td-btn-cnt.validate .td-btn-validate { |
| | | display:block |
| | | } |
| | | .td-btn-cnt.validate .td-btn-fail { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.validate .td-btn-logo { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.validate .td-btn-success { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.validate .td-btn-loading { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.validate .td-btn-loading .td-logo-icon { |
| | | animation:none |
| | | } |
| | | .td-btn-cnt.success { |
| | | pointer-events:none |
| | | } |
| | | .td-btn-cnt.success .td-btn-logo { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.success .td-btn-success { |
| | | height:40px |
| | | } |
| | | .td-btn-cnt.success .td-btn-success .td-icon-container { |
| | | animation:bounce .36s ease; |
| | | animation-fill-mode:backwards |
| | | } |
| | | .td-btn-cnt.success .td-btn-success span { |
| | | opacity:1 |
| | | } |
| | | .td-btn-cnt.success .td-btn-loading { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.fail .td-btn-fail { |
| | | display:block |
| | | } |
| | | .td-btn-cnt.fail .td-btn-fail .td-fail-icon { |
| | | animation-fill-mode:backwards; |
| | | animation:shrink .33s ease |
| | | } |
| | | .td-btn-cnt.fail .td-btn-validate { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.fail .td-btn-logo { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.fail .td-btn-success { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.fail .td-btn-loading { |
| | | display:none |
| | | } |
| | | .td-btn-cnt.fail .td-btn-loading .td-logo-icon { |
| | | animation:none |
| | | } |
| | | .td-popup-info { |
| | | -moz-user-select:none; |
| | | -webkit-user-select:none; |
| | | -ms-user-select:none; |
| | | -khtml-user-select:none; |
| | | user-select:none; |
| | | display:none; |
| | | height:124px |
| | | } |
| | | .td-popup-info .td-popup-content { |
| | | position:relative; |
| | | height:34px; |
| | | text-align:center |
| | | } |
| | | .td-popup-info .td-popup-content .td_validate_box { |
| | | position:absolute; |
| | | top:33px; |
| | | left:50%; |
| | | margin-left:-19px; |
| | | width:38px; |
| | | height:38px; |
| | | display:none |
| | | } |
| | | .td-popup-info .td-popup-content .td_validate_box .td_logo_img { |
| | | padding:0!important; |
| | | margin:0!important; |
| | | display:inline-block; |
| | | width:25px; |
| | | height:25px; |
| | | -webkit-animation:icon_rotate 1.9s linear infinite both; |
| | | -o-animation:icon_rotate 1.9s linear infinite both; |
| | | -moz-animation:icon_rotate 1.9s linear infinite both; |
| | | animation:icon_rotate 1.9s linear infinite both |
| | | } |
| | | .td-popup-info .td-popup-content .td_fail_box { |
| | | position:absolute; |
| | | top:33px; |
| | | left:50%; |
| | | margin-left:-14px; |
| | | width:28px; |
| | | height:28px; |
| | | display:none |
| | | } |
| | | .td-popup-info .td-popup-content .td_fail_box .td_fail_img { |
| | | padding:0!important; |
| | | margin:0!important; |
| | | display:inline-block; |
| | | width:28px; |
| | | height:28px |
| | | } |
| | | .td-popup-info .td-popup-content .td_success_box { |
| | | position:absolute; |
| | | top:33px; |
| | | left:50%; |
| | | margin-left:-14px; |
| | | border-radius:50%; |
| | | width:28px; |
| | | height:28px; |
| | | display:none |
| | | } |
| | | .td-popup-info .td-popup-content .td_success_box .td_success_img { |
| | | padding:0!important; |
| | | margin:0!important; |
| | | display:inline-block; |
| | | width:28px; |
| | | height:28px |
| | | } |
| | | .td-popup-info .td-popup-content .td_validate_msg { |
| | | padding-top:72px; |
| | | text-align:center; |
| | | font-size:12px; |
| | | font-family:PingFangSC-Regular; |
| | | font-weight:400 |
| | | } |
| | | .td-popup-info .td-popup-footer { |
| | | text-align:center; |
| | | font-size:12px; |
| | | color:#797b80; |
| | | margin-top:30px; |
| | | line-height:30px; |
| | | border-top:1px solid #ddd |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-slide-area, .td-outer-wrapper.pop .click .td-pop-slide-area { |
| | | padding:0 15px; |
| | | -webkit-transform:translateZ(0); |
| | | -moz-transform:translateZ(0); |
| | | -ms-transform:translateZ(0); |
| | | -o-transform:translateZ(0); |
| | | transform:translateZ(0) |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-click-area, .td-outer-wrapper.pop .click .td-pop-click-area { |
| | | padding:0 15px; |
| | | -webkit-transform:translateZ(0); |
| | | -moz-transform:translateZ(0); |
| | | -ms-transform:translateZ(0); |
| | | -o-transform:translateZ(0); |
| | | transform:translateZ(0) |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-3d-area, .td-outer-wrapper.pop .click .td-pop-3d-area { |
| | | padding:0 15px; |
| | | -webkit-transform:translateZ(0); |
| | | -moz-transform:translateZ(0); |
| | | -ms-transform:translateZ(0); |
| | | -o-transform:translateZ(0); |
| | | transform:translateZ(0) |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center-cnt, .td-outer-wrapper.pop .click .td-pop-center-cnt { |
| | | overflow:hidden |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center-cnt .td-pop-click-msg, .td-outer-wrapper.pop .click .td-pop-center-cnt .td-pop-click-msg { |
| | | font-family:PingFangSC-Regular; |
| | | position:absolute; |
| | | top:-28px; |
| | | left:0; |
| | | text-align:center; |
| | | width:320px; |
| | | line-height:28px; |
| | | color:white; |
| | | z-index:20; |
| | | transform:translateZ(0) |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center-cnt .td-pop-click-msg.success, .td-outer-wrapper.pop .click .td-pop-center-cnt .td-pop-click-msg.success { |
| | | -webkit-animation:show_msg 1.5s linear; |
| | | -o-animation:show_msg 1.5s linear; |
| | | -moz-animation:show_msg 1.5s linear; |
| | | animation:show_msg 1.5s linear; |
| | | -webkit-animation-fill-mode:backwards; |
| | | -o-animation-fill-mode:backwards; |
| | | -moz-animation-fill-mode:backwards; |
| | | animation-fill-mode:backwards; |
| | | background-color:#507fff |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center-cnt .td-pop-click-msg.fail, .td-outer-wrapper.pop .click .td-pop-center-cnt .td-pop-click-msg.fail { |
| | | -webkit-animation:show_msg 1.5s linear; |
| | | -o-animation:show_msg 1.5s linear; |
| | | -moz-animation:show_msg 1.5s linear; |
| | | animation:show_msg 1.5s linear; |
| | | -webkit-animation-fill-mode:backwards; |
| | | -o-animation-fill-mode:backwards; |
| | | -moz-animation-fill-mode:backwards; |
| | | animation-fill-mode:backwards; |
| | | background-color:#fc825b |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center-cnt .td-pop-click-msg.warn, .td-outer-wrapper.pop .click .td-pop-center-cnt .td-pop-click-msg.warn { |
| | | -webkit-animation:show_msg 1.5s linear; |
| | | -o-animation:show_msg 1.5s linear; |
| | | -moz-animation:show_msg 1.5s linear; |
| | | animation:show_msg 1.5s linear; |
| | | -webkit-animation-fill-mode:backwards; |
| | | -o-animation-fill-mode:backwards; |
| | | -moz-animation-fill-mode:backwards; |
| | | animation-fill-mode:backwards; |
| | | background-color:#ffa421 |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center, .td-outer-wrapper.pop .click .td-pop-center { |
| | | overflow:hidden |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center.disabled, .td-outer-wrapper.pop .click .td-pop-center.disabled { |
| | | pointer-events:none |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center .td-pop-slide-msg, .td-outer-wrapper.pop .click .td-pop-center .td-pop-slide-msg { |
| | | font-family:PingFangSC-Regular; |
| | | font-weight:400; |
| | | color:rgba(255, 255, 255, 0.87); |
| | | line-height:28px; |
| | | position:relative; |
| | | top:-28px; |
| | | text-align:center; |
| | | display:block; |
| | | color:white; |
| | | -webkit-transform:translateZ(0); |
| | | -moz-transform:translateZ(0); |
| | | -ms-transform:translateZ(0); |
| | | -o-transform:translateZ(0); |
| | | transform:translateZ(0); |
| | | z-index:20; |
| | | font-size:14px |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center .td-pop-slide-msg.success, .td-outer-wrapper.pop .click .td-pop-center .td-pop-slide-msg.success { |
| | | -webkit-animation:show_msg 1.5s linear; |
| | | -o-animation:show_msg 1.5s linear; |
| | | -moz-animation:show_msg 1.5s linear; |
| | | animation:show_msg 1.5s linear; |
| | | -webkit-animation-fill-mode:backwards; |
| | | -o-animation-fill-mode:backwards; |
| | | -moz-animation-fill-mode:backwards; |
| | | animation-fill-mode:backwards; |
| | | background-color:#507fff |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center .td-pop-slide-msg.fail, .td-outer-wrapper.pop .click .td-pop-center .td-pop-slide-msg.fail { |
| | | -webkit-animation:show_msg 1.5s linear; |
| | | -o-animation:show_msg 1.5s linear; |
| | | -moz-animation:show_msg 1.5s linear; |
| | | animation:show_msg 1.5s linear; |
| | | -webkit-animation-fill-mode:backwards; |
| | | -o-animation-fill-mode:backwards; |
| | | -moz-animation-fill-mode:backwards; |
| | | animation-fill-mode:backwards; |
| | | background-color:#fc825b |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center .td-pop-slide-msg.warn, .td-outer-wrapper.pop .click .td-pop-center .td-pop-slide-msg.warn { |
| | | -webkit-animation:show_msg 1.5s linear; |
| | | -o-animation:show_msg 1.5s linear; |
| | | -moz-animation:show_msg 1.5s linear; |
| | | animation:show_msg 1.5s linear; |
| | | -webkit-animation-fill-mode:backwards; |
| | | -o-animation-fill-mode:backwards; |
| | | -moz-animation-fill-mode:backwards; |
| | | animation-fill-mode:backwards; |
| | | background-color:#ffa421 |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center .refresh-bg, .td-outer-wrapper.pop .click .td-pop-center .refresh-bg { |
| | | display:block; |
| | | filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#E5ffffff, ff, endColorstr=#E5ffffff, ff); |
| | | background:rgba(255, 255, 255, 0.9); |
| | | position:absolute; |
| | | left:0; |
| | | top:-1px; |
| | | width:320px; |
| | | height:182px; |
| | | z-index:99; |
| | | text-align:center |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center .initial, .td-outer-wrapper.pop .click .td-pop-center .initial { |
| | | background:#e4e4e4 |
| | | } |
| | | .td-outer-wrapper.pop .slide .td-pop-center .loading-icon, .td-outer-wrapper.pop .click .td-pop-center .loading-icon { |
| | | width:40px; |
| | | height:40px; |
| | | margin:70px auto 0 |
| | | } |
| | | .td-outer-wrapper { |
| | | box-sizing:content-box; |
| | | position:fixed; |
| | | width:100%; |
| | | height:100%; |
| | | left:0; |
| | | top:0; |
| | | z-index:100; |
| | | display:none; |
| | | -webkit-transition:opacity 1.5s; |
| | | -moz-transition:opacity 1.5s; |
| | | -ms-transition:opacity .5s; |
| | | -o-transition:opacity .5s; |
| | | transition:opacity .5s; |
| | | -webkit-font-smoothing:antialiased; |
| | | -moz-osx-font-smoothing:grayscale; |
| | | opacity:0 |
| | | } |
| | | .td-pop-cnt { |
| | | position:absolute; |
| | | background-color:white; |
| | | overflow:hidden; |
| | | z-index:1001; |
| | | border-radius:3px; |
| | | -webkit-transition:width .5s ease, height .5s ease; |
| | | -moz-transition:width .5s ease, height .5s ease; |
| | | -ms-transition:width .5s ease, height .5s ease; |
| | | -o-transition:width .5s ease, height .5s ease; |
| | | transition:width .5s ease, height .5s ease; |
| | | -webkit-transform:translateZ(0); |
| | | -moz-transform:translateZ(0); |
| | | -ms-transform:translateZ(0); |
| | | -o-transform:translateZ(0); |
| | | transform:translateZ(0) |
| | | } |
| | | .td-pop-cnt.click { |
| | | width:350px; |
| | | height:280px |
| | | } |
| | | .td-pop-cnt.slide { |
| | | width:350px; |
| | | height:315px |
| | | } |
| | | .td-pop-cnt.float { |
| | | position:absolute!important; |
| | | box-shadow:0 0 10px #ccc |
| | | } |
| | | .td-pop-cnt.center { |
| | | -webkit-transform:translate(-50%, -50%); |
| | | -moz-transform:translate(-50%, -50%); |
| | | -ms-transform:translate(-50%, -50%); |
| | | -o-transform:translate(-50%, -50%); |
| | | transform:translate(-50%, -50%); |
| | | top:50%; |
| | | left:50% |
| | | } |
| | | .td-pop-cnt.center-ie8 { |
| | | top:50%; |
| | | left:50% |
| | | } |
| | | .td-pop-cnt.center-ie8.slide { |
| | | margin-left:-175px; |
| | | margin-top:-140px |
| | | } |
| | | .td-pop-cnt.center-ie8.click { |
| | | margin-left:-175px; |
| | | margin-top:-157.5px |
| | | } |
| | | .rollback-animation { |
| | | -webkit-animation:rollbackAnimation .9s ease; |
| | | -o-animation:rollbackAnimation .9s ease; |
| | | -moz-animation:rollbackAnimation .9s ease; |
| | | animation:rollbackAnimation .9s ease; |
| | | -webkit-animation-fill-mode:backwards; |
| | | -o-animation-fill-mode:backwards; |
| | | -moz-animation-fill-mode:backwards; |
| | | animation-fill-mode:backwards |
| | | } |
| | | @keyframes rollbackAnimation { |
| | | 100% { |
| | | -webkit-transform:translateX(0px); |
| | | -moz-transform:translateX(0px); |
| | | -ms-transform:translateX(0px); |
| | | -o-transform:translateX(0px); |
| | | transform:translateX(0px) |
| | | } |
| | | } |
| | | .shake { |
| | | -webkit-animation:shake .23s linear infinite both; |
| | | -o-animation:shake .23s linear infinite both; |
| | | -moz-animation:shake .23s linear infinite both; |
| | | animation:shake .23s linear infinite both |
| | | } |
| | | @keyframes shake { |
| | | 25% { |
| | | margin-left:-6px |
| | | } |
| | | 75% { |
| | | margin-left:6px |
| | | } |
| | | 100% { |
| | | margin-left:0 |
| | | } |
| | | } |
| | | @keyframes td_success_pie { |
| | | 25% { |
| | | -webkit-transform:rotate(25deg); |
| | | -moz-transform:rotate(25deg); |
| | | -ms-transform:rotate(25deg); |
| | | -o-transform:rotate(25deg); |
| | | transform:rotate(25deg) |
| | | } |
| | | 100% { |
| | | -webkit-transform:rotate(-275deg); |
| | | -moz-transform:rotate(-275deg); |
| | | -ms-transform:rotate(-275deg); |
| | | -o-transform:rotate(-275deg); |
| | | transform:rotate(-275deg) |
| | | } |
| | | } |
| | | @keyframes td_success_filter { |
| | | 50.9% { |
| | | opacity:0 |
| | | } |
| | | 51% { |
| | | opacity:1 |
| | | } |
| | | 100% { |
| | | opacity:1 |
| | | } |
| | | } |
| | | @keyframes td_success_icon { |
| | | 25% { |
| | | -webkit-transform:translate(-25px, 21px); |
| | | -moz-transform:translate(-25px, 21px); |
| | | -ms-transform:translate(-25px, 21px); |
| | | -o-transform:translate(-25px, 21px); |
| | | transform:translate(-25px, 21px) |
| | | } |
| | | 75% { |
| | | -webkit-transform:translate(7px, -4px); |
| | | -moz-transform:translate(7px, -4px); |
| | | -ms-transform:translate(7px, -4px); |
| | | -o-transform:translate(7px, -4px); |
| | | transform:translate(7px, -4px) |
| | | } |
| | | 100% { |
| | | -webkit-transform:translate(5px, -2px); |
| | | -moz-transform:translate(5px, -2px); |
| | | -ms-transform:translate(5px, -2px); |
| | | -o-transform:translate(5px, -2px); |
| | | transform:translate(5px, -2px) |
| | | } |
| | | } |
| | | @keyframes icon_spin { |
| | | 0% { |
| | | -webkit-transform:rotateY(0deg); |
| | | -moz-transform:rotateY(0deg); |
| | | -ms-transform:rotateY(0deg); |
| | | -o-transform:rotateY(0deg); |
| | | transform:rotateY(0deg) |
| | | } |
| | | 100% { |
| | | -webkit-transform:rotateY(360deg); |
| | | -moz-transform:rotateY(360deg); |
| | | -ms-transform:rotateY(360deg); |
| | | -o-transform:rotateY(360deg); |
| | | transform:rotateY(360deg) |
| | | } |
| | | } |
| | | @keyframes icon_rotate { |
| | | 0% { |
| | | -webkit-transform:rotate(0deg); |
| | | -moz-transform:rotate(0deg); |
| | | -ms-transform:rotate(0deg); |
| | | -o-transform:rotate(0deg); |
| | | transform:rotate(0deg) |
| | | } |
| | | 100% { |
| | | -webkit-transform:rotate(360deg); |
| | | -moz-transform:rotate(360deg); |
| | | -ms-transform:rotate(360deg); |
| | | -o-transform:rotate(360deg); |
| | | transform:rotate(360deg) |
| | | } |
| | | } |
| | | @keyframes shrink { |
| | | 0% { |
| | | -webkit-transform:scale(0.66); |
| | | -moz-transform:scale(0.66); |
| | | -ms-transform:scale(0.66); |
| | | -o-transform:scale(0.66); |
| | | transform:scale(0.66) |
| | | } |
| | | 90% { |
| | | -webkit-transform:scale(0.99); |
| | | -moz-transform:scale(0.99); |
| | | -ms-transform:scale(0.99); |
| | | -o-transform:scale(0.99); |
| | | transform:scale(0.99) |
| | | } |
| | | } |
| | | @keyframes show_msg { |
| | | 16.7% { |
| | | top:0 |
| | | } |
| | | 83.3% { |
| | | top:0 |
| | | } |
| | | 100% { |
| | | top:-28px |
| | | } |
| | | } |
| | | @keyframes bounce { |
| | | 0% { |
| | | -webkit-transform:translateY(39px); |
| | | -moz-transform:translateY(39px); |
| | | -ms-transform:translateY(39px); |
| | | -o-transform:translateY(39px); |
| | | transform:translateY(39px); |
| | | opacity:0 |
| | | } |
| | | 40% { |
| | | opacity:0 |
| | | } |
| | | 77% { |
| | | -webkit-transform:translateY(-6px); |
| | | -moz-transform:translateY(-6px); |
| | | -ms-transform:translateY(-6px); |
| | | -o-transform:translateY(-6px); |
| | | transform:translateY(-6px) |
| | | } |
| | | 100% { |
| | | -webkit-transform:translateY(-2px); |
| | | -moz-transform:translateY(-2px); |
| | | -ms-transform:translateY(-2px); |
| | | -o-transform:translateY(-2px); |
| | | transform:translateY(-2px); |
| | | opacity:1 |
| | | } |
| | | } |
| | | @keyframes move { |
| | | 0% { |
| | | -ms-transform:perspective(800px) rotateX(-20deg) rotateY(30deg); |
| | | -moz-transform:perspective(800px) rotateX(-20deg) rotateY(30deg); |
| | | -webkit-transform:perspective(800px) rotateX(-20deg) rotateY(30deg); |
| | | -o-transform:perspective(800px) rotateX(-20deg) rotateY(30deg); |
| | | transform:perspective(800px) rotateX(-20deg) rotateY(30deg) |
| | | } |
| | | 25% { |
| | | -ms-transform:perspective(800px) rotateX(-20deg) rotateY(90deg); |
| | | -moz-transform:perspective(800px) rotateX(-20deg) rotateY(90deg); |
| | | -webkit-transform:perspective(800px) rotateX(-20deg) rotateY(90deg); |
| | | -o-transform:perspective(800px) rotateX(-20deg) rotateY(90deg); |
| | | transform:perspective(800px) rotateX(-20deg) rotateY(90deg) |
| | | } |
| | | 50% { |
| | | -ms-transform:perspective(800px) rotateX(-20deg) rotateY(180deg); |
| | | -moz-transform:perspective(800px) rotateX(-20deg) rotateY(180deg); |
| | | -webkit-transform:perspective(800px) rotateX(-20deg) rotateY(180deg); |
| | | -o-transform:perspective(800px) rotateX(-20deg) rotateY(180deg); |
| | | transform:perspective(800px) rotateX(-20deg) rotateY(180deg) |
| | | } |
| | | 75% { |
| | | -ms-transform:perspective(800px) rotateX(-20deg) rotateY(270deg); |
| | | -moz-transform:perspective(800px) rotateX(-20deg) rotateY(270deg); |
| | | -webkit-transform:perspective(800px) rotateX(-20deg) rotateY(270deg); |
| | | -o-transform:perspective(800px) rotateX(-20deg) rotateY(270deg); |
| | | transform:perspective(800px) rotateX(-20deg) rotateY(270deg) |
| | | } |
| | | 100% { |
| | | -ms-transform:perspective(800px) rotateX(-20deg) rotateY(360deg); |
| | | -moz-transform:perspective(800px) rotateX(-20deg) rotateY(360deg); |
| | | -webkit-transform:perspective(800px) rotateX(-20deg) rotateY(360deg); |
| | | -o-transform:perspective(800px) rotateX(-20deg) rotateY(360deg); |
| | | transform:perspective(800px) rotateX(-20deg) rotateY(360deg) |
| | | } |
| | | } |
| | | .td-pop-3d-area .td-pop-center-cnt { |
| | | background:#788093 |
| | | } |
| | | #td-3d-box { |
| | | width:120px; |
| | | height:120px; |
| | | margin:25px auto; |
| | | position:relative; |
| | | cursor:pointer; |
| | | -webkit-transform-style:preserve-3d; |
| | | -moz-transform-style:preserve-3d; |
| | | -ms-transform-style:preserve-3d; |
| | | -o-transform-style:preserve-3d; |
| | | transform-style:preserve-3d |
| | | } |
| | | #td-3d-box>div { |
| | | width:100%; |
| | | height:100%; |
| | | position:absolute; |
| | | top:0; |
| | | left:0 |
| | | } |
| | | #td-3d-box>div img { |
| | | width:100%; |
| | | height:100%; |
| | | object-fit:cover |
| | | } |
| | | .td-3dface>.td-3d-point { |
| | | position:absolute; |
| | | width:0px; |
| | | height:0px; |
| | | overflow:hidden |
| | | } |
| | | .td-3dface>.td-3d-topLeftPoint { |
| | | left:0; |
| | | top:0; |
| | | height:1px; |
| | | width:100%; |
| | | background-color:#eee; |
| | | color:#eee |
| | | } |
| | | .td-3dface>.td-3d-topRightPoint { |
| | | right:0; |
| | | top:0; |
| | | height:100%; |
| | | width:1px; |
| | | background-color:#eee; |
| | | color:#eee |
| | | } |
| | | .td-3dface>.td-3d-bottomLeftPoint { |
| | | left:0; |
| | | bottom:0; |
| | | height:100%; |
| | | width:1px; |
| | | background-color:#eee; |
| | | color:#eee |
| | | } |
| | | .td-3dface>.td-3d-bottomRightPoint { |
| | | right:0; |
| | | bottom:0; |
| | | height:1px; |
| | | width:100%; |
| | | background-color:#eee; |
| | | color:#eee |
| | | } |
| | | .td-3d-face-0 { |
| | | -ms-transform:translateZ(60px); |
| | | -moz-transform:translateZ(60px); |
| | | -webkit-transform:translateZ(60px); |
| | | -o-transform:translateZ(60px); |
| | | transform:translateZ(60px) |
| | | } |
| | | .td-3d-face-1 { |
| | | -ms-transform:rotateY(180deg) translateZ(60px); |
| | | -moz-transform:rotateY(180deg) translateZ(60px); |
| | | -webkit-transform:rotateY(180deg) translateZ(60px); |
| | | -o-transform:rotateY(180deg) translateZ(60px); |
| | | transform:rotateY(180deg) translateZ(60px) |
| | | } |
| | | .td-3d-face-2 { |
| | | -ms-transform:translateX(-60px) rotateY(-90deg); |
| | | -moz-transform:translateX(-60px) rotateY(-90deg); |
| | | -webkit-transform:translateX(-60px) rotateY(-90deg); |
| | | -o-transform:translateX(-60px) rotateY(-90deg); |
| | | transform:translateX(-60px) rotateY(-90deg) |
| | | } |
| | | .td-3d-face-3 { |
| | | -ms-transform:translateX(60px) rotateY(90deg); |
| | | -moz-transform:translateX(60px) rotateY(90deg); |
| | | -webkit-transform:translateX(60px) rotateY(90deg); |
| | | -o-transform:translateX(60px) rotateY(90deg); |
| | | transform:translateX(60px) rotateY(90deg) |
| | | } |
| | | .td-3d-face-4 { |
| | | -ms-transform:translateY(-60px) rotateX(90deg); |
| | | -moz-transform:translateY(-60px) rotateX(90deg); |
| | | -webkit-transform:translateY(-60px) rotateX(90deg); |
| | | -o-transform:translateY(-60px) rotateX(90deg); |
| | | transform:translateY(-60px) rotateX(90deg) |
| | | } |
| | | .td-3d-face-5 { |
| | | -ms-transform:translateY(60px) rotateX(-90deg); |
| | | -moz-transform:translateY(60px) rotateX(-90deg); |
| | | -webkit-transform:translateY(60px) rotateX(-90deg); |
| | | -o-transform:translateY(60px) rotateX(-90deg); |
| | | transform:translateY(60px) rotateX(-90deg) |
| | | } |
| | | #__vconsole .vc-switch, #__vconsole .vc-mask { |
| | | z-index:101!important |
| | | } |
| | | #__vconsole .vc-panel { |
| | | z-index:102!important |
| | | } |
New file |
| | |
| | | <template> |
| | | <div> |
| | | |
| | | <div class="td-outer-wrapper pop " style="display: block; opacity: 1;"> |
| | | <div class="td-mask-common background grey" /> |
| | | <div |
| | | class="td-pop-cnt center slide" |
| | | :style="'left:'+left+';top:'+top+';width: 350px; height: 315px; transform: translate(-50%, -50%) scale(1);'" |
| | | > |
| | | <div class="td-pop-slide-area"> |
| | | <div class="td-pop-slide-title"> |
| | | <div class="td-pop-title">请拖动下方滑块完成拼图 |
| | | </div> |
| | | </div> |
| | | <div class="td-pop-center"> |
| | | <transition name="el-zoom-in-top"> |
| | | <el-alert |
| | | v-show="msg.show" |
| | | :title="msg.text" |
| | | :type="msg.type" |
| | | center |
| | | :closable="false" |
| | | style="position: absolute;z-index: 10;border-radius: unset;" |
| | | show-icon |
| | | /> |
| | | </transition> |
| | | <!--背景图--> |
| | | <canvas class="td-bg-img" width="320" height="180" /> |
| | | <div v-show="loading" class="refresh-bg"> |
| | | <img src="./img/loading.gif" class="loading-icon"> |
| | | </div> |
| | | <!-- <div class="td-bg-slogan" style="display: block;"> |
| | | <!–<div class="td-logo-transparent-icon td-sprite-icon" />–> |
| | | <span class="td-logo-transparent-iconfont">智能验证</span> |
| | | </div>--> |
| | | <img |
| | | class="td-pop-slide-identity" |
| | | src="" |
| | | draggable="false" |
| | | style="top: 116px; transform: translate(0px, 0px); opacity: 1;" |
| | | > |
| | | </div> |
| | | <!--滑块--> |
| | | <div class="td-slide-wrap"> |
| | | <div class="td-pop-slidebar"> |
| | | <div class="td-pop-slidebar-tip">请向右拖动滑块 |
| | | </div> |
| | | </div> |
| | | <div |
| | | :class="'td-pop-slidetrigger td-sprite-icon '+mousedown" |
| | | style="transform: translate(0px, 0px);" |
| | | @mousedown="handleMouseDown" |
| | | /> |
| | | </div> |
| | | <div class="td-pop-footer"> |
| | | <div class="td-icon-set"> |
| | | <div class="td-icon-close td-sprite-icon icon" @click="hide"> |
| | | <div class="td-icon-tooltip" style="right:-8px;left:auto;">关闭 |
| | | </div> |
| | | </div> |
| | | <div class="td-icon-refresh td-sprite-icon icon" @click="getVerify"> |
| | | <div class="td-icon-tooltip">刷新 |
| | | </div> |
| | | </div> |
| | | <!--<a id="jump2feedback" style="display: block" href="http://static.tongdun.net/captcha/test/index.html?seqId=1561081035175937S365328C48488966,1561081042275149S365328C03293221,1561081058162146S365328C42730006,1561081659566994S35525D734520462,1561082259315562S35525D737834014,1561082859159316S35525D737251353,1561083458396777S365328C43056286,1561086261446326S35525D733771073&partner=tongdun&appName=x_tongdun2_web" target="_blank">--> |
| | | <!--<div class="td-icon-info td-sprite-icon icon">--> |
| | | <!--<div class="td-icon-tooltip">反馈--> |
| | | <!--</div>--> |
| | | <!--</div>--> |
| | | <!--</a>--> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getVerify, checkVerify } from '@/api/system/verify' |
| | | |
| | | export default { |
| | | props: { |
| | | left: { |
| | | type: String, |
| | | default: '70%' |
| | | }, |
| | | top: { |
| | | type: String, |
| | | default: '50%' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | loading: false, |
| | | state: 0, // 0松开,1按下 |
| | | vSlideLeftpx: 0, // 滑块距离左侧的距离 |
| | | mousedown: '', |
| | | msg: { |
| | | show: false, |
| | | type: '', |
| | | text: '' |
| | | }, |
| | | token: '', |
| | | startTime: 0, |
| | | endTime: 0 |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.getVerify() |
| | | const that = this |
| | | document.onmousemove = this.handelMouseMove |
| | | document.onmouseup = this.handleMouseUp |
| | | |
| | | document.querySelector('.td-pop-slidetrigger').addEventListener('touchstart', function(e) { |
| | | that.handleMouseDown(e) |
| | | }) |
| | | document.querySelector('.td-pop-slidetrigger').addEventListener('touchmove', function(e) { |
| | | that.handelMouseMove(e) |
| | | e.preventDefault() // 若阻止默认事件,则在长按元素上滑动时,页面是不滚动的, |
| | | }) |
| | | |
| | | document.querySelector('.td-pop-slidetrigger').addEventListener('touchend', function(e) { |
| | | // 若手指离开屏幕时,时间小于我们设置的长按时间,则为点击事件,清除定时器,结束长按逻辑 |
| | | that.handleMouseUp(e) |
| | | }) |
| | | }, |
| | | created() { |
| | | |
| | | }, |
| | | methods: { |
| | | getVerify() { |
| | | this.loading = true |
| | | this.setLeft(0) |
| | | |
| | | getVerify({}).then(response => { |
| | | // 填充画布 |
| | | const c = document.querySelector('.td-bg-img') |
| | | const ctx = c.getContext('2d') |
| | | const img = new Image() // 创建img元素 |
| | | img.onload = function() { |
| | | ctx.drawImage(img, 0, 0) |
| | | } |
| | | img.src = response.data.bg |
| | | |
| | | document.querySelector('.td-pop-slide-identity').src = response.data.slider |
| | | document.querySelector('.td-pop-slide-identity').style.top = response.data.y + 'px' |
| | | this.token = response.data.uuid |
| | | this.loading = false |
| | | }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-21 14:09 |
| | | * @Description :鼠标点击 |
| | | */ |
| | | handleMouseDown() { |
| | | this.state = 1 |
| | | this.mousedown = 'mousedown' |
| | | // 记录滑块位置 |
| | | this.vSlideLeftpx = document.querySelector('.td-pop-slidetrigger').getBoundingClientRect().left |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-21 14:09 |
| | | * @Description : 鼠标松开 |
| | | */ |
| | | handleMouseUp() { |
| | | this.state = 0 |
| | | this.endTime = new Date().getTime() |
| | | if (this.startTime == 0) { |
| | | return |
| | | } |
| | | const time = this.endTime - this.startTime |
| | | |
| | | const x = document.querySelector('.td-pop-slidetrigger').getBoundingClientRect().left - this.vSlideLeftpx |
| | | checkVerify({ x: x, token: this.token }).then(response => { |
| | | if (response.data.verify != '-1') { |
| | | this.msg.show = true |
| | | const rate = (time / 1000).toFixed(2) |
| | | this.msg.text = '验证通过,' + rate + '秒的速度超过' + this.getRate(rate) + '的用户' |
| | | this.msg.type = 'success' |
| | | setTimeout(() => { |
| | | this.msg.show = false |
| | | this.$emit('success', { verify: response.data.verify, x: response.data.x, uuid: response.data.uuid }) |
| | | this.$emit('hide') |
| | | }, 1200) |
| | | } else { |
| | | this.msg.show = true |
| | | this.msg.text = '验证失败,请重试。' |
| | | this.msg.type = 'error' |
| | | setTimeout(() => { |
| | | this.msg.show = false |
| | | }, 1200) |
| | | const timer = setInterval(() => { |
| | | const left = document.querySelector('.td-pop-slidetrigger').getBoundingClientRect().left - this.vSlideLeftpx - 2 |
| | | this.setLeft(left) |
| | | if (document.querySelector('.td-pop-slidetrigger').getBoundingClientRect().left - this.vSlideLeftpx <= 0) { |
| | | clearInterval(timer) |
| | | this.setLeft(0) |
| | | } |
| | | }, 1) |
| | | this.getVerify() |
| | | } |
| | | }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-21 14:06 |
| | | * @Description : 设置滑块图片左侧偏移 |
| | | */ |
| | | setLeft(left) { |
| | | if (left == 0) { |
| | | this.mousedown = '' |
| | | } |
| | | document.querySelector('.td-pop-slidetrigger').style.left = left + 'px' |
| | | document.querySelector('.td-pop-slide-identity').style.left = left + 'px' |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-21 14:09 |
| | | * @Description :鼠标移动 |
| | | */ |
| | | handelMouseMove(e) { |
| | | if (this.state !== 1) { |
| | | this.startTime = 0 |
| | | return |
| | | } |
| | | if (this.startTime == 0) { |
| | | this.startTime = new Date().getTime() |
| | | } |
| | | |
| | | let x |
| | | if (!e.touches) { // 兼容移动端 |
| | | x = e.clientX |
| | | } else { // 兼容PC端 |
| | | x = e.touches[0].pageX |
| | | } |
| | | if ((x - this.vSlideLeftpx) < 0) { |
| | | this.setLeft(0) |
| | | } else if ((x - this.vSlideLeftpx) > 300) { |
| | | this.setLeft(275) |
| | | } else { |
| | | this.setLeft(x - this.vSlideLeftpx - 20) |
| | | } |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-25 14:50 |
| | | * @Description :关闭 |
| | | */ |
| | | hide() { |
| | | this.$emit('hide') |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-06-25 19:41 |
| | | * @Description : 超过百分之几的用户 |
| | | */ |
| | | getRate(rate) { |
| | | if (rate < 0.8) { |
| | | return '99.99%' |
| | | } else if (rate < 1) { |
| | | return '99.96%' |
| | | } else if (rate < 1.1) { |
| | | return '99.38%' |
| | | } else if (rate < 1.2) { |
| | | return '99.24%' |
| | | } else if (rate < 1.3) { |
| | | return '99%' |
| | | } else if (rate < 1.4) { |
| | | return '98.88%' |
| | | } else if (rate < 1.5) { |
| | | return '98%' |
| | | } else if (rate < 1.6) { |
| | | return '96.33%' |
| | | } else if (rate < 1.7) { |
| | | return '96%' |
| | | } else if (rate < 2) { |
| | | return '95.55%' |
| | | } else if (rate < 2.3) { |
| | | return '94%' |
| | | } else if (rate < 2.6) { |
| | | return '91%' |
| | | } else if (rate < 3) { |
| | | return '80%' |
| | | } else if (rate < 4) { |
| | | return '40%' |
| | | } else if (rate < 5) { |
| | | return '1%' |
| | | } else { |
| | | return '0.01%' |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style src="./css/index.css"></style> |
| | | <style lang="scss"> |
| | | .td-outer-wrapper.pop{min-height: 768px; |
| | | .td-pop-cnt.center{left:70%;} |
| | | } |
| | | </style> |
| | | |
New file |
| | |
| | | <template> |
| | | <!--动画--> |
| | | <transition name="el-fade-in"> |
| | | <el-dialog |
| | | :close-on-click-modal="false" |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | :width="width" |
| | | top="72px" |
| | | :append-to-body="true" |
| | | :destroy-on-close="true" |
| | | :lock-scroll="true" |
| | | @close="close" |
| | | > |
| | | <slot /> |
| | | <span slot="footer"> |
| | | <slot name="footer" /> |
| | | </span> |
| | | </el-dialog> |
| | | </transition> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | title: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | width: { |
| | | type: String, |
| | | default: '50%' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | visible: true |
| | | } |
| | | }, |
| | | mounted() { |
| | | try { |
| | | window.onresize = function() { |
| | | document.querySelectorAll('.cus-dialog').forEach(v => { |
| | | v.style.width = document.querySelector('.app-main').clientWidth + 'px' |
| | | v.style.height = '100%' |
| | | }) |
| | | } |
| | | window.onresize() |
| | | } catch (e) { |
| | | console.error(e) |
| | | } |
| | | }, |
| | | methods: { |
| | | close() { |
| | | this.visible = false |
| | | this.$emit('close') |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | /deep/ .el-dialog__body { |
| | | max-height: calc(100vh - 200px); |
| | | overflow-y: auto; |
| | | padding-top: 20px; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <!--动画--> |
| | | <transition name="el-fade-in"> |
| | | <el-dialog :destroy-on-close="true" :fullscreen="fullscreen" :width="width" :title="title" :visible.sync="visible" append-to-body @close="close"> |
| | | <div class="app-container"> |
| | | <slot /> |
| | | <div style="margin-top: 30px"> |
| | | <slot name="footer" /> |
| | | </div> |
| | | </div> |
| | | </el-dialog> |
| | | </transition> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | fullscreen: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | title: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | width: { |
| | | type: String, |
| | | default: '50%' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | visible: true |
| | | } |
| | | }, |
| | | methods: { |
| | | close() { |
| | | this.visible = false |
| | | this.$emit('close') |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | </style> |
New file |
| | |
| | | <!-- |
| | | * @Author: your name |
| | | * @Date: 2022-03-25 15:45:02 |
| | | * @LastEditTime: 2022-03-31 17:06:05 |
| | | * @LastEditors: Please set LastEditors |
| | | * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE |
| | | * @FilePath: /ts-admin/src/views/components/win3/indexYear.vue |
| | | --> |
| | | <template> |
| | | <!--动画--> |
| | | <transition name="el-fade-in"> |
| | | <el-dialog |
| | | center |
| | | :title="title" |
| | | :visible.sync="visible" |
| | | width="800px" |
| | | top="80px" |
| | | :append-to-body="true" |
| | | :destroy-on-close="true" |
| | | @close="close" |
| | | > |
| | | <slot /> |
| | | <div > |
| | | <slot name="footer" /> |
| | | </div> |
| | | </el-dialog> |
| | | </transition> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | props: { |
| | | title: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | visible: true |
| | | } |
| | | }, |
| | | mounted() { |
| | | try { |
| | | window.onresize = function() { |
| | | document.querySelectorAll('.cus-dialog').forEach(v => { |
| | | v.style.width = document.querySelector('.app-main').clientWidth + 'px' |
| | | v.style.height = '100%' |
| | | }) |
| | | } |
| | | window.onresize() |
| | | } catch (e) { |
| | | console.error(e) |
| | | } |
| | | }, |
| | | methods: { |
| | | close() { |
| | | this.visible = false |
| | | this.$emit('close') |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | .el-dialog__body { |
| | | max-height: calc(100vh - 200px); |
| | | overflow-y: auto; |
| | | padding-top: 20px; |
| | | border-radius: 20px; |
| | | } |
| | | .el-dialog { |
| | | border-radius: 10px; |
| | | .el-dialog__header{ |
| | | text-align: left; |
| | | font-weight: 600; |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <span> |
| | | <el-button size="mini" :disabled="disabled" type="primary" @click="choose">选择...</el-button> |
| | | <div> |
| | | <!--closable--> |
| | | <el-tag |
| | | v-for="tag in tags" |
| | | :key="tag.name" |
| | | :type="tag.type" |
| | | @close="handleClose(tag)" |
| | | > |
| | | {{ tag.name }} |
| | | </el-tag> |
| | | </div> |
| | | <el-dialog |
| | | :append-to-body="true" |
| | | title="选择" |
| | | :visible.sync="dialogVisible" |
| | | width="50%" |
| | | > |
| | | <div style="max-height: 350px;overflow-y: auto;"> |
| | | <ul :id="id" class="ztree" /> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="dialogVisible = false">取 消</el-button> |
| | | <el-button type="primary" @click="_success">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | </span> |
| | | </template> |
| | | |
| | | <script> |
| | | import $ from 'jquery' |
| | | import '@/plugins/ztree/js/jquery-1.4.4.min.js' |
| | | import '@/plugins/ztree/js/jquery.ztree.core.min.js' |
| | | import '@/plugins/ztree/js/jquery.ztree.excheck.js' |
| | | import request from '@/utils/request' |
| | | |
| | | export default { |
| | | props: { |
| | | // 数据源 |
| | | nodes: { |
| | | type: Array, |
| | | default: function() { |
| | | return [] |
| | | } |
| | | }, |
| | | // 网络请求数据 |
| | | http: { |
| | | type: Object, |
| | | default: function() { |
| | | return null |
| | | } |
| | | }, |
| | | // 是否全部展开 |
| | | expandAll: { |
| | | type: Boolean, |
| | | default: function() { |
| | | return false |
| | | } |
| | | }, |
| | | // 是否禁用 |
| | | disabled: { |
| | | type: Boolean, |
| | | default: function() { |
| | | return false |
| | | } |
| | | }, |
| | | // 已选项 |
| | | checked: { |
| | | type: Array, |
| | | default: function() { |
| | | return [] |
| | | } |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | dialogVisible: false, // 弹窗 |
| | | id: 'treeDemo', |
| | | setting: { |
| | | check: { |
| | | enable: true, |
| | | chkboxType: { 'Y': 'ps', 'N': 's' } |
| | | }, |
| | | data: { |
| | | simpleData: { |
| | | enable: true, |
| | | idKey: 'id', |
| | | pIdKey: 'pid', |
| | | rootPId: 0 |
| | | } |
| | | }, |
| | | view: { |
| | | showIcon: false, |
| | | showLine: true |
| | | } |
| | | }, |
| | | zNodes: this.nodes, |
| | | tags: [], |
| | | chooseFlag: false |
| | | } |
| | | }, |
| | | watch: { |
| | | nodes(v) { |
| | | this.$set(this, 'zNodes', v) |
| | | this.init() |
| | | }, |
| | | zNodes() { |
| | | this.initTag() |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.id = 'treeDemo' + new Date().getTime() |
| | | if (this.nodes.length <= 0 && this.http != null) { |
| | | this.getHttpData() |
| | | } |
| | | }, |
| | | methods: { |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-08-08 16:45 |
| | | * @Description : 选完收工 |
| | | */ |
| | | _success() { |
| | | this.dialogVisible = false |
| | | const treeObj = window.$.fn.zTree.getZTreeObj(this.id) |
| | | const nodes = treeObj.getCheckedNodes(true) |
| | | this.zNodes.forEach(n => { |
| | | n.checked = false |
| | | nodes.forEach(v => { |
| | | if (n.id == v.id) { |
| | | n.checked = true |
| | | } |
| | | }) |
| | | }) |
| | | this.zNodes = Object.assign([], this.zNodes) |
| | | this.$emit('setView', nodes) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-08-08 16:42 |
| | | * @Description :获取网络请求数据 |
| | | */ |
| | | getHttpData() { |
| | | request({ |
| | | url: this.http.url, |
| | | method: 'get', |
| | | params: this.http.params |
| | | }).then(res => { |
| | | this.zNodes = res.data |
| | | if (this.checked != null && this.checked.length > 0) { |
| | | this.zNodes.forEach(v => { |
| | | this.checked.forEach(c => { |
| | | if (v.id == c.id) { |
| | | v.checked = true |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-01 17:11 |
| | | * @Description : 初始化树 |
| | | */ |
| | | init() { |
| | | if (this.checked.length > 0) { |
| | | this.zNodes.forEach(v => { |
| | | this.checked.forEach(c => { |
| | | if (v.id == c.id) { |
| | | v.checked = true |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | this.initTag() |
| | | if ($('#' + this.id).length == 1) { |
| | | window.$.fn.zTree.destroy(this.id) |
| | | window.$.fn.zTree.init($('#' + this.id), this.setting, this.zNodes) |
| | | if (this.expandAll) { |
| | | this.$nextTick(() => { |
| | | const treeObj = window.$.fn.zTree.getZTreeObj(this.id) |
| | | treeObj.expandAll(true) |
| | | }) |
| | | } |
| | | } |
| | | }, |
| | | initTag() { |
| | | this.tags = [] |
| | | this.zNodes.forEach(n => { |
| | | if (n.checked) { |
| | | this.tags.push({ |
| | | id: n.id, |
| | | name: n.name, |
| | | type: 'success' |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-01 15:12 |
| | | * @Description : 获取选中节点 |
| | | */ |
| | | getCheckedNodes() { |
| | | if (!this.chooseFlag) { |
| | | return [] |
| | | } |
| | | const treeObj = window.$.fn.zTree.getZTreeObj(this.id) |
| | | const nodes = treeObj.getCheckedNodes(true) |
| | | return nodes |
| | | }, |
| | | // 显示ztree树 |
| | | choose() { |
| | | this.chooseFlag = true |
| | | this.dialogVisible = true |
| | | this.$nextTick(() => { |
| | | this.init() |
| | | }) |
| | | }, |
| | | handleClose(tag) { |
| | | this.tags.splice(this.tags.indexOf(tag), 1) |
| | | for (let i = 0; i < this.zNodes.length; i++) { |
| | | const node = this.zNodes[i] |
| | | if (node.id == tag.id) { |
| | | node.checked = false |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | @import "../../../plugins/ztree/css/zTreeStyle/zTreeStyle.css"; |
| | | |
| | | .el-tag { |
| | | margin-right: 10px; |
| | | margin-top: 2px; |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div> |
| | | <ul :id="id" class="ztree" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import $ from 'jquery' |
| | | import '@/plugins/ztree/js/jquery-1.4.4.min.js' |
| | | import '@/plugins/ztree/js/jquery.ztree.core.min.js' |
| | | import '@/plugins/ztree/js/jquery.ztree.excheck.js' |
| | | |
| | | export default { |
| | | props: { |
| | | // 数据源 |
| | | nodes: { |
| | | type: Array, |
| | | default: function() { |
| | | return [] |
| | | } |
| | | }, |
| | | // 是否全部展开 |
| | | expandAll: { |
| | | type: Boolean, |
| | | default: true |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | id: 'treeDemo', |
| | | setting: { |
| | | check: { |
| | | enable: true, |
| | | chkboxType: { 'Y': 'ps', 'N': 's' } |
| | | }, |
| | | data: { |
| | | simpleData: { |
| | | enable: true, |
| | | idKey: 'id', |
| | | pIdKey: 'pid', |
| | | rootPId: 0 |
| | | } |
| | | }, |
| | | view: { |
| | | showIcon: false, |
| | | showLine: false |
| | | } |
| | | }, |
| | | zNodes: [] |
| | | } |
| | | }, |
| | | watch: { |
| | | nodes(v) { |
| | | this.init(v) |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.id = 'treeDemo' + new Date().getTime() |
| | | // console.log(this.id) |
| | | this.$nextTick(() => { |
| | | this.init(this.nodes) |
| | | }) |
| | | }, |
| | | methods: { |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-01 17:11 |
| | | * @Description : 初始化树 |
| | | */ |
| | | init(v) { |
| | | this.zNodes = v |
| | | window.$.fn.zTree.init($('#' + this.id), this.setting, this.zNodes) |
| | | |
| | | if (this.expandAll) { |
| | | this.$nextTick(() => { |
| | | const treeObj = window.$.fn.zTree.getZTreeObj(this.id) |
| | | treeObj.expandAll(true) |
| | | }) |
| | | } |
| | | }, |
| | | /* |
| | | * @Author : liu.q [916000612@qq.com] |
| | | * @Date : 2019-07-01 15:12 |
| | | * @Description : 获取选中节点 |
| | | */ |
| | | getCheckedNodes() { |
| | | const treeObj = window.$.fn.zTree.getZTreeObj(this.id) |
| | | const nodes = treeObj.getCheckedNodes(true) |
| | | return nodes |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | @import "../../../plugins/ztree/css/zTreeStyle/zTreeStyle.css"; |
| | | </style> |
| | |
| | | <i-frame :src="url" /> |
| | | </template> |
| | | <script> |
| | | import iFrame from "@/components/iFrame/index"; |
| | | import iFrame from "@/components/RuoYi/iFrame/index"; |
| | | export default { |
| | | name: "Druid", |
| | | components: { iFrame }, |
| | |
| | | |
| | | <script> |
| | | import { listJob, getJob, delJob, addJob, updateJob, runJob, changeJobStatus } from "@/api/monitor/job"; |
| | | import Crontab from '@/components/Crontab' |
| | | import Crontab from '@/components/RuoYi/Crontab' |
| | | import { listOrgRoot } from "@/api/system/dept"; |
| | | |
| | | export default { |
| | |
| | | import { listMenu, getMenu, delMenu, addMenu, updateMenu } from "@/api/system/menu"; |
| | | import Treeselect from "@riophae/vue-treeselect"; |
| | | import "@riophae/vue-treeselect/dist/vue-treeselect.css"; |
| | | import IconSelect from "@/components/IconSelect"; |
| | | import IconSelect from "@/components/RuoYi/IconSelect"; |
| | | |
| | | export default { |
| | | name: "Menu", |
| | |
| | | <i-frame :src="url" /> |
| | | </template> |
| | | <script> |
| | | import iFrame from "@/components/iFrame/index"; |
| | | import iFrame from "@/components/RuoYi/iFrame/index"; |
| | | export default { |
| | | name: "Swagger", |
| | | components: { iFrame }, |
| | |
| | | <el-form-item v-if="loginForm.verifyType==='slide'"> |
| | | <drag-verify @success="verifyTrue" ref="verify"/> |
| | | </el-form-item> |
| | | <el-form-item v-if="loginForm.verifyType==='jigsaw'"> |
| | | <!-- <drag-verify @success="verifyTrue" ref="verify"/>--> |
| | | <transition duration="1000" name="el-fade-in"> |
| | | <jigsaw-verify v-if="loginForm.verifyType==='jigsaw'" :left="left" :top="top" @hide="verifyFalse" @success="handleLogin" /> |
| | | </transition> |
| | | </el-form-item> |
| | | <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> |
| | | <el-form-item style="width:100%;"> |
| | | <el-button |
| | |
| | | <script> |
| | | import {getCodeImg, getCodeNone} from "@/api/login"; |
| | | import dragVerify from './dragVerify/index.vue' // 滑动验证组件 |
| | | import jigsawVerify from '@/views/components/verify' // 拼图验证组件,2023-04-06 |
| | | import Cookies from "js-cookie"; |
| | | import {encrypt} from '@/utils/jsencrypt' |
| | | // import {encrypt} from '@/utils/jsencrypt' |
| | | |
| | | export default { |
| | | components: { |
| | | 'drag-verify': dragVerify |
| | | 'drag-verify': dragVerify, |
| | | 'jigsaw-verify': jigsawVerify |
| | | }, |
| | | data() { |
| | | return { |
| | | verify:false, // 滑动校验 |
| | | codeUrl: "", |
| | | left: null, // 拼图验证码位置 |
| | | top: null, // 拼图验证码位置 |
| | | loginForm: { |
| | | username: 'supervisor', |
| | | password: '123456', |
| | | code:'', |
| | | uuid: '', |
| | | loginType: 'user_pass', // 用户名、密码方式登录 |
| | | verifyType: 'slide'// 'code': 验证码 'slide':滑块 'jigsaw':拼图 |
| | | verifyType: 'jigsaw'// 'code': 验证码 'slide':滑块 'jigsaw':拼图 |
| | | // rememberMe: false, |
| | | }, |
| | | loginRules: { |
| | |
| | | verifyTrue () { |
| | | this.verify = true |
| | | }, |
| | | verifyFalse() { |
| | | this.verify = false |
| | | }, |
| | | getCode() { |
| | | if(this.loginForm.verifyType==='code'){ |
| | | getCodeImg().then(res => { |
| | |
| | | |
| | | } else if(this.loginForm.verifyType==='jigsaw'){ |
| | | // 拼图方式,看需要啥参数,暂未实现 |
| | | console.log('jigsaw...'); |
| | | this.loginForm.code = 'jigsaw'; // 填充code默认值,否则验证不通过。2023-04-06 |
| | | |
| | | } else if(this.loginForm.verifyType==='slide' || this.loginForm.verifyType==='sms'){ |
| | | // 不需要验证码,但仍需要请求接口获取uuid |
| | |
| | | this.loginForm.password = password === undefined ? this.loginForm.password : password |
| | | this.loginForm.rememberMe = rememberMe === undefined ? this.loginForm.rememberMe : rememberMe |
| | | }, |
| | | handleLogin() { |
| | | handleLogin(param) { |
| | | // console.log(param); |
| | | if(param != null){ |
| | | // 拼图验证码时,调用方会传入code(用户验证码位置),uuid |
| | | this.loginForm.code = param.x; |
| | | this.loginForm.uuid = param.uuid; |
| | | } |
| | | this.$refs.loginForm.validate(valid => { |
| | | if (valid) { |
| | | if (this.loginForm.verifyType==='slide' && !this.verify) { |