提交 b0bd4238 authored 作者: pengxiaohui's avatar pengxiaohui

广告列表新建更新审核

上级 2a900e41
...@@ -8,3 +8,7 @@ export function logout() { ...@@ -8,3 +8,7 @@ export function logout() {
export function getUser() { export function getUser() {
return httpRequest.get('/api/passport/account/get-user-info') return httpRequest.get('/api/passport/account/get-user-info')
} }
// 发送验证码
export function sendCode(data) {
return httpRequest.post('/api/usercenter/user/send-code', data)
}
\ No newline at end of file
import httpRequest from '@/utils/axios' import httpRequest from '@/utils/axios'
/* ------------------------------------广告------------------------------------ */
/** /**
* 获取广告列表 * 获取广告列表
* @param {string} type_id 类型id * @param {string} type_id 类型id
...@@ -8,6 +9,20 @@ import httpRequest from '@/utils/axios' ...@@ -8,6 +9,20 @@ import httpRequest from '@/utils/axios'
export function getAdList(params) { export function getAdList(params) {
return httpRequest.get('/api/cms/admin/v1/advertisements', { params }) return httpRequest.get('/api/cms/admin/v1/advertisements', { params })
} }
/**
* 创建广告
*/
export function createAd(data) {
return httpRequest.post('/api/cms/admin/v1/advertisement/create', data)
}
/**
* 更新广告
* @param {string} id 广告id
* @param {object} data 广告表单数据
*/
export function updateAd(id, data) {
return httpRequest.put(`/api/cms/admin/v1/advertisement/${id}/update`, data)
}
/** /**
* 发布广告 * 发布广告
* @param {string} id * @param {string} id
...@@ -16,7 +31,17 @@ export function getAdList(params) { ...@@ -16,7 +31,17 @@ export function getAdList(params) {
export function publishAd(id, data) { export function publishAd(id, data) {
return httpRequest.post(`/api/cms/admin/v1/advertisement/${id}/publish`, data) return httpRequest.post(`/api/cms/admin/v1/advertisement/${id}/publish`, data)
} }
/**
* 审核广告
* @param {string} id
* @param {number} data.audit_status 2通过 3驳回
* @param {string} data.audit_remarks 审核说明
*/
export function auditAd(id, data) {
return httpRequest.post(`/api/cms/admin/v1/advertisement/${id}/audit`, data)
}
/* ------------------------------------文章------------------------------------ */
/** /**
* 获取文章列表 * 获取文章列表
* @param {string} type_id 类型id * @param {string} type_id 类型id
...@@ -26,6 +51,12 @@ export function publishAd(id, data) { ...@@ -26,6 +51,12 @@ export function publishAd(id, data) {
export function getArticleList(params) { export function getArticleList(params) {
return httpRequest.get('/api/cms/admin/v1/articles', { params }) return httpRequest.get('/api/cms/admin/v1/articles', { params })
} }
/**
* 创建文章
*/
export function createArticle(data) {
return httpRequest.post('/api/cms/admin/v1/article/create', data)
}
/** /**
* 发布文章 * 发布文章
* @param {string} id * @param {string} id
...@@ -35,6 +66,7 @@ export function publishArticle(id, data) { ...@@ -35,6 +66,7 @@ export function publishArticle(id, data) {
return httpRequest.post(`/api/cms/admin/v1/article/${id}/publish`, data) return httpRequest.post(`/api/cms/admin/v1/article/${id}/publish`, data)
} }
/* ------------------------------------图文------------------------------------ */
/** /**
* 获取图文列表 * 获取图文列表
* @param {string} type_id 类型id * @param {string} type_id 类型id
...@@ -52,3 +84,11 @@ export function getImgTextList(params) { ...@@ -52,3 +84,11 @@ export function getImgTextList(params) {
export function publishImgText(id, data) { export function publishImgText(id, data) {
return httpRequest.post(`/api/cms/admin/v1/img-text/${id}/publish`, data) return httpRequest.post(`/api/cms/admin/v1/img-text/${id}/publish`, data)
} }
/**
* 获取广告/文章/图文新建时所选项目对应的类型
* @param {number} content_type 类型 1文章 2广告 3图文
* @param {string} project_id 项目id
*/
export function getProjectContentTypeList(type, id) {
return httpRequest.get(`/api/cms/admin/v1/type/${type}/project/${id}`)
}
...@@ -22,3 +22,15 @@ export function searchUserList(params) { ...@@ -22,3 +22,15 @@ export function searchUserList(params) {
export function getUserRolesPermissions() { export function getUserRolesPermissions() {
return httpRequest.get('/api/cms/admin/v1/common/user-detail') return httpRequest.get('/api/cms/admin/v1/common/user-detail')
} }
/**
* 文件上传
*/
export function fileUpload(formData) {
return httpRequest({
url: '/api/cms/admin/v1/common/file-upload',
method: 'post',
headers: { 'Content-Type': 'multipart/form-data' },
data: formData
})
// return httpRequest.post('/api/cms/admin/v1/common/file-upload', { headers: { 'Content-Type': 'multipart/form-data' } })
}
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
<el-button size="mini" :disabled="!multipleSelection.length" @click="handleRemove">删除</el-button> <el-button size="mini" :disabled="!multipleSelection.length" @click="handleRemove">删除</el-button>
</template> </template>
</table-list> </table-list>
<el-drawer :visible.sync="drawerVisible" size="1100px" :destroy-on-close="true"> <el-drawer :visible.sync="drawerVisible" size="1100px" :destroy-on-close="true" ref="ad_drawer">
<template slot="title"> <template slot="title">
<h5> <h5>
{{ drawTitle }} {{ drawTitle }}
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<drawer-form <drawer-form
:options="drawFormOptions" :options="drawFormOptions"
@drawFormSubmit="HandleDrawFormSubmit" @drawFormSubmit="HandleDrawFormSubmit"
@drawFormClose="drawerVisible = false" @drawFormClose="$refs.ad_drawer.closeDrawer()"
> >
<template #form-item-review> <template #form-item-review>
<el-form-item> <el-form-item>
...@@ -64,8 +64,8 @@ ...@@ -64,8 +64,8 @@
</el-form-item> </el-form-item>
</template> </template>
</drawer-form> </drawer-form>
<el-dialog title="审核广告" :visible.sync="dialogVisible" width="460px" append-to-body :destroy-on-close="true"> <el-dialog title="审核广告" :visible.sync="dialogVisible" width="460px" append-to-body :destroy-on-close="true" ref="auditDialog">
<review-form @dialogClose="dialogVisible = false" @reviewSubmit="handleReviewSubmit" /> <audit-form @dialogClose="dialogVisible = false" @auditSubmit="handleAuditSubmit" />
</el-dialog> </el-dialog>
</el-drawer> </el-drawer>
</div> </div>
...@@ -73,10 +73,10 @@ ...@@ -73,10 +73,10 @@
<script> <script>
import TableList from '@/components/TableList' import TableList from '@/components/TableList'
import DrawerForm from '../components/DrawerForm.vue' import DrawerForm from '../components/DrawerForm.vue'
import ReviewForm from '../components/ReviewForm.vue' import AuditForm from '../components/AuditForm.vue'
import { getAdList, publishAd } from '@/api/contentManage' import { getAdList, createAd, publishAd, updateAd, auditAd } from '@/api/contentManage'
export default { export default {
components: { TableList, DrawerForm, ReviewForm }, components: { TableList, DrawerForm, AuditForm },
data() { data() {
return { return {
activeName: '', activeName: '',
...@@ -92,7 +92,7 @@ export default { ...@@ -92,7 +92,7 @@ export default {
], ],
drawFormOptions: { drawFormOptions: {
type: '', type: '',
page: 'ads', pageType: 2,
details: {} details: {}
}, },
drawItem: '', drawItem: '',
...@@ -179,38 +179,62 @@ export default { ...@@ -179,38 +179,62 @@ export default {
this.drawerVisible = true this.drawerVisible = true
}, },
handleDetails(val) { handleDetails(val) {
console.log(val)
this.drawItem = val this.drawItem = val
this.drawFormOptions.type = 'details' this.drawFormOptions.type = 'details'
this.drawFormOptions.details = { this.drawFormOptions.details = val
project_id: '111',
type_id: '111',
title: '3232',
uri: 'https://www.baidu.com',
summary: '内容摘要',
remarks: '注意事项',
web_img_uri: 'https://zj-images.oss-cn-beijing.aliyuncs.com/00d78a3a999f4b10000f2cd422232221.JPG',
mobile_terminal_img_uri: 'https://zj-images.oss-cn-beijing.aliyuncs.com/00d78a3a999f4b10000f2cd422232221.JPG',
enclosure_uri: 'https://zj-images.oss-cn-beijing.aliyuncs.com/00d78a3a999f4b10000f2cd422232221.JPG',
video_uri: 'https://zj-images.oss-cn-beijing.aliyuncs.com/00d78a3a999f4b10000f2cd422232221.JPG',
start_time: '2021-01-01 08:33:22',
hasEndDate: 1,
end_time: '2021-01-05 08:33:22',
is_publish: 1,
is_top: 1,
weight: 10,
review_status: 1
}
this.drawerVisible = true this.drawerVisible = true
}, },
HandleDrawFormSubmit(val) { HandleDrawFormSubmit(val) {
console.log(val) Object.keys(val).forEach(key => {
if (val[key] === '') delete val[key]
})
if (this.drawFormOptions.type === 'create') {
this.fetchCreateAd(val)
} else {
this.fetchUpdateAd(val)
}
}, },
handleReviewSubmit(val) { handleAuditSubmit(val) {
console.log(val) this.fetchAuditAd(val)
}, },
handleTabClick() { handleTabClick() {
// true 强制刷新 // true 强制刷新
this.$refs.tableList.refetch(true) this.$refs.tableList.refetch(true)
},
fetchCreateAd(val) {
delete val.is_publish
createAd(val).then(res => {
if (res.code === 0 && res.data && res.data.id) {
this.$message.success('新建广告成功')
this.$refs.tableList.refetch()
this.$refs.ad_drawer.closeDrawer()
} else {
this.$message.error(res.message || '新建广告失败')
}
})
},
fetchUpdateAd(val) {
updateAd(this.drawItem.id, val).then(res => {
if (res.code === 0 && res.data && res.data.status) {
this.$message.success('更改广告成功')
this.$refs.tableList.refetch()
this.$refs.ad_drawer.closeDrawer()
} else {
this.$message.error(res.message || '更改广告失败')
}
})
},
fetchAuditAd(val) {
auditAd(this.drawItem.id, val).then(res => {
if (res.code === 0 && res.data && res.data.status) {
this.$message.success('审核广告成功')
this.$refs.tableList.refetch()
this.dialogVisible = false
} else {
this.$message.error(res.message || '审核广告失败')
}
})
} }
} }
} }
......
...@@ -86,7 +86,7 @@ export default { ...@@ -86,7 +86,7 @@ export default {
], ],
drawFormOptions: { drawFormOptions: {
type: '', type: '',
page: 'article' pageType: 1
}, },
drawItem: '', drawItem: '',
dialogVisible: false dialogVisible: false
......
<template> <template>
<el-form :model="reviewForm" :rules="rules" ref="ruleForm" label-width="90px"> <el-form :model="form" :rules="rules" ref="ruleForm" label-width="90px">
<el-form-item label="审核结果" prop="result"> <el-form-item label="审核结果" prop="audit_status">
<el-select v-model="reviewForm.result" placeholder="请选择审核结果" size="small" style="width:100%;"> <el-select v-model="form.audit_status" placeholder="请选择审核结果" size="small" style="width:100%;">
<el-option label="通过" :value="1"></el-option> <el-option label="通过" :value="2"></el-option>
<el-option label="不通过" :value="0"></el-option> <el-option label="驳回" :value="3"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="审核评审" prop="text"> <el-form-item label="审核评审" prop="audit_remarks">
<el-input v-model="reviewForm.text" type="textarea" size="small" rows="4" placeholder="请输入审核评审"/> <el-input v-model="form.audit_remarks" type="textarea" size="small" rows="4" placeholder="请输入审核评审"/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button size="mini" @click="$emit('dialogClose')">取消</el-button> <el-button size="mini" @click="$emit('dialogClose')">取消</el-button>
<el-button type="primary" @click="handleReviewSubmit" size="mini">提交</el-button> <el-button type="primary" @click="handleSubmit" size="mini">提交</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
...@@ -19,21 +19,21 @@ ...@@ -19,21 +19,21 @@
export default { export default {
data() { data() {
return { return {
reviewForm: { form: {
result: '', audit_status: '',
text: '' audit_remarks: ''
}, },
rules: { rules: {
result: [{ required: true, message: '请选择审核结果', trigger: 'change' }], audit_status: [{ required: true, message: '请选择审核结果', trigger: 'change' }],
text: [{ required: true, message: '请输入审核评审', trigger: 'blur' }] audit_remarks: [{ required: true, message: '请输入审核评审', trigger: 'blur' }]
} }
} }
}, },
methods: { methods: {
handleReviewSubmit() { handleSubmit() {
this.$refs.ruleForm.validate((valid) => { this.$refs.ruleForm.validate((valid) => {
if (valid) { if (valid) {
this.$emit('reviewSubmit', this.reviewForm) this.$emit('auditSubmit', this.form)
} }
}); });
} }
......
...@@ -82,7 +82,7 @@ export default { ...@@ -82,7 +82,7 @@ export default {
], ],
drawFormOptions: { drawFormOptions: {
type: '', type: '',
page: 'image-text' pageType: 3
}, },
drawItem: '', drawItem: '',
dialogVisible: false dialogVisible: false
......
...@@ -78,8 +78,8 @@ ...@@ -78,8 +78,8 @@
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
<el-dialog :title="dialogTitle" ref="dialogForm" :visible.sync="dialogVisible" width="440px" :destroy-on-close="true"> <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="440px" :destroy-on-close="true">
<el-form :model="dialogForm" label-width="80px" class="dialog-form"> <el-form :model="dialogForm" ref="dialogForm" label-width="80px" class="dialog-form">
<template v-if="dialogType === 'pwd'"> <template v-if="dialogType === 'pwd'">
<el-form-item label="新密码" prop="password" :rules="{ required: true, message: '请输入新密码', trigger: 'blur' }"> <el-form-item label="新密码" prop="password" :rules="{ required: true, message: '请输入新密码', trigger: 'blur' }">
<el-input v-model="dialogForm.password" size="small"></el-input> <el-input v-model="dialogForm.password" size="small"></el-input>
...@@ -87,6 +87,20 @@ ...@@ -87,6 +87,20 @@
<el-form-item label="确认密码" prop="ensurePassword" :rules="[{ required: true, message: '请输入确认密码', trigger: 'blur' }, { validator: (rule, value, callback) => checkedDialogForm(dialogForm.password, value, callback, '密码'), trigger: 'blur' }]"> <el-form-item label="确认密码" prop="ensurePassword" :rules="[{ required: true, message: '请输入确认密码', trigger: 'blur' }, { validator: (rule, value, callback) => checkedDialogForm(dialogForm.password, value, callback, '密码'), trigger: 'blur' }]">
<el-input v-model="dialogForm.ensurePassword" size="small"></el-input> <el-input v-model="dialogForm.ensurePassword" size="small"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="手机号" prop="phone" :rules="{ validator: checkedMobile, trigger: 'blur' }">
<el-input v-model="dialogForm.phone" size="small"></el-input>
</el-form-item>
<el-form-item label="验证码" prop="code" :rules="{ required: true, message: '请输入验证码', trigger: 'blur' }">
<el-col :span="16">
<el-form-item prop="endDate"></el-form-item>
<el-input v-model="dialogForm.code" size="small"></el-input>
</el-col>
<el-col :span="7" style="float:right">
<el-button type="primary" @click="sendCode" size="small" style="width:100%;" id="checkedCode" :disabled="isBtnDisabled">
获取验证码
</el-button>
</el-col>
</el-form-item>
</template> </template>
<template v-if="dialogType === 'phone'"> <template v-if="dialogType === 'phone'">
<el-form-item label="新手机号" prop="phone" :rules="[{ required: true, message: '请输入手机号', trigger: 'blur' }, { validator: checkedMobile, trigger: 'blur' }]"> <el-form-item label="新手机号" prop="phone" :rules="[{ required: true, message: '请输入手机号', trigger: 'blur' }, { validator: checkedMobile, trigger: 'blur' }]">
...@@ -107,6 +121,7 @@ ...@@ -107,6 +121,7 @@
<script> <script>
import TableList from '@/components/TableList' import TableList from '@/components/TableList'
import { getStaffList, getProjectList, getRoleList, createStaff, updateStaff } from '@/api/settings' import { getStaffList, getProjectList, getRoleList, createStaff, updateStaff } from '@/api/settings'
import { sendCode } from '@/api/account'
import { searchUserList } from '@/api/system' import { searchUserList } from '@/api/system'
const MOBILE_REG = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{4,8}$/ const MOBILE_REG = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{4,8}$/
const EMAIL_REG = /^[A-Za-z0-9]+([_.][A-Za-z0-9]+)*@[A-Za-z0-9-.]+$/ const EMAIL_REG = /^[A-Za-z0-9]+([_.][A-Za-z0-9]+)*@[A-Za-z0-9-.]+$/
...@@ -118,15 +133,17 @@ const drawerForm = { ...@@ -118,15 +133,17 @@ const drawerForm = {
const dialogForm = { const dialogForm = {
password: '', password: '',
ensurePassword: '', ensurePassword: '',
code: '',
phone: '', phone: '',
ensurePhone: '' ensurePhone: ''
} }
export default { export default {
components: { TableList }, components: { TableList },
data() { data() {
const mobileReg = /^1(3[0-9]|4[01456879]|5[0-35-9]|6[2567]|7[0-8]|8[0-9]|9[0-35-9])\d{4,8}$/
const checkMobile = (rule, value, callback) => { const checkMobile = (rule, value, callback) => {
if (value) { if (value) {
if (!MOBILE_REG.test(value)) { if (!mobileReg.test(value)) {
callback(new Error('手机号格式错误')); callback(new Error('手机号格式错误'));
} else { } else {
callback() callback()
...@@ -153,7 +170,8 @@ export default { ...@@ -153,7 +170,8 @@ export default {
dialogType: '', dialogType: '',
operateItem: '', operateItem: '',
dialogForm: Object.assign({}, dialogForm), dialogForm: Object.assign({}, dialogForm),
checkedMobile: checkMobile checkedMobile: checkMobile,
isBtnDisabled: false
} }
}, },
computed: { computed: {
...@@ -224,7 +242,7 @@ export default { ...@@ -224,7 +242,7 @@ export default {
}, },
handleDialogClose() { handleDialogClose() {
this.drawerVisible = false this.drawerVisible = false
this.form = Object.assign({}, drawerForm) this.form = Object.assign({}, dialogForm)
}, },
handleCheckAllChange(val) { handleCheckAllChange(val) {
this.form.project = val ? this.projectList.map(item => item.project_id) : []; this.form.project = val ? this.projectList.map(item => item.project_id) : [];
...@@ -247,6 +265,34 @@ export default { ...@@ -247,6 +265,34 @@ export default {
this.dialogVisible = true this.dialogVisible = true
this.dialogType = 'pwd' this.dialogType = 'pwd'
}, },
sendCode() {
console.log(this.dialogForm)
if (!this.dialogForm.phone) {
this.$message('请填写手机号')
} else if (!MOBILE_REG.test(this.dialogForm.phone)) {
this.$message('手机号格式错误')
} else {
this.fetchSendCode()
this.isBtnDisabled = true
this.btnDisabledTimer()
}
},
// 发送验证码按钮计时器
btnDisabledTimer() {
let count = 3
const btnEl = document.querySelector('#checkedCode')
btnEl.innerHTML = count + '秒后重发'
const timer = setInterval(() => {
count--
if (count < 1) {
clearInterval(timer)
this.isBtnDisabled = false
btnEl.innerHTML = '获取验证码'
} else {
btnEl.innerHTML = count + '秒后重发'
}
}, 1000)
},
// 更换手机号 // 更换手机号
changePhone(data) { changePhone(data) {
this.operateItem = data this.operateItem = data
...@@ -290,6 +336,19 @@ export default { ...@@ -290,6 +336,19 @@ export default {
} }
}) })
}, },
fetchSendCode() {
const params = {
account: this.dialogForm.phone,
service: 'ezijing.com'
}
sendCode(params).then(res => {
if (res && res.code === 0) {
this.$message.success('验证码发送成功')
} else {
this.$message.error(res.msg || '发送验证码失败')
}
})
},
fetchCreateStaff() { fetchCreateStaff() {
createStaff(this.form).then((res) => { createStaff(this.form).then((res) => {
if (res.code === 0 && res.data && res.data.id) { if (res.code === 0 && res.data && res.data.id) {
......
...@@ -2,6 +2,7 @@ const getters = { ...@@ -2,6 +2,7 @@ const getters = {
user: state => state.user.user, user: state => state.user.user,
roles: state => state.user.roles, roles: state => state.user.roles,
sidebar: state => state.app.sidebar, sidebar: state => state.app.sidebar,
permission_routes: state => state.permission.routes permission_routes: state => state.permission.routes,
projects: state => state.user.projects
} }
export default getters export default getters
...@@ -5,9 +5,9 @@ const user = { ...@@ -5,9 +5,9 @@ const user = {
state: { state: {
user: {}, user: {},
isLogin: false, isLogin: false,
hasRolesPermissions: false,
roles: null, roles: null,
permissions: null permissions: null,
projects: []
}, },
mutations: { mutations: {
...@@ -23,8 +23,8 @@ const user = { ...@@ -23,8 +23,8 @@ const user = {
setPermissions(state, permissions) { setPermissions(state, permissions) {
state.permissions = permissions state.permissions = permissions
}, },
setHasRolesPermissions(state, hasRolesPermissions) { setProjects(state, projects) {
state.hasRolesPermissions = hasRolesPermissions state.projects = projects
} }
}, },
...@@ -73,12 +73,18 @@ const user = { ...@@ -73,12 +73,18 @@ const user = {
permissions = data.permissions permissions = data.permissions
} }
commit('setPermissions', permissions) commit('setPermissions', permissions)
if (data.projects && Array.isArray(data.projects)) {
commit('setProjects', data.projects)
} else {
commit('setProjects', [])
}
} else { } else {
// window.location.href = `${webConf.others.loginUrl}?rd=${encodeURIComponent(window.location.href)}` // window.location.href = `${webConf.others.loginUrl}?rd=${encodeURIComponent(window.location.href)}`
} }
}).catch(() => { }).catch(() => {
commit('setRoles', null) commit('setRoles', null)
commit('setPermissions', null) commit('setPermissions', null)
commit('setProjects', [])
}) })
} }
} }
......
...@@ -14,16 +14,22 @@ httpRequest.interceptors.request.use( ...@@ -14,16 +14,22 @@ httpRequest.interceptors.request.use(
function(config) { function(config) {
const defaultParams = { const defaultParams = {
timestamp: parseInt(Date.now() / 1000), timestamp: parseInt(Date.now() / 1000),
nonce: getNonce(9), nonce: getNonce(12),
signature: 'UG7wBenexQhiuD2wpCwuxkU0jqcj006d' signature: 'UG7wBenexQhiuD2wpCwuxkU0jqcj006d'
} }
let params = config.params || config.data let params = config.params || config.data
if (config.headers['Content-Type'] === 'multipart/form-data') {
Object.keys(defaultParams).forEach(key => {
params.append(key, defaultParams[key])
})
} else {
params = Object.assign({}, defaultParams, params) params = Object.assign({}, defaultParams, params)
if (['post', 'put', 'delete'].includes(config.method)) { if (['post', 'put', 'delete'].includes(config.method)) {
config.data = params config.data = params
} else { } else {
config.params = params config.params = params
} }
}
if (config.headers['Content-Type'] === 'application/x-www-form-urlencoded') { if (config.headers['Content-Type'] === 'application/x-www-form-urlencoded') {
config.data = qs.stringify(config.data) config.data = qs.stringify(config.data)
} }
......
...@@ -18,3 +18,30 @@ export function getNonce(length) { ...@@ -18,3 +18,30 @@ export function getNonce(length) {
} }
return str return str
} }
/**
* 将时间字符串、时间戳转成日期对象
* @param {(object|string|number)} time
* @returns {Date Object}
*/
export function formatToDate(time) {
let date
if (typeof time === 'object') {
date = time
} else {
if (typeof time === 'string') {
if (/^[0-9]+$/.test(time)) {
// support "1548221490638"
time = parseInt(time)
} else {
// support safari
// https://stackoverflow.com/questions/4310953/invalid-date-in-safari
time = time.replace(new RegExp(/-/gm), '/')
}
}
if (typeof time === 'number' && time.toString().length === 10) {
time = time * 1000
}
date = new Date(time)
}
return date
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论