Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
pptist
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
viitto
pptist
Commits
2876044f
Commit
2876044f
authored
May 10, 2024
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增修改企业信息与注销企业
parent
567a8d27
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
215 additions
and
15 deletions
+215
-15
common.css
src/assets/styles/common.css
+23
-2
global.scss
src/assets/styles/global.scss
+2
-0
icon.ts
src/plugins/icon.ts
+6
-2
router.ts
src/router/router.ts
+14
-0
OrgService.ts
src/services/OrgService.ts
+6
-0
menu.ts
src/store/menu.ts
+1
-1
Index.vue
src/views/Index.vue
+9
-1
Index.vue
src/views/Market/Index.vue
+0
-4
Dissolution.vue
src/views/TeamCenter/Dissolution.vue
+28
-0
Index.vue
src/views/TeamCenter/Index.vue
+1
-1
OrgInfo.vue
src/views/TeamCenter/OrgInfo.vue
+125
-0
Index.vue
src/views/TemplateCenter/Index.vue
+0
-4
No files found.
src/assets/styles/common.css
View file @
2876044f
...
...
@@ -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
,
#649DED
ef
,
#550ad8
ef
)
!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
;
...
...
src/assets/styles/global.scss
View file @
2876044f
...
...
@@ -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
src/plugins/icon.ts
View file @
2876044f
...
...
@@ -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
{
...
...
src/router/router.ts
View file @
2876044f
...
...
@@ -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'
),
...
...
src/services/OrgService.ts
View file @
2876044f
...
...
@@ -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
src/store/menu.ts
View file @
2876044f
...
...
@@ -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'
...
...
src/views/Index.vue
View file @
2876044f
...
...
@@ -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
;
}
...
...
src/views/Market/Index.vue
View file @
2876044f
...
...
@@ -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
;
...
...
src/views/TeamCenter/Dissolution.vue
0 → 100644
View file @
2876044f
<
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
src/views/TeamCenter/Index.vue
View file @
2876044f
<
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>
...
...
src/views/TeamCenter/OrgInfo.vue
0 → 100644
View file @
2876044f
<
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
src/views/TemplateCenter/Index.vue
View file @
2876044f
...
...
@@ -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
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment