Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SuperMan
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
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
罗超
SuperMan
Commits
e18c8a30
Commit
e18c8a30
authored
Jan 31, 2020
by
罗超
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
工作计划功能
parent
912cb4e1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1280 additions
and
6 deletions
+1280
-6
AssetsShenpi.vue
src/components/administrative/AssetsSystem/AssetsShenpi.vue
+1
-1
index.vue
src/components/index.vue
+2
-2
mywork.vue
src/components/work/mywork.vue
+517
-0
workDetails.vue
src/components/work/workDetails.vue
+275
-0
workManager.vue
src/components/work/workManager.vue
+459
-0
index.js
src/plug/index.js
+2
-2
config.js
src/router/config.js
+24
-1
No files found.
src/components/administrative/AssetsSystem/AssetsShenpi.vue
View file @
e18c8a30
...
...
@@ -479,7 +479,7 @@ export default {
GoZcUrl
(){
let
url
=
''
;
if
(
!
this
.
isOnline
())
{
url
=
"http://
www.test
.com:8080/#/Home"
;
url
=
"http://
testerp.oytour
.com:8080/#/Home"
;
}
else
{
url
=
"http://zcyx.oytour.com/#/Home"
;
}
...
...
src/components/index.vue
View file @
e18c8a30
...
...
@@ -1965,7 +1965,7 @@ export default {
if
(
s
.
Type
==
7
){
let
url
=
""
;
if
(
!
this
.
isOnline
())
{
url
=
"http://
www.test
.com:8081/#/"
;
url
=
"http://
testerp.oytour
.com:8081/#/"
;
}
else
{
url
=
"http://yx.oytour.com/#/"
;
}
...
...
@@ -3611,7 +3611,7 @@ export default {
let
ObjInfo
=
JSON
.
stringify
(
obj
);
if
(
!
this
.
isOnline
())
{
// url="http://zcyx.oytour.com/#/Autologin?ObjInfo="+userinfo.token+"&SecretKey="+userinfo.SecretKey;
url
=
"http://
www.test
.com:8080/#/Autologin?token="
+
userinfo
.
token
+
"&SecretKey="
+
userinfo
.
SecretKey
;
url
=
"http://
testerp.oytour
.com:8080/#/Autologin?token="
+
userinfo
.
token
+
"&SecretKey="
+
userinfo
.
SecretKey
;
}
else
{
url
=
"http://zcyx.oytour.com/#/Autologin?ObjInfo="
+
userinfo
.
token
+
"&SecretKey="
+
userinfo
.
SecretKey
;
}
...
...
src/components/work/mywork.vue
0 → 100644
View file @
e18c8a30
<
style
scope
>
.circle
{
width
:
20px
;
height
:
20px
;
display
:
inline-block
;
text-align
:
center
;
background
:
grey
;
border-radius
:
20px
;
margin-right
:
5px
;
}
.circle.red
{
background
:
#fe4433
;
}
.circle.green
{
background
:
green
;
}
.circle.black
{
background
:
black
;
}
.remark
{
margin-right
:
20px
;
font-size
:
12px
;
display
:
inline-block
;
vertical-align
:
text-top
;
}
.wd100
{
width
:
100%
!important
;
}
.el-tag
+
.el-tag
{
margin-left
:
10px
;
}
.button-new-tag
{
margin-left
:
10px
;
height
:
32px
;
line-height
:
30px
;
padding-top
:
0
;
padding-bottom
:
0
;
}
.input-new-tag
{
width
:
90px
;
margin-left
:
10px
;
vertical-align
:
bottom
;
}
</
style
>
<
template
>
<div
class=
"flexOne companyManagement"
>
<div
class=
"query-box"
>
<ul>
<li>
<span>
<em>
计划状态
</em>
<el-select
v-model=
"statusValue"
placeholder=
"请选择"
@
change=
"changeStatus"
>
<el-option
label=
"不限"
value=
"-1"
></el-option>
<el-option
label=
"进行中"
value=
"0"
></el-option>
<el-option
label=
"超时未完成"
value=
"1"
></el-option>
<el-option
label=
"超时完成"
value=
"2"
></el-option>
<el-option
label=
"完成"
value=
"3"
></el-option>
<!--
<el-option
label=
"未开始"
value=
"-2"
></el-option>
-->
</el-select>
</span>
</li>
<li>
<span>
<em>
立项审批状态
</em>
<el-select
v-model=
"examineStatusValue"
placeholder=
"请选择"
@
change=
"changeStatus"
>
<el-option
label=
"不限"
value=
"-2"
></el-option>
<el-option
label=
"审批中"
value=
"0"
></el-option>
<el-option
label=
"审批通过"
value=
"1"
></el-option>
<el-option
label=
"审批驳回"
value=
"-1"
></el-option>
</el-select>
</span>
</li>
<!--
<li>
<span><em>
{{
$t
(
'admin.admin_domain'
)
}}
</em>
<el-input
@
keyup
.
enter
.
native=
"getList"
v-model=
"msg.Domain"
:placeholder=
"$t('pub.pleaseImport')"
>
</el-input>
</span>
</li>
<li>
<span><em>
{{
$t
(
'admin.admin_status'
)
}}
</em>
<el-select
v-model=
"msg.Status"
:placeholder=
"$t('pub.unlimitedSel')"
>
<el-option
:label=
"$t('pub.unlimitedSel')"
value=
''
></el-option>
<el-option
:label=
"$t('pub.openSel')"
value=
'0'
></el-option>
<el-option
:label=
"$t('pub.closeSel')"
value=
'1'
></el-option>
</el-select>
</span>
</li>
-->
<li>
<!--
<input
type=
"button"
class=
"hollowFixedBtn"
value=
"查询"
/>
-->
<input
type=
"button"
class=
"normalBtn"
value=
"新增计划"
@
click=
"add"
/>
</li>
</ul>
</div>
<div
style=
"margin:10px 0;"
>
<span
class=
"circle green"
></span>
<span
class=
"remark"
>
进行中
</span>
<span
class=
"circle red"
></span>
<span
class=
"remark"
>
超时
</span>
<span
class=
"circle black"
></span>
<span
class=
"remark"
>
完成
</span>
<span
class=
"circle"
></span>
<span
class=
"remark"
>
未开始
</span>
</div>
<table
class=
"singeRowTable"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr>
<th>
状态
</th>
<th>
标签
</th>
<th
width=
"300"
>
标题
</th>
<th>
内容概要
</th>
<th>
开始时间
</th>
<th>
截止时间
</th>
<th>
创建时间
</th>
<th>
立项审批信息
</th>
<th>
当前进度
</th>
<th>
完成审批信息
</th>
<th
width=
"200"
>
操作
</th>
</tr>
<tr
v-for=
"(item, index) in tempList"
:key=
"index"
>
<td>
<span
class=
"circle"
v-if=
"item.ExamineStatus==0||item.ExamineStatus==-1"
></span>
<span
class=
"circle green"
v-else-if=
"item.Status==0"
></span>
<span
class=
"circle red"
v-else-if=
"item.Status==1||item.Status==2"
></span>
<span
class=
"circle black"
v-else-if=
"item.Status==3"
></span>
</td>
<td>
<el-tag
v-if=
"item.Tags.length>0"
>
{{
item
.
Tags
}}
</el-tag>
</td>
<td>
{{
item
.
Title
}}
</td>
<td
width=
"250"
>
<el-tooltip
effect=
"dark"
:content=
"item.Description"
placement=
"top-start"
>
<span>
{{
item
.
Description
.
length
>
23
?
item
.
Description
.
substring
(
0
,
23
)
+
"..."
:
item
.
Description
}}
</span>
</el-tooltip>
</td>
<td>
{{
item
.
BeginTime
}}
</td>
<td>
{{
item
.
EndTime
}}
</td>
<td>
{{
item
.
CreateDate
}}
</td>
<td>
<span
v-if=
"item.ExamineStatus==0"
style=
"color:grey"
>
审批中
</span>
<span
v-else-if=
"item.ExamineStatus==1"
style=
"color:green;text-decoration: underline;"
>
已通过
</span>
<span
v-else
style=
"color:red;text-decoration: underline;"
>
已驳回
</span>
</td>
<td>
<el-progress
:text-inside=
"true"
:stroke-width=
"24"
:percentage=
"item.Progree"
status=
"success"
></el-progress>
</td>
<td>
<span
v-if=
"item.Status==2||item.Status==3"
>
<span
v-if=
"item.FinishExamineStatus==0"
style=
"color:grey"
>
审批中
</span>
<span
v-else-if=
"item.FinishExamineStatus==1"
style=
"color:green;text-decoration: underline;"
>
已通过
</span>
<span
v-else
style=
"color:red;text-decoration: underline;"
>
已驳回
</span>
</span>
</td>
<td>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"编辑"
placement=
"top-start"
v-if=
"item.ExamineStatus==0 || item.ExamineStatus==-1"
>
<el-button
@
click
.
stop=
"EditMsg(item)"
style=
"padding:4px"
type=
"primary"
icon=
"iconfont icon-bianji"
circle
></el-button>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"删除"
placement=
"top-start"
v-if=
"item.ExamineStatus==0 || item.ExamineStatus==-1"
>
<el-button
style=
"padding:4px"
type=
"danger"
icon=
"el-icon-delete"
@
click
.
stop=
"deleteItem(item.Id)"
circle
></el-button>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"详情"
placement=
"top-start"
>
<el-button
style=
"padding:4px"
type=
"info"
icon=
"el-icon-search"
@
click
.
stop=
"query(item.Id)"
circle
></el-button>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"更新进度"
placement=
"top-start"
v-if=
"item.ExamineStatus==1 && (item.Status==1 || item.Status==0)"
>
<el-button
style=
"padding:4px"
type=
"primary"
icon=
"el-icon-check"
@
click
.
stop=
"query2(item.Id)"
circle
></el-button>
</el-tooltip>
</td>
</tr>
</table>
<el-dialog
width=
"40%"
:title=
"dialogTitle"
:visible
.
sync=
"outerVisible"
:close-on-click-modal=
"false"
center
:before-close=
"closeChangeMachie"
>
<el-form
:model=
"addMsg"
:rules=
"rules"
ref=
"addMsg"
label-width=
"120px"
>
<el-form-item
class=
"wd100"
label=
"计划标题"
prop=
"Title"
>
<el-input
clearable
type=
"text"
v-model=
"addMsg.Title"
placeholder=
"请输入计划标题"
></el-input>
</el-form-item>
<el-form-item
class=
"wd100"
label=
"计划内容"
prop=
"Description"
>
<el-input
clearable
type=
"textarea"
v-model=
"addMsg.Description"
:rows=
"8"
placeholder=
"请输入计划标题"
></el-input>
</el-form-item>
<el-form-item
label=
"计划日期"
prop=
"TimeRanges"
>
<el-date-picker
v-model=
"addMsg.TimeRanges"
type=
"datetimerange"
class=
"wd100"
align=
"right"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
value-format=
"yyyy-MM-dd HH:mm"
:default-time=
"['09:30:00', '18:00:00']"
></el-date-picker>
</el-form-item>
<el-form-item
class=
"wd100"
label=
"计划标签"
>
<el-tag
:key=
"tag"
v-for=
"tag in addMsg.TempTags"
closable
:disable-transitions=
"false"
@
close=
"handleClose(tag)"
>
{{
tag
}}
</el-tag>
<el-input
class=
"input-new-tag"
v-if=
"inputVisible"
v-model=
"inputValue"
ref=
"saveTagInput"
size=
"small"
maxlength=
"6"
@
keyup
.
enter
.
native=
"handleInputConfirm"
@
blur=
"handleInputConfirm"
></el-input>
<el-button
v-else-if=
"addMsg.TempTags.length
<1
"
class=
"button-new-tag"
size=
"small"
@
click=
"showInput"
>
+ 新增标签
</el-button>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<button
class=
"hollowFixedBtn"
@
click=
"outerVisible = false,resetForm('addMsg')"
>
{{
$t
(
'pub.cancelBtn'
)
}}
</button>
<button
class=
"normalBtn"
type=
"primary"
@
click=
"submitForm('addMsg')"
>
{{
$t
(
'pub.saveBtn'
)
}}
</button>
</div>
</el-dialog>
</div>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
statusValue
:
"-1"
,
dialogTitle
:
"新增计划"
,
outerVisible
:
false
,
rules
:
{
//表单验证
Title
:
[
{
required
:
true
,
message
:
"请输入计划标题"
,
trigger
:
"blur"
}
],
Description
:
[
{
required
:
true
,
message
:
"请输入计划内容"
,
trigger
:
"blur"
}
],
TimeRanges
:
[
{
required
:
true
,
message
:
"请选择计划日期"
,
trigger
:
"blur"
}
]
},
addMsg
:
{
Id
:
"0"
,
Title
:
""
,
Description
:
""
,
TimeRanges
:
""
,
TempTags
:
[],
BeginTime
:
""
,
EndTime
:
""
,
Tags
:
""
},
inputVisible
:
false
,
inputValue
:
""
,
datas
:
[],
tempList
:
[],
examineStatusValue
:
"-2"
};
},
mounted
()
{
this
.
getList
();
},
methods
:
{
add
()
{
this
.
dialogTitle
=
"新增计划"
;
this
.
outerVisible
=
true
;
},
EditMsg
(
item
)
{
this
.
dialogTitle
=
"修改计划"
;
(
this
.
addMsg
=
{
Id
:
item
.
Id
,
Title
:
item
.
Title
,
Description
:
item
.
Description
,
TimeRanges
:
[
item
.
BeginTime
,
item
.
EndTime
],
TempTags
:
[
item
.
Tags
],
BeginTime
:
item
.
BeginTime
,
EndTime
:
item
.
EndTime
,
Tags
:
item
.
Tags
}),
(
this
.
outerVisible
=
true
);
},
changeStatus
()
{
this
.
tempList
=
[];
this
.
datas
.
forEach
(
x
=>
{
let
isAdd
=
false
;
if
(
(
this
.
statusValue
!=
-
1
&&
x
.
Status
==
this
.
statusValue
)
||
this
.
statusValue
==
-
1
)
{
isAdd
=
true
;
}
if
(
isAdd
)
{
if
(
(
this
.
examineStatusValue
!=
-
2
&&
x
.
ExamineStatus
==
this
.
examineStatusValue
)
||
this
.
examineStatusValue
==
-
2
)
{
isAdd
=
true
;
}
else
{
isAdd
=
false
;
}
}
if
(
isAdd
)
{
this
.
tempList
.
push
(
x
);
}
});
},
handleClose
(
tag
)
{
this
.
addMsg
.
TempTags
.
splice
(
this
.
addMsg
.
TempTags
.
indexOf
(
tag
),
1
);
},
showInput
()
{
this
.
inputVisible
=
true
;
this
.
$nextTick
(
_
=>
{
this
.
$refs
.
saveTagInput
.
$refs
.
input
.
focus
();
});
},
handleInputConfirm
()
{
let
inputValue
=
this
.
inputValue
;
if
(
inputValue
)
{
this
.
addMsg
.
TempTags
.
push
(
inputValue
);
}
this
.
inputVisible
=
false
;
this
.
inputValue
=
""
;
},
closeChangeMachie
(
done
)
{
this
.
resetForm
(
"addMsg"
);
done
();
},
resetForm
(
formName
)
{
//弹出框取消 初始化谈框内表单
this
.
$refs
[
formName
].
resetFields
();
this
.
addMsg
.
Id
=
"0"
;
},
submitForm
(
addMsg
)
{
//提交创建、修改表单
this
.
$refs
[
addMsg
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
addData
();
}
else
{
return
false
;
}
});
},
addData
()
{
console
.
log
(
this
.
addMsg
);
this
.
addMsg
.
BeginTime
=
this
.
addMsg
.
TimeRanges
[
0
];
this
.
addMsg
.
EndTime
=
this
.
addMsg
.
TimeRanges
[
1
];
this
.
addMsg
.
Tags
=
this
.
addMsg
.
TempTags
&&
this
.
addMsg
.
TempTags
.
length
==
1
?
this
.
addMsg
.
TempTags
[
0
]
:
""
;
//新增数据
this
.
apipost
(
"user_post_SetWork"
,
this
.
addMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
res
.
data
.
message
);
this
.
outerVisible
=
false
;
this
.
getList
();
this
.
resetForm
(
"addMsg"
);
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
//this.getList();
},
getList
()
{
this
.
apipost
(
"user_post_GetMyWork"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
//this.$message.success(res.data.message);
this
.
datas
=
res
.
data
.
data
;
this
.
tempList
=
res
.
data
.
data
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
deleteItem
(
id
)
{
this
.
apipost
(
"user_post_DeleteWork"
,
{
id
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
res
.
data
.
message
);
this
.
statusValue
=
"-1"
;
this
.
examineStatusValue
=
"-2"
;
this
.
getList
();
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
query
(
id
){
this
.
$router
.
push
({
name
:
"workDetails"
,
query
:
{
"id"
:
id
,
blank
:
'y'
}
})
},
query2
(
id
){
this
.
$router
.
push
({
name
:
"workDetails"
,
query
:
{
"id"
:
id
,
update
:
"u"
,
blank
:
'y'
}
})
}
}
};
</
script
>
src/components/work/workDetails.vue
0 → 100644
View file @
e18c8a30
<
template
>
<div>
<div
style=
"margin:10px auto;"
>
<h3
v-if=
"d.w"
style=
"font-size:18px;border-bottom:1px solid #ddd;font-weight:400;font-family:pingfangR;padding-bottom:10px;"
>
<span
class=
"circle"
v-if=
"d.w.ExamineStatus==0||d.w.ExamineStatus==-1"
></span>
<span
class=
"circle green"
v-else-if=
"d.w.Status==0"
></span>
<span
class=
"circle red"
v-else-if=
"d.w.Status==1||d.w.Status==2"
></span>
<span
class=
"circle black"
v-else-if=
"d.w.Status==3"
></span>
<span
style=
"margin-right:15px;"
>
{{
d
.
w
.
Title
}}
</span>
<el-tag
v-if=
"d.w.Tags.length>0"
>
{{
d
.
w
.
Tags
}}
</el-tag>
</h3>
<div
v-if=
"d.w"
style=
"font-size:14px;font-family:pingfangR;margin: 10px 0;padding: 10px;background: #FFF;"
>
{{
d
.
w
.
Description
}}
</div>
<fieldset
style=
"border: 1px solid #DDD;padding: 13px;font-size: 12px;"
>
<legend
style=
"padding:0 10px; font-size:14px;"
>
计划工时信息
</legend>
<el-row
:gutter=
"12"
>
<el-col
:span=
"6"
>
创建人:
{{
d
.
w
.
CreateName
}}
</el-col>
<el-col
:span=
"6"
>
创建日期:
{{
d
.
w
.
CreateDate
}}
</el-col>
<el-col
:span=
"6"
>
开始时间:
{{
d
.
w
.
BeginTime
}}
</el-col>
<el-col
:span=
"6"
>
截止时间:
{{
d
.
w
.
EndTime
}}
</el-col>
</el-row>
</fieldset>
<fieldset
style=
"border: 1px solid #DDD;padding: 13px;font-size: 12px;margin-top:30px;"
>
<legend
style=
"padding:0 10px; font-size:14px;"
>
计划操作记录
</legend>
<div
v-if=
"d.w.ExamineStatus==1"
>
<el-card
class=
"work-content green"
>
<h4>
主管立项审核通过
</h4>
<p>
{{
d
.
w
.
ExamineState
}}
提交于
{{
d
.
w
.
ExamineDate
}}
</p>
<div
class=
"cont"
>
{{
d
.
w
.
ExamineRemark
}}
</div>
</el-card>
</div>
<div
v-if=
"d.w.ExamineStatus==-1"
>
<el-card
class=
"work-content red"
>
<h4>
主管立项审核驳回
</h4>
<p>
{{
d
.
w
.
ExamineState
}}
提交于
{{
d
.
w
.
ExamineDate
}}
</p>
<div
class=
"cont"
>
{{
d
.
w
.
ExamineRemark
}}
</div>
</el-card>
</div>
<div
v-for=
"(item, index) in d.p"
:key=
"index"
>
<el-card
class=
"work-content"
>
<h4>
进度更新:
<div
style=
"width:120px;display: inline-block;margin-left: 15px;"
>
<el-progress
:text-inside=
"true"
:stroke-width=
"24"
:percentage=
"item.Progree"
status=
"success"
></el-progress>
</div>
</h4>
<p
v-if=
"d.w"
>
{{
d
.
w
.
CreateName
}}
提交于
{{
item
.
CreateDate
}}
</p>
<div
class=
"cont"
>
{{
item
.
Content
}}
</div>
<div
class=
"attach"
>
<a
href=
"http://baidu.com"
target=
"_blank"
>
附件:baidu.jpg
</a>
</div>
</el-card>
</div>
<div
v-if=
"d.w.FinishExamineStatus==1"
>
<el-card
class=
"work-content green"
>
<h4>
主管完结审核通过
</h4>
<p>
{{
d
.
w
.
FinishExamineState
}}
提交于
{{
d
.
w
.
FinishExamineDate
}}
</p>
<div
class=
"cont"
>
{{
d
.
w
.
FinishExamineRemark
}}
</div>
</el-card>
</div>
<div
v-if=
"d.w.FinishExamineStatus==-1"
>
<el-card
class=
"work-content red"
>
<h4>
主管完结审核驳回
</h4>
<p>
{{
d
.
w
.
FinishExamineState
}}
提交于
{{
d
.
w
.
FinishExamineDate
}}
</p>
<div
class=
"cont"
>
{{
d
.
w
.
FinishExamineRemark
}}
</div>
</el-card>
</div>
</fieldset>
<fieldset
v-if=
"isEaxmine && d.w && (d.w.ExamineStatus==0 || (d.w.Status>=2 && d.w.FinishExamineStatus==0))"
style=
"border: 1px solid #DDD;padding: 13px;font-size: 12px;margin-top:20px;"
>
<legend
style=
"padding:0 10px; font-size:14px;"
>
审批
</legend>
<div
style=
"margin-bottom:10px"
>
<el-radio
v-model=
"radio"
label=
"1"
>
通过
</el-radio>
<el-radio
v-model=
"radio"
label=
"-1"
>
驳回
</el-radio>
</div>
<div
style=
"margin-bottom:10px"
>
<el-input
type=
"textarea"
:rows=
"4"
style=
"width:100%"
placeholder=
"请输入审批意见"
v-model=
"textarea"
>
</el-input>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<button
class=
"normalBtn"
type=
"primary"
@
click=
"goexamine"
>
确认提交
</button>
</div>
</fieldset>
<fieldset
v-if=
"isUpdate && d.w && ((d.w.Status==0 && d.w.ExamineStatus==1) || d.w.Status==1)"
style=
"border: 1px solid #DDD;padding: 13px;font-size: 12px;margin-top:20px;"
>
<legend
style=
"padding:0 10px; font-size:14px;"
>
提交进度
</legend>
<div
style=
"margin-bottom:10px;"
>
<el-row
:gutter=
"12"
>
<el-col
:span=
"1"
>
当前进度:
</el-col>
<el-col
:span=
"4"
><el-slider
v-model=
"progree"
:min=
"d.w.Progree"
:max=
"100"
:step=
"1"
></el-slider></el-col>
</el-row>
</div>
<div
style=
"margin-bottom:10px"
>
<el-input
type=
"textarea"
:rows=
"4"
style=
"width:100%"
placeholder=
"请输入进度说明"
v-model=
"textarea2"
>
</el-input>
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<button
class=
"normalBtn"
type=
"primary"
@
click=
"setprogress"
>
确认提交
</button>
</div>
</fieldset>
</div>
</div>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
d
:
{},
radio
:
"1"
,
isEaxmine
:
false
,
isUpdate
:
false
,
textarea
:
''
,
textarea2
:
''
,
progree
:
0
};
},
mounted
()
{
let
id
=
this
.
$route
.
query
.
id
;
this
.
isEaxmine
=
this
.
$route
.
query
.
examine
?
true
:
false
;
this
.
isUpdate
=
this
.
$route
.
query
.
update
?
true
:
false
;
this
.
init
(
id
);
},
methods
:
{
init
(
id
)
{
this
.
apipost
(
"user_post_GetWorkDetails"
,
{
id
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
d
=
res
.
data
.
data
;
this
.
progree
=
this
.
d
.
w
.
Progree
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
},
null
);
},
setprogress
(){
if
(
this
.
textarea2
==
""
){
this
.
$message
.
error
(
"请填写进度说明"
);
return
;
}
this
.
apipost
(
"user_post_SetWorkProcess"
,
{
pid
:
this
.
$route
.
query
.
id
,
content
:
this
.
textarea2
,
progree
:
this
.
progree
,
attach
:
""
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
window
.
location
.
reload
();
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
},
null
);
},
goexamine
(){
if
(
this
.
textarea
==
""
){
this
.
$message
.
error
(
"请填写审批意见"
);
return
;
}
this
.
apipost
(
"user_post_SetWorkExamine"
,
{
id
:
this
.
$route
.
query
.
id
,
content
:
this
.
textarea
,
status
:
this
.
radio
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
window
.
location
.
reload
();
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
},
null
);
}
}
};
</
script
>
<
style
scope
>
.circle
{
width
:
20px
;
height
:
20px
;
display
:
inline-block
;
vertical-align
:
text-top
;
background
:
grey
;
border-radius
:
20px
;
margin-right
:
5px
;
}
.circle.red
{
background
:
#fe4433
;
}
.circle.green
{
background
:
green
;
}
.circle.black
{
background
:
black
;
}
.work-content
{
margin-bottom
:
20px
;
}
.work-content
h4
{
font-weight
:
400
;
font-size
:
16px
;
margin-bottom
:
10px
;
}
.work-content
p
{
font-size
:
12px
;
color
:
#ddd
!important
;
margin-bottom
:
10px
;
}
.work-content
.cont
{
font-size
:
14px
;
font-family
:
pingfangR
;
}
.work-content.green
{
color
:
#fff
;
background
:
#67c23a
;
}
.work-content.red
{
color
:
#fff
;
background
:
#f56c6c
;
}
.work-content.red
*,
.work-content.green
*
{
color
:
#fff
!important
;
}
.work-content
*
{
color
:
#333
;
}
.work-content
.attach
{
margin-top
:
10px
;
}
.work-content
.attach
a
{
color
:
#409EFF
;
text-decoration
:
underline
;
}
</
style
>
\ No newline at end of file
src/components/work/workManager.vue
0 → 100644
View file @
e18c8a30
<
template
>
<div
class=
"flexOne groupts"
>
<div
class=
"enrollTotalSearch"
>
<ul>
<li>
<span>
<em>
{{
$t
(
'system.table_company'
)
}}
</em>
<el-select
class=
"w200"
v-model=
"msg.BranchId"
filterable
:placeholder=
"$t('pub.pleaseSel')"
@
change=
"linkageDepartment()"
>
<el-option
:label=
"$t('pub.unlimitedSel')"
value=
"-1"
></el-option>
<el-option
v-for=
"item in companyList"
:label=
"item.BName"
:value=
"item.Id"
:key=
"item.Id"
></el-option>
</el-select>
</span>
</li>
<li>
<span>
<em
class=
"fl"
style=
"margin-top: 10px!important;"
>
{{
$t
(
'fnc.bmxuanze'
)
}}
</em>
<treeselect
class=
"w200 fl"
:options=
"departmentList"
v-model=
"msg.RB_Department_Id"
:label=
"$t('pub.unlimitedSel')"
:normalizer=
"normalizer"
@
select=
"linkageEmployeeMsg"
/>
</span>
</li>
<li>
<span>
<em>
{{
$t
(
'fnc.ryxuanze'
)
}}
</em>
</span>
<el-select
class=
"w200"
v-model=
"msg.CreateBy"
filterable
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
:label=
"$t('pub.unlimitedSel')"
value=
"-1"
></el-option>
<el-option
v-for=
"item in employeeList"
:label=
"item.name"
:value=
"item.empId"
:key=
"item.empId"
></el-option>
</el-select>
</li>
<li>
<span>
<em>
审批状态
</em>
<el-select
class=
"w200"
v-model=
"msg.examineStatus"
>
<el-option
label=
"不限"
value=
"-1"
></el-option>
<el-option
label=
"待我审批"
value=
"0"
></el-option>
<el-option
label=
"我已审批"
value=
"1"
></el-option>
</el-select>
</span>
</li>
<li>
<span>
<em>
计划日期
</em>
<el-date-picker
v-model=
"msg.timeRange"
type=
"daterange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
></el-date-picker>
</span>
</li>
<li>
<input
type=
"button"
class=
"hollowFixedBtn"
:value=
"$t('pub.searchBtn')"
@
click=
"getList();resetPageIndex()"
/>
</li>
</ul>
</div>
<div
style=
"margin:10px 0;"
>
<span
class=
"circle green"
></span>
<span
class=
"remark"
>
进行中
</span>
<span
class=
"circle red"
></span>
<span
class=
"remark"
>
超时
</span>
<span
class=
"circle black"
></span>
<span
class=
"remark"
>
完成
</span>
<span
class=
"circle"
></span>
<span
class=
"remark"
>
未开始
</span>
</div>
<table
class=
"singeRowTable"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
v-loading=
"loading"
>
<tr>
<th>
状态
</th>
<th>
标签
</th>
<th
width=
"300"
>
标题
</th>
<th>
内容概要
</th>
<th>
开始时间
</th>
<th>
截止时间
</th>
<th>
创建时间
</th>
<th>
立项审批信息
</th>
<th>
当前进度
</th>
<th>
完成审批信息
</th>
<th>
操作
</th>
</tr>
<tr
v-for=
"(item, index) in DataList"
:key=
"index"
>
<td>
<span
class=
"circle"
v-if=
"item.ExamineStatus==0||item.ExamineStatus==-1"
></span>
<span
class=
"circle green"
v-else-if=
"item.Status==0"
></span>
<span
class=
"circle red"
v-else-if=
"item.Status==1||item.Status==2"
></span>
<span
class=
"circle black"
v-else-if=
"item.Status==3"
></span>
</td>
<td>
<el-tag
v-if=
"item.Tags.length>0"
>
{{
item
.
Tags
}}
</el-tag>
</td>
<td>
{{
item
.
Title
}}
</td>
<td
width=
"250"
>
<el-tooltip
effect=
"dark"
:content=
"item.Description"
placement=
"top-start"
>
<span>
{{
item
.
Description
.
length
>
23
?
item
.
Description
.
substring
(
0
,
23
)
+
"..."
:
item
.
Description
}}
</span>
</el-tooltip>
</td>
<td>
{{
item
.
BeginTime
}}
</td>
<td>
{{
item
.
EndTime
}}
</td>
<td>
{{
item
.
CreateDate
}}
</td>
<td>
<span
v-if=
"item.ExamineStatus==0"
style=
"color:grey"
>
审批中
</span>
<span
v-else-if=
"item.ExamineStatus==1"
style=
"color:green;text-decoration: underline;"
>
已通过
</span>
<span
v-else
style=
"color:red;text-decoration: underline;"
>
已驳回
</span>
</td>
<td>
<el-progress
:text-inside=
"true"
:stroke-width=
"24"
:percentage=
"item.Progree"
status=
"success"
></el-progress>
</td>
<td>
<span
v-if=
"item.Status==2||item.Status==3"
>
<span
v-if=
"item.FinishExamineStatus==0"
style=
"color:grey"
>
审批中
</span>
<span
v-else-if=
"item.FinishExamineStatus==1"
style=
"color:green;text-decoration: underline;"
>
已通过
</span>
<span
v-else
style=
"color:red;text-decoration: underline;"
>
已驳回
</span>
</span>
</td>
<td>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"详情"
placement=
"top-start"
>
<el-button
style=
"padding:4px"
type=
"info"
icon=
"el-icon-search"
@
click
.
stop=
"query(item.Id)"
circle
></el-button>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"审核"
placement=
"top-start"
v-if=
"item.ExamineStatus==0 || ((item.Status==2 || item.Status==3) && item.FinishExamineStatus==0)"
>
<el-button
style=
"padding:4px"
type=
"primary"
icon=
"el-icon-check"
@
click
.
stop=
"query2(item.Id)"
circle
></el-button>
</el-tooltip>
</td>
</tr>
</table>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
"msg.pageSize"
:total=
"total"
></el-pagination>
</div>
</
template
>
<
script
>
import
Treeselect
from
"@riophae/vue-treeselect"
;
import
updateSalesMan
from
"../commonPage/updateSalesMan.vue"
;
import
"@riophae/vue-treeselect/dist/vue-treeselect.css"
;
export
default
{
components
:
{
Treeselect
},
data
()
{
return
{
normalizer
(
node
)
{
var
obj
=
{
id
:
node
.
DepartmentId
,
label
:
node
.
DepartmentName
};
if
(
node
.
ChildList
!=
null
&&
node
.
ChildList
.
length
>
0
)
{
obj
.
children
=
node
.
ChildList
;
}
return
obj
;
},
msg
:
{
BranchId
:
"-1"
,
RB_Department_Id
:
null
,
pageIndex
:
0
,
pageSize
:
10
,
CreateBy
:
"-1"
,
examineStatus
:
"-1"
,
timeRange
:
[]
},
getCompanyMsg
:
{
RB_Group_Id
:
"0"
,
Status
:
"0"
},
getDepartmentMsg
:
{
RB_Group_Id
:
"0"
,
RB_Branch_Id
:
"-1"
,
Status
:
"0"
},
employeeMsg
:
{
RB_Group_id
:
"0"
,
RB_Branch_id
:
"-1"
,
departmentId
:
"0"
,
IsLeave
:
"-1"
},
departmentList
:
[],
companyList
:
[],
employeeList
:
[],
userInfo
:
{},
datas
:
[],
currentPage
:
1
,
total
:
0
,
DataList
:
[],
loading
:
true
};
},
mounted
()
{
this
.
userInfo
=
this
.
getLocalStorage
();
this
.
userId
=
this
.
userInfo
.
EmployeeId
;
this
.
getCompanyMsg
.
RB_Group_Id
=
this
.
getDepartmentMsg
.
RB_Group_Id
=
this
.
userInfo
.
RB_Group_id
;
//集团
this
.
getCompany
();
//this.getEmployee();
},
methods
:
{
resetPageIndex
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
currentPage
=
1
;
},
getList
()
{
//获取数据
this
.
loading
=
true
;
if
(
this
.
msg
.
timeRange
&&
this
.
msg
.
timeRange
.
length
==
2
){
this
.
msg
.
bt
=
this
.
msg
.
timeRange
[
0
];
this
.
msg
.
et
=
this
.
msg
.
timeRange
[
1
];
}
else
{
this
.
msg
.
bt
=
""
;
this
.
msg
.
et
=
""
;
}
this
.
apipost
(
"user_post_GetWorkPageList"
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
DataList
=
res
.
data
.
data
.
pageData
;
this
.
total
=
res
.
data
.
data
.
count
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
getCompany
()
{
this
.
apipost
(
"admin_get_BranchGetList"
,
this
.
getCompanyMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
this
.
userInfo
.
EmployeeId
!=
1
)
{
let
that
=
this
;
this
.
companyList
=
res
.
data
.
data
.
filter
(
x
=>
{
if
(
x
.
Id
==
that
.
userInfo
.
RB_Branch_id
)
{
return
x
;
}
});
this
.
employeeMsg
.
RB_Branch_id
=
this
.
userInfo
.
RB_Branch_id
;
this
.
msg
.
RB_Department_Id
=
this
.
userInfo
.
RB_Branch_id
;
this
.
getEmployee
();
}
else
{
this
.
companyList
=
res
.
data
.
data
;
this
.
getEmployee
();
}
}
else
{
}
this
.
getList
();
},
err
=>
{}
);
},
linkageEmployeeMsg
(
node
,
instanceId
)
{
this
.
employeeMsg
.
departmentId
=
node
.
DepartmentId
;
this
.
msg
.
CreateBy
=
"-1"
;
this
.
getEmployee
();
},
linkageDepartment
()
{
//联动部门
this
.
msg
.
RB_Department_Id
=
null
;
if
(
this
.
msg
.
BranchId
!=
0
)
{
this
.
getDepartmentMsg
.
RB_Branch_Id
=
this
.
msg
.
BranchId
;
}
this
.
getDepartment
();
},
getDepartment
()
{
this
.
apipost
(
"admin_Get_GetDepartmentTreeForReceiveQuery"
,
this
.
getDepartmentMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
departmentList
=
res
.
data
.
data
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
getEmployee
()
{
this
.
apipost
(
"app_get_company_employee"
,
this
.
employeeMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
employeeList
=
res
.
data
.
data
;
}
},
err
=>
{}
);
},
query2
(
id
){
this
.
$router
.
push
({
name
:
"workDetails"
,
query
:
{
"id"
:
id
,
examine
:
"u"
,
blank
:
'y'
}
})
}
}
};
</
script
>
<
style
scope
>
.enrollTotalSearch
{
width
:
100%
;
min-height
:
auto
;
padding
:
0
0
20px
0
;
}
.enrollTotalSearch
::after
{
display
:
block
;
clear
:
both
;
content
:
""
;
visibility
:
hidden
;
height
:
0
;
}
.enrollTotalSearch
li
{
float
:
left
;
font-size
:
12px
;
height
:
40px
;
color
:
#666
;
margin
:
20px
10px
10px
0
;
}
.enrollTotalSearch
li
>
span
{
display
:
inline-block
;
}
.enrollTotalSearch
li
span
>
em
{
display
:
inline-block
;
min-width
:
60px
;
text-align
:
right
;
font-style
:
normal
;
margin
:
0
12px
0
0
;
}
.enrollTotalSearch
li
:last-child
{
float
:
right
;
position
:
fixed
;
top
:
36px
;
right
:
20px
;
text-align
:
right
;
z-index
:
50
;
}
.circle
{
width
:
20px
;
height
:
20px
;
display
:
inline-block
;
text-align
:
center
;
background
:
grey
;
border-radius
:
20px
;
margin-right
:
5px
;
}
.circle.red
{
background
:
#fe4433
;
}
.circle.green
{
background
:
green
;
}
.circle.black
{
background
:
black
;
}
.remark
{
margin-right
:
20px
;
font-size
:
12px
;
display
:
inline-block
;
vertical-align
:
text-top
;
}
.wd100
{
width
:
100%
!important
;
}
.el-tag
+
.el-tag
{
margin-left
:
10px
;
}
.button-new-tag
{
margin-left
:
10px
;
height
:
32px
;
line-height
:
30px
;
padding-top
:
0
;
padding-bottom
:
0
;
}
.input-new-tag
{
width
:
90px
;
margin-left
:
10px
;
vertical-align
:
bottom
;
}
</
style
>
\ No newline at end of file
src/plug/index.js
View file @
e18c8a30
...
...
@@ -111,14 +111,14 @@ export default {
//域名管理对象
Vue
.
prototype
.
domainManager
=
function
()
{
let
domainUrl
=
''
;
domainUrl
=
"http://1
92.168.2.214
:8082"
;
domainUrl
=
"http://1
27.0.0.1
:8082"
;
let
locationName
=
window
.
location
.
hostname
;
let
javaUrldo
=
""
;
javaUrldo
=
locationName
.
indexOf
(
'oytour'
)
!==
-
1
||
locationName
.
indexOf
(
'viitto'
)
!==
-
1
?
(
locationName
.
indexOf
(
'oytour'
)
!==
-
1
?
"http://efficient.oytour.com"
:
"http://47.96.12.235:9001"
)
:
"http://192.168.2.215:9000"
;
if
(
locationName
.
indexOf
(
'testerp.oytour'
)
!==
-
1
)
{
domainUrl
=
"http://
testapi.oytour.com
"
;
domainUrl
=
"http://
127.0.0.1:8082
"
;
}
else
if
(
locationName
.
indexOf
(
'oytour'
)
!==
-
1
)
{
domainUrl
=
"http://reborn.oytour.com"
;
...
...
src/router/config.js
View file @
e18c8a30
...
...
@@ -4264,7 +4264,30 @@ export default {
title
:
'票务规则配置'
}
},
{
path
:
'/mywork'
,
name
:
'mywork'
,
component
:
resolve
=>
require
([
'@/components/work/mywork'
],
resolve
),
meta
:
{
title
:
'我的工作计划'
},
},
{
path
:
'/workDetails'
,
name
:
'workDetails'
,
component
:
resolve
=>
require
([
'@/components/work/workDetails'
],
resolve
),
meta
:
{
title
:
'工作计划详情'
},
},
{
path
:
'/workManager'
,
name
:
'workManager'
,
component
:
resolve
=>
require
([
'@/components/work/workManager'
],
resolve
),
meta
:
{
title
:
'工作计划详情'
},
}
]
},
{
...
...
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