Commit 8318a9e1 by lixinming

版本1

parent 75049000
......@@ -64,9 +64,9 @@ Date.prototype.format = function(fmt)
// 设置请求token
Axios.interceptors.request.use(config => {
let token = sessionStorage.getItem('token')
let user = JSON.parse(sessionStorage.getItem('user'));
//let user = JSON.parse(sessionStorage.getItem('user'));
config.headers['token'] = token;
if (user) config.headers['userid'] = user.id;
// if (user) config.headers['userid'] = user.id;
return config
})
......
......@@ -26,7 +26,7 @@
</el-form>
<div class="null40Div"></div>
<div class="createProjectButtonBox">
<el-button size="mini" round>创建项目</el-button>
<el-button @click="createProject" size="mini" round>创建项目</el-button>
</div>
</el-card>
</div>
......@@ -41,17 +41,25 @@ export default {
projectType:"",
projectDes:"",
projectSelectList:[
{label:"园区", value:1},
{label:"教育", value:2},
{label:"企业", value:3},
{label:"政府", value:4},
{label:"教育", value:1},
{label:"企业", value:2},
{label:"政府", value:3},
{label:"园区", value:4},
],
}
},
components: { },
methods:{
async createProject() {
let addInfo = { pName:this.projectName, pType:this.projectType, pDescribe:this.projectDes };
let result = await this.$store.dispatch('project/createProject', addInfo);
if (result.data && result.data.isOk) {
this.$message.success("创建成功");
} else {
this.$message.error("创建失败");
}
}
}
}
</script>
......
......@@ -2,7 +2,7 @@
<div class="taskInfoBox">
<el-divider content-position="left">反馈描述</el-divider>
<div class="taskInfoMainBox">
<el-input disabled="false" resize="none" type="textarea" :rows="8" placeholder="请输入内容" v-model="feedbackDsc">
<el-input :disabled="true" resize="none" type="textarea" :rows="8" v-model="feedbackDsc">
</el-input>
</div>
<el-divider content-position="left">解决方案</el-divider>
......@@ -15,13 +15,10 @@
<div class="solveBox">
<el-form ref="form" label-width="80px">
<el-form-item label="指派人">
<el-select size="mini" v-model="editInfo.targetList" multiple collapse-tags style="margin-left: 20px;" placeholder="请选择">
<el-option v-for="item in peopleList" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
<el-tag v-for="item in peopleList" disable-transitions :key="item"> {{item}} </el-tag>
</el-form-item>
<el-form-item label="是否解决">
<el-radio-group v-model="editInfo.state">
<el-radio-group v-model="state">
<el-radio :label="1"></el-radio>
<el-radio :label="2"></el-radio>
</el-radio-group>
......@@ -30,24 +27,64 @@
</div>
</div>
<div class="solvButtonBox">
<el-button size="mini" round>提交</el-button>
<el-button size="mini" @click="editFeedback" round>提交</el-button>
</div>
</div>
</template>
<script>
export default {
props:["checkId"],
data() {
return {
feedbackDsc:"问题描述描述描述 萨芬顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶 胜多负少辣椒粉撒娇",
feedbackDsc:"",
feedbackSol:"",
editInfo:{
state:1,
targetList:[]
}
lock:false,
qId:this.checkId,
peopleList:[],
}
},
mounted:function() {
this.initTask(this.qId);
this.lock = false;
},
methods:{
initTask:async function(qId) {
this.qId = qId;
this.lock = false;
let result = await this.$store.dispatch('feedback/feedbackInfo', {qId});
if (result.data && result.data.feedbackInfo) {
let { qDetails, assignUser } = result.data.feedbackInfo;
this.peopleList = assignUser;
this.feedbackDsc = qDetails;
} else {
this.$message.error("获取项目失败");
}
},
editFeedback:async function() {
if (!this.feedbackSol && !this.lock) {
this.$notify({
title: '提示',
message: '你提交了空的解决文案 如果确认这么做请再次点击提交按钮'
});
this.lock = true;
return;
}
let editInfo = {qId:this.qId, solution:this.feedbackSol, assignIsSolve:this.state};
let result = await this.$store.dispatch('feedback/solveFeedback', editInfo);
if (result.data && result.data.isOk) {
this.$message.success("提交成功");
this.$emit("editOkCallback");
} else {
this.$message.error("提交失败");
}
}
}
}
......
......@@ -2,17 +2,17 @@
<div class="initiateListBox">
<div class="initiateListTable">
<el-table :data="initiateList" height="750" :row-class-name="tableRowClassName" >
<el-table-column prop="projectName" align="center" width="220" label="项目名称">
<el-table-column prop="pName" align="center" width="220" label="项目名称">
</el-table-column>
<el-table-column prop="type" align="center" width="80" label="类型">
<el-table-column prop="assignIsSolve" align="center" width="80" label="类型">
</el-table-column>
<el-table-column prop="initiateUserTime" align="center" width="160" label="发起时间">
<el-table-column prop="initiateTime" align="center" width="160" label="发起时间">
</el-table-column>
<el-table-column prop="targetUserName" align="center" width="80" label="指派人">
<el-table-column prop="targetUserName" align="center" width="180" label="指派人">
</el-table-column>
<el-table-column prop="state" align="center" width="80" label="状态">
<el-table-column prop="qType" align="center" width="80" label="状态">
</el-table-column>
<el-table-column prop="des" align="center" width="360" label="问题描述">
<el-table-column prop="qDetails" align="center" width="260" label="问题描述">
</el-table-column>
<el-table-column align="center" width="80" label="操作">
<template slot-scope="scope">
......@@ -23,7 +23,7 @@
</div>
<div class="initiateInfoDialog">
<el-dialog width="60%" top="5vh" :visible.sync="initiateInfoDialogVisible">
<initiateInfo></initiateInfo>
<initiateInfo @editOkCallback="editOkCallback" ref="initiate" :checkId="checkQid" ></initiateInfo>
</el-dialog>
</div>
</div>
......@@ -34,29 +34,43 @@ import initiateInfo from "./initiateInfo.vue"
export default {
data() {
return {
initiateList:[
{projectName:"张江双创二期", state:"解决", initiateUserTime:'2022-06-31 00:00', targetUserName:'李某某',type:'投诉', des:"核心数据缺失"},
{projectName:"徐汇二期", state:"未解决", initiateUserTime:'2022-06-31 00:00', targetUserName:'王大小',type:'修改', des:"****页面数据修改"},
{projectName:"艺校三期", state:"未解决", initiateUserTime:'2022-06-31 00:00', targetUserName:'刘谋',type:'修改', des:"******页面重新设计"},
{projectName:"长三角", state:"未处理", initiateUserTime:'2022-06-32 00:00', targetUserName:'李某某',type:'修改', des:"对接数据"},
{projectName:"徐汇五期", state:"未处理", initiateUserTime:'2022-06-32 00:00', targetUserName:'王二小',type:'修改', des:"修改页面"},
{projectName:"艺校六期", state:"未处理", initiateUserTime:'2022-06-32 00:00', targetUserName:'王金橘',type:'修改', des:"修改页面"},
{projectName:"艺校六期", state:"未通过", initiateUserTime:'2022-06-32 00:00', targetUserName:'王金橘',type:'修改', des:"修改页面"}
],
initiateInfoDialogVisible:false
initiateList:[],
initiateInfoDialogVisible:false,
checkQid:0,
}
},
components: { initiateInfo },
mounted:async function() {
this.initInitiateList();
},
methods:{
tableRowClassName:function({row, rowIndex}) {
if (row.state == "解决") return 'success-row';
else if (row.state == "未解决") return 'warning-row';
else if (row.state == "未通过") return 'error-row'
if (row.assignIsSolve == "解决") return 'success-row';
else if (row.assignIsSolve == "未解决") return 'warning-row';
else if (row.assignIsSolve == "未通过") return 'error-row'
return '';
},
checkInitiateItem:function(row) {
this.initiateInfoDialogVisible = true
this.initiateInfoDialogVisible = true;
this.checkQid = row.qId;
if (this.$refs.taskinfo) {
this.$refs.initiate.initProjectInfo(row.qId);
}
},
initInitiateList:async function() {
let result = await this.$store.dispatch('feedback/selfInitiateFeedbackList', {});
if (result.data && result.data.feedbackList) {
this.initiateList = result.data.feedbackList;
} else {
this.$message.error("获取列表失败");
}
},
editOkCallback:async function() {
this.initInitiateList();
this.initiateInfoDialogVisible = false;
}
}
}
</script>
......
......@@ -2,23 +2,20 @@
<div class="initiateInfoBox">
<el-divider content-position="left">反馈描述</el-divider>
<div class="initiateInfoMainBox">
<el-input :disabled="false" resize="none" type="textarea" :rows="8" v-model="feedbackDsc">
<el-input :disabled="true" resize="none" type="textarea" :rows="8" v-model="feedbackDsc">
</el-input>
</div>
<el-divider content-position="left">解决方案</el-divider>
<div class="solveEditMainBox">
<div class="editTextAreaBox">
<el-input :disabled="false" resize="none" type="textarea" :rows="6" v-model="feedbackSol">
<el-input :disabled="true" resize="none" type="textarea" :rows="6" v-model="feedbackSol">
</el-input>
</div>
<div class="null40Div"></div>
<div class="solveBox">
<el-form ref="form" label-width="80px">
<el-form-item label="指派人">
<el-tag type=""> 张三 </el-tag>
<el-tag type="info"> 李四 </el-tag>
<el-tag type="success"> 王五 </el-tag>
<el-tag type="warning"> 赵六 </el-tag>
<el-tag v-for="item in peopleList" disable-transitions :key="item"> {{item}} </el-tag>
</el-form-item>
<el-form-item label="是否解决">
<el-radio-group v-model="isSolve">
......@@ -30,21 +27,52 @@
</div>
</div>
<div class="solvButtonBox">
<el-button size="mini" round>提交</el-button>
<el-button @click="auditingFeedback" size="mini" round>提交</el-button>
</div>
</div>
</template>
<script>
export default {
props:["checkId"],
data() {
return {
feedbackDsc:"",
feedbackSol:"",
isSolve:2
isSolve:1,
qId:this.checkId,
peopleList:[],
}
},
components: { },
mounted:function() {
this.initInitiate(this.qId);
this.lock = false;
},
methods:{
initInitiate:async function(qId) {
this.qId = qId;
let result = await this.$store.dispatch('feedback/feedbackInfo', {qId});
if (result.data && result.data.feedbackInfo) {
let { qDetails, assignUser, solution } = result.data.feedbackInfo;
this.feedbackDsc = qDetails;
this.feedbackSol = solution || "";
this.peopleList = assignUser;
} else {
this.$message.error("获取项目失败");
}
},
auditingFeedback:async function() {
let addInfo = {
qId:this.qId,
whetherToSolve:this.isSolve
};
let result = await this.$store.dispatch('feedback/auditingFeedback', addInfo );
if (result.data && result.data.isOk) {
this.$emit("editOkCallback");
} else {
this.$message.error("提交失败");
}
}
}
}
</script>
......
......@@ -2,15 +2,15 @@
<div class="taskListBox">
<div class="taskListTable">
<el-table :data="myTaskList" height="750">
<el-table-column prop="projectName" align="center" width="220" label="项目名称">
<el-table-column prop="pName" align="center" width="220" label="项目名称">
</el-table-column>
<el-table-column prop="initiateUserTime" align="center" width="180" label="发起时间">
<el-table-column prop="initiateTime" align="center" width="180" label="发起时间">
</el-table-column>
<el-table-column prop="initiateUserName" align="center" width="80" label="发起人">
<el-table-column prop="initiateUser" align="center" width="80" label="发起人">
</el-table-column>
<el-table-column prop="type" align="center" width="80" label="类型">
<el-table-column prop="qType" align="center" width="80" label="类型">
</el-table-column>
<el-table-column prop="des" align="center" width="430" label="问题描述">
<el-table-column prop="qDetails" align="center" width="430" label="问题描述">
</el-table-column>
<el-table-column align="center" width="100" label="操作">
<template slot-scope="scope">
......@@ -21,7 +21,7 @@
</div>
<div class="taskInfoDialog">
<el-dialog width="60%" top="5vh" :visible.sync="taskInfoDialogVisible">
<taskInfo></taskInfo>
<taskInfo @editOkCallback="editOkCallback" ref="taskinfo" :checkId="checkQid"></taskInfo>
</el-dialog>
</div>
</div>
......@@ -32,17 +32,36 @@ import taskInfo from "./editTask.vue"
export default {
data() {
return {
//指派给我的反馈列表
taskInfoDialogVisible:false,
myTaskList:[
{projectName:"张江双创二期", initiateUserTime:'2022-06-31 00:00:00', initiateUserName:'李四',type:'投诉', des:"啊撒旦发生范德萨发空间是辣的开发技术飞洒防守反击萨拉"}
]
myTaskList:[],
checkQid:0,
}
},
components: { taskInfo },
mounted:async function() {
await this.initList();
},
methods:{
checkTaskItem:function(projectItem) {//点击详情
checkTaskItem:function(checkItem) {//点击详情
this.taskInfoDialogVisible = true;
this.checkQid = checkItem.qId;
if (this.$refs.taskinfo) {
this.$refs.taskinfo.initProjectInfo(checkItem.qId);
}
},
initList:async function() {
let result = await this.$store.dispatch('feedback/selfFeedbackList', {});
if (result.data && result.data.feedbackList) {
this.myTaskList = result.data.feedbackList;
} else {
this.$message.error("获取列表失败");
}
},
editOkCallback:function() {
this.initList();
this.taskInfoDialogVisible = false;
}
}
}
</script>
......
......@@ -95,10 +95,10 @@
return;
}
let result = await this.$store.dispatch('users/login', { loginId:this.loginId, pwd:this.pwd });
if (result.success) {
if (!result.err) {
this.$router.push({path: '/home'});
} else {
this.$message.error(result.msg);
this.$message.error("登录失败 ",result.errMsg);
}
}
}
......
<template>
<div class="projectMaintain">
<div class="maintainBodyBox">
<el-card class="box-card">
<el-form ref="form" label-width="80px">
<el-form-item label="项目名称">
<el-input size="mini" style="width:400px" v-model="projectName"></el-input>
</el-form-item>
<el-form-item label="项目类型 ">
<el-select size="mini" v-model="projectType" placeholder="请选择">
<el-option
v-for="item in projectSelectList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="项目背景">
<el-input type="textarea" size="mini"
resize="none"
style="width:800px"
:rows="6"
v-model="projectDes"></el-input>
</el-form-item>
</el-form>
<div class="updateBodyButtonBox">
<el-button size="mini" round>修改基础信息</el-button>
</div>
</el-card>
</div>
<div class="null40Div"></div>
<div class="maintainBaseBox">
<el-card class="box-card">
<el-form ref="form" label-width="80px">
<el-form-item label="甲方名称">
<el-input size="mini" style="width:400px" v-model="firstParty"></el-input>
</el-form-item>
<el-form-item label="对接人 ">
<el-input size="mini" style="width:400px" v-model="dockingPerson"></el-input>
</el-form-item>
<el-form-item label="承包类型">
<el-radio-group v-model="contractType">
<el-radio :label="1">总包</el-radio>
<el-radio :label="2">转包</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="参与成员">
<el-tag closable type=""> 张三 </el-tag>
<el-tag closable type="info"> 李四 </el-tag>
<el-tag closable type="success"> 王五 </el-tag>
<el-tag closable type="warning"> 赵六 </el-tag>
</el-form-item>
</el-form>
<div class="updateBaseButtonBox">
<el-button size="mini" round>修改</el-button>
</div>
</el-card>
</div>
</div>
</template>
<script>
export default {
data() {
return {
projectName:"",
projectType:"",
projectDes:"",
projectSelectList:[
{label:"园区", value:1},
{label:"教育", value:2},
{label:"企业", value:3},
{label:"政府", value:4},
],
firstParty:"",//甲方名称
dockingPerson:"",//对接人
contractType:1,//承包类型
}
},
components: { },
methods:{
}
}
</script>
<style>
.null40Div{
width: 100%;
height: 40px;
}
.projectMaintain {
width: 100%;
}
.projectMaintain .maintainBodyBox {
width: 66%;
}
.projectMaintain .el-card {
box-shadow: 0 2px 12px 0 rgba(252, 252, 252, 0.144);
background-color: rgb(255 255 255 / 15%);
border-radius: 6px;
}
.projectMaintain .el-form-item__label {
color: aliceblue;
font-size: 16px;
}
.projectMaintain .maintainBodyBox .updateBodyButtonBox {
width: 95%;
height: 40px;
text-align: right;
}
/* 卡片二 */
.projectMaintain .maintainBaseBox {
width: 66%;
}
.projectMaintain .maintainBaseBox .updateBaseButtonBox {
width: 95%;
height: 40px;
text-align: right;
}
</style>
\ No newline at end of file
......@@ -14,7 +14,7 @@
<div class="joinBox">
<div class="partyAInfo">
<div class="partyATitle">甲方:</div>
<div class="partyAData">{{joinPeopleName}}</div>
<div class="partyAData">{{partyA}}</div>
</div>
<div class="jointInfo">
<div class="joinTitle">对接人:</div>
......@@ -45,15 +45,15 @@
<div class="centerInfoBox">
<div class="projectFeedbackTable">
<el-table :data="feedbackList" height="350">
<el-table-column prop="initiateUserName" align="center" width="80" label="发起人">
<el-table-column prop="uName" align="center" width="80" label="发起人">
</el-table-column>
<el-table-column prop="initiateUserTime" align="center" width="180" label="发起时间">
<el-table-column prop="initiateTime" align="center" width="180" label="发起时间">
</el-table-column>
<el-table-column prop="targetUserName" align="center" width="120" label="指派人">
<el-table-column prop="assignName" align="center" width="120" label="指派人">
</el-table-column>
<el-table-column prop="type" align="center" width="50" label="类型">
<el-table-column prop="qType" align="center" width="50" label="类型">
</el-table-column>
<el-table-column prop="des" align="center" label="描述">
<el-table-column prop="qDetails" align="center" label="描述">
</el-table-column>
</el-table>
</div>
......@@ -79,7 +79,7 @@
</el-form-item>
</el-form>
<div class="projectFeedbackSubmitBox">
<el-button size="mini" round>添加反馈</el-button>
<el-button @click="addFeedback" size="mini" round>添加反馈</el-button>
</div>
</div>
</div>
......@@ -89,9 +89,12 @@
</template>
<script>
import { pid } from 'process';
export default {
props:["checkId"],
data() {
return {
pId:this.checkId,
projectName:"体育学院",
pageUrlStr:"",
createTime:"",
......@@ -101,11 +104,11 @@ export default {
partyA:"测试的甲方名称",
feedbackList:[{
initiateUserName:"张三",
initiateUserTime:"2011-08-00 00:00:00",
targetUserName:"李四",
type:"紧急",
des:"这是一段描述xxxxxxxxxxxxxxxxxxxx描述"
uName:"张三",
initiateTime:"2011-08-00 00:00:00",
assignName:"李四",
qType:"紧急",
qDetails:"这是一段描述xxxxxxxxxxxxxxxxxxxx描述"
}],
addFeedbackInfo:{//添加反馈
......@@ -113,47 +116,51 @@ export default {
targetList:[],
type:1,
},
activities: [
{
content: '尾款',
timestamp: '2018-04-12 20:46',
size: 'large',
type: 'primary'
activities: [],
//员工
peopleList:[]
}
},
{
content: '验收',
timestamp: '2018-04-03 20:46',
color: '#0bbd87'
}, {
content: '测试',
timestamp: '2018-04-03 20:46',
size: 'large',
color: '#0bbd87'
mounted:async function(){
await this.getMementList();
this.initProjectInfo(this.pId);
},
{
content: '开发',
timestamp: '2018-04-03 20:46',
color: '#0bbd87',
size: 'large'
methods:{
async initProjectInfo(pId) {
this.pId = pId;
let result = await this.$store.dispatch('project/getProjectInfo', {pId});
if (result.data && result.data.projectInfo) {
let { pName, pDescribe, dockingPeople, partyAInformation, currentState, activities, feedbackList} = result.data.projectInfo;
this.projectName = pName;
this.pageUrlStr = "";
this.des = pDescribe;
this.joinPeopleName = dockingPeople;
this.partyA = partyAInformation;
this.feedbackList = feedbackList;
this.activities = activities;
} else {
this.$message.error("获取项目失败");
}
},
{
content: '设计稿',
timestamp: '2018-04-03 20:46',
color: '#0bbd87',
size: 'large'
}, {
content: '立项',
timestamp: '2018-04-03 20:46',
color: '#0bbd87',
size: 'large'
}],
//员工
peopleList:[{label:"张三", value:"zs"},{label:"李四", value:"ls"},{label:"王五", value:"ww"},{label:"赵六", value:"zl"}]
async addFeedback() {
let addParamater = this.addFeedbackInfo;
addParamater.pId = this.pId;
let result = await this.$store.dispatch('feedback/addFeedback', addParamater);
if (result.data && result.data.isOk) {
this.$message.success("修改成功");
this.initProjectInfo(this.pId);
this.addFeedbackInfo = { des:"", targetList:[], type:1};
} else {
this.$message.error("修改失败");
}
},
methods:{
async getMementList() {
let result = await this.$store.dispatch('users/getFeedbackMemberList', {});
if (result && result.data) {
let { memberList } = result.data;
this.peopleList = memberList;
}
}
}
}
</script>
......
......@@ -12,11 +12,11 @@
<div class="projectListBox">
<div class="projectListTable">
<el-table :data="projectList" height="650">
<el-table-column prop="projectName" align="center" width="220" label="项目名称">
<el-table-column prop="pName" align="center" width="220" label="项目名称">
</el-table-column>
<el-table-column prop="type" align="center" width="150" label="项目类型">
<el-table-column prop="pType" align="center" width="150" label="项目类型">
</el-table-column>
<el-table-column prop="state" align="center" width="200" label="当前进度">
<el-table-column prop="currentState" align="center" width="200" label="当前进度">
</el-table-column>
<el-table-column prop="startTime" align="center" width="200" label="开始时间">
</el-table-column>
......@@ -24,7 +24,14 @@
</el-table-column>
<el-table-column align="center" width="100" label="操作">
<template slot-scope="scope">
<div v-if="dId == 4">
<i @click="checkProjectItem(scope.row)" style="color:aliceblue;font-size:18px" class="el-icon-thumb"></i>
&nbsp;
<i @click="editProjectItem(scope.row)" style="color:aliceblue;font-size:18px" class="el-icon-edit"></i>
</div>
<div v-else>
<i @click="checkProjectItem(scope.row)" style="color:aliceblue;font-size:18px" class="el-icon-thumb"></i>
</div>
</template>
</el-table-column>
</el-table>
......@@ -33,7 +40,12 @@
</div>
<div class="projectInfoDialog">
<el-dialog width="80%" top="2vh" :visible.sync="projectInfoDialogVisible">
<projectInfo></projectInfo>
<projectInfo ref="p1" :checkId="checkPId"/>
</el-dialog>
</div>
<div class="projectInfoDialog">
<el-dialog width="80%" top="2vh" :visible.sync="projectEditDialogVisible">
<replenish ref="p2" @updateOkCallback="updateOkCallback" :checkId="checkPId"/>
</el-dialog>
</div>
</div>
......@@ -41,29 +53,61 @@
<script>
import projectInfo from "./projectInfo.vue"
import replenish from "./replenish.vue"
export default {
data() {
return {
dId:sessionStorage.getItem("dId") || 0,
pageName:"项目列表",
selectInput:"",
projectList:[{
projectName:"11",
type:"11",
state:"11",
startTime:"11",
lastNodeTime:"11"
}],
projectList:[],
dataList:[],
projectInfoDialogVisible:false,
projectEditDialogVisible:false,
checkPId:0,
}
},
components: { projectInfo },
components: { projectInfo, replenish },
created:async function() {
await this.getProjectList();
},
methods:{
checkProjectItem:function(projectItem) {//点击详情
this.projectInfoDialogVisible = true;
this.checkPId = projectItem.pId;
if (this.$refs.p1) {
this.$refs.p1.initProjectInfo(projectItem.pId);
}
},
editProjectItem:function(projectItem) {//点击编辑
this.projectEditDialogVisible = true;
this.checkPId = projectItem.pId;
if (this.$refs.p2) {
this.$refs.p2.initProjectInfo(projectItem.pId);
}
},
checkSelect:function() {//查询
let checkList = [];
let _this = this;
this.projectList.forEach(info => {
if (info.pName.indexOf(_this.selectInput) > -1) checkList.push(info);
});
},
getProjectList:async function() {
let result = await this.$store.dispatch('project/getProjectList', this.addInfo);
if (result.data && result.data.projectList) {
// this.dataList = result.data.projectList;
this.projectList = result.data.projectList;
} else {
this.$message.error("获取列表失败");
}
},
//修改项目成功回调
updateOkCallback() {
this.projectEditDialogVisible = false;
this.getProjectList();
}
}
}
</script>
......
<template>
<div class="selfTask">
<el-row>
<el-col :span="8">
<div class="myTaskBaseBox">
<el-card shadow="always">
<div class="pscChartBox">
......@@ -10,31 +12,62 @@
</div>
</el-card>
</div>
</el-col>
<el-col :span="1">
&nbsp;
</el-col>
<el-col :span="11">
<div class="myTaskBaseBox">
<el-card shadow="always">
<div class="taskTable">
<el-table :data="taskList" height="650">
<el-table-column prop="pName" align="center" width="350" label="项目名称">
</el-table-column>
<el-table-column prop="day" align="center" width="150" label="剩余天数">
</el-table-column>
<el-table-column align="center" width="200" label="操作">
<template slot-scope="scope">
<i @click="submit(scope.row)" style="color:aliceblue;font-size:18px" class="el-icon-document-checked">提交任务</i>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
</div>
</el-col>
</el-row>
</div>
</template>
<script>
import pscChart from "./pscChart.vue"
export default {
// 任务
// 我的任务
data() {
return {
taskList:[]
}
},
components: { pscChart },
mounted:function(){
this.initPscChart();
this.initDayChart();
this.initMyTaskList();
},
methods:{
checkNotebookItem:function() {
},
addNotebook:function() {
initMyTaskList:async function() {
let result = await this.$store.dispatch('project/myTaskList', {});
if (result && result.data && result.data.taskList) {
this.taskList = result.data.taskList;
} else {
this.$message.error("获取列表失败");
}
},
initPscChart:function() {
submit:async function(row) {
let result = await this.$store.dispatch('project/submitTask', {pId:row.pId});
if (result && result.data && result.data.isOk) {
this.$message.success("提交成功");
this.initMyTaskList();
} else {
this.$message.error("提交失败");
}
}
}
}
......@@ -66,4 +99,23 @@ export default {
height: 300px;
/* background: rgb(231, 131, 131); */
}
.myTaskBaseBox .taskTable {
width: 100%;
box-shadow: 0 2px 12px 0 rgba(252, 252, 252, 0.144);
background-color: rgb(255 255 255 / 15%);
border-radius: 6px;
}
/*最外层透明*/
.myTaskBaseBox .taskTable .el-table, .el-table__expanded-cell{
background-color: transparent;
}
/* 表格内背景颜色 */
.myTaskBaseBox .taskTable .el-table th, .el-table tr, .el-table td {
background-color: transparent;
color: aliceblue;
}
.myTaskBaseBox .taskTable .el-table--enable-row-hover .el-table__body tr:hover>td {
background-color: rgba(247, 247, 247, 0.205);
}
</style>
\ No newline at end of file
<template>
<div>建设中</div>
<div>
<el-row>
<el-col :span="12">
<h1 class="buildingtitle"> 建 设 中 . . . </h1>
</el-col>
<el-col :span="12">
<img src="../../assets/under.gif" style="">
</el-col>
</el-row>
</div>
</template>
<script>
......@@ -9,5 +20,9 @@ export default {
</script>
<style>
.buildingtitle {
text-align: center;
font-size: 50px;
color: azure;
}
</style>
\ No newline at end of file
......@@ -55,8 +55,6 @@ export default {
},
components: { addNotebook },
mounted:function(){
this.initPscChart();
this.initDayChart();
},
methods:{
checkNotebookItem:function() {
......
......@@ -5,20 +5,19 @@
<h3 class="changepwd">修改密码</h3>
<el-divider></el-divider>
<el-form ref="form" label-width="100px" class="pwdForm">
<el-form-item label="用户名:">
<el-descriptions-item v-model="uName"></el-descriptions-item>
</el-form-item>
<el-form-item label="密码:">
<el-input size="mini" style="width:400px" placeholder="请输入密码" v-model="password"></el-input>
<el-input size="mini" style="width:400px" placeholder="请输入密码" v-model="oldPwd"></el-input>
</el-form-item>
<el-form-item label="新密码:">
<el-input size="mini" style="width:400px" placeholder="请输入密码" v-model="newPwd"></el-input>
</el-form-item>
<el-form-item label="确认密码:">
<el-input size="mini" style="width:400px" placeholder="请确认密码" v-model="newPassword"></el-input>
<el-input size="mini" style="width:400px" placeholder="请确认密码" v-model="ackPwd"></el-input>
</el-form-item>
</el-form>
<el-divider></el-divider>
<div class="pwdButtonBox">
<el-button class="pull-left">取 消</el-button>
<el-button type="primary" class="pull-right">确 认</el-button>
<el-button type="primary" @click="changePwd" class="pull-right">确 认</el-button>
</div>
</el-card>
</div>
......@@ -29,14 +28,30 @@
export default {
data() {
return {
uName:"",
password:"",
newPassword:"",
oldPwd:"",
newPwd:"",
ackPwd:"",
}
},
components: { },
methods:{
async changePwd() {
if (!this.oldPwd || !this.newPwd || !this.ackPwd) {
this.$message.error("密码不能为空");
return;
}
let paramater = {
oldPwd:this.oldPwd,
newPwd:this.newPwd,
ackPwd:this.ackPwd,
};
let result = await this.$store.dispatch('users/changePwd', paramater);
if (result.data && result.data.isOk) {
this.$message.success("修改成功");
} else {
this.$message.error("修改失败");
}
}
}
}
</script>
......
......@@ -47,6 +47,7 @@ export default new Router({
children: [
{path: 'projectList', name: 'projectList', component: () => import('../pages/project/projectList.vue')},
{path: 'task', name: 'task', component: () => import('../pages/project/task.vue')},
{path: 'replenish', name: 'replenish', component: () => import('../pages/project/replenish.vue')},
]
},
{
......@@ -82,9 +83,7 @@ export default new Router({
name: 'pm',
component: () => import('../pages/home.vue'),
children: [
{path: 'replenish', name: 'replenish', component: () => import('../pages/pm/replenish.vue')},
{path: 'stats', name: 'stats', component: () => import('../pages/pm/stats.vue')},
]
},
{
......
import axios from 'axios'
const serverUrl = 'http://192.168.0.105:60000';
const serverUrl = 'http://192.168.0.105:6066';
const server = axios.create({
let server = axios.create({
baseURL: serverUrl,
timeout: 5000
});
async function postReq(url, paramater) {
let _this = this;
return new Promise((resolve, reject) => {
server.post(url, paramater).then(res => {
let headers = {};
if (sessionStorage.getItem('token') ) headers["token"] = sessionStorage.getItem('token');
server.post(url, paramater, {headers:headers}).then(res => {
resolve(res.data);
}).catch(error => {
resolve(error);
......
let picList = [
// {
// index:3,
// name:"BOSS",
// icon:"el-icon-s-custom",
// subList:[
// {subName:"创建项目", path:"/boss/createProject"},
// {subName:"统计", path:"/boss/stats"},
// ]
// },
// {
// index:4,
// name:"PM",
// icon:"el-icon-s-custom",
// subList:[
// {subName:"项目维护", path:"/pm/replenish"},
// {subName:"统计", path:"/pm/stats"},
// ]
// },
{
index:1,
name:" 工 作 台",
icon:"el-icon-s-platform",
subList:[
{subName:"笔记", path:"/desk/notebook"},
{subName:"文件仓库", path:"/desk/files"},
{subName:"项目列表", path:"/project/projectList"},
]
},
{
index:2,
name:" 反 馈",
icon:"el-icon-s-opportunity",
subList:[
......@@ -10,45 +38,26 @@ let picList = [
]
},
{
index:2,
index:3,
name:" 系 统 设 置",
icon:"el-icon-s-tools",
subList:[
{subName:"修改密码", path:"/set/pwd"},
]
},
{
index:3,
name:"BOSS",
icon:"el-icon-s-custom",
subList:[
{subName:"创建项目", path:"/boss/createProject"},
{subName:"统计", path:"/boss/stats"},
]
},
{
index:4,
name:"PM",
icon:"el-icon-s-custom",
subList:[
{subName:"项目维护", path:"/pm/replenish"},
{subName:"统计", path:"/pm/stats"},
]
},
{
index:5,
name:" 工 作 台",
icon:"el-icon-s-platform",
subList:[
{subName:"笔记", path:"/desk/notebook"},
{subName:"文件仓库", path:"/desk/files"},
{subName:"项目列表", path:"/project/projectList"},
{subName:"我的任务", path:"/project/task"},
]
}
]
function getThreeEnum() {
let dId = sessionStorage.getItem('dId');
if (!dId) {
return [];
}
if (dId == 3 || dId == 2 || dId == 4) {
picList[0].subList.push( {subName:"创建项目", path:"/boss/createProject"} );
}
if (dId != 3) {
picList[0].subList.push( {subName:"我的任务", path:"/project/task"} );
}
return picList;
}
......
export const urlConfig = {
"登录":"/api/user/login"
"登录":"/api/user/login",
"修改密码":"/api/user/changepwd",
};
export const projectUrlConfig = {
"获取项目列表":"/api/project/projectlist",
"获取项目信息":"/api/project/projectinfo",
"创建项目":"/api/project/createproject",
"项目维护":"/api/project/replenish",
"任务列表":"/api/project/mytasklist",
"提交任务":"/api/project/submittask"
};
export const feedbackUrlConfig = {
"指派给我的反馈":"/api/feedback/selftasklist",
"反馈详情":"/api/feedback/taskinfo",
"我发起的反馈列表":"/api/feedback/initiatetasklist",
"提交反馈":"/api/feedback/solvetask",
"审核反馈":"/api/feedback/auditingtask",
"添加反馈":"/api/feedback/createfeedback",
};
export const publicUrlConfig = {
"成员列表":"/api/member/memberlist",
"反馈用成员列表":"/api/member/feedbackmemberlist",
};
\ No newline at end of file
import postReq from '../../server/axiosInstance';
import { feedbackUrlConfig } from '../../server/url';
//反馈详情
export async function feedbackInfo({commit}, payload) {
return await postReq(feedbackUrlConfig.反馈详情, payload);
};
//审核反馈
export async function auditingFeedback({commit}, payload) {
return await postReq(feedbackUrlConfig.审核反馈, payload);
};
//我发起的反馈列表
export async function selfInitiateFeedbackList({commit}, payload) {
return await postReq(feedbackUrlConfig.我发起的反馈列表, payload);
};
//指派给我的反馈
export async function selfFeedbackList({commit}, payload) {
return await postReq(feedbackUrlConfig.指派给我的反馈, payload);
};
//提交反馈
export async function solveFeedback({commit}, payload) {
return await postReq(feedbackUrlConfig.提交反馈, payload);
};
//添加反馈
export async function addFeedback({commit}, payload) {
return await postReq(feedbackUrlConfig.添加反馈, payload);
};
import * as actions from './actions'
import * as state from './state'
import * as getters from './getters'
export default {
namespaced: true,
actions,
state,
getters
}
\ No newline at end of file
import postReq from '../../server/axiosInstance';
import { projectUrlConfig } from '../../server/url';
//获取列表
export async function getProjectList({commit}, payload) {
console.log(payload);
return await postReq(projectUrlConfig.获取项目列表, payload);
};
//获取项目信息
export async function getProjectInfo({commit}, payload) {
return await postReq(projectUrlConfig.获取项目信息, payload);
};
//创建项目
export async function createProject({commit}, payload) {
return await postReq(projectUrlConfig.创建项目, payload);
};
//项目维护
export async function replenish({commit}, payload) {
return await postReq(projectUrlConfig.项目维护, payload);
};
//我的项目列表
export async function myTaskList({commit}, payload) {
return await postReq(projectUrlConfig.任务列表, payload);
};
//提交任务
export async function submitTask({commit}, payload) {
return await postReq(projectUrlConfig.提交任务, payload);
}
import * as actions from './actions'
import * as state from './state'
import * as getters from './getters'
export default {
namespaced: true,
actions,
state,
getters
}
\ No newline at end of file
......@@ -3,11 +3,15 @@ import Vuex from 'vuex'
import users from './users'
import project from './project'
import feedback from './feedback'
Vue.use(Vuex);
export default () => {
const Store = new Vuex.Store({
modules: {
users
users,
project,
feedback
}
})
return Store
......
import postReq from '../../server/axiosInstance';
import { urlConfig } from '../../server/url';
import { urlConfig, publicUrlConfig } from '../../server/url';
//登录
export async function login({commit}, payload) {
return await postReq(urlConfig.登录, payload);
let result = await postReq(urlConfig.登录, payload);
if (result.code == 200 && result.success && result.data) {
let {uName, dId, token} = result.data;
if (!uName || !dId || !token) {
return {err:true, errMsg:"请重新登录" };
} else {
sessionStorage.setItem("userName", uName );
sessionStorage.setItem("dId", dId );
sessionStorage.setItem("token", token );
}
return {err:false, errMsg:""};
} else {
return {err:true, errMsg:result.msg || "" };
}
};
//退出登录
......@@ -13,5 +25,21 @@ export function quitLogin() {
return ;
}
//修改密码
export async function changePwd({}, paramater) {
return await postReq(urlConfig.修改密码, paramater);
}
//获取成员列表
export async function getMemberList({}, paramater) {
return await postReq(publicUrlConfig.成员列表, paramater);
}
//获取总的成员列表
export async function getFeedbackMemberList({}, paramater) {
return await postReq(publicUrlConfig.反馈用成员列表, paramater);
}
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