Browse Source

Merge branch 'master' of https://git.cocorobo.cn/CocoRoboLabs/ssti-CollegeManage

yuanyiming 2 năm trước cách đây
mục cha
commit
455cf3e1e9

+ 80 - 54
src/views/activityManage/makerActvityApply.vue

@@ -26,51 +26,65 @@
 
               
               <!-- 活动申请填写信息区域开始 -->
-              <div class="select">
+                  <div class="select">
                     <div class="selectTop">
-                      <div class="label">项目名称</div>
-                      <el-input v-model="data.select.projectName" placeholder="请输入内容"></el-input>
+                      <div class="label">活动名称</div>
+                      <el-input v-model="data.select.activityName" placeholder="请输入内容"></el-input>
                     </div>
                     <div class="selectMid">
                       <div class="selectLeft">
+                          <div class="inpBlock">
+                              <div class="label">所属项目</div>
+                              <el-select v-model="data.select.pid" style="width: 100%;" placeholder="请选择">
+                                <el-option
+                                  v-for="item in data.project"
+                                  :key="item.courseId"
+                                  :label="item.title"
+                                  :value="item.courseId">
+                                </el-option>
+                              </el-select>
+                          </div>
                           <div class="inpBlock">
                               <div class="label">预算经费</div>
-                              <el-input v-model="data.select.fund" placeholder="请输入内容"></el-input>
+                              <el-input type="number" v-model.number="data.select.fund" placeholder="请输入内容"></el-input>
+                              <div style="position: absolute;right: -30px;top: 10px;">(万)</div>
                           </div>
                           <div class="inpBlock">
                               <div class="label">负责人</div>
-                              <el-input v-model="data.select.person" placeholder="请输入内容"></el-input>
+                              <el-input v-model="data.select.leader" placeholder="请输入内容"></el-input>
                           </div>
                           <div class="inpBlock">
                               <div class="label">所在部门</div>
                               <el-select v-model="data.select.value" style="width: 100%;" placeholder="请选择">
                                 <el-option
-                                  v-for="item in data.options"
-                                  :key="item.value"
-                                  :label="item.label"
-                                  :value="item.value">
+                                  v-for="item in data.class"
+                                  :key="item.id"
+                                  :label="item.name"
+                                  :value="item.id">
                                 </el-option>
                               </el-select>
                           </div>
-                          <div class="inpBlock">
-                              <div class="label">联系电话</div>
-                              <el-input v-model="data.select.tel" placeholder="请输入内容"></el-input>
-                          </div>
+
                       </div>
 
                       <div class="selectRight">
                         <div class="inpBlock">
                               <div class="label">项目开始时间</div>
                               <el-date-picker
-                                v-model="data.select.date"
-                                type="date"
+                                v-model="data.select.time"
+                                type="datetime"
+                                value-format="yyyy-MM-dd HH:mm:ss"
                                 style="width: 100%;"
                                 placeholder="选择日期">
                               </el-date-picker>
                           </div>
                           <div class="inpBlock">
-                              <div class="label">预算总经费</div>
-                              <el-input v-model="data.select.fund" placeholder="请输入内容"></el-input>
+                              <div class="label">参加学生人数</div>
+                              <el-input type="number" v-model.number="data.select.people" placeholder="请输入内容"></el-input>
+                          </div>
+                          <div class="inpBlock">
+                              <div class="label">联系电话</div>
+                              <el-input v-model="data.select.tel" @blur="checkPhone(data.select.tel)" placeholder="请输入内容"></el-input>
                           </div>
                           
                       </div>
@@ -86,7 +100,7 @@
               </div>
               <hr>
               <el-table
-                :data="tableData"
+                :data="data.select.teacher"
                 tooltip-effect="dark"
                 stripe
                 class="fontSize"
@@ -100,7 +114,7 @@
                   >
                 </el-table-column>
                 <el-table-column
-                  prop="class"
+                  prop="work"
                   label="工作单位"
                   align="center"
                   >
@@ -120,8 +134,8 @@
                   >
                   <template #default="scope">
                       <div class="operations">
-                              <el-button type="primary" size="mini" >修改</el-button>
-                              <el-button type="primary" size="mini" @click="deleteRow(scope)">删除</el-button>
+                              <el-button type="primary" size="mini" @click="updateTeacher(scope.row.Id)">修改</el-button>
+                              <el-button type="primary" size="mini" @click="deleteRow(scope.row.Id)">删除</el-button>
                       </div>
                   </template>
                 </el-table-column>
