Browse Source

创建机构

natasha 1 year ago
parent
commit
d6711d995d

+ 6 - 4
src/views/organize_manage/BatchImport.vue

@@ -65,7 +65,7 @@
                 <p>成功上传 <span class="color-green">{{resultData.success_count}}</span> 条记录,失败 <span class="color-red">{{resultData.cur_count}}</span> 条</p>
                 <p>成功上传 <span class="color-green">{{resultData.success_count}}</span> 条记录,失败 <span class="color-red">{{resultData.cur_count}}</span> 条</p>
                 <div class="border"></div>
                 <div class="border"></div>
                 <p :class="[item.is_success==='true'?'color-green':'color-red']" v-for="(item,index) in execute_log_list" :key="index">
                 <p :class="[item.is_success==='true'?'color-green':'color-red']" v-for="(item,index) in execute_log_list" :key="index">
-                    {{item.row_count + ' '+ item.error_info}}
+                    {{item.row_count + ' '+ (item.is_success==='false'?item.error_info:'上传成功')}}
                 </p>
                 </p>
             </div>
             </div>
         </template>
         </template>
@@ -117,6 +117,7 @@ export default {
       execute_log_list: [], // 日志列表
       execute_log_list: [], // 日志列表
       uploadTime: 0,
       uploadTime: 0,
       uploadTimer: null,
       uploadTimer: null,
+      id:this.$route.query.id?this.$route.query.id:''
     };
     };
   },
   },
   watch: {},
   watch: {},
