|
@@ -10,19 +10,26 @@
|
|
|
<div>预计完成时间</div>
|
|
|
<div>完成时间</div>
|
|
|
</div>
|
|
|
- <div class="onefloor" v-if="item.childList[0].childList==undefined||item.childList[0].childList==null||item.childList[0].childList.length<=0">
|
|
|
+ <div class="onefloors" v-if="item.childList[0].childList==undefined||item.childList[0].childList==null||item.childList[0].childList.length<=0">
|
|
|
<div v-for="(seconditem,index) in item.childList" :key="index" class="li-steps-li">
|
|
|
<div :style="filter_color(seconditem.stepStatus)">{{seconditem.jobContent}}</div>
|
|
|
<div>{{seconditem.expectBeginDt.split(" ")[0]}}~{{seconditem.expectEndDt.split(" ")[0]}}</div>
|
|
|
<div>{{seconditem.expectEndDt.split(" ")[0]}}</div>
|
|
|
</div>
|
|
|
<div @click="addfigures(item)" class="addonebtn">
|
|
|
+ <i class="el-icon-edit"></i>
|
|
|
编 辑
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-if="item.childList[0].childList!==undefined&&item.childList[0].childList!=null&&item.childList[0].childList.length>0" style="padding:5px">
|
|
|
+ <div class="onefloor" v-if="item.childList[0].childList!==undefined&&item.childList[0].childList!=null&&item.childList[0].childList.length>0" style="padding:5px">
|
|
|
<div v-for="(seconditem,index) in item.childList" :key="index" class="second-li">
|
|
|
- <span>{{seconditem.jobContent.split("-")[1]}}</span>
|
|
|
+ <div class="level-title">
|
|
|
+ <span>{{seconditem.jobContent.split("-")[1]}}</span>
|
|
|
+ <div @click="levelAddfigures(seconditem,index)" class="levelTwo-btn">
|
|
|
+ <i class="el-icon-edit"></i>
|
|
|
+ 编 辑
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
<div class="li-steps-ul">
|
|
|
<div class="zanwu" v-if="!seconditem.childList">暂无事件</div>
|
|
|
<div v-for="(stepsitem,index) in seconditem.childList" :key="index" class="li-steps-li">
|
|
@@ -37,11 +44,107 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <el-dialog title="编 辑" :visible.sync="outerVisible">
|
|
|
+ <el-dialog
|
|
|
+ width="30%"
|
|
|
+ :title="titleName"
|
|
|
+ :visible.sync="innerVisible"
|
|
|
+ append-to-body>
|
|
|
+ <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
|
|
|
+ <div class="flx-box">
|
|
|
+ <el-form-item label="管控编号" label-width="80px" prop="scheduleId">
|
|
|
+ <el-input :readonly="true" v-model="ruleForm.scheduleId"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="操作标识" label-width="80px" prop="step">
|
|
|
+ <el-input :readonly="true" v-model="ruleForm.step"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="节点标识" label-width="80px" prop="parentStep">
|
|
|
+ <el-input :readonly="true" v-model="ruleForm.parentStep"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="指派员工" prop="duty" label-width="80px">
|
|
|
+ <el-select v-model="ruleForm.duty" placeholder="请选择员工">
|
|
|
+ <el-option v-for="(item,index) in employeeColumn" :key="index" :label="item.sysUserName" :value="item.sysUserId"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item label="指派员工" label-width="80px" prop="duty">
|
|
|
+ <el-input v-model="ruleForm.duty"></el-input>
|
|
|
+ </el-form-item> -->
|
|
|
+ <el-form-item label="操作名称" label-width="80px" prop="JobContent">
|
|
|
+ <el-input v-model="ruleForm.JobContent"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="操作人ID" label-width="80px" prop="CreateUserId">
|
|
|
+ <el-input :readonly="true" v-model="ruleForm.CreateUserId"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="开始时间" label-width="80px" required>
|
|
|
+ <el-form-item prop="ExpectBeginDt">
|
|
|
+ <el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.ExpectBeginDt" style="width: 100%;"></el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="结束时间" label-width="80px" required>
|
|
|
+ <el-form-item prop="ExpectEndDt">
|
|
|
+ <el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.ExpectEndDt" style="width: 100%;"></el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <el-form-item label="备注" label-width="80px" prop="Remark">
|
|
|
+ <el-input type="textarea" v-model="ruleForm.Remark"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <div>
|
|
|
+ <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
|
|
|
+ <el-button @click="resetForm('ruleForm')">重置</el-button>
|
|
|
+ </div>
|
|
|
+ </el-form>
|
|
|
+ </el-dialog>
|
|
|
+ <div class="dialog-abb">
|
|
|
+ <el-button type="primary" @click="addBtn()">添 加</el-button>
|
|
|
+ </div>
|
|
|
+ <el-table
|
|
|
+ :data="educationalList"
|
|
|
+ border
|
|
|
+ style="width: 100%">
|
|
|
+ <el-table-column
|
|
|
+ prop="stepName"
|
|
|
+ label="步骤名称"
|
|
|
+ width="180">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="expectBeginDt"
|
|
|
+ :formatter="filteryear"
|
|
|
+ label="开始时间"
|
|
|
+ width="180">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="expectEndDt"
|
|
|
+ :formatter="filteryears"
|
|
|
+ width="180"
|
|
|
+ label="结束时间">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="remark"
|
|
|
+ label="备注">
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" width="130">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ @click="handleEdit(scope.$index, scope.row)"><i class="el-icon-edit"></i></el-button>
|
|
|
+ <el-button
|
|
|
+ size="mini"
|
|
|
+ type="danger"
|
|
|
+ @click="handleDelete(scope.$index, scope.row,educationalList)"><i class="el-icon-delete"></i></el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="outerVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary">确 定</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import Qs from 'qs'
|
|
|
+import { el } from '@fullcalendar/core/internal-common'
|
|
|
export default {
|
|
|
data() {
|
|
|
return {
|
|
@@ -331,7 +434,46 @@ export default {
|
|
|
id: 14,
|
|
|
label: "客户意见表"
|
|
|
}
|
|
|
- ]
|
|
|
+ ],
|
|
|
+ educationalList:[
|
|
|
+
|
|
|
+ ],
|
|
|
+ outerVisible: false,
|
|
|
+ innerVisible: false,
|
|
|
+ //添加表单数据
|
|
|
+ ruleForm: {
|
|
|
+ scheduleId: '',
|
|
|
+ step: '',
|
|
|
+ parentStep: '',
|
|
|
+ duty: '',
|
|
|
+ JobContent: '',
|
|
|
+ CreateUserId: '',
|
|
|
+ ExpectBeginDt: '',
|
|
|
+ ExpectEndDt: '',
|
|
|
+ Remark: '',
|
|
|
+ },
|
|
|
+ //表单数据非空验明
|
|
|
+ rules: {
|
|
|
+ duty: [
|
|
|
+ { required: true, message: '请选择员工', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ ExpectBeginDt: [
|
|
|
+ { type: 'date', required: true, message: '请选择开始日期', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ ExpectEndDt: [
|
|
|
+ { type: 'date', required: true, message: '请选择结束日期', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ JobContent: [
|
|
|
+ { required: true, message: '请输入操作名称', trigger: 'blur' },
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ //员工列
|
|
|
+ employeeColumn:[],
|
|
|
+ //添加参数
|
|
|
+ addArgument:{},
|
|
|
+ //标题名称
|
|
|
+ titleName:'',
|
|
|
+ stepID:''
|
|
|
}
|
|
|
},
|
|
|
created(){
|
|
@@ -360,7 +502,7 @@ export default {
|
|
|
method: 'post',
|
|
|
url:url,
|
|
|
headers:{
|
|
|
- Authorization:'Bearer '+this.token,
|
|
|
+ Authorization:'Bearer '+that.token,
|
|
|
'Content-Type':'application/json;charset=UTF-8'
|
|
|
},
|
|
|
data:data
|
|
@@ -369,6 +511,10 @@ export default {
|
|
|
if(res.data.code==200){
|
|
|
that.treeData=res.data.data.rootList
|
|
|
console.log(that.treeData)
|
|
|
+ console.log(res.data.data)
|
|
|
+ that.ruleForm.scheduleId=res.data.data.primary.id;
|
|
|
+ that.employeeColumn=res.data.data.personList;
|
|
|
+ that.employeeColumn=res.data.data.personList;
|
|
|
// that.$message({
|
|
|
// message: res.data.msg,
|
|
|
// type: 'success',
|
|
@@ -385,13 +531,207 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ handleClose(done) {
|
|
|
+ this.$confirm('确认关闭?')
|
|
|
+ .then(_ => {
|
|
|
+ done();
|
|
|
+ })
|
|
|
+ .catch(_ => {});
|
|
|
+ },
|
|
|
+ addBtn(){
|
|
|
+ this.titleName="添 加"
|
|
|
+ this.innerVisible = true;
|
|
|
+ this.ruleForm.parentStep=this.addArgument.parentStep;
|
|
|
+ this.ruleForm.step=this.addArgument.step;
|
|
|
+ this.ruleForm.duty="";
|
|
|
+ this.ruleForm.JobContent="";
|
|
|
+ this.ruleForm.ExpectBeginDt="";
|
|
|
+ this.ruleForm.ExpectEndDt="";
|
|
|
+ this.ruleForm.Remark="";
|
|
|
+ },
|
|
|
addfigures(val){
|
|
|
- console.log(val.childList)
|
|
|
- val.childList.push({
|
|
|
- jobContent:"测试",
|
|
|
- expectBeginDt: "2023-04-14 12:07:24",
|
|
|
- expectEndDt: "2023-05-11 12:07:24",
|
|
|
- stepStatus:2
|
|
|
+ console.log(val.childList);
|
|
|
+ this.outerVisible = true;
|
|
|
+ this.addArgument.parentStep=val.root,
|
|
|
+ this.addArgument.step=val.root+"01",
|
|
|
+ this.educationalList=val.childList;
|
|
|
+ },
|
|
|
+ levelAddfigures(val,index){
|
|
|
+ console.log(val);
|
|
|
+ console.log(index);
|
|
|
+ this.outerVisible = true;
|
|
|
+ this.educationalList=val.childList;
|
|
|
+ this.addArgument.parentStep=60+((index+1)+"");
|
|
|
+ this.addArgument.step=val.step+"1";
|
|
|
+ console.log(this.addArgument)
|
|
|
+ },
|
|
|
+ //处理时间
|
|
|
+ disposeTime(val){
|
|
|
+ var date = new Date(val);
|
|
|
+ var y = date.getFullYear();
|
|
|
+ var m = date.getMonth() + 1;
|
|
|
+ m = m < 10 ? ('0' + m) : m;
|
|
|
+ var d = date.getDate();
|
|
|
+ d = d < 10 ? ('0' + d) : d;
|
|
|
+ let time = y + '-' + m + '-' + d;
|
|
|
+ return time
|
|
|
+ },
|
|
|
+ //修改详情
|
|
|
+ reviseInfo(){
|
|
|
+ var url="/api/Groups/PostUpdateGrpScheduleDetail";
|
|
|
+ var that=this;
|
|
|
+ that.fullscreenLoading = true;
|
|
|
+ this.$axios({
|
|
|
+ method: 'post',
|
|
|
+ url:url,
|
|
|
+ headers:{
|
|
|
+ Authorization:'Bearer '+that.token,
|
|
|
+ 'Content-Type':'application/json;charset=UTF-8'
|
|
|
+ },
|
|
|
+ data:{
|
|
|
+ id:Number(that.stepID),
|
|
|
+ duty:Number(that.ruleForm.duty),
|
|
|
+ stepStatus:0,
|
|
|
+ jobContent:that.ruleForm.JobContent,
|
|
|
+ expectBeginDt:that.disposeTime(that.ruleForm.ExpectBeginDt) +' '+ "09:00:00",
|
|
|
+ expectEndDt:that.disposeTime(that.ruleForm.ExpectEndDt) +' '+ "18:00:00",
|
|
|
+ remark:that.ruleForm.Remark,
|
|
|
+ }
|
|
|
+ }).then(function(res){
|
|
|
+ console.log(res)
|
|
|
+ if(res.data.code==200){
|
|
|
+ that.$message({
|
|
|
+ message: res.data.msg,
|
|
|
+ type: 'success',
|
|
|
+ offset:50
|
|
|
+ });
|
|
|
+ that.fullscreenLoading = false;
|
|
|
+ }else{
|
|
|
+ that.$message({
|
|
|
+ message:res.data.msg,
|
|
|
+ type: 'warning',
|
|
|
+ offset:50
|
|
|
+ });
|
|
|
+ that.fullscreenLoading = false;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //新增详情
|
|
|
+ addopinfo(){
|
|
|
+ var url="/api/Groups/PostInsertGrpScheduleDetail";
|
|
|
+ var that=this;
|
|
|
+ that.fullscreenLoading = true;
|
|
|
+ this.$axios({
|
|
|
+ method: 'post',
|
|
|
+ url:url,
|
|
|
+ headers:{
|
|
|
+ Authorization:'Bearer '+that.token,
|
|
|
+ 'Content-Type':'application/json;charset=UTF-8'
|
|
|
+ },
|
|
|
+ data:{
|
|
|
+ scheduleId:that.ruleForm.scheduleId,
|
|
|
+ step:Number(that.ruleForm.step),
|
|
|
+ parentStep:that.ruleForm.parentStep,
|
|
|
+ duty:that.ruleForm.duty,
|
|
|
+ jobContent:that.ruleForm.JobContent,
|
|
|
+ expectBeginDt:that.disposeTime(that.ruleForm.ExpectBeginDt) +' '+ "09:00:00",
|
|
|
+ expectEndDt:that.disposeTime(that.ruleForm.ExpectEndDt) +' '+ "18:00:00",
|
|
|
+ createUserId:that.ruleForm.CreateUserId,
|
|
|
+ remark:that.ruleForm.Remark,
|
|
|
+ }
|
|
|
+ }).then(function(res){
|
|
|
+ console.log(res)
|
|
|
+ if(res.data.code==200){
|
|
|
+ that.$message({
|
|
|
+ message: res.data.msg,
|
|
|
+ type: 'success',
|
|
|
+ offset:50
|
|
|
+ });
|
|
|
+ that.fullscreenLoading = false;
|
|
|
+ }else{
|
|
|
+ that.$message({
|
|
|
+ message:res.data.msg,
|
|
|
+ type: 'warning',
|
|
|
+ offset:50
|
|
|
+ });
|
|
|
+ that.fullscreenLoading = false;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ submitForm(formName) {
|
|
|
+ this.$refs[formName].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ if(this.titleName=="添 加"){
|
|
|
+ this.addopinfo();
|
|
|
+ }else if(this.titleName=="修 改"){
|
|
|
+ this.reviseInfo();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ console.log('error submit!!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ resetForm(formName) {
|
|
|
+ this.$refs[formName].resetFields();
|
|
|
+ },
|
|
|
+ filteryear(val){
|
|
|
+ let gstime=val.expectBeginDt.split(' ')[0]
|
|
|
+ return gstime;
|
|
|
+ },
|
|
|
+ filteryears(val){
|
|
|
+ let gstime=val.expectEndDt.split(' ')[0]
|
|
|
+ return gstime;
|
|
|
+ },
|
|
|
+ //编辑
|
|
|
+ handleEdit(index, row) {
|
|
|
+ console.log(index, row);
|
|
|
+ this.stepID=row.step;
|
|
|
+ this.titleName="修 改";
|
|
|
+ this.innerVisible = true;
|
|
|
+ this.ruleForm.parentStep=row.root;
|
|
|
+ this.ruleForm.step=row.step;
|
|
|
+ this.ruleForm.JobContent=row.jobContent;
|
|
|
+ this.ruleForm.duty=row.duty;
|
|
|
+ this.ruleForm.ExpectEndDt=row.expectEndDt;
|
|
|
+ this.ruleForm.ExpectBeginDt=row.expectBeginDt;
|
|
|
+ this.ruleForm.Remark=row.remark;
|
|
|
+ },
|
|
|
+ //删除
|
|
|
+ handleDelete(index, row,rows) {
|
|
|
+ console.log(index, row.step);
|
|
|
+ var url="/api/Groups/PostDeleteGrpScheduleDetail";
|
|
|
+ var that=this;
|
|
|
+ that.fullscreenLoading = true;
|
|
|
+ this.$axios({
|
|
|
+ method: 'post',
|
|
|
+ url:url,
|
|
|
+ headers:{
|
|
|
+ Authorization:'Bearer '+that.token,
|
|
|
+ 'Content-Type':'application/json;charset=UTF-8'
|
|
|
+ },
|
|
|
+ data:{
|
|
|
+ id:row.step,
|
|
|
+ duty:that.ruleForm.CreateUserId
|
|
|
+ }
|
|
|
+ }).then(function(res){
|
|
|
+ console.log(res)
|
|
|
+ if(res.data.code==200){
|
|
|
+ that.$message({
|
|
|
+ message: res.data.msg,
|
|
|
+ type: 'success',
|
|
|
+ offset:50
|
|
|
+ });
|
|
|
+ rows.splice(index, 1);
|
|
|
+ that.fullscreenLoading = false;
|
|
|
+ }else{
|
|
|
+ that.$message({
|
|
|
+ message:res.data.msg,
|
|
|
+ type: 'warning',
|
|
|
+ offset:50
|
|
|
+ });
|
|
|
+ that.fullscreenLoading = false;
|
|
|
+ }
|
|
|
})
|
|
|
}
|
|
|
},
|
|
@@ -400,6 +740,7 @@ export default {
|
|
|
},
|
|
|
mounted(){
|
|
|
this.token=JSON.parse(localStorage.getItem('userinif')).token;
|
|
|
+ this.ruleForm.CreateUserId=JSON.parse(localStorage.getItem('userinif')).userInfo.userId;
|
|
|
this.getControl()
|
|
|
}
|
|
|
}
|
|
@@ -586,19 +927,62 @@ export default {
|
|
|
font-size: 12px;
|
|
|
color: #8f8383;
|
|
|
width: 30%;
|
|
|
- text-align: center;
|
|
|
+ text-align: center;
|
|
|
padding: 5px;
|
|
|
}
|
|
|
- .onefloor{
|
|
|
+ .onefloors{
|
|
|
position: relative;
|
|
|
}
|
|
|
.addonebtn{
|
|
|
+ font-size: 14px;
|
|
|
color: #606266;
|
|
|
position: absolute;
|
|
|
- top: 0;
|
|
|
- right: 0;
|
|
|
padding: 5px 10px;
|
|
|
box-shadow: 0 0 5px #0005;
|
|
|
border-radius:5px ;
|
|
|
}
|
|
|
+ .level-title{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+ .levelTwo-btn{
|
|
|
+ font-size: 14px;
|
|
|
+ color: #606266;
|
|
|
+ padding: 5px 10px;
|
|
|
+ box-shadow: 0 0 5px #0005;
|
|
|
+ border-radius:5px ;
|
|
|
+ }
|
|
|
+ .controltree-box .el-dialog{
|
|
|
+ border-radius:5px;
|
|
|
+ }
|
|
|
+ .controltree-box .el-dialog__body{
|
|
|
+ padding-top: 10px;
|
|
|
+ }
|
|
|
+ .dialog-abb{
|
|
|
+ text-align: right;
|
|
|
+ padding-bottom: 5px;
|
|
|
+ }
|
|
|
+ .controltree-li:nth-child(2n+1) .addonebtn{
|
|
|
+ top: -52px;
|
|
|
+ right: -94px;
|
|
|
+ }
|
|
|
+ .controltree-li:nth-child(2n) .addonebtn{
|
|
|
+ top: -52px;
|
|
|
+ left: -94px;
|
|
|
+ }
|
|
|
+ .flx-box{
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ justify-content: space-between;
|
|
|
+ }
|
|
|
+ .flx-box>.el-form-item{
|
|
|
+ width: 48%;
|
|
|
+ }
|
|
|
+ .el-dialog{
|
|
|
+ border-radius: 5px; ;
|
|
|
+ }
|
|
|
+ .onefloor{
|
|
|
+ max-height: 520px;
|
|
|
+ overflow-y: auto;
|
|
|
+ }
|
|
|
</style>
|