@@ -140,7 +154,7 @@
                 resize="none"
                 class="textArea"
                 placeholder="请输入内容"
-                v-model="data.introduce">
+                v-model="data.select.introduce">
               </el-input>
             </div>
             <!-- 活动介绍区域结束 -->
@@ -158,10 +172,8 @@
   
         <!--添加成员dialog对话框开始 -->
          <el-dialog
-            title="添加成员"
+            :title="Member.Id==''?'添加指导老师':'修改指导老师'"
             :visible.sync="addMemberDialog"
-            :modal="false"
-            :close-on-click-modal="false"
             class="AddMember"
             :before-close="handleClose">
 
@@ -173,21 +185,22 @@
               </div>
 
               <div class="littleBlock">
-                <div class="dialogLabel">班级</div>
+                <div class="dialogLabel">工作单位</div>
                 <div>
-                  <el-input v-model="Member.class"></el-input>
+                  <el-input v-model="Member.work"></el-input>
                 </div>
               </div>
 
               <div class="littleBlock">
-                <div class="dialogLabel">电话</div>
+                <div class="dialogLabel">活动分工</div>
                 <div>
                   <el-input v-model="Member.takeCharge"></el-input>
                 </div>
               </div>
               <div slot="footer" class="footer">
-                <el-button @click="commit" class="diaBtn" style="background: #0e72e6;color: #fff;" size="small">确认提交</el-button>
-                <el-button @click="handleClose" class="diaBtn" style="background: #cccccc;color: #000;" size="small">取消</el-button>
+                <el-button v-if="Member.Id==''" type="primary" @click="commit" class="diaBtn" size="small">确认提交</el-button>
+                <el-button v-if="!Member.Id==''"  type="primary" @click="change" class="diaBtn" size="small">确认修改</el-button>
+                <el-button @click="handleClose" class="diaBtn" size="small">取消</el-button>
               </div>
         </el-dialog>
       <!--添加成员dialog对话框结束 -->
@@ -198,30 +211,18 @@
   </template>
   
   <script>
+  import { uuid } from 'vue-uuid';
       export default {
-        props:["next","data"],
+        props:["next","data","checkPhone"],
         data() {
           return {
             addMemberDialog:false,
-            value1:'',  //日期
-            options: [{
-              value: '选项1',
-              label: '黄金糕'
-            }],
             Member:{
-              Name:'袁一鸣',
-              class:'21通信',
-              takeCharge:'ui设计'
+              Id:"",
+              Name:'',
+              work:'',
+              takeCharge:''
             },
-            value: '中德学院',
-            input:'',
-            textarea:'',
-            tableData:[{
-              Name:'徐晓慧',
-              class:'22电子通信G5',
-              takeCharge:'UI设计',
-            },
-            ],
           }
         },
         methods:{
@@ -236,14 +237,39 @@
             this.$router.push('/makerActvity')
           },
           commit(){
+            //判断是否全部填写
+            for(let a in this.Member)if(a!='Id'&&/^\s*$/g.test(this.Member[a]))return this.$message.error("请不要留空")
+            this.Member.Id = uuid.v1();
+            let pushData={};
+            Object.assign(pushData,this.Member)
+            this.data.select.teacher.push(pushData);
+            for(let i in this.Member)this.Member[i] = '';
             this.addMemberDialog=false;
-            this.tableData.push(this.Member)
+            this.$message({
+              message:"添加成功",
+              type:"success"
+            });
+          },
+          change(){
+            if(this.Member.Id=='')return this.$message.error("错误");
+            for(let a in this.Member)if(/^\s*$/g.test(this.Member[a]))return this.$message.error("请不要留空")
+            Object.assign(this.data.select.teacher.filter(item=>item.Id==this.Member.Id)[0],this.Member)
+            for(let i in this.Member)this.Member[i]='';
+            this.addMemberDialog = true;
+            this.$message({message:"修改成功",type:"success"})
+            this.addMemberDialog = false;
           },
           handleClose(){
+            for(let i in this.Member)this.Member[i] = '';
             this.addMemberDialog=false;
           },
-          deleteRow(){
-            console.log(111);
+          updateTeacher(Id){
+            Object.assign(this.Member,this.data.select.teacher.filter(item=>item.Id==Id)[0])
+            this.addMemberDialog = true;
+          },
+          deleteRow(Id){
+            this.data.select.teacher = this.data.select.teacher.filter(item=>item.Id!=Id);
+            this.$message({message:"删除成功",type:"success"})
           },
           toPage(val){
             if (val==1) {
@@ -257,9 +283,9 @@
             }
           }
         },
-        created(){
-          this.value=(this.options[0].value)
-        }
+        // created(){
+          // this.value=(this.options[0].value)
+        // }
       }
   </script>
   

