ソースを参照

xiugai0417 17:50

liuhj 2 年 前
コミット
e08b3fa685
共有5 個のファイルを変更した431 個の追加25 個の削除を含む
  1. 12 2
      src/components/OP/visaform.vue
  2. 7 1
      src/components/child/AuthorityJob.vue
  3. 7 1
      src/components/child/AuthorityUser.vue
  4. 400 16
      src/components/child/Controltree.vue
  5. 5 5
      src/components/system/User.vue

+ 12 - 2
src/components/OP/visaform.vue

@@ -13,7 +13,7 @@
             </div>
             <div class="search-li">
                 <div class="country-box">
-                    <label>签证表国别:</label>
+                    <label>签证表国别: </label>
                     <el-select v-model="groupvalues" filterable placeholder="请选择">
                         <el-option
                         v-for="item in optionsgroup"
@@ -24,7 +24,7 @@
                     </el-select>
                 </div>
                 <div class="interpret-box">
-                    <label>翻译语种:</label>
+                    <label>翻译语种: </label>
                     <el-select v-model="value" filterable placeholder="请选择">
                         <el-option
                         v-for="item in options"
@@ -411,4 +411,14 @@ export default {
         margin-left: 10px;
         padding: 8px 20px;
     }
+    .country-box{
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+    }
+    .interpret-box{
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+    }
 </style>

+ 7 - 1
src/components/child/AuthorityJob.vue

@@ -10,7 +10,7 @@
                         </el-option>
                     </el-select>
                 </div>
-                <div>
+                <div class="job-input">
                     <el-select @change="companyChange()" v-model="valuecorporation" clearable placeholder="公司">
                         <el-option v-for="item in corporation" :key="item.value" :label="item.companyName" :value="item.id">
                         </el-option>
@@ -343,4 +343,10 @@ body {
 .job-table .el-table--border .el-table__cell:first-child .cell {
     text-align: center;
 }
+.job-input{
+    display: flex;
+}
+.job-input .el-select{
+    margin-right: 5px;
+}
 </style>

+ 7 - 1
src/components/child/AuthorityUser.vue

@@ -8,7 +8,7 @@
                         </el-option>
                     </el-select>
                 </div>
-                <div>
+                <div class="job-input">
                     <el-select @change="companyChange()" v-model="valuecorporation" clearable placeholder="公司">
                         <el-option v-for="item in corporation" :key="item.value" :label="item.companyName" :value="item.id">
                         </el-option>
@@ -389,4 +389,10 @@ body {
 .job-table .el-table--border .el-table__cell:first-child .cell {
     text-align: center;
 }
+.job-input{
+    display: flex;
+}
+.job-input .el-select{
+    margin-right: 5px;
+}
 </style>

+ 400 - 16
src/components/child/Controltree.vue

@@ -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>

+ 5 - 5
src/components/system/User.vue

@@ -22,22 +22,22 @@
                     </el-table-column>
                     <el-table-column prop="cnName" label="姓名" width="200">
                     </el-table-column>
-                    <el-table-column prop="companyName" label="公司名称" width="220">
+                    <el-table-column prop="companyName" label="公司名称" width="250">
                     </el-table-column>
                     <el-table-column prop="depName" label="部门名称" width="100">
                     </el-table-column>
                     <el-table-column prop="jobName" label="职位" width="140">
                     </el-table-column>
-                    <el-table-column prop="ext" label="分机号" width="60">
+                    <el-table-column prop="ext" label="分机号" width="80">
                     </el-table-column>
                     <el-table-column prop="phone" label="手机号" width="180">
                     </el-table-column>
-                    <el-table-column label="认识审核" prop="hrAudit" width="200">
+                    <el-table-column label="认识审核" prop="hrAudit">
                         <template slot-scope="hrAudit">
-                            <span>{{ hrAudit.row.hrAudit == 1 ? "审核通过(正常使用)" : "未通过/未审核(不可用)" }}</span>
+                            <span>{{ hrAudit.row.hrAudit == 1 ? "审核通过" : "未通过/未审核" }}</span>
                         </template>
                     </el-table-column>
-                    <el-table-column label="操作">
+                    <el-table-column label="操作" width="180">
                         <template slot-scope="scope">
                             <el-button size="mini" @click="upDate(scope.$index, scope.row)">编辑</el-button>
                             <el-button size="mini" type="danger" @click="del(scope.$index, scope.row)">删除</el-button>