@@ -241,9 +242,10 @@ export default {
         this.loading = true
         this.loading = true
         this.progressFlag = false
         this.progressFlag = false
         this.uploadFlag = false
         this.uploadFlag = false
-        let MethodName = "/OrgServer/Manager/DataImport/CreateSysUserImportTask";
+        let MethodName = "/OrgServer/Manager/DataImport/CreatePersonImportTask";
         let data = {
         let data = {
             file_id: this.file_id,
             file_id: this.file_id,
+            org_id: this.id,
             is_cover_while_exit_same_user: this.sameUser,
             is_cover_while_exit_same_user: this.sameUser,
             is_update_password_while_cover_user: this.coverUser.indexOf('1')>-1?'true':'false'
             is_update_password_while_cover_user: this.coverUser.indexOf('1')>-1?'true':'false'
         }
         }
@@ -284,7 +286,7 @@ export default {
     },
     },
     // 导入任务执行状态
     // 导入任务执行状态
     handleTaskStatus(){
     handleTaskStatus(){
-        let MethodName = "/OrgServer/Manager/DataImport/GetSysUserImportTaskExecuteStatus";
+        let MethodName = "/OrgServer/Manager/DataImport/GetPersonImportTaskExecuteStatus";
         let data = {
         let data = {
             is_query_execute_log: 'true',
             is_query_execute_log: 'true',
             execute_log_query_top_n: 9999999
             execute_log_query_top_n: 9999999
@@ -304,7 +306,7 @@ export default {
     // 中断任务
     // 中断任务
     handleInterruptTask(){
     handleInterruptTask(){
         this.loading = true
         this.loading = true
-        let MethodName = "/OrgServer/Manager/DataImport/InterruptSysUserImportTask";
+        let MethodName = "/OrgServer/Manager/DataImport/InterruptPersonImportTask";
         getLogin(MethodName, {})
         getLogin(MethodName, {})
         .then((res) => {
         .then((res) => {
             if(res.status===1){
             if(res.status===1){

+ 151 - 87
src/views/organize_manage/CreateOrganize.vue

@@ -10,7 +10,7 @@
                     <h3>{{id?'编辑机构':'创建机构'}}</h3>
                     <h3>{{id?'编辑机构':'创建机构'}}</h3>
                     <div class="btn-box">
                     <div class="btn-box">
                         <el-button size="small" @click="handleStep('-')" :disabled="stepIndex===0">上一步</el-button>
                         <el-button size="small" @click="handleStep('-')" :disabled="stepIndex===0">上一步</el-button>
-                        <el-button type="primary" size="small" @click="handleStep('+')" :disabled="stepIndex===2">下一步</el-button>
+                        <el-button type="primary" size="small" @click="handleStep('+')" :disabled="stepIndex===2" v-loading="loading">下一步</el-button>
                     </div>
                     </div>
                 </div>
                 </div>
                 <el-steps :active="stepIndex" align-center>
                 <el-steps :active="stepIndex" align-center>
@@ -26,83 +26,85 @@
                 </el-steps>
                 </el-steps>
             </div>
             </div>
             <div class="create-bottom">
             <div class="create-bottom">
-                <el-form :model="organizeForm" :rules="rulesOrganize" ref="organizeForm" label-width="100px" class="registerForm">
-                    <template v-if="stepIndex===0">
-                        <el-form-item label="机构名称" prop="name">
-                            <el-input v-model="organizeForm.name" placeholder="请输入机构名称"></el-input>
-                        </el-form-item>
-                        <el-form-item label="机构代码" prop="sn">
-                            <el-input v-model="organizeForm.sn" placeholder="请输入机构代码"></el-input>
-                            <p class="tips">4-8位英文或数字</p>
-                        </el-form-item>
-                        <el-form-item label="机构类型" prop="orgType">
-                            <el-select v-model="organizeForm.orgType" placeholder="请选择">
-                                <el-option
-                                    v-for="item in $orgType"
-                                    :key="item.study_phase"
-                                    :label="item.study_phase_name"
-                                    :value="item.study_phase">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="所在地区" prop="selectedOptions">
-                            <el-cascader
-                                size="medium"
-                                :options="province_list"
-                                :props="props"
-                                v-model="organizeForm.selectedOptions"
-                                @change="handleCity">
-                                <template slot-scope="{ data }">
-                                    <span>{{ data.name }}</span>
-                                </template>
-                            </el-cascader>
-                        </el-form-item>
-                        <el-form-item label="人员上限" prop="personalCeil">
-                            <el-input-number v-model="organizeForm.personalCeil" @change="handleChange" :min="1" size="small" class="personal-ceil"></el-input-number>
-                        </el-form-item>
-                        <el-form-item label="机构有效期" prop="validity">
-                            <el-date-picker
-                                v-model="organizeForm.validity"
-                                type="daterange"
-                                size="small"
-                                range-separator="-"
-                                start-placeholder="开始日期"
-                                end-placeholder="结束日期">
-                            </el-date-picker>
-                        </el-form-item>
-                    </template>
-                    <template v-if="stepIndex===1">
-                        <el-form-item label="用户名" prop="name">
-                            <el-input v-model="organizeForm.name" placeholder="请输入用户名"></el-input>
-                        </el-form-item>
-                        <el-form-item label="手机号" prop="phone">
-                            <el-input v-model="organizeForm.phone" autocomplete="off" placeholder="请输入完整手机号" >
-                                <template slot="prepend">+86</template>
-                            </el-input>
-                        </el-form-item>
-                        <el-form-item label="邮箱" prop="email">
-                            <el-input v-model="organizeForm.email" autocomplete="off" placeholder="请输入邮箱地址" >
-                            </el-input>
-                        </el-form-item>
-                        <el-form-item label="账号密码" prop="newPwd">
-                            <el-input v-model="organizeForm.newPwd" :type="newPwdFlag?'text':'password'" autocomplete="off" placeholder="请输入密码" >
-                                <i slot="suffix" class="el-icon-view show-icon" @click="changeIcon('newPwdFlag')" v-if="newPwdFlag"></i>
-                                <i slot="suffix" class="show-icon" @click="changeIcon('newPwdFlag')" v-else>
-                                    <svg-icon icon-class="eye-invisible"></svg-icon>
-                                </i>
-                            </el-input>
-                            <p class="tips">不少于6位,且必须同时包含数字和大小写字母</p>
-                        </el-form-item>
-                        <el-form-item label="再次输入" prop="confirmPwd">
-                            <el-input v-model="organizeForm.confirmPwd" :type="comfirmPwdFlag?'text':'password'" autocomplete="off" placeholder="请输入密码" >
-                                <i slot="suffix" class="el-icon-view show-icon" @click="changeIcon('comfirmPwdFlag')" v-if="comfirmPwdFlag"></i>
-                                <i slot="suffix" class="show-icon" @click="changeIcon('comfirmPwdFlag')" v-else>
-                                    <svg-icon icon-class="eye-invisible"></svg-icon>
-                                </i>
-                            </el-input>
-                            <p class="tips">再次输入密码,两次输入保持一致</p>
-                        </el-form-item>
-                    </template>
+                <el-form :model="organizeForm" :rules="rulesOrganize" ref="organizeForm" label-width="100px" class="registerForm" key="organizeForm" v-if="stepIndex===0">
+                    <el-form-item label="机构名称" prop="name">
+                        <el-input v-model="organizeForm.name" placeholder="请输入机构名称" @blur="handleTrim('organizeForm','name')"></el-input>
+                    </el-form-item>
+                    <el-form-item label="机构代码" prop="sn">
+                        <el-input v-model="organizeForm.sn" placeholder="请输入机构代码" @blur="handleTrim('organizeForm','sn')"></el-input>
+                        <p class="tips">4-8位英文或数字</p>
+                    </el-form-item>
+                    <el-form-item label="机构类型" prop="orgType">
+                        <el-select v-model="organizeForm.orgType" placeholder="请选择">
+                            <el-option
+                                v-for="item in $orgType"
+                                :key="item.study_phase"
+                                :label="item.study_phase_name"
+                                :value="item.study_phase">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="所在地区" prop="selectedOptions">
+                        <!-- <el-cascader
+                            size="medium"
+                            :options="province_list"
+                            :props="props"
+                            v-model="organizeForm.selectedOptions"
+                            @change="handleCity">
+                            <template slot-scope="{ data }">
+                                <span>{{ data.name }}</span>
+                            </template>
+                        </el-cascader> -->
+                    </el-form-item>
+                    <el-form-item label="人员上限" prop="personalCeil">
+                        <el-input-number v-model="organizeForm.personalCeil" @change="handleChange" :min="1" size="small" class="personal-ceil"></el-input-number>
+                    </el-form-item>
+                    <el-form-item label="机构有效期" prop="validity">
+                        <el-date-picker
+                            v-model="organizeForm.validity"
+                            type="daterange"
+                            size="small"
+                            range-separator="-"
+                            start-placeholder="开始日期"
+                            end-placeholder="结束日期"
+                            value-format="yyyy-MM-dd">
+                        </el-date-picker>
+                    </el-form-item>
+                </el-form>
+                <el-form :model="managerForm" :rules="rulesManager" ref="managerForm" label-width="100px" class="registerForm" key="managerForm" v-if="stepIndex===1">
+                    <el-form-item label="用户名" prop="name">
+                        <el-input v-model="managerForm.name" placeholder="请输入用户名" @blur="handleTrim('managerForm','name')"></el-input>
+                    </el-form-item>
+                    <el-form-item label="真实姓名" prop="realName">
+                        <el-input v-model="managerForm.realName" placeholder="请输入真实姓名" @blur="handleTrim('managerForm','realName')"></el-input>
+                    </el-form-item>
+                    <el-form-item label="手机号" prop="phone">
+                        <el-input v-model="managerForm.phone" autocomplete="off" placeholder="请输入完整手机号" @blur="handleTrim('managerForm','phone')" >
+                            <template slot="prepend">+86</template>
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="邮箱" prop="email">
+                        <el-input v-model="managerForm.email" autocomplete="off" placeholder="请输入邮箱地址" @blur="handleTrim('managerForm','email')" >
+                        </el-input>
+                    </el-form-item>
+                    <el-form-item label="账号密码" prop="newPwd">
+                        <el-input v-model="managerForm.newPwd" :type="newPwdFlag?'text':'password'" autocomplete="off" placeholder="请输入密码" @blur="handleTrim('managerForm','newPwd')" >
+                            <i slot="suffix" class="el-icon-view show-icon" @click="changeIcon('newPwdFlag')" v-if="newPwdFlag"></i>
+                            <i slot="suffix" class="show-icon" @click="changeIcon('newPwdFlag')" v-else>
+                                <svg-icon icon-class="eye-invisible"></svg-icon>
+                            </i>
+                        </el-input>
+                        <p class="tips">不少于6位,且必须同时包含数字和大小写字母</p>
+                    </el-form-item>
+                    <el-form-item label="再次输入" prop="confirmPwd">
+                        <el-input v-model="managerForm.confirmPwd" :type="comfirmPwdFlag?'text':'password'" autocomplete="off" placeholder="请输入密码" @blur="handleTrim('managerForm','confirmPwd')" >
+                            <i slot="suffix" class="el-icon-view show-icon" @click="changeIcon('comfirmPwdFlag')" v-if="comfirmPwdFlag"></i>
+                            <i slot="suffix" class="show-icon" @click="changeIcon('comfirmPwdFlag')" v-else>
+                                <svg-icon icon-class="eye-invisible"></svg-icon>
+                            </i>
+                        </el-input>
+                        <p class="tips">再次输入密码,两次输入保持一致</p>
+                    </el-form-item>
                 </el-form>
                 </el-form>
                 <div v-if="stepIndex===2">
                 <div v-if="stepIndex===2">
                     <el-result icon="success" :subTitle="id?'机构编辑成功':'机构创建成功'">
                     <el-result icon="success" :subTitle="id?'机构编辑成功':'机构创建成功'">
@@ -157,7 +159,7 @@ export default {
             if (result) {
             if (result) {
                 callback();
                 callback();
             } else {
             } else {
-                callback(new Error('密码只能包含数字和字母'));
+                callback(new Error('密码必须同时包含数字和大小写字母'));
             }
             }
             
             
         }
         }
@@ -165,7 +167,7 @@ export default {
     const validatePass2 = (rule, value, callback) => {
     const validatePass2 = (rule, value, callback) => {
         if (value === '') {
         if (value === '') {
           callback(new Error('请再次输入密码'));
           callback(new Error('请再次输入密码'));
-        } else if (value !== this.organizeForm.newPwd) {
+        } else if (value !== this.managerForm.newPwd) {
           callback(new Error('两次输入密码不一致!'));
           callback(new Error('两次输入密码不一致!'));
         } else {
         } else {
           callback();
           callback();
@@ -221,10 +223,13 @@ export default {
             name: '',
             name: '',
             sn: '',
             sn: '',
             orgType: '',
             orgType: '',
-            selectedOptions: [],
+            selectedOptions: '0409',
             personalCeil: 50,
             personalCeil: 50,
-            validity:'',
+            validity:''
+        },
+        managerForm:{
             name: '',
             name: '',
+            realName: '',
             phone:'',
             phone:'',
             email:'',
             email:'',
             newPwd:'', // 密码
             newPwd:'', // 密码
@@ -241,15 +246,20 @@ export default {
             orgType: [
             orgType: [
                 { required: true, message: '请选择机构类型', trigger: 'change' }
                 { required: true, message: '请选择机构类型', trigger: 'change' }
             ],
             ],
+            // selectedOptions: [
+            //     { type: 'array', required: true, message: '请选择所在地区', trigger: 'change' }
+            // ],
             selectedOptions: [
             selectedOptions: [
-                { type: 'array', required: true, message: '请选择所在地区', trigger: 'change' }
+                { required: true, message: '请选择所在地区', trigger: 'change' }
             ],
             ],
             personalCeil:[
             personalCeil:[
                 { required: true, message: '请输入人员上限', trigger: 'blur' }
                 { required: true, message: '请输入人员上限', trigger: 'blur' }
             ],
             ],
             validity:[
             validity:[
                 { required: true, message: '请选择机构有效期', trigger: 'blur' }
                 { required: true, message: '请选择机构有效期', trigger: 'blur' }
-            ],
+            ]
+        },
+        rulesManager:{
             name:[
             name:[
                 { required: true, message: '请输入用户名', trigger: 'blur' },
                 { required: true, message: '请输入用户名', trigger: 'blur' },
                 { max: 10, message: '用户名最多10位', trigger:'change' },
                 { max: 10, message: '用户名最多10位', trigger:'change' },
@@ -285,7 +295,8 @@ export default {
                 }
                 }
             })
             })
           }
           }
-        }
+        },
+        loading: false
     }
     }
   },
   },
   //计算属性 类似于data概念
   //计算属性 类似于data概念
@@ -300,10 +311,26 @@ export default {
   methods: {
   methods: {
     // 上一步下一步
     // 上一步下一步
     handleStep(type){
     handleStep(type){
-        if(type=='-'){
+        if(type=='-'){ 
             if(this.stepIndex>0) this.stepIndex--
             if(this.stepIndex>0) this.stepIndex--
         }else{
         }else{
-            if(this.stepIndex<2) this.stepIndex++
+            if(this.stepIndex===0){
+                this.$refs['organizeForm'].validate((valid) => {
+                    if (!valid) {
+                        return false;
+                    }else{
+                        this.stepIndex++
+                    }
+                });
+            }else if(this.stepIndex===1){
+                this.$refs['managerForm'].validate((valid) => {
+                    if (!valid) {
+                        return false;
+                    }else{
+                        this.handleSubmit()
+                    }
+                });
+            }
         }
         }
     },
     },
     // 级联选择器
     // 级联选择器
@@ -346,6 +373,43 @@ export default {
         .catch(() => {
         .catch(() => {
             this.loading = false
             this.loading = false
         });
         });
+    },
+    // 提交
+    handleSubmit(){
+        this.loading = true
+        let MethodName = "/OrgServer/Manager/OrgManager/AddOrg";
+        let data = {
+            org:{
+                name: this.organizeForm.name,
+                sn: this.organizeForm.sn,
+                type: this.organizeForm.orgType,
+                city_id: this.organizeForm.selectedOptions,
+                max_person_count: this.organizeForm.personalCeil*1,
+                effective_date_begin: this.organizeForm.validity[0],
+                effective_date_end: this.organizeForm.validity[1]
+            },
+            manager:{
+                user_name: this.managerForm.name,
+                real_name: this.managerForm.real_name,
+                phone: this.managerForm.phone,
+                email: this.managerForm.email,
+                password: this.managerForm.newPwd
+            }
+        }
+        getLogin(MethodName, data)
+        .then((res) => {
+            this.loading = false
+            if(res.status===1){
+                this.stepIndex++
+            }
+        })
+        .catch(() => {
+            this.loading = false
+        });
+    },
+    // 去掉前后空格
+    handleTrim(form,fild){
+        this[form][fild] = this[form][fild].trim()
     }
     }
   },
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   //生命周期 - 创建完成(可以访问当前this实例)