+ 13 - 26
src/views/activityManage/makerActvityApply2.vue

@@ -30,27 +30,27 @@
             <div id="z">
               <p class="pTit">活动计划</p>
               <div class="editor">
-                <vue-editor :editorToolbar="customToolbar" v-model="content"></vue-editor>
+                <vue-editor :editorToolbar="customToolbar" v-model="data[0]"></vue-editor>
               </div>
             </div>
 
             <div id="x">
                 <p class="pTit">预期目标</p>
                 <div class="editor">
-                  <vue-editor :editorToolbar="customToolbar" v-model="content"></vue-editor>
+                  <vue-editor :editorToolbar="customToolbar" v-model="data[1]"></vue-editor>
                 </div>
               </div>
 
               <div id="c">
                 <p class="pTit">活动受面</p>
                 <div class="editor">
-                  <vue-editor :editorToolbar="customToolbar" v-model="content"></vue-editor>
+                  <vue-editor :editorToolbar="customToolbar" v-model="data[2]"></vue-editor>
                 </div>
               </div>
               <div id="v">
                 <p class="pTit">经费支出计划</p>
                 <div class="editor">
-                  <vue-editor :editorToolbar="customToolbar" v-model="content"></vue-editor>
+                  <vue-editor :editorToolbar="customToolbar" v-model="data[3]"></vue-editor>
                 </div>
               </div>
               
@@ -71,13 +71,12 @@
         title="提示"
         :visible.sync="dialogVisible1"
         width="600px"
-        class="MAputIn"
-        :before-close="init">
+        class="MAputIn">
         <div class="addDialogLogo">LOGO</div>
-        <div class="deleteContent">是否提交“×××”项目活动?</div>
+        <div class="deleteContent">是否提交“{{activityName}}”项目活动?</div>
         <span slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="init" class="btn5" size="small">确认提交</el-button>
-            <el-button @click="init" class="btn5" style="background:#cccccc" size="small">取消</el-button>
+            <el-button type="primary" @click="submit" class="btn5" size="small">确认提交</el-button>
+            <el-button @click="dialogVisible1=false;" class="btn5" style="background:#cccccc" size="small">取消</el-button>
         </span>
       </el-dialog>
       <!-- 提交对话框结束 -->
