Commit f8d5f331 authored by mengwenhao's avatar mengwenhao

feature: 新增金山云服务

parents b78071b0 87a04b70
const API_INTERNAL_URI = require("../config.js").API_INTERNAL_URI; const API_INTERNAL_URI = require("../config.js").API_INTERNAL_URI;
const req = require("../utils/request").httpReq; const req = require("../utils/request").httpReq;
exports.entCheck = async (ctx) => { // 获取企业信息验证
exports.entCheck = async ctx => {
const url = `${API_INTERNAL_URI}/merchant/inner/ent_check`; const url = `${API_INTERNAL_URI}/merchant/inner/ent_check`;
// const url = `http://bp-test.ini.yidian-inc.com/merchant/inner/ent_check`;
const { user_id } = ctx.request.query;
const opts = { const opts = {
url: url, url: url,
method: "GET", method: "GET",
qs: {
user_id
}
};
ctx.body = await req(ctx, opts);
};
// 企业信息提交
exports.entCommit = async ctx => {
const url = `${API_INTERNAL_URI}/merchant/inner/ent_commit`;
const opts = {
url,
method: "POST",
json: true, json: true,
timeout: 8000, timeout: 8000,
body: ctx.request.body body: ctx.request.body
}; };
console.log("参数传递", ctx.request);
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
exports.entCommit = async (ctx, next) => { // 生活号检查
const url = `${API_INTERNAL_URI}/merchant/inner/ent_commit`; exports.checkLife = async ctx => {
const url = `${API_INTERNAL_URI}/merchant/enterprise/check_life`;
const opts = {
url,
method: "POST",
json: true,
timeout: 8000,
body: ctx.request.body
};
ctx.body = await req(ctx, opts);
};
// 创建生活号
exports.createLife = async ctx => {
const url = `${API_INTERNAL_URI}/merchant/enterprise/create_life`;
const opts = { const opts = {
url, url,
method: "POST", method: "POST",
...@@ -23,6 +52,5 @@ exports.entCommit = async (ctx, next) => { ...@@ -23,6 +52,5 @@ exports.entCommit = async (ctx, next) => {
timeout: 8000, timeout: 8000,
body: ctx.request.body body: ctx.request.body
}; };
console.log(next);
ctx.body = await req(ctx, opts); ctx.body = await req(ctx, opts);
}; };
...@@ -6,11 +6,13 @@ const enterprise = require("./controllers/enterprise"); ...@@ -6,11 +6,13 @@ const enterprise = require("./controllers/enterprise");
const router = Router(); const router = Router();
const API_VERSION = "/api/v1"; const API_VERSION = "/api/v1";
router.post(`${API_VERSION}/login`, system.login); // router.post(`${API_VERSION}/login`, system.login);
router.get(`${API_VERSION}/fetch_user`, system.fetch_user); router.get(`${API_VERSION}/fetch_user`, system.fetch_user);
router.get(`${API_VERSION}/user/:type`, user.query) router.get(`${API_VERSION}/user/:type`, user.query)
router.get(`${API_VERSION}/certification`, enterprise.entCheck); router.get(`${API_VERSION}/certification`, enterprise.entCheck);
router.post(`${API_VERSION}/emterprise_commit`, enterprise.entCommit); router.post(`${API_VERSION}/emterprise_commit`, enterprise.entCommit);
router.post(`${API_VERSION}/check_life`, enterprise.checkLife);
router.post(`${API_VERSION}/create_life`, enterprise.createLife);
module.exports = router; module.exports = router;
<template> <template>
<div> <div>
<router-view /> <router-view />
<!-- <layout>
</layout> -->
</div> </div>
</template> </template>
<script> <script>
// Layout 为布局组件,控制页面基础布局,通过 slot 实现
// import Layout from '@/layouts';
import { fetchCurrentUser } from './service/user'; import { fetchCurrentUser } from './service/user';
// async function isUserLogged() {
// const res = await fetchCurrentUser()
// return res.status === 'success';
// }
function redirectToLogin() { function redirectToLogin() {
const loginUrl = '//pandora.yidian-inc.com/tools/admin/login'; const loginUrl = '//pandora.yidian-inc.com/tools/admin/login';
const cbUrl = location.href; const cbUrl = location.href;
...@@ -24,21 +15,14 @@ function redirectToLogin() { ...@@ -24,21 +15,14 @@ function redirectToLogin() {
export default { export default {
async mounted() { async mounted() {
// http://dev.yidian-inc.com:8081/home
const { status, user } = await fetchCurrentUser(); const { status, user } = await fetchCurrentUser();
// {"status":"success","user":{"userid":"732473439","name":"吕伟朝","email":"lvweichao@yidian-inc.com","avatar":""}} // {"status":"success","user":{"userid":"732473439","name":"吕伟朝","email":"lvweichao@yidian-inc.com","avatar":""}}
if (status === 'success') { if (status === 'success') {
this.$store.dispatch('updateUserPermission', { email: user.email }) this.$store.dispatch('updateUserPermission', { email: user.email })
this.$store.commit('updateUserInfo', user) this.$store.commit('updateUserInfo', user)
} else { } else {
redirectToLogin(); redirectToLogin();
} }
// if (!(await isUserLogged())) {
// redirectToLogin();
// } else {
// }
}, },
}; };
</script> </script>
......
import request from "@/utils/request";
export default class CommonServer {
static getKsOssSign (params) {
return request({
url: '',
method: 'get',
params
})
}
};
...@@ -18,10 +18,6 @@ const headerConfig = { ...@@ -18,10 +18,6 @@ const headerConfig = {
path: '/life-no/life', path: '/life-no/life',
name: '生活号管理' name: '生活号管理'
}, },
{
path: '/certification',
name: '企业认证管理'
},
{ {
path: '/role', path: '/role',
name: '角色管理' name: '角色管理'
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<!-- 修改详情页 --> <!-- 修改详情页 -->
<el-form <el-form
v-if="pageStatus === 'EDIT' " v-if="pageStatus === 'EDIT'"
:rules="messageLishRules" :rules="messageLishRules"
label-width="240px" label-width="240px"
ref="establish_form" ref="establish_form"
...@@ -301,7 +301,10 @@ ...@@ -301,7 +301,10 @@
<el-input v-model="lifeForm.adminPhone"></el-input> <el-input v-model="lifeForm.adminPhone"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="生活号名称:"> <el-form-item label="生活号名称:">
<el-input v-model="lifeForm.lifeName"></el-input> <el-input
@blur="onCheckLife"
v-model="lifeForm.lifeName"
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="生活号管理员:"> <el-form-item label="生活号管理员:">
<el-input v-model="lifeForm.lifeAdmin"></el-input> <el-input v-model="lifeForm.lifeAdmin"></el-input>
...@@ -312,7 +315,7 @@ ...@@ -312,7 +315,7 @@
<el-button @click="isDialogShow = false">取 消</el-button> <el-button @click="isDialogShow = false">取 消</el-button>
<el-button <el-button
type="primary" type="primary"
@click="isDialogShow = false" @click="onMakeCreateLife"
>确认创建</el-button> >确认创建</el-button>
</span> </span>
</template> </template>
...@@ -340,6 +343,7 @@ ...@@ -340,6 +343,7 @@
<script> <script>
import Layout from "@/layouts"; import Layout from "@/layouts";
import { checkLife, createLife } from "../../../service/enterprise";
export default { export default {
name: "Audit", name: "Audit",
components: { Layout }, components: { Layout },
...@@ -395,6 +399,7 @@ export default { ...@@ -395,6 +399,7 @@ export default {
{ {
status: 1, status: 1,
id: 1221, id: 1221,
code: 112211,
registeredName: "一点资讯", // 企业名称 registeredName: "一点资讯", // 企业名称
registrationCode: 1221, // 注册码 registrationCode: 1221, // 注册码
licenseList: [], // 营业执照 licenseList: [], // 营业执照
...@@ -484,6 +489,11 @@ export default { ...@@ -484,6 +489,11 @@ export default {
} }
] ]
}, },
// 生活号状态
lifeStatus: false,
// 生活号错误信息
lifeErrorMessage: ""
}; };
}, },
...@@ -500,8 +510,6 @@ export default { ...@@ -500,8 +510,6 @@ export default {
}, },
methods: { methods: {
opinionChange () { },
// 审核-拒绝审核 // 审核-拒绝审核
auditRefuse () { auditRefuse () {
if (this.opinionArea.length === 0) if (this.opinionArea.length === 0)
...@@ -517,6 +525,7 @@ export default { ...@@ -517,6 +525,7 @@ export default {
onCreateLife (params) { onCreateLife (params) {
console.log(params); console.log(params);
this.isDialogShow = true; this.isDialogShow = true;
this.lifeStatus = true;
}, },
// 修改详情-提交审核 // 修改详情-提交审核
...@@ -527,7 +536,7 @@ export default { ...@@ -527,7 +536,7 @@ export default {
}, },
// 修改详情-取消修改表单 // 修改详情-取消修改表单
handelCancel () { handelCancel () {
this.$router.replace({ name: 'Certification' }); this.$router.replace({ name: "Certification" });
}, },
// 修改详情-执照列表更改时 // 修改详情-执照列表更改时
onLicenseChange (file, fileList) { onLicenseChange (file, fileList) {
...@@ -556,6 +565,38 @@ export default { ...@@ -556,6 +565,38 @@ export default {
this.messageList[0].idcardPhoto = fileList; this.messageList[0].idcardPhoto = fileList;
console.log("idCarPhoto:", this.messageList[0].idcardPhoto); console.log("idCarPhoto:", this.messageList[0].idcardPhoto);
}, },
// 查看详情-生活号名称检查
async onCheckLife () {
const res = await checkLife(this.lifeForm.lifeName);
if (res.code !== 0) {
this.lifeErrorMessage = res.reason;
this.lifeStatus = false;
} else {
this.lifeStatus = true;
}
},
// 创建生活号
async onMakeCreateLife () {
if (!this.lifeStatus) {
return this.$message.error(this.lifeErrorMessage);
} else {
const params = {
life_account_name: this.lifeForm.lifeName,
code: this.messageList[0].code,
user_id: ""
};
const res = await createLife(params);
if (res.code !== 0) {
return this.$message.error(res.reason)
} else {
this.$message({ type: 'success', message: '创建生活号成功!' });
this.isDialogShow = false;
}
console.log(res);
}
}
} }
}; };
</script> </script>
<template> <template>
<layout> <layout>
<!-- 企业信息提交 -->
<el-button
type="primary"
class="setUp"
@click="goEstablish"
>企业信息提交</el-button>
<div> <div>
<!-- 企业信息提交 -->
<el-button
type="primary"
class="setUp"
@click="goEstablish"
>企业信息提交</el-button>
<el-card class="enterprise_card"> <el-card class="enterprise_card">
<!-- 企业认证筛选 --> <!-- 企业认证筛选 -->
<el-form <el-form
...@@ -172,7 +171,7 @@ ...@@ -172,7 +171,7 @@
<script> <script>
import Layout from '@/layouts' import Layout from '@/layouts'
import { entCheck as entChecked } from '../../../service/enterprise' import { entCheck } from '../../../service/enterprise'
export default { export default {
name: "Certification", name: "Certification",
components: { Layout }, components: { Layout },
...@@ -216,15 +215,15 @@ export default { ...@@ -216,15 +215,15 @@ export default {
}, },
created () { created () {
this.entCheck(); this.onEntCheck();
}, },
methods: { methods: {
// 获取商户认证检查信息 // 获取商户认证检查信息
async entCheck () { async onEntCheck () {
try { try {
const res = await entChecked(510232747179); const res = await entCheck(510232747179);
console.log('res:', res); console.log('res:----', res);
} }
catch (error) { catch (error) {
console.log('error:', error); console.log('error:', error);
......
...@@ -11,9 +11,24 @@ ...@@ -11,9 +11,24 @@
<el-form <el-form
:rules="establishRules" :rules="establishRules"
label-width="240px" label-width="240px"
ref="establish_form" ref="establishFormRef"
:model="establishForm" :model="establishForm"
> >
<el-form-item
label="商户类型"
prop="merchantsType"
>
<el-select v-model="establishForm.merchantsType">
<el-option
label="个体工商户"
value="1"
></el-option>
<el-option
label="普通企业"
value="2"
></el-option>
</el-select>
</el-form-item>
<el-form-item <el-form-item
label="营业执照:" label="营业执照:"
ref="licenseChange" ref="licenseChange"
...@@ -83,9 +98,9 @@ ...@@ -83,9 +98,9 @@
<el-input v-model.trim="establishForm.idcardNumber"></el-input> <el-input v-model.trim="establishForm.idcardNumber"></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handelCancel('establish_form')">取消</el-button> <el-button @click="handelCancel('establishFormRef')">取消</el-button>
<el-button <el-button
@click="handelSubmit('establish_form')" @click="handelSubmit('establishFormRef')"
type="primary" type="primary"
>提交审核</el-button> >提交审核</el-button>
</el-form-item> </el-form-item>
...@@ -135,6 +150,7 @@ export default { ...@@ -135,6 +150,7 @@ export default {
return { return {
// 表单输入项 // 表单输入项
establishForm: { establishForm: {
merchantsType: null, // 商户类型
licenseList: [], // 营业执照 licenseList: [], // 营业执照
registeredName: "", // 注册名称 registeredName: "", // 注册名称
registrationCode: "", // 注册码 registrationCode: "", // 注册码
...@@ -180,7 +196,9 @@ export default { ...@@ -180,7 +196,9 @@ export default {
validator: idcardNumberRules, validator: idcardNumberRules,
trigger: "blur" trigger: "blur"
} }
] ],
// 商户类型
merchantsType: [{ required: true, message: "请选择商户类型", trigger: "change" }]
} }
}; };
}, },
...@@ -195,28 +213,22 @@ export default { ...@@ -195,28 +213,22 @@ export default {
onLicenseChange (file, fileList) { onLicenseChange (file, fileList) {
this.establishForm.licenseList = fileList; this.establishForm.licenseList = fileList;
this.$refs["licenseChange"].clearValidate(); this.$refs["licenseChange"].clearValidate();
console.log("licenseList", this.establishForm.licenseList);
}, },
// 身份证照片更改时 // 身份证照片更改时
onIdPhoneChange (file, fileList) { onIdPhoneChange (file, fileList) {
this.establishForm.idcardPhoto = fileList; this.establishForm.idcardPhoto = fileList;
this.$refs["idcardPhotoChange"].clearValidate(); this.$refs["idcardPhotoChange"].clearValidate();
console.log("idcardPhoto:", this.establishForm.idcardPhoto);
}, },
// 删除上传的营业执照 // 删除上传的营业执照
onLicenseRemove (file, fileList) { onLicenseRemove (file, fileList) {
console.log("file", file);
console.log("fileList", fileList);
this.establishForm.licenseList = fileList; this.establishForm.licenseList = fileList;
console.log("licenseList", this.establishForm.licenseList);
}, },
// 删除上传的身份证照片 // 删除上传的身份证照片
onIdPhoneRemove (file, fileList) { onIdPhoneRemove (file, fileList) {
this.establishForm.idcardPhoto = fileList; this.establishForm.idcardPhoto = fileList;
console.log("idCarPhoto:", this.establishForm.idcardPhoto);
}, },
// 取消创建表单 // 取消创建表单
...@@ -229,33 +241,46 @@ export default { ...@@ -229,33 +241,46 @@ export default {
this.$refs[formName].validate(async valid => { this.$refs[formName].validate(async valid => {
console.log(valid); console.log(valid);
const query = { const query = {
user_id: 510232747179, user_id: 510232747179, // 用户id
code: parseInt(this.establishForm.registrationCode), code: parseInt(this.establishForm.registrationCode), // 企业代码
name: this.establishForm.registeredName, name: this.establishForm.registeredName, // 企业名称
type: '', type: "", // 企业类型
addr: '', addr: "", // 企业注册地址
pers: '', pers: "", // 法人
scope: '', scope: "", // 经营范围
time: '', time: "", // 有效期
regi: '', regi: "", // 注册资本
organizer: '', organizer: "", // 主管单位(!)
date: '', date: "", // 成立时间(!)
comp: '', comp: "", // 登记机关(!)
num: '', num: "", // 登记号(!)
form: '', form: "", // 组成形式(!)
funding: '', funding: "", // 经费来源(!)
issue_date: '', issue_date: "", // 发证日期(!)
entterprise_image: '', entterprise_image: "", // 金山云key
data_from: '', data_from: "", // 数据来源,1C端,2B端,3 OP后台代提交
proxy_user_name: '' proxy_user_name: "" // OP后台代提交 代提交人名(!)
} };
if (valid) { if (valid) {
const res = await entCommit(query); const res = await entCommit(query);
if (res.code !== 0) {
return this.$message.error(res.reason);
} else {
this.$message({ type: "success", message: "信息提交成功!" });
}
console.log(res); console.log(res);
} else { } else {
this.$message.error('验证不通过') this.$message.error("表单未填写完整!");
} }
}); });
},
// 选择商户
chooseType () {
if (this.establishForm.merchantsType) {
this.$refs["merchantsTypeRef"].clearValidate();
}
console.log(this.establishForm.merchantsType);
} }
} }
}; };
......
.role_management {
padding: 50px;
}
.role_management .el-button {
margin: 0 2px;
}
.role_management{
padding: 50px;
.el-button{
margin: 0 2px;
}
}
\ No newline at end of file
<template>
<layout>
<el-card class="role_management">
<!-- 角色检索区域 -->
<el-form
inline
:model="searchForm"
>
<el-form-item label="角色名称">
<el-input v-model="searchForm.roleName"></el-input>
</el-form-item>
<el-form-item label="状态">
<el-select
v-model="searchForm.roleStatus"
placeholder="请选择角色状态"
>
<el-option
label="正常"
:value="1"
></el-option>
<el-option
label="禁用"
:value="2"
></el-option>
<el-option
label="删除"
:value="3"
></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary">搜索</el-button>
<el-button>重置</el-button>
</el-form-item>
</el-form>
<!-- 角色搜索列表 -->
<el-table
border
:data="managementList"
>
<el-table-column
label="ID"
prop="id"
align="center"
></el-table-column>
<el-table-column
label="角色名称"
prop="name"
align="center"
></el-table-column>
<el-table-column
label="状态"
prop="status"
align="center"
></el-table-column>
<el-table-column
label="最后修改日期"
prop="lastDate"
align="center"
></el-table-column>
<el-table-column
label="最后修改人账号"
prop="updateNumber"
align="center"
></el-table-column>
<el-table-column
label="操作"
align="center"
>
<template #default="scope">
<el-button
size="mini"
@click="handelClick(scope.row)"
type="primary"
>修改</el-button>
<el-button
size="mini"
@click="handelClick(scope.row)"
type="warning"
>删除</el-button>
<el-button
size="mini"
@click="handelClick(scope.row)"
type="danger"
>禁用</el-button>
<el-button
size="mini"
@click="handelClick(scope.row)"
type="success"
>启用</el-button>
<el-button
style="margin-top:10px"
size="mini"
@click="handelClick(scope.row)"
>查看详情</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</layout>
</template>
<style lang="less" scope src="./index.less"></style>
<script>
import Layout from "@/layouts";
export default {
name: 'RoleManagement',
components: {
Layout
},
data () {
return {
searchForm: {
roleName: '',
roleStatus: 1
},
managementList: [
{
id: 1,
name: '超级管理员',
status: 1,
lastDate: '2021-05-31',
updateNumber: 492148618,
}
]
}
},
};
</script>
import { createRouter, createWebHistory } from "vue-router"; import { createRouter, createWebHistory } from "vue-router";
import Home from "../pages/Home"; // import Home from "../pages/Home";
import Login from "../pages/Login"; import Login from "../pages/Login";
import LifeNo from "../pages/Life-no/index.vue"; import LifeNo from "../pages/Life-no/index.vue";
import LifeNoDetail from "../pages/Life-no/life-no-detail.vue"; import LifeNoDetail from "../pages/Life-no/life-no-detail.vue";
import UserDetail from "../pages/User/user-detail.vue"; import UserDetail from "../pages/User/user-detail.vue";
import AddRole from "../pages/Role/add-role.vue"; import AddRole from "../pages/Role/add-role.vue";
import Certification from "../pages/Enterprise/Certification";
import Establish from "../pages/Enterprise/Establish";
import Audit from "../pages/Enterprise/Audit";
const routes = [ const routes = [
{ // {
path: "/home", // path: "/home",
name: "Home", // name: "Home",
component: Home // component: Home
}, // },
{ {
path: "/login", path: "/login",
name: "Login", name: "Login",
...@@ -32,23 +27,32 @@ const routes = [ ...@@ -32,23 +27,32 @@ const routes = [
{ {
path: "/", path: "/",
name: "Home", name: "Home",
component: Certification, component: () =>
import(
/* webpackChunkName: "enterprise" */ "@/pages/Enterprise/Certification"
)
}, },
{ {
path: '/enterprise/certification', path: "/enterprise/certification",
name: 'Certification', name: "Certification",
component: Certification, component: () =>
// component: () => import(/* webpackChunkName: "enterprise" */ '@/pages/Enterprise/Certification') import(
/* webpackChunkName: "enterprise" */ "@/pages/Enterprise/Certification"
)
}, },
{ {
path: "/audit", path: "/enterprise/audit",
name: "Audit", name: "Audit",
component: Audit component: () =>
import(/* webpackChunkName: "enterprise" */ "@/pages/Enterprise/Audit")
}, },
{ {
path: "/establish", path: "/enterprise/establish",
name: "Establish", name: "Establish",
component: Establish component: () =>
import(
/* webpackChunkName: "enterprise" */ "@/pages/Enterprise/Establish"
)
}, },
//生活号管理 //生活号管理
{ {
...@@ -72,6 +76,11 @@ const routes = [ ...@@ -72,6 +76,11 @@ const routes = [
path: "/role/addRole", path: "/role/addRole",
name: "AddRole", name: "AddRole",
component: AddRole component: AddRole
},
{
path: "/role",
name: "Role",
component: import(/* webpackChunkName: "role" */ "@/pages/Role/RoleManagement")
} }
]; ];
......
import axios from '../utils/request'; import axios from '../utils/request';
export async function userLogin(email, password) { export async function userLogin(email, password) {
let res = await axios.post(`api/v1/login`, { let res = await axios.post(`/api/v1/login`, {
email, password, authCode: '' email, password, authCode: ''
}); });
return res.data; return res.data;
......
...@@ -3,14 +3,31 @@ ...@@ -3,14 +3,31 @@
*/ */
import axios from "../utils/request"; import axios from "../utils/request";
// 获取审核列表
// export async function auditList (params) {
// const res = await axios.post(``)
// }
// 企业信息检查 // 企业信息检查
export async function entCheck (user_id) { export async function entCheck (user_id) {
const res = await axios.get(`api/v1/certification`, { params: { user_id } }); const res = await axios.get(`/api/v1/certification`, { params: { user_id } });
return res.result; return res;
} }
// 发送企业信息认证 // 发送企业信息认证
export async function entCommit (query) { export async function entCommit (query) {
const res = await axios.post(`api/v1/emterprise_commit`, { query }); const res = await axios.post(`/api/v1/emterprise_commit`, { query });
return res.result; return res;
}
// 检查生活号信息唯一性
export async function checkLife (life_account_name) {
const res = await axios.post(`/api/v1/check_life`, { life_account_name });
return res;
}
// 创建生活号
export async function createLife (params) {
const res = await axios.post(`/api/v1/create_life`, { params });
return res;
} }
import axios from '../utils/request'; import axios from '../utils/request';
export async function login(email, password) { export async function login(email, password) {
const res = await axios.post(`api/v1/login`, { const res = await axios.post(`/api/v1/login`, {
email, password, authCode: '' email, password, authCode: ''
}); });
return res.data; return res.data;
} }
export async function fetchCurrentUser() { export async function fetchCurrentUser() {
return await axios.get("api/v1/fetch_user"); return await axios.get("/api/v1/fetch_user");
} }
export async function getPermissions(email) { export async function getPermissions(email) {
console.log("fe service, getPermissions:::", email) console.log("fe service, getPermissions:::", email)
return await axios.get("api/v1/user/get_permissions", { params: {email} }); return await axios.get("/api/v1/user/get_permissions", { params: {email} });
} }
\ No newline at end of file
...@@ -16,7 +16,7 @@ export default createStore({ ...@@ -16,7 +16,7 @@ export default createStore({
}, },
actions: { actions: {
async updateUserPermission({ commit }, payload) { async updateUserPermission({ commit }, payload) {
const permissions = await getPermissions(payload.email); const { permissions = [] } = await getPermissions(payload.email);
console.log("VUEX action updateUserPermission::", permissions); console.log("VUEX action updateUserPermission::", permissions);
commit('updateUserPermission', permissions) commit('updateUserPermission', permissions)
} }
......
import moment from "moment";
import CommonServer from "@/api/common";
import axios from "axios";
import { ElMessage } from "element-plus";
// 文件扩展名提取
export const fileType = fileName => {
fileName.substring(fileName.lastIndexOf(".") + 1);
};
/**
* oss 路径定义
* @param file 文件
* @param customFileType 自定义扩展名
*/
export const ossPath = (file, customFileType) => {
const folder = moment().format("YYYY-MM-DD");
const name = moment().format("YYYY-MM-DD-HH-mm-ss-SSS");
if (file.name) {
const type = fileType(file.name);
return `项目名称(金山云上创建的对应项目文件名/upload/${folder}/${type}/${name}.${type})`;
} else if (customFileType) {
return `项目名称(金山云上创建的对应项目文件名/upload/${folder}/${customFileType}/${name}.${customFileType})`;
}
};
/**
* 金山云上传
* @returns {Promise<any>}
*/
export const ksOssUpload = (file, customFileType) => {
return new Promise((resolve, reject) => {
const key = ossPath(file, customFileType);
const params = { fileName: key };
CommonServer.getKsOssSign(params)
.then(res => {
const { accessid, policy, signature, host } = res;
const formData = new FormData();
formData.append("acl", "public-read");
formData.append("key", key);
formData.append("signature", signature);
formData.append("KSSAccessKeyId", accessid);
formData.append("policy", policy);
formData.append("file", file);
axios
.post(`https://${host}`, formData)
.then(res => {
const { status } = res;
if (status === 200) {
const data = {
url: `https://${host}/${key}`,
type: file.name ? fileType(file.name) : customFileType
};
resolve(data);
} else {
reject(res);
}
})
.catch(err => {
reject(err);
});
})
.catch(err => {
console.log(err);
});
});
};
/**
* 上传文件大小限制
* @param file
* @param fileMaxSize
* @returns {boolean}
*/
export const isMaxFileSize = (file, fileMaxSize = 1) => {
if (!file) return false;
const isMaxSize = file.size / 1024 / 1024 < fileMaxSize;
if (!isMaxSize) {
ElMessage.error(`上传文件大小不能超过${fileMaxSize}MB!`);
return false;
}
return true;
};
/**
* 文件最大数量限制
* @param fileList
* @param maxLength
* @returns {boolean}
*/
export const isMaxFileLength = (fileList = [], maxLength = 3) => {
if (fileList.length > maxLength) {
ElMessage.error(`最多上传${maxLength}个文件`);
return false;
}
return true;
};
/**
* 判断上传是否为图片
* @param file
* @returns {boolean}
*/
export const isImageFile = file => {
if (!file) return false;
const types = [
"image/png",
"image/gif",
"image/jpeg",
"image/jpg",
"image/bmp",
"image/x-icon"
];
const isImage = types.includes(file.type);
if (!isImage) {
ElMessage.error(`上传文件非图片格式`);
return false;
}
return true;
};
/**
* 判断图片是否损坏
* @param file
*/
export const isNormalImage = file => {
return new Promise((resolve, reject) => {
if (!file) return;
const image = new Image();
image.src = file;
image.onload = () => {
resolve({ status: 1, message: "加载成功" });
};
image.onerror = () => {
reject({ status: 0, errMsg: "图片损坏,请重新上传" });
};
});
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment