Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CRM
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
华国豪
CRM
Commits
8baa1242
Commit
8baa1242
authored
Nov 05, 2024
by
youjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/huaguohao/crm
parents
fb93d892
3d2bd0ff
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1318 additions
and
1247 deletions
+1318
-1247
HomeNavLeft.vue
src/components/HomeNav/HomeNavLeft.vue
+155
-145
HomeNavTop.vue
src/components/HomeNav/HomeNavTop.vue
+140
-124
contractManagement.vue
src/components/contractManagement/contractManagement.vue
+2
-7
orderProfits.vue
src/components/customerManage/orderProfits.vue
+651
-647
Agreement copy.vue
src/components/guestManagement/Agreement copy.vue
+53
-47
Agreement.vue
src/components/guestManagement/Agreement.vue
+70
-58
finance.vue
src/components/guestManagement/finance.vue
+1
-1
domainManager.js
src/plugins/domainManager.js
+33
-27
index.js
src/plugins/index.js
+105
-122
customerField.vue
src/views/customerSet/components/customerField.vue
+65
-61
index.vue
src/views/index.vue
+7
-4
login.vue
src/views/login.vue
+36
-4
No files found.
src/components/HomeNav/HomeNavLeft.vue
View file @
8baa1242
<
style
>
<
style
>
.home-nav
{
.home-nav
{
width
:
100%
;
width
:
100%
;
height
:
100%
;
height
:
100%
;
/* font-family: perfectFont; */
/* font-family: perfectFont; */
user-select
:
none
;
user-select
:
none
;
}
}
.log-box
{
width
:
100%
;
.log-box
{
height
:
13.19%
;
width
:
100%
;
}
height
:
13.19%
;
.log-box
{
}
background-color
:
#f4f5f9
;
}
.log-box
{
.log-box
>
div
{
background-color
:
#f4f5f9
;
height
:
100%
;
}
width
:
100%
;
background
:
#3d3b4f
;
.log-box
>
div
{
/* border-radius:0px 40px 40px 0px; */
height
:
100%
;
display
:
flex
;
width
:
100%
;
align-items
:
center
;
background
:
#3d3b4f
;
justify-content
:
center
;
/* border-radius:0px 40px 40px 0px; */
}
display
:
flex
;
.log-box
img
{
align-items
:
center
;
width
:
42px
;
justify-content
:
center
;
}
}
.home-nav
.home-menu-box
{
height
:
86.81%
;
.log-box
img
{
overflow
:
hidden
;
width
:
42px
;
}
}
.home-nav
.home-menu
{
padding
:
0
8px
;
.home-nav
.home-menu-box
{
height
:
100%
;
height
:
86.81%
;
overflow-y
:
scroll
;
overflow
:
hidden
;
}
}
.home-nav
.home-menu
.home-menu-item
{
color
:
rgba
(
255
,
255
,
255
,
1
);
.home-nav
.home-menu
{
font-size
:
13px
;
padding
:
0
8px
;
cursor
:
pointer
;
height
:
100%
;
transition
:
all
linear
0.2s
;
overflow-y
:
scroll
;
background-color
:
#f4f5f9
;
}
border-radius
:
4px
;
overflow
:
hidden
;
.home-nav
.home-menu
.home-menu-item
{
font-family
:
"perfectFont"
;
color
:
rgba
(
255
,
255
,
255
,
1
);
}
font-size
:
13px
;
.home-nav
.home-menu
.home-menu-item
>
div
{
cursor
:
pointer
;
padding
:
0
0
0
15px
;
transition
:
all
linear
0.2s
;
background-color
:
#3d3b4f
;
background-color
:
#f4f5f9
;
height
:
50px
;
border-radius
:
4px
;
line-height
:
50px
;
overflow
:
hidden
;
}
font-family
:
"perfectFont"
;
.home-nav
.home-menu
.home-menu-item.active
{
}
background-color
:
#3d3b4f
;
}
.home-nav
.home-menu
.home-menu-item
>
div
{
.home-nav
.home-menu
.home-menu-item.active
>
div
{
padding
:
0
0
0
15px
;
/* font-weight: bold; */
background-color
:
#3d3b4f
;
color
:
#fff
;
height
:
50px
;
opacity
:
1
;
line-height
:
50px
;
transition
:
all
linear
0.2s
;
}
background-color
:
#409efe
;
/* border-radius: 19px 0 0 19px; */
.home-nav
.home-menu
.home-menu-item.active
{
}
background-color
:
#3d3b4f
;
.home-nav
.home-menu
.home-menu-item
>
div
.iconfont
{
}
padding-right
:
10px
;
}
.home-nav
.home-menu
.home-menu-item.active
>
div
{
/* font-weight: bold; */
color
:
#fff
;
opacity
:
1
;
transition
:
all
linear
0.2s
;
background-color
:
#409efe
;
/* border-radius: 19px 0 0 19px; */
}
.home-nav
.home-menu
.home-menu-item
>
div
.iconfont
{
padding-right
:
10px
;
}
</
style
>
</
style
>
<
template
>
<
template
>
<div
class=
"home-nav"
>
<div
class=
"home-nav"
>
...
@@ -73,13 +84,8 @@
...
@@ -73,13 +84,8 @@
</div>
</div>
<div
class=
"home-menu-box"
>
<div
class=
"home-menu-box"
>
<ul
class=
"home-menu"
>
<ul
class=
"home-menu"
>
<li
<li
class=
"home-menu-item"
v-for=
"(item, index) in navList"
:key=
"index"
class=
"home-menu-item"
:class=
"[index === activeIndex ? 'active' : '']"
@
click=
"changeMenu(item, index)"
>
v-for=
"(item, index) in navList"
:key=
"index"
:class=
"[index === activeIndex ? 'active' : '']"
@
click=
"changeMenu(item, index)"
>
<div>
<div>
<i
class=
"iconfont"
:class=
"[item.MenuStyle ? JSON.parse(item.MenuStyle).icon : '']"
></i>
<i
class=
"iconfont"
:class=
"[item.MenuStyle ? JSON.parse(item.MenuStyle).icon : '']"
></i>
<span>
{{
item
.
MenuName
}}
</span>
<span>
{{
item
.
MenuName
}}
</span>
...
@@ -87,82 +93,86 @@
...
@@ -87,82 +93,86 @@
</li>
</li>
</ul>
</ul>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
activeIndex
:
0
,
activeIndex
:
0
,
navList
:
[
navList
:
[{
{
class
:
"iconfont iconyibiaopan"
,
class
:
"iconfont iconyibiaopan"
,
name
:
"仪表盘"
,
name
:
"仪表盘"
,
path
:
"/Home"
,
path
:
"/Home"
,
},
},
{
{
class
:
"iconfont icondaiban"
,
class
:
"iconfont icondaiban"
,
name
:
"待办事项"
,
name
:
"待办事项"
,
path
:
"/waitMatter"
,
path
:
"/waitMatter"
,
},
},
{
{
class
:
"iconfont iconxiansuo"
,
class
:
"iconfont iconxiansuo"
,
name
:
"线索"
,
name
:
"线索"
,
path
:
"/clueManagement"
,
path
:
"/clueManagement"
,
},
},
{
{
class
:
"iconfont iconkehu"
,
class
:
"iconfont iconkehu"
,
name
:
"客户"
,
name
:
"客户"
,
path
:
"/customerManage"
,
path
:
"/customerManage"
,
},
},
{
{
class
:
"iconfont iconkehu1"
,
class
:
"iconfont iconkehu1"
,
name
:
"联系人"
,
name
:
"联系人"
,
path
:
"/contactsManagement"
,
path
:
"/contactsManagement"
,
},
},
{
{
class
:
"iconfont icongonghaiguanli"
,
class
:
"iconfont icongonghaiguanli"
,
name
:
"公海"
,
name
:
"公海"
,
path
:
"/watersManagement"
,
path
:
"/watersManagement"
,
},
},
{
{
class
:
"iconfont iconshangji"
,
class
:
"iconfont iconshangji"
,
name
:
"商机"
,
name
:
"商机"
,
path
:
"/businessManagement"
,
path
:
"/businessManagement"
,
},
},
{
{
class
:
"iconfont iconhetong"
,
class
:
"iconfont iconhetong"
,
name
:
"合同"
,
name
:
"合同"
,
},
},
{
{
class
:
"iconfont iconchanpin1"
,
class
:
"iconfont iconchanpin1"
,
name
:
"产品"
,
name
:
"产品"
,
},
},
{
{
class
:
"iconfont icondingdan1"
,
class
:
"iconfont icondingdan1"
,
name
:
"订单"
,
name
:
"订单"
,
},
},
],
],
};
};
},
},
mounted
()
{
mounted
()
{
let
userInfo
=
this
.
getLocalStorage
();
let
userInfo
=
this
.
getLocalStorage
();
this
.
userInfo
=
userInfo
;
this
.
userInfo
=
userInfo
;
if
(
userInfo
&&
userInfo
.
UserMenu
&&
userInfo
.
UserMenu
.
length
>
0
)
{
this
.
navList
=
userInfo
.
UserMenu
[
0
].
ChildMenu
[
0
].
ChildMenu
;
this
.
navList
=
userInfo
.
UserMenu
[
0
].
ChildMenu
[
0
].
ChildMenu
;
let
$this
=
this
;
}
this
.
MsgBus
.
$on
(
"setLeftNav"
,
function
(
val
)
{
$this
.
activeIndex
=
0
;
let
$this
=
this
;
$this
.
navList
=
userInfo
.
UserMenu
[
0
].
ChildMenu
[
val
].
ChildMenu
;
this
.
MsgBus
.
$on
(
"setLeftNav"
,
function
(
val
)
{
});
$this
.
activeIndex
=
0
;
},
if
(
userInfo
&&
userInfo
.
UserMenu
&&
userInfo
.
UserMenu
.
length
>
0
)
{
methods
:
{
$this
.
navList
=
userInfo
.
UserMenu
[
0
].
ChildMenu
[
val
].
ChildMenu
;
changeMenu
:
function
(
item
,
ind
)
{
}
this
.
activeIndex
=
ind
;
this
.
$router
.
push
({
path
:
item
.
MenuUrl
,
});
});
},
},
},
methods
:
{
};
changeMenu
:
function
(
item
,
ind
)
{
</
script
>
this
.
activeIndex
=
ind
;
this
.
$router
.
push
({
path
:
item
.
MenuUrl
,
});
},
},
};
</
script
>
\ No newline at end of file
src/components/HomeNav/HomeNavTop.vue
View file @
8baa1242
<
style
>
<
style
>
.nav-right
{
.nav-right
{
height
:
100%
;
height
:
100%
;
margin
:
0
30px
;
margin
:
0
30px
;
display
:
flex
;
display
:
flex
;
font-family
:
perfectFont
;
font-family
:
perfectFont
;
user-select
:
none
;
user-select
:
none
;
}
}
.nav-right
.nav-right-menu
,
.nav-right
.nav-right-info
{
.nav-right
.nav-right-menu
,
display
:
flex
;
.nav-right
.nav-right-info
{
align-items
:
center
;
display
:
flex
;
height
:
100%
;
align-items
:
center
;
flex
:
1
;
height
:
100%
;
}
flex
:
1
;
.nav-right
.nav-right-menu
ul
{
}
padding
:
0
;
margin
:
0
;
.nav-right
.nav-right-menu
ul
{
display
:
flex
;
padding
:
0
;
width
:
100%
;
margin
:
0
;
height
:
100%
;
display
:
flex
;
}
width
:
100%
;
.nav-right
.nav-right-menu
ul
li
{
height
:
100%
;
line-height
:
56px
;
}
display
:
inline-block
;
border-bottom
:
3px
solid
rgba
(
13
,
36
,
129
,
0
);
.nav-right
.nav-right-menu
ul
li
{
margin
:
0
20px
;
line-height
:
56px
;
color
:
#666
;
display
:
inline-block
;
font-size
:
16px
;
border-bottom
:
3px
solid
rgba
(
13
,
36
,
129
,
0
);
cursor
:
pointer
;
margin
:
0
20px
;
font-family
:
perfectFont
;
color
:
#666
;
white-space
:
nowrap
;
font-size
:
16px
;
overflow
:
hidden
;
cursor
:
pointer
;
text-overflow
:
ellipsis
;
font-family
:
perfectFont
;
}
white-space
:
nowrap
;
.nav-right
.nav-right-menu
ul
li
:first-child
{
overflow
:
hidden
;
margin-left
:
0px
;
text-overflow
:
ellipsis
;
}
}
.nav-right
.nav-right-menu
ul
li
.active
{
color
:
#409efe
;
.nav-right
.nav-right-menu
ul
li
:first-child
{
border-bottom-color
:
#409efe
;
margin-left
:
0px
;
font-family
:
pingfangR
;
}
}
.nav-right
.nav-right-menu
ul
li
i
{
.nav-right
.nav-right-menu
ul
li
.active
{
font-size
:
16px
;
color
:
#409efe
;
margin-right
:
5px
;
border-bottom-color
:
#409efe
;
}
font-family
:
pingfangR
;
.nav-right
.nav-right-info
{
}
flex
:
unset
;
width
:
240px
;
.nav-right
.nav-right-menu
ul
li
i
{
justify-content
:
flex-end
;
font-size
:
16px
;
margin-right
:
5px
;
}
}
.nav-right
.nav-right-info
.right-item
{
text-align
:
right
;
.nav-right
.nav-right-info
{
padding-left
:
20px
;
flex
:
unset
;
display
:
flex
;
width
:
240px
;
flex-wrap
:
nowrap
;
justify-content
:
flex-end
;
align-items
:
center
;
}
}
/* .nav-right .nav-right-info .right-item:last-child{
.nav-right
.nav-right-info
.right-item
{
text-align
:
right
;
padding-left
:
20px
;
display
:
flex
;
flex-wrap
:
nowrap
;
align-items
:
center
;
}
/* .nav-right .nav-right-info .right-item:last-child{
margin: 0px;
margin: 0px;
} */
} */
.nav-right
.nav-right-info
.right-item
img
{
.nav-right
.nav-right-info
.right-item
img
{
width
:
34px
;
width
:
34px
;
height
:
34px
;
height
:
34px
;
border-radius
:
100%
;
border-radius
:
100%
;
}
}
.nav-right
.nav-right-info
.right-item
.welcomne-txt
{
font-size
:
12px
;
.nav-right
.nav-right-info
.right-item
.welcomne-txt
{
color
:
#bbb
;
font-size
:
12px
;
margin-right
:
5px
;
color
:
#bbb
;
white-space
:
nowrap
;
margin-right
:
5px
;
}
white-space
:
nowrap
;
.nav-right
.nav-right-info
.right-item
.usr-name
{
}
font-size
:
16px
;
font-weight
:
bold
;
.nav-right
.nav-right-info
.right-item
.usr-name
{
color
:
black
;
font-size
:
16px
;
white-space
:
nowrap
;
font-weight
:
bold
;
}
color
:
black
;
.nav-right
.nav-right-info
.right-item
i
{
white-space
:
nowrap
;
font-size
:
20px
;
}
color
:
#409efe
;
}
.nav-right
.nav-right-info
.right-item
i
{
font-size
:
20px
;
color
:
#409efe
;
}
</
style
>
</
style
>
<
template
>
<
template
>
<div
class=
"nav-right"
>
<div
class=
"nav-right"
>
<div
class=
"nav-right-menu"
>
<div
class=
"nav-right-menu"
>
<ul>
<ul>
<li
:class=
"
{'active':chosenMenuId==item.MenuId}" v-for="(item, index) in menuList[0].ChildMenu" :key="index" @click="chosenFirstLeaveMenu(item, index)">
<template
v-if=
"menuList&&menuList.length>0"
>
<i
class=
"iconfont"
:class=
"[item.MenuStyle ? JSON.parse(item.MenuStyle).icon : '']"
></i>
{{
item
.
MenuName
}}
<li
:class=
"
{'active':chosenMenuId==item.MenuId}" v-for="(item, index) in menuList[0].ChildMenu" :key="index"
</li>
@click="chosenFirstLeaveMenu(item, index)">
<i
class=
"iconfont"
:class=
"[item.MenuStyle ? JSON.parse(item.MenuStyle).icon : '']"
></i>
{{
item
.
MenuName
}}
</li>
</
template
>
</ul>
</ul>
</div>
</div>
<div
class=
"nav-right-info"
>
<div
class=
"nav-right-info"
>
...
@@ -101,11 +117,7 @@
...
@@ -101,11 +117,7 @@
<span
class=
"usr-name"
>
{{userInfo.EmName}}
</span>
<span
class=
"usr-name"
>
{{userInfo.EmName}}
</span>
</div>
</div>
<div
class=
"right-item"
>
<div
class=
"right-item"
>
<el-popover
<el-popover
placement=
"top"
width=
"160"
trigger=
"click"
v-model=
"visible"
>
placement=
"top"
width=
"160"
trigger=
"click"
v-model=
"visible"
>
<ul
style=
"padding:0;margin:0;display:block;"
>
<ul
style=
"padding:0;margin:0;display:block;"
>
<li
style=
"padding:0;margin:0;color:#000;cursor: pointer;"
@
click=
"signout"
>
<li
style=
"padding:0;margin:0;color:#000;cursor: pointer;"
@
click=
"signout"
>
<i
class=
"iconfont icontuichu"
></i>
<i
class=
"iconfont icontuichu"
></i>
...
@@ -121,41 +133,45 @@
...
@@ -121,41 +133,45 @@
</div>
</div>
</template>
</template>
<
script
>
<
script
>
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
activeIndex
:
0
,
activeIndex
:
0
,
value
:
0
,
value
:
0
,
menuList
:
[{
ChildMenu
:
[]
}],
menuList
:
[{
chosenMenuId
:
0
,
ChildMenu
:
[]
userInfo
:
{
}],
EmName
:
""
,
chosenMenuId
:
0
,
Icon
:
""
,
userInfo
:
{
},
EmName
:
""
,
visible
:
false
,
Icon
:
""
,
};
},
},
visible
:
false
,
mounted
()
{
};
let
userInfo
=
this
.
getLocalStorage
();
this
.
userInfo
=
userInfo
;
this
.
menuList
=
userInfo
.
UserMenu
;
this
.
chosenMenuId
=
userInfo
.
UserMenu
[
0
].
ChildMenu
[
0
].
MenuId
;
},
methods
:
{
chosenFirstLeaveMenu
(
item
,
index
)
{
this
.
chosenMenuId
=
item
.
MenuId
;
this
.
MsgBus
.
$emit
(
"setLeftNav"
,
index
);
this
.
$router
.
push
({
path
:
item
.
ChildMenu
[
0
].
MenuUrl
,
});
},
},
errorHandler
()
{
mounted
()
{
return
true
;
let
userInfo
=
this
.
getLocalStorage
();
this
.
userInfo
=
userInfo
;
if
(
userInfo
&&
userInfo
.
UserMenu
&&
userInfo
.
UserMenu
.
length
>
0
)
{
this
.
menuList
=
userInfo
.
UserMenu
;
this
.
chosenMenuId
=
userInfo
.
UserMenu
[
0
].
ChildMenu
[
0
].
MenuId
;
}
},
},
signout
()
{
methods
:
{
window
.
localStorage
.
removeItem
(
"userInfo"
);
chosenFirstLeaveMenu
(
item
,
index
)
{
this
.
$router
.
push
(
"/login"
);
this
.
chosenMenuId
=
item
.
MenuId
;
this
.
MsgBus
.
$emit
(
"setLeftNav"
,
index
);
this
.
$router
.
push
({
path
:
item
.
ChildMenu
[
0
].
MenuUrl
,
});
},
errorHandler
()
{
return
true
;
},
signout
()
{
window
.
localStorage
.
removeItem
(
"userInfo"
);
this
.
$router
.
push
(
"/login"
);
},
},
},
},
};
};
</
script
>
</
script
>
\ No newline at end of file
src/components/contractManagement/contractManagement.vue
View file @
8baa1242
...
@@ -312,13 +312,8 @@
...
@@ -312,13 +312,8 @@
this
.
dataList
=
res
.
data
.
data
.
pageData
;
this
.
dataList
=
res
.
data
.
data
.
pageData
;
this
.
total
=
res
.
data
.
data
.
count
;
this
.
total
=
res
.
data
.
data
.
count
;
this
.
dataList
.
forEach
(
x
=>
{
this
.
dataList
.
forEach
(
x
=>
{
// let Url = "http://yx.oytour.com";
let
Url
=
this
.
domainManager
().
erpRoutingUrl
;
let
Url
=
"http://testerp.oytour.com"
;
Url
=
Url
+
'/#/TravelContractConfirm?ContractId='
+
x
.
ID
;
if
(
this
.
isOnline
())
{
Url
=
Url
+
'/#/TravelContractConfirm?ContractId='
+
x
.
ID
;
}
else
{
Url
=
Url
+
":8081/"
+
'#/TravelContractConfirm?ContractId='
+
x
.
ID
;
}
x
.
Url
=
Url
;
x
.
Url
=
Url
;
})
})
this
.
tableData
=
this
.
dataList
this
.
tableData
=
this
.
dataList
...
...
src/components/customerManage/orderProfits.vue
View file @
8baa1242
This diff is collapsed.
Click to expand it.
src/components/guestManagement/Agreement copy.vue
View file @
8baa1242
This diff is collapsed.
Click to expand it.
src/components/guestManagement/Agreement.vue
View file @
8baa1242
This diff is collapsed.
Click to expand it.
src/components/guestManagement/finance.vue
View file @
8baa1242
...
@@ -241,7 +241,7 @@ export default {
...
@@ -241,7 +241,7 @@ export default {
let
href
let
href
let
url
let
url
if
(
this
.
isOnline
()){
if
(
this
.
isOnline
()){
url
=
'http://
yx
.oytour.com/#/'
url
=
'http://
admin
.oytour.com/#/'
}
else
{
}
else
{
url
=
'http://localhost:8081/#/'
url
=
'http://localhost:8081/#/'
}
}
...
...
src/plugins/domainManager.js
View file @
8baa1242
const
isOnline
=
function
()
{
const
isOnline
=
function
()
{
return
process
.
env
.
NODE_ENV
!==
'development'
;
return
process
.
env
.
NODE_ENV
!==
'development'
;
}
}
export
default
function
()
{
export
default
function
()
{
//CRM API
//CRM API
let
domainUrl
=
""
;
let
domainUrl
=
"http://192.168.5.46:5003"
;
// domainUrl = "http://192.168.10.46:8500";
// domainUrl = "http://192.168.10.128:5003";
domainUrl
=
"http://192.168.10.9:8098"
;
// domainUrl = "http://crm.oytour.com"
//domainUrl = "http://localhost:5003";
let
locationName
=
window
.
location
.
hostname
;
//旅游ERPApi
//旅游ERPApi
let
domainPostUrl
=
""
let
erpApiUrl
=
"http://192.168.5.46"
domainPostUrl
=
"http://192.168.10.9:8083"
;
let
erpSiteUrl
=
""
;
//ERP前端域名
//domainPostUrl = "http://192.168.10.46";
let
javaUrl
=
"http://192.168.10.215:9000"
;
//javaapi域名获取优惠卷
let
ViittoFileUrl
=
"http://192.168.5.214:8130"
;
//文件预览站点
let
UploadUrl
=
"http://192.168.5.214:8120"
;
//文件上传站点
if
(
isOnline
())
{
if
(
isOnline
())
{
if
(
window
.
location
.
host
.
indexOf
(
'fcrmyx.oytour.com'
)
!=
-
1
)
{
domainUrl
=
"http://crm.oytour.com"
;
domainUrl
=
"http://crm.oytour.com"
erpApiUrl
=
"http://reborn.oytour.com"
;
domainPostUrl
=
"http://reborn.oytour.com"
javaUrl
=
"http://efficient.oytour.com"
;
}
else
{
ViittoFileUrl
=
"http://imgfile.oytour.com"
;
domainUrl
=
"http://testcrm.oytour.com"
UploadUrl
=
"http://uploadfile.oytour.com"
;
domainPostUrl
=
"http://testapi.oytour.com"
}
var
storageUser
=
this
.
getLocalStorage
();
if
(
isOnline
())
{
erpSiteUrl
=
"http://admin.oytour.com/#/"
;
if
(
storageUser
&&
storageUser
.
ERPUrl
)
{
erpSiteUrl
=
storageUser
.
ERPUrl
+
"/#/"
;
}
}
else
{
erpSiteUrl
=
"http://localhost:8080/#/"
;
if
(
storageUser
&&
storageUser
.
ERPUrl
)
{
erpSiteUrl
=
storageUser
.
ERPUrl
+
"/#/"
;
}
}
}
}
var
obj
=
{
var
obj
=
{
//主地址
DownLoadContractUrl
:
erpApiUrl
,
DomainUrl
:
domainUrl
,
DownLoadContractUrl
:
domainPostUrl
,
//阿里服务器地址
//阿里服务器地址
AliUrl
:
"https://reborndev.oss-cn-hangzhou.aliyuncs.com"
,
AliUrl
:
"https://reborndev.oss-cn-hangzhou.aliyuncs.com"
,
//CRMApi地址
//CRMApi地址
PostUrl
:
domainUrl
,
PostUrl
:
domainUrl
,
//旅游ERPApi地址
//旅游ERPApi地址
ERPApiUrl
:
domainPost
Url
+
"/api/common/post"
,
ERPApiUrl
:
erpApi
Url
+
"/api/common/post"
,
ERPApiUrlFile
:
domainPost
Url
+
"/api/file/GetFileFromWebApi"
,
ERPApiUrlFile
:
erpApi
Url
+
"/api/file/GetFileFromWebApi"
,
javaUrl
:
locationName
.
indexOf
(
'testb2b'
)
==
-
1
?
"http://efficient.oytour.com"
:
locationName
.
indexOf
(
'testb2b.oytour.com'
)
!==
-
1
?
"http://47.96.12.235:9001"
:
"http://192.168.10.215:9000"
,
javaUrl
:
javaUrl
,
ViittoFileUrl
:
locationName
.
indexOf
(
'oytour'
)
!==
-
1
||
locationName
.
indexOf
(
'testb2b.oytour.com'
)
!==
-
1
?
"http://staticfile.oytour.com"
:
'http://192.168.10.214:8130'
,
ViittoFileUrl
:
ViittoFileUrl
,
UploadUrl
:
locationName
.
indexOf
(
'oytour'
)
!==
-
1
||
locationName
.
indexOf
(
'testb2b.oytour.com'
)
!==
-
1
?
"http://uploadfile.oytour.com"
:
"http://192.168.10.214:8120"
,
UploadUrl
:
UploadUrl
,
erpRoutingUrl
:
locationName
.
indexOf
(
'oytour'
)
!==
-
1
||
locationName
.
indexOf
(
'testb2b.oytour.com'
)
!==
-
1
?
"http://yx.oytour.com/#/"
:
"http://localhost:8081/#/"
// "http://www.test.com:8081/#/",
erpRoutingUrl
:
erpSiteUrl
};
};
return
obj
;
return
obj
;
}
}
\ No newline at end of file
src/plugins/index.js
View file @
8baa1242
This diff is collapsed.
Click to expand it.
src/views/customerSet/components/customerField.vue
View file @
8baa1242
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<div
class=
"q-pa-md customerField"
>
<div
class=
"q-pa-md customerField"
>
<div
style=
"text-align: right;"
>
<div
style=
"text-align: right;"
>
<el-button
type=
"primary"
style=
"float:right;margin-bottom: 10px;"
size=
"sm"
class=
"q-mr-md"
icon=
"plus"
<el-button
type=
"primary"
style=
"float:right;margin-bottom: 10px;"
size=
"sm"
class=
"q-mr-md"
icon=
"plus"
@
click=
"goaddfield()"
>
新增字段
</el-button>
@
click=
"goaddfield()"
>
新增字段
</el-button>
</div>
</div>
<table
class=
"payTable"
>
<table
class=
"payTable"
>
<thead>
<thead>
...
@@ -21,58 +21,61 @@
...
@@ -21,58 +21,61 @@
<td
:colspan=
"8"
align=
"center"
>
暂无数据
</td>
<td
:colspan=
"8"
align=
"center"
>
暂无数据
</td>
</tr>
</tr>
<!--
<draggable
v-model=
"data"
tag=
"tbody"
item-key=
"Id"
:move=
"getdata"
@
update=
"datadragEnd"
>
-->
<!--
<draggable
v-model=
"data"
tag=
"tbody"
item-key=
"Id"
:move=
"getdata"
@
update=
"datadragEnd"
>
-->
<template>
<template>
<tr
v-for=
"element in data"
:key=
"element.Id"
>
<tr
v-for=
"element in data"
:key=
"element.Id"
>
<td><span>
{{
element
.
Name
}}
</span></td>
<td><span>
{{
element
.
Name
}}
</span></td>
<td>
<td>
<span
v-if=
"element.IsSystem!=1"
>
{{
element
.
TypeName
}}
</span>
<span
v-if=
"element.IsSystem!=1"
>
{{
element
.
TypeName
}}
</span>
<span
v-if=
"element.IsSystem==1"
>
系统字段
</span>
<span
v-if=
"element.IsSystem==1"
>
系统字段
</span>
</td>
</td>
<td><span>
{{
element
.
DeptName
}}
</span></td>
<td><span>
{{
element
.
DeptName
}}
</span></td>
<td>
<td>
<q-toggle
v-if=
"element.IsLock==1"
v-model=
"element.Enable"
:true-value=
"1"
:false-value=
"2"
<q-toggle
v-if=
"element.IsLock==1"
v-model=
"element.Enable"
:true-value=
"1"
:false-value=
"2"
icon=
"lock"
disable
/>
icon=
"lock"
disable
/>
<q-toggle
v-else
v-model=
"element.Enable"
:true-value=
"1"
:false-value=
"2"
<q-toggle
v-else
v-model=
"element.Enable"
:true-value=
"1"
:false-value=
"2"
@
update:model-value=
"godelete(element,1)"
/>
@
update:model-value=
"godelete(element,1)"
/>
</td>
</td>
<td>
<td>
<q-toggle
v-model=
"element.Required"
:true-value=
"1"
:false-value=
"2"
<q-toggle
v-model=
"element.Required"
:true-value=
"1"
:false-value=
"2"
@
update:model-value=
"godelete(element,2)"
/>
@
update:model-value=
"godelete(element,2)"
/>
</td>
</td>
<td>
<td>
<div>
{{
element
.
UpdateByName
}}
</div>
<div>
{{
element
.
UpdateByName
}}
</div>
<div>
{{
element
.
UpdateTime
}}
</div>
<div>
{{
element
.
UpdateTime
}}
</div>
</td>
</td>
<td>
<td>
<el-button
flat
size=
"xs"
icon=
"edit"
style=
"font-weight:400;color: #3FC4FF"
class=
"q-mr-xs"
<el-button
flat
size=
"xs"
icon=
"edit"
style=
"font-weight:400;color: #3FC4FF"
class=
"q-mr-xs"
@
click=
"goedit(element)"
>
编辑
</el-button>
@
click=
"goedit(element)"
>
编辑
</el-button>
<el-button
v-if=
'element.IsDefault!=1'
flat
size=
"xs"
icon=
"delete"
color=
"negative"
<el-button
v-if=
'element.IsDefault!=1'
flat
size=
"xs"
icon=
"delete"
color=
"negative"
class=
"q-mr-xs"
@
click=
"godelete(element,3)"
>
删除
</el-button>
class=
"q-mr-xs"
@
click=
"godelete(element,3)"
>
删除
</el-button>
</td>
</td>
<td>
<td>
<i
class=
"iconfont icon-drag"
style=
"font-size: 20px;color: #777;"
></i>
<i
class=
"iconfont icon-drag"
style=
"font-size: 20px;color: #777;"
></i>
</td>
</td>
</tr>
</tr>
</
template
>
</
template
>
<!-- </draggable> -->
<!-- </draggable> -->
</table>
</table>
<div>
<div>
<el-dialog
:visible
.
sync=
"Isadd"
persistent
title=
"新建/修改字段"
>
<el-dialog
:visible
.
sync=
"Isadd"
persistent
title=
"新建/修改字段"
>
<addfield
@
getcancel=
'getcancel'
:passobj=
"addMsg"
:passdeptl=
"deptl"
:passtabsList=
"tabsList"
<addfield
@
getcancel=
'getcancel'
:passobj=
"addMsg"
:passdeptl=
"deptl"
:passtabsList=
"tabsList"
:passcheckboxList=
"checkboxList"
></addfield>
:passcheckboxList=
"checkboxList"
></addfield>
</el-dialog>
</el-dialog>
</div>
</div>
</div>
</div>
</template>
</template>
<scr
<
script
>
<
script
>
import
draggable
from
"vuedraggable"
;
import
draggable
from
"vuedraggable"
;
import
Vue
from
'vue'
import
Vue
from
'vue'
import
addfield
from
'./addfield.vue'
import
addfield
from
'./addfield.vue'
export
default
{
export
default
{
components: { draggable, addfield },
components
:
{
draggable
,
addfield
},
data
()
{
data
()
{
return
{
return
{
data
:
[],
data
:
[],
...
@@ -98,19 +101,21 @@
...
@@ -98,19 +101,21 @@
}
}
}
}
},
},
mounted() {
mounted
()
{
this.changePage()
this
.
changePage
()
this.getCustomerFieldType()
this
.
getCustomerFieldType
()
this.getDepartList()
//获取部门
this
.
getDepartList
()
//获取部门
this.getFieldInputType()
//输入类型
this
.
getFieldInputType
()
//输入类型
},
},
methods
:
{
methods
:
{
changePage
()
{
changePage
()
{
this.apipost("/api/Scene/GetCustomerFiledList", {Enable: -1}, (res) => {
this
.
apipost
(
"/api/Scene/GetCustomerFiledList"
,
{
if (res.data.resultCode == 1) {
Enable
:
-
1
this.data = res.data.data
},
(
res
)
=>
{
}
if
(
res
.
data
.
resultCode
==
1
)
{
});
this
.
data
=
res
.
data
.
data
}
});
},
},
datadragEnd
(
e
)
{
datadragEnd
(
e
)
{
let
olddragId
=
0
let
olddragId
=
0
...
@@ -124,13 +129,11 @@
...
@@ -124,13 +129,11 @@
FiledId
:
dragId
,
FiledId
:
dragId
,
SortFiledId
:
olddragId
,
SortFiledId
:
olddragId
,
}
}
this.apipost('/api/Scene/SetCustomerFiledState',msg,(res) => {
this
.
apipost
(
'/api/Scene/SetCustomerFiledState'
,
msg
,
(
res
)
=>
{
if (res.data.Code == 1) {
if
(
res
.
data
.
Code
==
1
)
{}
else
{
//如果移动失败 重新获取列表
} else {//如果移动失败 重新获取列表
this
.
changePage
()
this
.
changePage
()
}
}
})
})
},
},
getdata
(
e
)
{
getdata
(
e
)
{
this
.
dragId
=
e
.
draggedContext
.
element
.
Id
this
.
dragId
=
e
.
draggedContext
.
element
.
Id
...
@@ -141,7 +144,7 @@
...
@@ -141,7 +144,7 @@
FiledId
:
item
.
Id
,
FiledId
:
item
.
Id
,
SortFiledId
:
0
,
SortFiledId
:
0
,
}
}
this.apipost('/api/Scene/SetCustomerFiledState',
msg,
(res) => {
this
.
apipost
(
'/api/Scene/SetCustomerFiledState'
,
msg
,
(
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
if
(
res
.
data
.
Code
==
1
)
{
this
.
$message
.
success
({
this
.
$message
.
success
({
icon
:
'iconfont icon-chenggong'
,
icon
:
'iconfont icon-chenggong'
,
...
@@ -151,13 +154,13 @@
...
@@ -151,13 +154,13 @@
position
:
'top'
position
:
'top'
})
})
this
.
changePage
()
this
.
changePage
()
} else {//如果移动失败 重新获取列表
}
else
{
//如果移动失败 重新获取列表
}
}
})
})
},
},
godelete
(
item
,
type
)
{
godelete
(
item
,
type
)
{
let
text
=
''
let
text
=
''
if (type == 1) {//tyep等于1和2的时候 先让弹出提示 然后再给予掉接口 所以把原本的值暂时先赋值给本身
if
(
type
==
1
)
{
//tyep等于1和2的时候 先让弹出提示 然后再给予掉接口 所以把原本的值暂时先赋值给本身
text
=
'确定修改启用状态'
text
=
'确定修改启用状态'
if
(
item
.
Enable
==
2
)
{
if
(
item
.
Enable
==
2
)
{
item
.
Enable
=
1
item
.
Enable
=
1
...
@@ -190,7 +193,7 @@
...
@@ -190,7 +193,7 @@
});
});
},
},
getCustomerFieldType
()
{
getCustomerFieldType
()
{
this.apipost('/api/Scene/GetCustomerFieldTypeEnumList',
{},
(res) => {
this
.
apipost
(
'/api/Scene/GetCustomerFieldTypeEnumList'
,
{},
(
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
if
(
res
.
data
.
Code
==
1
)
{
this
.
tabsList
=
res
.
data
.
Data
this
.
tabsList
=
res
.
data
.
Data
this
.
tabsList
.
forEach
(
x
=>
{
this
.
tabsList
.
forEach
(
x
=>
{
...
@@ -205,7 +208,6 @@
...
@@ -205,7 +208,6 @@
},
},
goaddfield
()
{
goaddfield
()
{
this
.
Isadd
=
true
;
this
.
Isadd
=
true
;
console.log('@vue/composition-api goaddfield', this.Isadd)
this
.
addMsg
=
{
this
.
addMsg
=
{
Id
:
0
,
Id
:
0
,
Type
:
1
,
Type
:
1
,
...
@@ -232,14 +234,16 @@
...
@@ -232,14 +234,16 @@
}
}
},
},
getDepartList
()
{
getDepartList
()
{
this.apipost('/User/GetDeptTree',{ School_Id: 0 },(res) => {
this
.
apipost
(
'/User/GetDeptTree'
,
{
School_Id
:
0
},
(
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
if
(
res
.
data
.
Code
==
1
)
{
this
.
deptl
=
res
.
data
.
Data
this
.
deptl
=
res
.
data
.
Data
}
}
})
})
},
},
getFieldInputType
()
{
getFieldInputType
()
{
this.apipost('/api/Scene/GetCustomerFieldInputTypeEnumList', {},(res) => {
this
.
apipost
(
'/api/Scene/GetCustomerFieldInputTypeEnumList'
,
{},
(
res
)
=>
{
if
(
res
.
data
.
Code
==
1
)
{
if
(
res
.
data
.
Code
==
1
)
{
this
.
checkboxList
=
res
.
data
.
Data
this
.
checkboxList
=
res
.
data
.
Data
}
}
...
...
src/views/index.vue
View file @
8baa1242
...
@@ -175,7 +175,7 @@
...
@@ -175,7 +175,7 @@
<p><span></span>
新建场景
</p>
<p><span></span>
新建场景
</p>
<span
icon=
"el-icon-close"
></span>
<span
icon=
"el-icon-close"
></span>
</div>
</div>
<sceneBox
:LableType=
"LableType"
:sceneType=
"sceneType"
:sceneDataList=
"sceneDataList"
/>
<sceneBox
:LableType=
"LableType"
:sceneType=
"sceneType"
:sceneDataList=
"sceneDataList"
/>
</el-dialog>
</el-dialog>
<!-- 高级筛选修改 -->
<!-- 高级筛选修改 -->
<el-dialog
:visible
.
sync=
"sceneEditBoxShow"
:close-on-click-modal=
"false"
width=
"800px"
<el-dialog
:visible
.
sync=
"sceneEditBoxShow"
:close-on-click-modal=
"false"
width=
"800px"
...
@@ -443,7 +443,7 @@
...
@@ -443,7 +443,7 @@
$this
.
sceneType
=
sceneType
;
$this
.
sceneType
=
sceneType
;
$this
.
sceneDataList
=
sceneDataList
;
$this
.
sceneDataList
=
sceneDataList
;
$this
.
sceneShow
=
true
;
$this
.
sceneShow
=
true
;
});
});
this
.
MsgBus
.
$on
(
"sceneBoxClose"
,
function
()
{
this
.
MsgBus
.
$on
(
"sceneBoxClose"
,
function
()
{
$this
.
sceneShow
=
false
;
$this
.
sceneShow
=
false
;
...
@@ -564,15 +564,18 @@
...
@@ -564,15 +564,18 @@
},
},
Employee
()
{
Employee
()
{
let
msg
=
{
let
msg
=
{
RB_Group_id
:
this
.
userInfo
.
RB_Group_id
,
RB_Group_id
:
0
,
BranchId
:
-
1
,
BranchId
:
-
1
,
DepartmentId
:
0
,
DepartmentId
:
0
,
PostId
:
0
,
PostId
:
0
,
IsLeave
:
0
,
IsLeave
:
0
,
};
};
if
(
this
.
userInfo
&&
this
.
userInfo
.
RB_Group_id
)
{
msg
.
RB_Group_id
=
this
.
userInfo
.
RB_Group_id
;
}
this
.
apipost2
(
this
.
apipost2
(
"admin_get_EmployeeGetList"
,
"admin_get_EmployeeGetList"
,
this
.
msg
,
msg
,
(
res
)
=>
{
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
EmployeeList
=
res
.
data
.
data
;
this
.
EmployeeList
=
res
.
data
.
data
;
...
...
src/views/login.vue
View file @
8baa1242
...
@@ -8,7 +8,11 @@
...
@@ -8,7 +8,11 @@
<div
class=
"head-icon"
>
<div
class=
"head-icon"
>
<img
src=
"http://imgfile.oytour.com/Upload/User/636681352035115417.jpg"
/>
<img
src=
"http://imgfile.oytour.com/Upload/User/636681352035115417.jpg"
/>
</div>
</div>
<div
class=
"publisher"
>
徐总
</div>
<div
class=
"publisher"
>
<template
v-if=
"groupModel&&groupModel.GroupName&&groupModel.GroupName!=''"
>
{{
groupModel
.
ContactPersion
}}
</
template
>
</div>
<div
class=
"job"
>
总经理
</div>
<div
class=
"job"
>
总经理
</div>
<div
class=
"content"
>
職場上成功者與失敗者最大的分別就是,前者找機會,後者找藉口,今日的你痛恨每天上班「度日如年」,將來的你會感激經歷過這一切,你練成了更強大的自己,玻璃心不再怕碎。
<div
class=
"content"
>
職場上成功者與失敗者最大的分別就是,前者找機會,後者找藉口,今日的你痛恨每天上班「度日如年」,將來的你會感激經歷過這一切,你練成了更強大的自己,玻璃心不再怕碎。
</div>
</div>
...
@@ -17,7 +21,11 @@
...
@@ -17,7 +21,11 @@
</el-carousel>
</el-carousel>
</div>
</div>
<div
class=
"right-card"
>
<div
class=
"right-card"
>
<div
class=
"company"
>
四川和平国际旅行社有限公司
</div>
<div
class=
"company"
>
<
template
v-if=
"groupModel&&groupModel.GroupName&&groupModel.GroupName!=''"
>
{{
groupModel
.
GroupName
}}
</
template
>
</div>
<div
class=
"t"
>
登录
</div>
<div
class=
"t"
>
登录
</div>
<div
class=
"field_wrap"
>
<div
class=
"field_wrap"
>
<div
class=
"pwd_box"
>
<div
class=
"pwd_box"
>
...
@@ -90,6 +98,7 @@
...
@@ -90,6 +98,7 @@
pwd
:
""
,
pwd
:
""
,
isLogining
:
false
,
isLogining
:
false
,
isAutoLogin
:
false
,
isAutoLogin
:
false
,
groupModel
:
{},
};
};
},
},
created
()
{
created
()
{
...
@@ -100,7 +109,28 @@
...
@@ -100,7 +109,28 @@
this
.
pwd
=
autoLogin
?
autoLogin
.
pwd
:
""
;
this
.
pwd
=
autoLogin
?
autoLogin
.
pwd
:
""
;
this
.
isAutoLogin
=
autoLogin
?
true
:
false
;
this
.
isAutoLogin
=
autoLogin
?
true
:
false
;
},
},
mounted
()
{
this
.
getGroup
();
},
methods
:
{
methods
:
{
getGroup
()
{
//获取集团
let
Domain
=
window
.
location
.
hostname
;
if
(
this
.
isOnline
())
{
if
(
Domain
==
"fcrmyx.oytour.com"
)
{
Domain
=
"admin.oytour.com"
;
}
else
{
Domain
=
Domain
.
replace
(
"crm"
,
''
);
}
}
this
.
apipost2
(
'admin_get_GetModelByDomain'
,
{
'Domain'
:
Domain
},
res
=>
{
this
.
groupModel
=
res
.
data
.
data
;
if
(
this
.
groupModel
&&
this
.
groupModel
.
GroupName
&&
this
.
groupModel
.
GroupName
!=
''
)
{
document
.
title
=
"欢迎使用 "
+
this
.
groupModel
.
GroupName
+
" CRM系统"
;
}
},
err
=>
{})
},
goLogin
()
{
goLogin
()
{
if
(
this
.
account
==
""
)
{
if
(
this
.
account
==
""
)
{
return
this
.
$message
({
return
this
.
$message
({
...
@@ -121,13 +151,15 @@
...
@@ -121,13 +151,15 @@
};
};
if
(
!
this
.
isOnline
())
{
if
(
!
this
.
isOnline
())
{
msg
.
Domain
=
"localhost"
;
msg
.
Domain
=
"localhost"
;
}
else
{
let
currentDomain
=
window
.
location
.
hostname
;
msg
.
Domain
=
currentDomain
;
}
}
this
.
apipost
(
"/api/Login/UserLogin"
,
msg
,
(
res
)
=>
{
this
.
apipost
(
"/api/Login/UserLogin"
,
msg
,
(
res
)
=>
{
var
jsonData
=
res
.
data
;
var
jsonData
=
res
.
data
;
if
(
jsonData
.
resultCode
==
1
)
{
if
(
jsonData
.
resultCode
==
1
)
{
//登录成功
//登录成功
let
autoLogin
=
this
.
isAutoLogin
?
let
autoLogin
=
this
.
isAutoLogin
?
{
{
acc
:
this
.
account
,
acc
:
this
.
account
,
pwd
:
this
.
pwd
,
pwd
:
this
.
pwd
,
}
:
}
:
...
...
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