@@ -88,13 +87,12 @@
   <script>
   import { VueEditor } from "vue2-editor";
       export default {
-        props:["back"],
+        props:["back","submit","activityName","data","check"],
         components:{
           VueEditor
         },
         data() {
           return {
-            content:'',
             dialogVisible1:false,
             customToolbar: [
               ["bold", "italic", "underline"], [{ list: "ordered" }, { list: "bullet" }],
@@ -104,22 +102,11 @@
           }
         },
         methods:{
-            init(){
-            //重置
-            // this.dialogVisible=false;
-            this.dialogVisible1=false;
-            // this.dialogVisible2=false;
-            },
-            putIn(){
-            // alert('333')
-            this.dialogVisible1=true;
-            // this.$router.push('/projectApplicationfund')
+          putIn(){
+              if(this.check()==1)this.dialogVisible1=true;
           },
           backBtn1(){
-            this.$router.push('/makerActvityApply')
-          },
-          homeExit(){
-
+              this.$router.push('/makerActvityApply')
           },
           toPage(val){
             if (val==1) {
@@ -134,7 +121,7 @@
               document.getElementById("b").scrollIntoView({ behavior: "smooth" });
             }
           }
-        }
+        },
       }
   </script>
   

+ 102 - 21
src/views/activityManage/makerActvityApplyMain.vue

@@ -1,8 +1,8 @@
 <template>
     <!-- 创客创新-活动申请 -->
   <div class="core_dialogue">
-        <makerActvityApply :data="makerActvityApply" :next="next"  v-show="status==0" />
-        <makerActvityApply2 :data="makerActvityApply2" :next="next" :back="back" v-show="status==1" />
+        <makerActvityApply :data="makerActvityApplyData" :checkPhone="checkPhone"  :next="next"  v-if="status==0" />
+        <makerActvityApply2 :data="makerActvityApply2Data" :activityName="makerActvityApplyData.select.activityName" :check="check" :submit="submit" :back="back" v-if="status==1" />
   </div>
 </template>
 
@@ -14,27 +14,23 @@ import makerActvityApply2 from './makerActvityApply2.vue';
         data() {
             return {
                 status:0,
-                makerActvityApply:{
+                makerActvityApplyData:{
                     select:{
-                        projectName:'人工智能分链机器',
-                        person:'',
+                        activityName:'',
+                        pid:"",
+                        leader:'',
                         tel:'',
-                        date:'2023-11-12',
-                        fund:'300000',
-                        value:''
+                        time:'',
+                        fund:0,
+                        people:0,
+                        value:'',
+                        teacher:[],
+                        introduce:'',
                     },
-                    introduce:'福利大放送',
-
-                    options:[
-                        {
-                            value: '选项1',
-                            label: '黄金糕'
-                        }
-                    ]
+                    class:[],
+                    project:[],
                 },
-                makerActvityApply2:{
-
-                }
+                makerActvityApply2Data:["","","","",]
             }
         },
         methods:{
@@ -47,9 +43,94 @@ import makerActvityApply2 from './makerActvityApply2.vue';
                 this.status--
             },
             submit(){
-
+                let data = {...this.makerActvityApplyData.select,...this.makerActvityApply2Data}
+                console.log(data);
+                
+            },
+            getAllClass(){
+                this.ajax.get(this.$store.state.api+"/SelectAllDepartment",{
+                    uid:this.$store.state.userInfo.userid,
+                }).then(res=>{
+                    this.makerActvityApplyData.class = res.data[0];
+                }).catch(err=>{
+                    this.$message.error(err.message)
+                })
+            },
+            getProject(){
+                this.ajax.get(this.$store.state.api+"/GetAllProjectName",{
+                    uid:this.$store.state.userInfo.userid,
+                }).then(res=>{
+                    this.makerActvityApplyData.project = res.data[0];
+                }).catch(err=>{
+                    this.$message.error(err.message)
+                })
+            },
+            check(){
+                let checkData = {...this.makerActvityApplyData.select,...this.makerActvityApply2Data}
+                const cEmpty = /^\s*$/g;
+                for(let i in checkData){
+                    switch(i){
+                        case "0":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("活动计划不能为空");
+                            break;
+                        case "1":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("预期目标不能为空");
+                            break;
+                        case "2":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("活动受面不能为空");
+                            break;
+                        case "3":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("经费支出计划不能为空");
+                            break;
+                        case "activityName":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("活动名称不能为空");
+                            break;
+                        case "teacher":
+                            if(checkData[i].length==0)return this.$message.error("请添加至少一名指导老师")
+                            break;
+                        case "fund":
+                            break;
+                        case "people":
+                            break;
+                        case "leader":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("负责人不能为空");
+                            break;
+                        case "pid":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("请选择所属项目");
+                            break;
+                        case "tel":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("电话号码不能为空");
+                            if(!this.checkPhone(checkData[i]))return;
+                            break;
+                        case "time":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("请选择项目开始时间");
+                            break;
+                        case "value":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("请选择所在部门");
+                            break;
+                        case "introduce":
+                            if(cEmpty.test(checkData[i]))return this.$message.error("活动介绍不能为空");
+                            break;
+                    }
+                }
+                return 1;
+            },
+            checkPhone(val){
+                if(/^\s*$/g.test(val))return;
+                const cPhone = /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/
+                if(!cPhone.test(val)){
+                    this.$message.error("电话号码格式不正确");
+                    return false;
+                }
+                return true;
             }
-        }
+        },
+        mounted() {
+            //获取部门
+            this.getAllClass();
+            //获取项目
+            this.getProject();
+        },
     }
 </script>