Commit 2876044f authored by 罗超's avatar 罗超

新增修改企业信息与注销企业

parent 567a8d27
......@@ -277,6 +277,23 @@ page {
padding-left: 30px;
padding-right: 30px;
}
.q-pl-xl{
padding-left: 30px;
}
.q-ml-xl{
margin-left: 30px;
}
.el-avatar{
background-color: #FFF !important;
}
.el-avatar.borders{
border: 1px solid #f1f2f4;
border-radius: 8px;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
-ms-border-radius: 8px;
-o-border-radius: 8px;
}
.q-mb-xl{
margin-bottom: 30px;
}
......@@ -704,11 +721,11 @@ page {
.text-dark{
color:#1F2429;
}
.el-button--primary:not(.is-link):hover,
.theme-item .btn:hover{
background: linear-gradient(134deg, #649DEDef, #550ad8ef) !important;
}
.el-button:not(.is-link):hover,
.el-menu-item:hover{
background-color: #564bec22 !important;
border-color: #564bec !important;
......@@ -725,6 +742,10 @@ page {
.el-menu.no-border{
border:none !important;
}
.el-button:not(.is-link).none-border,.el-menu-item.none-border,
.el-button:not(.is-link).none-border:hover,.el-menu-item.none-border:hover{
border: 0;
}
.el-avatar--square{
border-radius: 8px !important;
-webkit-border-radius: 8px !important;
......
......@@ -143,4 +143,6 @@ textarea {
--el-color-primary-light-8: #c7c5e9 !important;
--el-color-primary-light-9: #dedcff !important;
--el-color-primary-dark-2: #281ae6 !important;
--el-border-color:#e8eaec !important;
--el-border-radius-base: 8px !important;
}
\ No newline at end of file
......@@ -142,7 +142,9 @@ import {
Tag,
SettingOne,
Pencil,
ToBottom
ToBottom,
PeopleSafe,
StarOne
} from '@icon-park/vue-next'
export interface Icons {
......@@ -289,7 +291,9 @@ export const icons: Icons = {
IconTag:Tag,
IconSettingOne:SettingOne,
IconPencli:Pencil,
IconToBottom:ToBottom
IconToBottom:ToBottom,
IconPeopleSafe:PeopleSafe,
IconStarOne:StarOne
}
export default {
......
......@@ -200,6 +200,20 @@ const routes: RouteRecordRaw[] = [
title:'我的订单/发票'
}
},
{
path: '/a/info',
component: () => import('@/views/TeamCenter/OrgInfo.vue'),
meta:{
title:'基本信息'
}
},
{
path: '/a/diss',
component: () => import('@/views/TeamCenter/Dissolution.vue'),
meta:{
title:'解散团队/组织'
}
},
{
path: '/a/order/:id',
component: () => import('@/views/TeamCenter/OrderDetail.vue'),
......
......@@ -25,5 +25,11 @@ class OrgService{
static async GetMembersUsedStatusAsync():Promise<HttpResponse>{
return Api.Post("travel_manager_member_used",{})
}
//
static async SetTenantInfoAsync(logo:string,name:string):Promise<HttpResponse>{
const msg={logo,name}
return Api.Post("travel_set_tenant_info",msg)
}
}
export default OrgService;
\ No newline at end of file
......@@ -34,7 +34,7 @@ const menus:{menu:Menu,owner:MenuOwner}[] = [
url:'',
children:[
{name:'基本信息',icon:'',url:'/a/info'},
{name:'解散团队或企业',icon:'',url:'/a/close'}
{name:'解散团队或企业',icon:'',url:'/a/diss'}
]
},
owner:'A'
......
......@@ -106,6 +106,11 @@
</span>
</div>
</el-tooltip>
<el-tooltip effect="dark" content="模板管理中心" placement="right">
<div class="left-button q-mt-md" @click="redicetTo('/m')">
<IconStarOne size="24" theme="filled" style="color:#564bec4d"></IconStarOne>
</div>
</el-tooltip>
</div>
<el-popover placement="right" ref="popoverRef" trigger="click" width="320">
......@@ -142,7 +147,7 @@
<el-button type="primary" @click="createEnterpriseHandler" link icon="officeBuilding">立即创建企业</el-button>
</div>
<div class="row" v-if="userInfo.it">
<el-avatar :size="50" :src="userInfo.logo" shape="square"></el-avatar>
<el-avatar :size="50" :src="userInfo.logo" shape="square" fit="contain"></el-avatar>
<div class="col q-ml-md">
<div class="text-weight-bld text-dark" style="font-size: 18px;">{{ userInfo.company }}</div>
<div class="text-small text-info q-mt-sm">有效期至:{{ userInfo.expire }}</div>
......@@ -278,6 +283,9 @@ const redicetTo = (path:string)=>{
background: rgba(0,0,0,.05);
}
.left-button:hover .i-icon{
color:#564bec !important;
}
.left-button.active{
background: #FFF !important;
}
......
......@@ -621,10 +621,6 @@ onMounted(()=>{
url("//at.alicdn.com/wf/webfont/MQHUV6e56ce5/pz3etdXOpfWP.woff") format("woff");
font-display: swap;
}
.el-button:not(.is-link),.el-menu-item,
.el-button:not(.is-link):hover,.el-menu-item:hover{
border: 0;
}
.marketTagDown .el-check-tag{
line-height: 22px;
margin-left: 13px;
......
<template>
<div class="full-height full-width column" ref="memberListRef">
<div class="text-dark text-weight-bolder">解散团队/企业</div>
<div class="borders-light q-pa-lg rounded q-mt-xl" style="width:650px;">
<div class=" row items-center">
<div class="col" style="margin-right: 45px;">
<div class="text-dark text-weight-bold">解散企业</div>
<div class="q-mt-lg text-small text-info">解散企业后,您将不可再进入该企业,企业内所有内容、成员将会被永久删除。该操作不可逆,请谨慎操作!</div>
</div>
<div>
<el-button type="danger" class="ppt-button">解散</el-button>
</div>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
import { useUserStore } from "@/store";
import { storeToRefs } from "pinia";
const {userInfo} = storeToRefs(useUserStore())
</script>
<style>
</style>
\ No newline at end of file
<template>
<div class="user-header rounded row items-center" :style="{ background: userTheme?.bg }">
<el-avatar :size="64" :src="userInfo.logo" shape="square"></el-avatar>
<el-avatar :size="64" :src="userInfo.logo" fit="contain" shape="square" class="borders"></el-avatar>
<div class="q-ml-lg text-white col">
<div class="" style="font-size: 20px;">{{ userInfo.company }}</div>
<div class="q-mt-sm" style="color: rgba(255,255,255,.5);">组织ID:{{ userInfo.cardno??'8023009875069650985' }}</div>
......
<template>
<div class="full-height full-width column" ref="memberListRef">
<div class="text-dark text-weight-bolder">基本信息</div>
<div class="borders-light q-pa-xl rounded q-mt-xl" style="width:650px;">
<div class=" row items-center">
<el-avatar fit="contain" :size="66" :src="userInfo.logo" shape="square" class="borders"></el-avatar>
<div class="col q-ml-lg">
<div class="text-dark text-weight-bold">{{ userInfo.company }}</div>
</div>
<div>
<el-button type="info" class="ppt-button text-weight-bolder" @click="showOrgFormHandler">编辑</el-button>
</div>
</div>
<div class="q-mt-lg text-small text-info">完善所属行业与设计用途偏好设置,让推荐更精准</div>
</div>
</div>
<el-dialog v-model="formVisible" title="团队/企业信息" style="width:480px;" :close-on-click-modal="false" :close-on-press-escape="false">
<main>
<div class="f14">企业LOGO/标识</div>
<div class="row q-mt-md">
<el-avatar fit="contain" :size="80" :src="orgModel.logo" shape="square" class="borders"></el-avatar>
<div class="col q-ml-md column" style="height: 80px">
<div class="text-smll text-info">建议尺寸100*100/200*200</div>
<div class="text-smll text-info col">格式jpg/png/ico,大小不超过5M</div>
<div>
<el-upload action="#" :auto-upload="false" accept=".jpg,.png" :show-file-list="false" :on-change="handleChangeMakerImage">
<el-button :disabled="loading">更改</el-button>
</el-upload>
</div>
</div>
</div>
<div class="f14 q-mt-xl">企业名称</div>
<div class="q-mt-md">
<el-input v-model="orgModel.name" placeholder="请输入企业名称" size="large" :disabled="loading"/>
</div>
</main>
<template #footer>
<el-button size="large" class="ppt-button" @click="()=>formVisible=false" :disabled="loading">取消</el-button>
<el-button size="large" type="primary" class="ppt-button" :loading="loading" @click="saveOrgInfoHandler">确认</el-button>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { ApiResult } from "@/configs/axios";
import OrgService from "@/services/OrgService";
import { useUserStore } from "@/store";
import AliyunUpload from "@/utils/upload/aliyun";
import { ElMessage } from "element-plus";
import { storeToRefs } from "pinia";
import { ref } from "vue";
import CryptoJS from 'crypto-js'
const formVisible = ref(false)
const newLogoSourceFile = ref<any>()
const {userInfo} = storeToRefs(useUserStore())
const orgModel = ref({
logo:'',
name:''
})
const loading = ref(false)
const handleChangeMakerImage=(uploadFile:any, uploadFiles:any)=>{
const raw = uploadFile.raw
console.log(raw.type)
if(raw.type == 'image/jpeg' || raw.type == 'image/png' || raw.type=='image/x-icon'){
if(raw.size<=1024*1024*5){
var reader = new FileReader();
reader.readAsDataURL(raw);
reader.onload = () => {
orgModel.value.logo = reader.result?.toString()??'';
newLogoSourceFile.value = raw
}
reader.onerror = function(err) {
ElMessage.error({message:'图片解析失败,请更换图片'})
}
} else ElMessage.error({message:'图片过大,图片不能超过2MB'})
} else ElMessage.error({message:'错误的图片格式,目前支持jpg/png'})
}
const saveOrgInfoHandler = async ()=>{
if(!orgModel.value.name || orgModel.value.name==''){
ElMessage.error({message:'请填写企业名称'})
return
} else if(!orgModel.value.logo || orgModel.value.logo==''){
ElMessage.error({message:'请上传企业Logo'})
return
}
if(loading.value) return
loading.value = true
await uploadWaterMarkerImage()
const response = await OrgService.SetTenantInfoAsync(orgModel.value.logo,orgModel.value.name)
if(response.data.resultCode == ApiResult.SUCCESS) {
ElMessage.success('更新企业信息成功')
userInfo.value.logo = orgModel.value.logo
userInfo.value.company = orgModel.value.name
formVisible.value=false
return
}
ElMessage.error({message:'更新企业信息失败'})
loading.value = false
}
const uploadWaterMarkerImage = async ()=>{
if(newLogoSourceFile.value){
const url = await AliyunUpload.UploadAsync(newLogoSourceFile.value,`watermark/${CryptoJS.SHA256(userInfo.value.id)}.${newLogoSourceFile.value.name.split('.')[1]}`)
if(url!='') {
orgModel.value.logo = `${url}?t=${new Date().getTime().toString()}`
}
}
}
const showOrgFormHandler=()=>{
orgModel.value.logo=userInfo.value.logo,
orgModel.value.name=userInfo.value.company
newLogoSourceFile.value = null
formVisible.value = true
loading.value=false
}
</script>
<style>
</style>
\ No newline at end of file
......@@ -757,10 +757,6 @@ onMounted(()=>{
.addTemplateBox{
padding: 0 41px;
}
.el-button:not(.is-link),.el-menu-item,
.el-button:not(.is-link):hover,.el-menu-item:hover{
border: 0;
}
.marketTagDown .el-check-tag{
line-height: 22px;
margin-left: 13px;
......
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