Closed chen3728060 closed 4 years ago
还有,jsrun.net 这个在线代码网站,挂了
你好,像请教下,我也是根据官方例子来写,但是在一开始调用VXETable.formats.add 的时候就提示找不到add、mixin 等参数,尝试着将console.log(VXETable) ,发现里面根本就没有formats 这个属性,是不是还需要安装什么插件。
不需要安装插件。应该是你写代码的位置不正确。你写在哪里?截图我看看------------------ 原始邮件 ------------------ 发件人: "mylysddp"notifications@github.com 发送时间: 2020年3月26日(星期四) 上午9:37 收件人: "xuliangzhan/vxe-table"vxe-table@noreply.github.com; 抄送: "chen3728060"chen3728060@qq.com;"Author"author@noreply.github.com; 主题: Re: [xuliangzhan/vxe-table] 格式化列,使用全局化mixin,发现{CellValue}是undefined,去掉{}才正常 (#733)
你好,像请教下,我也是根据官方例子来写,但是在一开始调用VXETable.formats.add 的时候就提示找不到add、mixin 等参数,尝试着将console.log(VXETable) ,发现里面根本就没有formats 这个属性,是不是还需要安装什么插件。
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.
你好,像请教下,我也是根据官方例子来写,但是在一开始调用VXETable.formats.add 的时候就提示找不到add、mixin 等参数,尝试着将console.log(VXETable) ,发现里面根本就没有formats 这个属性,是不是还需要安装什么插件。
我同样也遇到这样的情况,我将官方的代码放在main.js 里面 你解决了嘛?
你怎么写的mixin代码?截图看看
我直接把网站上的代码贴到main.js
然后就会报错
能回复一个正常点的图片吗?用邮箱自带的,外部的图片,被qq过滤了····
我是贴在main.js 里面,然后就会提示mixin是undefined
------------------ 原始邮件 ------------------ 发件人: "chen3728060"<notifications@github.com>; 发送时间: 2020年3月27日(星期五) 下午4:13 收件人: "xuliangzhan/vxe-table"<vxe-table@noreply.github.com>; 抄送: "-.-"<125722066@qq.com>;"Comment"<comment@noreply.github.com>; 主题: Re: [xuliangzhan/vxe-table] 格式化列,使用全局化mixin,发现{CellValue}是undefined,去掉{}才正常 (#733)
能回复一个正常点的图片吗?用邮箱自带的,外部的图片,被qq过滤了···· — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
那你试一下这样的顺序摆放代码。先不用add
import XEUtils from 'xe-utils'
import VXETable from 'vxe-table' import 'vxe-table/lib/index.css'
Vue.use(VXETable)
//自定义全局的格式化处理函数 VXETable.formats.mixin({ // 格式化真假 formatTF(cellValue) { return cellValue === true ? '是' : '否' },
})
也测试过了,也是不行的
你console.log(VxeTable)?mixin混入的时候,vue实例都还没创建,你打印啥呢?
我没有console.log(VxeTable),刚运行起来界面就一片空白,然后console里面就有这句话了
------------------ 原始邮件 ------------------ 发件人: "chen3728060"<notifications@github.com>; 发送时间: 2020年3月27日(星期五) 下午4:28 收件人: "xuliangzhan/vxe-table"<vxe-table@noreply.github.com>; 抄送: "-.-"<125722066@qq.com>;"Comment"<comment@noreply.github.com>; 主题: Re: [xuliangzhan/vxe-table] 格式化列,使用全局化mixin,发现{CellValue}是undefined,去掉{}才正常 (#733)
你console.log(VxeTable)?mixin混入的时候,vue实例都还没创建,你打印啥呢? — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
你的报错,应该不是main.js报的把?应该是你的业务页面报的吧?所以我问你,究竟你那些mixin代码,写哪里?
我把main.js 里面的VXETable.formats.mixin({}) 代码去掉,就不会报错,其他地方都没有写mixin
------------------ 原始邮件 ------------------ 发件人: "chen3728060"<notifications@github.com>; 发送时间: 2020年3月27日(星期五) 下午4:33 收件人: "xuliangzhan/vxe-table"<vxe-table@noreply.github.com>; 抄送: "-.-"<125722066@qq.com>;"Comment"<comment@noreply.github.com>; 主题: Re: [xuliangzhan/vxe-table] 格式化列,使用全局化mixin,发现{CellValue}是undefined,去掉{}才正常 (#733)
你的报错,应该不是main.js报的把?应该是你的业务页面报的吧?所以我问你,究竟你那些mixin代码,写哪里? — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
把你main js的代码复制给我看看
import Vue from 'vue' import App from './App.vue' import router from './router' // vfd import Antd from 'ant-design-vue' import 'ant-design-vue/dist/antd.css' import VueContextMenu from 'vue-contextmenu' import vcolorpicker from 'vcolorpicker' import './plugins/element.js' // 导入字体图标 import './assets/fonts/iconfont.css' // 导入全局样式表 import './assets/css/global.css' import './assets/css/element-ui.css' // 加载公共组件 import plugins from './components/index' // 导入axios import axios from 'axios' import store from './store' // 导入vxe-table // import 'xe-utils' import XEUtils from 'xe-utils' import VXEUtils from 'vxe-utils' import VXETable from 'vxe-table' import 'vxe-table/lib/index.css' // v-charts import VCharts from 'v-charts' // 全局配置变量、方法 import globalFuncVariable from '@/uitls/index.js' // 导入md5.js import Md5 from '@/uitls/md5.js' // 本机设置基础URL axios.defaults.baseURL = 'http://localhost:5555' Vue.prototype.$http = axios
// 是否有请求在刷新token window.isRefreshing = false // 被挂起的请求数组 let subscribesArr = []
// push所有请求到数组中 function subscribeTokenRefresh(cb) { subscribesArr.push(cb) }
// 用新token发起请求 function reloadSubscribesArr(token) { subscribesArr.map(cb => cb(token)) }
/* 快过期了 和 已经过期了 @returns {boolean} / function isTokenExpired() { let expiredTime = store.state.expirationTime if (expiredTime) { let nowTime = new Date().getTime() let willExpired = (expiredTime - nowTime) / 1000 < 10 * 60 return willExpired } return false }
function directLogin() { router.push('/Login') }
// http request 请求拦截器
axios.interceptors.request.use(
config => {
if (config.headers.loading === undefined || config.headers.loading === true) {
store.dispatch('showloader')
}
// config.headers.Authorization = 'Bearer ' + store.state.accessToken
// return config
// // 如果是不需要token的接口直接返回即可
if (config.url.startsWith('/login') || config.url === '/login' || config.url === '/refresh-token') {
return config
}
// 获取token
const token = store.state.accessToken
// 如果token存在,首先校验是否已经过期,如果已经过期,跳转到登录页面
if (token) {
let refreshToken = store.state.refreshToken
if (isTokenExpired() && config.url !== '/refresh-token') {
if (!window.isRefreshing) {
window.isRefreshing = true
axios.post('/refresh-token', { accessToken: token, refreshToken: refreshToken })
.then(({ data: res }) => {
window.isRefreshing = false
if (res.isSuccess) {
const tokenVo = res.data
store.commit('set_accessToken', tokenVo)
reloadSubscribesArr(tokenVo)
} else {
subscribesArr = []
window.localStorage.clear()
directLogin()
}
})
.catch(() => {
window.isRefreshing = false
subscribesArr = []
window.localStorage.clear()
directLogin()
})
}
let retry = new Promise((resolve, reject) => {
subscribeTokenRefresh((newToken) => {
config.headers.Authorization = Bearer ${newToken}
resolve(config)
})
})
return retry
} else {
config.headers.Authorization = Bearer ${token}
return config
}
} else {
directLogin()
}
},
err => {
return Promise.reject(err)
}
)
// 设置全局的请求次数,请求的间隙 axios.defaults.retry = 4 axios.defaults.retryDelay = 1000
axios.interceptors.response.use(function (response) { store.dispatch('hideloader') return response }, function axiosRetryInterceptor(err) { var config = err.config // If config does not exist or the retry option is not set, reject if (!config || !config.retry) return Promise.reject(err)
// Set the variable for keeping track of the retry count config.retryCount = config.retryCount || 0
// Check if we've maxed out the total number of retries if (config.__retryCount >= config.retry) { // Reject with the error return Promise.reject(err) }
// Increase the retry count config.__retryCount += 1
// Create new promise to handle exponential backoff var backoff = new Promise(function (resolve) { setTimeout(function () { resolve() }, config.retryDelay || 1) })
// Return the promise in which recalls axios to retry the request return backoff.then(function () { return axios(config) }) }) // 设置请求超时时间 axios.defaults.timeout = 60000 Vue.config.productionTip = false
VXETable.setup({ // 表格的全局参数 size: 'mini', border: true, resizable: true, highlightCurrentRow: true, highlightHoverRow: true })
// 自定义全局的格式化处理函数 VXETable.formats.mixin({ // 格式化性别 formatSex({ cellValue }) { return cellValue ? (cellValue === '1' ? '男' : '女') : '' }, // 格式化下拉选项 formatSelect({ cellValue }, list) { const item = list.find(item => item.value === cellValue) return item ? item.label : '' }, // 格式化日期,默认 yyyy-MM-dd HH:mm:ss formatDate({ cellValue }, format) { return XEUtils.toDateString(cellValue, format || 'yyyy-MM-dd HH:mm:ss') }, // 格式金额,默认2位数 formatAmount({ cellValue }, digits) { return XEUtils.commafy(cellValue, { digits: digits || 2 }) }, // 格式化银行卡,默认每4位隔开 formatBankcard({ cellValue }) { return XEUtils.commafy(cellValue, { spaceNumber: 4, separator: ' ' }) }, // 四舍五入,默认两位数 formatFixedNumber({ cellValue }, digits) { return XEUtils.toNumber(cellValue).toFixed(digits || 2) }, // 截取小数,默认两位数 formatCutNumber({ cellValue }, digits) { return XEUtils.toFixedString(cellValue, digits || 2) }, // 转换 moment 类型为字符串 toMomentString(cellValue, format) { return cellValue ? cellValue.format(format) : '' } }) // 注意必须在构建Vue实例之前就将需要的组件注册进去 Vue.use(plugins) // 使用vxe-table Vue.use(VXETable) Vue.use(VXEUtils, XEUtils) // vfd Vue.use(Antd) Vue.use(VueContextMenu) Vue.use(vcolorpicker) // 引用全局方法 Vue.use(globalFuncVariable) // // 引用md5 Vue.prototype.$md5 = Md5 // VCharts Vue.use(VCharts) new Vue({ router, store, render: h => h(App) }).$mount('#app')
------------------ 原始邮件 ------------------ 发件人: "chen3728060"<notifications@github.com>; 发送时间: 2020年3月27日(星期五) 下午4:40 收件人: "xuliangzhan/vxe-table"<vxe-table@noreply.github.com>; 抄送: "-.-"<125722066@qq.com>;"Comment"<comment@noreply.github.com>; 主题: Re: [xuliangzhan/vxe-table] 格式化列,使用全局化mixin,发现{CellValue}是undefined,去掉{}才正常 (#733)
把你main js的代码复制给我看看 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
跟我代码也差不多,那你要问问作者了,我暂时解答不了
ok,我在找下原因,谢谢
------------------ 原始邮件 ------------------ 发件人: "chen3728060"<notifications@github.com>; 发送时间: 2020年3月27日(星期五) 下午4:49 收件人: "xuliangzhan/vxe-table"<vxe-table@noreply.github.com>; 抄送: "-.-"<125722066@qq.com>;"Comment"<comment@noreply.github.com>; 主题: Re: [xuliangzhan/vxe-table] 格式化列,使用全局化mixin,发现{CellValue}是undefined,去掉{}才正常 (#733)
跟我代码也差不多,那你要问问作者了,我暂时解答不了 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
(必填)请填写问题描述 Describe the bug
按照官方文档,局部format是正常的。但是全局format的mixin会发现 formatSex ({ cellValue }) { console.log(cellValue) //得到的是undefined return cellValue ? (cellValue === '1' ? '男' : '女') : '' },
改为
formatSex (cellValue ) { **console.log(cellValue) //正常,得到单元格内的值,没有其他对象 return cellValue ? (cellValue === '1' ? '男' : '女') : '' },
(必填)请填写能重现问题的链接,例如
官方文档 https://xuliangzhan_admin.gitee.io/vxe-table/v2/index.html#/table/base/format
填写报错信息或截图 Error message or screenshots
暂无
(必填)请填写期望的结果 Expected behavior
是bug还是我用法不对?