Bladeren bron

0831、0901代码整合

lizhenhao 2 jaren geleden
bovenliggende
commit
d6ef6ebf43

+ 18 - 14
src/api/sys/OSSService.js

@@ -45,7 +45,7 @@ export const client = new OSS({
   region: 'oss-cn-hangzhou', // oss地址
   accessKeyId: 'LTAI5tQDWoM9c1WyJNPs86rX', // 通过阿里云控制台创建的AccessKey ID。
   accessKeySecret: '84dDIx4edT1n78KUOqqSmDZ35pchJv', // 通过阿里云控制台创建的AccessKey Secret。
-  bucket: 'xg-pg', // 仓库名字
+  bucket: 'xgxm-test', // 仓库名字
   useFetch: true, // 支持上传大于100KB的文件
   secure: false // 返回的url为https
 })
@@ -109,9 +109,9 @@ export function fileName (file) {
 
 export function beforeAvatarUpload (file) {
   // 文件大小校验
-  const isLt2M = file.size / 1024 / 1024 < 300
+  const isLt2M = file.size / 1024 / 1024 < 1024
   if (!isLt2M) {
-    this.$message.error('文件大小不能超过 300M !')
+    this.$message.error('文件大小不能超过 1G !')
   }
   return isLt2M
 }
@@ -129,7 +129,7 @@ export function exnameFix (file, isShow, names) {
   return true
 }
 
-export function httpRequest (file, name, type) { // 阿里云OSS上传
+export async function httpRequest (file, name, type) { // 阿里云OSS上传
   console.log('开始上传')
   // 判断扩展名
   const tmpcnt = file.file.name.lastIndexOf('.') // 获取.的下标
@@ -143,16 +143,20 @@ export function httpRequest (file, name, type) { // 阿里云OSS上传
   console.log(filePath, '文件存储路径')
   const fileName = filePath + name + '.' + exname
   console.log(fileName, '文件名')
-  client.put(
-    fileName,
-    file.file,
-    {
-      headers
+
+  client.multipartUpload(fileName, file.file, {
+    progress: function (p, checkpoint) {
+      file.onProgress({percent: Math.floor(p * 100)}) // 触发el-upload组件的onProgress方法
+    }
+    // mime: type,
+  }).then(function (result) {
+    console.log(result)
+    if (result.res.status === 200) {
+      // file.onSuccess(result) // 触发el-upload组件的onSuccess方法
+      file.file.url = fileName
     }
-  ).then(res => {
-    console.log(res, 'res---header ')
-    file.file.url = fileName
-  }).catch(err => {
-    console.log(err, 'err')
+  }).catch(function (err) {
+    console.log(err)
+    file.onError('上传失败') // 触发el-upload组件的onError方法,此方法会移除文件列表
   })
 }

+ 7 - 0
src/api/sys/ProjectService.js

@@ -51,4 +51,11 @@ export default class PostService {
       responseType: 'blob'
     })
   }
+  proportion (itemType) {
+    return request({
+      url: '/sys/project/proportion',
+      method: 'get',
+      params: {itemType: itemType}
+    })
+  }
 }

+ 52 - 31
src/views/modules/sys/project/AssessForm.vue

@@ -8,7 +8,12 @@
       @close="close"
       @keyup.enter.native="doSubmit"
       :visible.sync="visible">
-      <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="method==='view'"
+      <el-form size="middle"
+               :model="inputForm"
+               ref="inputForm"
+               v-loading="loading"
+               :class="method==='view'?'readonly':''"
+               :disabled="method==='view'"
                label-width="150px">
         <el-row  :gutter="15">
           <el-col :span="12">
@@ -322,19 +327,22 @@
           </el-col>-->
         </el-row>
         <el-divider content-position="left"><i class="el-icon-document"></i> 附件信息</el-divider>
-          <el-upload ref="upload" style="display: inline-block; margin-left: 5em; :show-header='status'" action=""
-                     :limit="999" :http-request="httpRequest"
-                     multiple
-                     :on-exceed="(files, fileList) =>{
+        <el-upload ref="upload" style="display: inline-block; margin-left: 5em; :show-header='status'" action=""
+                   :limit="999" :http-request="httpRequest"
+                   multiple
+                   :on-exceed="(files, fileList) =>{
                       $message.warning(`当前限制选择 999 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`)
                      }"
-                     :on-remove="handleRemove"
-                     :show-file-list="false"
-                     :on-change="changes"
-                     :file-list="filesArra2">
-            <el-button type="info" size="mini" v-if="inputForm.permissionFlag&&showVi">点击上传</el-button>
-          </el-upload>
-          <div style="height: calc(100% - 80px);margin-top: 10px">
+                   :on-remove="handleRemove"
+                   :show-file-list="false"
+                   :on-change="changes"
+                   :on-progress="uploadVideoProcess"
+                   :file-list="filesArra2">
+          <el-button type="info" size="mini" v-if="inputForm.permissionFlag&&showVi">点击上传</el-button>
+        </el-upload>
+        <div style="height: calc(100% - 80px);margin-top: 10px">
+          <!-- 进度条 -->
+          <el-progress style="margin-left: 5em" v-if="progressFlag" :percentage="loadProgress"></el-progress>
           <vxe-table
             style="margin-left: 5em"
             border="inner"
@@ -355,22 +363,22 @@
             <vxe-column type="seq" width="40"></vxe-column>
             <vxe-column title="文件名称" field="name">
               <template slot-scope="scope">
-<!--                <div v-if="ifName(scope.row) === true">-->
-<!--                  <el-image-->
-<!--                    style="width: 100px; height: 100px"-->
-<!--                    :src="src"-->
-<!--                    :preview-src-list="srcList" lazy>-->
-<!--                  </el-image>-->
-<!--                </div>-->
-<!--                <div v-else>-->
-<!--                  <el-link  type="primary" :underline="false" @click="showFile(scope.row)">{{scope.row.name}}</el-link>-->
-<!--                </div>-->
+                <!--                <div v-if="ifName(scope.row) === true">-->
+                <!--                  <el-image-->
+                <!--                    style="width: 100px; height: 100px"-->
+                <!--                    :src="src"-->
+                <!--                    :preview-src-list="srcList" lazy>-->
+                <!--                  </el-image>-->
+                <!--                </div>-->
+                <!--                <div v-else>-->
+                <!--                  <el-link  type="primary" :underline="false" @click="showFile(scope.row)">{{scope.row.name}}</el-link>-->
+                <!--                </div>-->
                 <el-link  type="primary" :underline="false" @click="showFile(scope.row)">{{scope.row.name}}</el-link>
               </template>
             </vxe-column>
             <vxe-column title="创建人" field="createBy"></vxe-column>
             <vxe-column title="创建时间" field="createDate"></vxe-column>
-<!--            <vxe-column title="文件描述" field="description"></vxe-column>-->
+            <!--            <vxe-column title="文件描述" field="description"></vxe-column>-->
             <vxe-column title="操作" width="200px" fixed="right" align="center">
               <template  slot-scope="scope">
                 <el-button type="text"  icon="el-icon-edit" size="small" @click="toHref(scope.row)" :disabled="false">下载</el-button>
@@ -378,7 +386,7 @@
               </template>
             </vxe-column>
           </vxe-table>
-          </div>
+        </div>
 
       </el-form>
       <el-image-viewer
@@ -387,8 +395,8 @@
         :url-list="[url]"
         zIndex="9999"/>
       <span slot="footer" class="dialog-footer">
-      <el-button size="small" @click="close()" icon="el-icon-circle-close">关闭</el-button>
-      <el-button size="small" type="primary" v-if="method != 'view'" @click="doSubmit()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+      <el-button  @click="close()" icon="el-icon-circle-close">关闭</el-button>
+      <el-button  type="primary" v-if="method != 'view'" @click="doSubmit()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
     </span>
     </el-dialog>
   </div>
@@ -464,7 +472,9 @@
         url: '',
         rowurl: '',
         src: '',
-        showVi: true
+        showVi: true,
+        loadProgress: 0, // 动态显示进度条
+        progressFlag: false // 关闭进度条
       }
     },
     components: {
@@ -478,6 +488,14 @@
       this.projectService = new ProjectService()
     },
     methods: {
+      uploadVideoProcess (event, file, fileList) {
+        this.progressFlag = true // 显示进度条
+        this.loadProgress = parseInt(event.percent) // 动态获取文件上传进度
+        if (this.loadProgress >= 100) {
+          this.loadProgress = 100
+          setTimeout(() => { this.progressFlag = false }, 1000) // 一秒后关闭进度条
+        }
+      },
       // async getsrc (row) {
       //   if (row.id === null || row.id === undefined || row.id === '') {
       //     await this.ossService.getTemporaryUrl(row.raw.url).then((data) => {
@@ -627,6 +645,9 @@
       },
       // 表单提交
       doSubmit () {
+        if (this.progressFlag === true) {
+          this.$message.warning('文件正在上传中,请稍等')
+        }
         this.$refs['inputForm'].validate((valid) => {
           if (valid) {
             this.loading = true
@@ -658,13 +679,13 @@
           }
         })
       },
-      close () {
+      async close () {
         this.$refs.inputForm.resetFields()
-        this.visible = false
         this.showVi = true
+        this.visible = false
       },
-      httpRequest (file) {
-        httpRequest(file, fileName(file), 'projectRecords')
+      async httpRequest (file) {
+        await httpRequest(file, fileName(file), 'projectRecords')
       },
       handleRemove () {
         this.fileList = handleRemove()

+ 38 - 17
src/views/modules/sys/project/ConsultationForm.vue

@@ -8,7 +8,12 @@
       @close="close"
       @keyup.enter.native="doSubmit"
       :visible.sync="visible">
-      <el-form size="middle" :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''"  :disabled="method==='view'"
+      <el-form size="middle"
+               :model="inputForm"
+               ref="inputForm"
+               :class="method==='view'?'readonly':''"
+               :disabled="method==='view'"
+               v-loading="loading"
                label-width="150px">
         <el-row  :gutter="15">
           <el-col :span="12">
@@ -45,8 +50,8 @@
                           :rules="[
 
                  ]">
-<!--              {required: true, message:'评估基准日不能为空', trigger:'blur'}-->
-<!--              <el-input v-model="inputForm.evaluationBaseDate" placeholder="请填写评估基准日"     ></el-input>-->
+              <!--              {required: true, message:'评估基准日不能为空', trigger:'blur'}-->
+              <!--              <el-input v-model="inputForm.evaluationBaseDate" placeholder="请填写评估基准日"     ></el-input>-->
               <el-date-picker
                 style="width:100%;"
                 v-model="inputForm.evaluationBaseDateUi"
@@ -61,8 +66,8 @@
                           :rules="[
 
                  ]">
-<!--              {required: true, message:'评估报告日不能为空', trigger:'blur'}-->
-<!--              <el-input v-model="inputForm.evaluationReportDate" placeholder="请填写评估报告日"     ></el-input>-->
+              <!--              {required: true, message:'评估报告日不能为空', trigger:'blur'}-->
+              <!--              <el-input v-model="inputForm.evaluationReportDate" placeholder="请填写评估报告日"     ></el-input>-->
               <el-date-picker
                 style="width:100%;"
                 v-model="inputForm.evaluationReportDateUi"
@@ -181,7 +186,7 @@
             <el-form-item label="开票日期" prop="invoiceDateUi"
                           :rules="[
                  ]">
-<!--              {required: true, message:'开票日期不能为空', trigger:'blur'}-->
+              <!--              {required: true, message:'开票日期不能为空', trigger:'blur'}-->
               <!--              <el-input v-model="inputForm.invoiceDate" placeholder="请填写开票日期"     ></el-input>-->
               <el-date-picker
                 style="width:100%;"
@@ -203,7 +208,7 @@
             <el-form-item label="合同是否存档" prop="isContractArchive"
                           :rules="[
                  ]">
-<!--              <el-input v-model="inputForm.isContractArchive" placeholder="请填写合同是否存档"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.isContractArchive" placeholder="请填写合同是否存档"     ></el-input>-->
               <el-radio-group v-model="inputForm.isContractArchive">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
               </el-radio-group>
@@ -213,7 +218,7 @@
             <el-form-item label="底稿是否完好" prop="isPapersIntact"
                           :rules="[
                  ]">
-<!--              <el-input v-model="inputForm.isPapersIntact" placeholder="请填写底稿是否完好"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.isPapersIntact" placeholder="请填写底稿是否完好"     ></el-input>-->
               <el-radio-group v-model="inputForm.isPapersIntact">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
               </el-radio-group>
@@ -223,7 +228,7 @@
             <el-form-item label="底稿是否归档" prop="isPapersArchive"
                           :rules="[
                  ]">
-<!--              <el-input v-model="inputForm.isPapersArchive" placeholder="请填写底稿是否归档"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.isPapersArchive" placeholder="请填写底稿是否归档"     ></el-input>-->
               <el-radio-group v-model="inputForm.isPapersArchive">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
               </el-radio-group>
@@ -240,7 +245,7 @@
             <el-form-item label="外勤是否已经报销" prop="isOpsReimbursement"
                           :rules="[
                  ]">
-<!--              <el-input v-model="inputForm.isOpsReimbursement" placeholder="请填写外勤是否已经报销"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.isOpsReimbursement" placeholder="请填写外勤是否已经报销"     ></el-input>-->
               <el-radio-group v-model="inputForm.isOpsReimbursement">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
               </el-radio-group>
@@ -250,7 +255,7 @@
             <el-form-item label="是否已经报销提成" prop="isCommissionReimbursement"
                           :rules="[
                  ]">
-<!--              <el-input v-model="inputForm.isCommissionReimbursement" placeholder="请填写是否已经报销提成"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.isCommissionReimbursement" placeholder="请填写是否已经报销提成"     ></el-input>-->
               <el-radio-group v-model="inputForm.isCommissionReimbursement">
                 <el-radio v-for="item in $dictUtils.getDictList('yes_no')" :label="item.value" :key="item.id">{{item.label}}</el-radio>
               </el-radio-group>
@@ -281,7 +286,7 @@
             <el-form-item label="报销日期" prop="reimbursementDateUi"
                           :rules="[
                  ]">
-<!--              <el-input v-model="inputForm.reimbursementDate" placeholder="请填写报销日期"     ></el-input>-->
+              <!--              <el-input v-model="inputForm.reimbursementDate" placeholder="请填写报销日期"     ></el-input>-->
               <el-date-picker
                 style="width:100%;"
                 v-model="inputForm.reimbursementDateUi"
@@ -334,10 +339,13 @@
                    :on-remove="handleRemove"
                    :show-file-list="false"
                    :on-change="changes"
+                   :on-progress="uploadVideoProcess"
                    :file-list="filesArra2">
           <el-button type="info" size="mini" v-if="inputForm.permissionFlag&&showVi" >点击上传</el-button>
         </el-upload>
         <div style="height: calc(100% - 80px);margin-top: 10px">
+          <!-- 进度条 -->
+          <el-progress style="margin-left: 5em" v-if="progressFlag" :percentage="loadProgress"></el-progress>
           <vxe-table
             style="margin-left: 5em"
             border="inner"
@@ -390,8 +398,8 @@
         :url-list="[url]"
         zIndex="9999"/>
       <span slot="footer" class="dialog-footer">
-      <el-button size="small" @click="close()" icon="el-icon-circle-close">关闭</el-button>
-      <el-button size="small" type="primary" v-if="method != 'view'" @click="doSubmit()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
+      <el-button  @click="close()" icon="el-icon-circle-close">关闭</el-button>
+      <el-button  type="primary" v-if="method != 'view'"  @click="doSubmit()" icon="el-icon-circle-check" v-noMoreClick>确定</el-button>
     </span>
     </el-dialog>
   </div>
@@ -467,7 +475,9 @@
         url: '',
         rowurl: '',
         src: '',
-        showVi: true
+        showVi: true,
+        loadProgress: 0, // 动态显示进度条
+        progressFlag: false // 关闭进度条
       }
     },
     components: {
@@ -482,6 +492,14 @@
     },
     methods: {
 
+      uploadVideoProcess (event, file, fileList) {
+        this.progressFlag = true // 显示进度条
+        this.loadProgress = parseInt(event.percent) // 动态获取文件上传进度
+        if (this.loadProgress >= 100) {
+          this.loadProgress = 100
+          setTimeout(() => { this.progressFlag = false }, 1000) // 一秒后关闭进度条
+        }
+      },
       async toHref (row) {
         const link = document.createElement('a')
         if (row.id === null || row.id === undefined || row.id === '') {
@@ -611,6 +629,9 @@
       },
       // 表单提交
       doSubmit () {
+        if (this.progressFlag === true) {
+          this.$message.warning('文件正在上传中,请稍等')
+        }
         this.$refs['inputForm'].validate((valid) => {
           if (valid) {
             this.loading = true
@@ -646,8 +667,8 @@
         this.visible = false
         this.showVi = true
       },
-      httpRequest (file) {
-        httpRequest(file, fileName(file), 'projectRecords')
+      async httpRequest (file) {
+        await httpRequest(file, fileName(file), 'projectRecords')
       },
       handleRemove () {
         this.fileList = handleRemove()

+ 114 - 113
src/views/modules/sys/user/UserInfo.vue

@@ -1,89 +1,89 @@
 <template>
-<div class="el-scrollbar__wrap wrap-white padding-20">
-  <div class="el-scrollbar__view">
-<el-tabs tab-position="left">
-    <el-tab-pane label="基本信息">
-      <h3 style="margin-left:40px">基本信息</h3>
-      <el-form size="small" :model="generalForm" ref="generalForm" label-width="100px">
-        <el-form-item label="姓名" :rules="[ { required: true, message: '必填项不能为空', trigger: 'blur' }]" prop="name">
-          <el-input v-model="generalForm.name"></el-input>
-        </el-form-item>
-         <el-form-item label="签名" prop="sign">
-          <el-input v-model="generalForm.sign"></el-input>
-        </el-form-item>
-         <el-form-item label="公司" prop="companyDTO.name">
-          <el-input v-model="generalForm.companyDTO.name" :disabled="true"></el-input>
-        </el-form-item>
-        <el-form-item label="部门" prop="officeDTO.name">
-          <el-input v-model="generalForm.officeDTO.name" :disabled="true"></el-input>
-        </el-form-item>
-        <el-form-item label="备注" prop="remarks">
-          <el-input v-model="generalForm.remarks"></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button size="small" type="primary" @click="submitGeneralForm()">保存</el-button>
-        </el-form-item>
-      </el-form>
-    </el-tab-pane>
-    <el-tab-pane label="联系方式">
-      <h3 style="margin-left:40px">联系方式</h3>
-      <el-form size="small" :model="concatForm" ref="concatForm" label-width="100px">
-        <el-form-item label="邮箱" :rules="[{type:'email', message:'请输入正确的邮箱地址', trigger:'blur'}]" prop="email">
-          <el-input v-model="concatForm.email"></el-input>
-        </el-form-item>
-         <el-form-item label="手机" prop="mobile" :rules="[{validator:validator.isMobile, trigger:'blur'}]">
-          <el-input v-model="concatForm.mobile"></el-input>
-        </el-form-item>
-         <el-form-item label="电话" prop="phone" :rules="[{validator:validator.isPhone, trigger:'blur'}]">
-          <el-input v-model="concatForm.phone"></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button  size="small" type="primary" @click="submitConcatForm()">保存</el-button>
-        </el-form-item>
-      </el-form>
-    </el-tab-pane>
-    <el-tab-pane label="我的头像">
-      <h3 style="margin-left:40px">我的头像</h3>
-      <el-upload
-        class="avatar-uploader"
-        :action="`${this.$http.BASE_URL}/sys/user/imageUpload`"
-        :show-file-list="false"
-        :on-success="handleAvatarSuccess"
-        :headers="{token: $cookie.get('token')}"
-        :before-upload="beforeAvatarUpload">
-        <img v-if="photo" :src="photo" class="avatar">
-        <i v-else class="el-icon-plus avatar-uploader-icon"></i>
-      </el-upload>
-    </el-tab-pane>
-    <el-tab-pane label="修改密码">
-      <h3 style="margin-left:40px">修改密码</h3>
-      <el-form size="small" :model="pwdForm" ref="pwdForm" label-width="100px">
-        <el-form-item label="旧密码" :rules="[ { required: true, message: '必填项不能为空', trigger: 'blur' }]" prop="oldPassword">
-          <el-input v-model="pwdForm.oldPassword" show-password></el-input>
-        </el-form-item>
-         <el-form-item label="新密码" :rules="[ { required: true, message: '必填项不能为空', trigger: 'blur' }]" prop="newPassword">
-          <el-input v-model="pwdForm.newPassword" show-password></el-input>
-        </el-form-item>
-         <el-form-item label="确认新密码" :rules="rule" prop="confirmNewPassword">
-          <el-input v-model="pwdForm.confirmNewPassword" show-password></el-input>
-        </el-form-item>
-        <el-form-item>
-          <el-button size="small" type="primary" @click="submitPwdForm()">保存</el-button>
-        </el-form-item>
-      </el-form>
-    </el-tab-pane>
-    <el-tab-pane label="我的日志">
-        <el-menu  default-active="1" mode="horizontal" @select="changeLog">
-          <el-menu-item index="1">
-            <i class="el-icon-setting"></i>
-            <span slot="title">登陆日志</span>
-          </el-menu-item>
-          <el-menu-item index="2">
-            <i class="el-icon-setting"></i>
-            <span slot="title">访问日志</span>
-          </el-menu-item>
-        </el-menu>
-       <vxe-table
+  <div class="el-scrollbar__wrap wrap-white padding-20">
+    <div class="el-scrollbar__view">
+      <el-tabs tab-position="left">
+        <el-tab-pane label="基本信息">
+          <h3 style="margin-left:40px">基本信息</h3>
+          <el-form size="small" :model="generalForm" ref="generalForm" label-width="100px">
+            <el-form-item label="姓名" :rules="[ { required: true, message: '必填项不能为空', trigger: 'blur' }]" prop="name">
+              <el-input v-model="generalForm.name"></el-input>
+            </el-form-item>
+            <el-form-item label="签名" prop="sign">
+              <el-input v-model="generalForm.sign"></el-input>
+            </el-form-item>
+            <el-form-item label="公司" prop="companyDTO.name">
+              <el-input v-model="generalForm.companyDTO.name" :disabled="true"></el-input>
+            </el-form-item>
+            <el-form-item label="部门" prop="officeDTO.name">
+              <el-input v-model="generalForm.officeDTO.name" :disabled="true"></el-input>
+            </el-form-item>
+            <el-form-item label="备注" prop="remarks">
+              <el-input v-model="generalForm.remarks"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button size="small" type="primary" @click="submitGeneralForm()">保存</el-button>
+            </el-form-item>
+          </el-form>
+        </el-tab-pane>
+        <el-tab-pane label="联系方式">
+          <h3 style="margin-left:40px">联系方式</h3>
+          <el-form size="small" :model="concatForm" ref="concatForm" label-width="100px">
+            <el-form-item label="邮箱" :rules="[{type:'email', message:'请输入正确的邮箱地址', trigger:'blur'}]" prop="email">
+              <el-input v-model="concatForm.email"></el-input>
+            </el-form-item>
+            <el-form-item label="手机" prop="mobile" :rules="[{validator:validator.isMobile, trigger:'blur'}]">
+              <el-input v-model="concatForm.mobile"></el-input>
+            </el-form-item>
+            <el-form-item label="电话" prop="phone" :rules="[{validator:validator.isPhone, trigger:'blur'}]">
+              <el-input v-model="concatForm.phone"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button  size="small" type="primary" @click="submitConcatForm()">保存</el-button>
+            </el-form-item>
+          </el-form>
+        </el-tab-pane>
+        <el-tab-pane label="我的头像">
+          <h3 style="margin-left:40px">我的头像</h3>
+          <el-upload
+            class="avatar-uploader"
+            :action="`${this.$http.BASE_URL}/sys/user/imageUpload`"
+            :show-file-list="false"
+            :on-success="handleAvatarSuccess"
+            :headers="{token: $cookie.get('token')}"
+            :before-upload="beforeAvatarUpload">
+            <img v-if="photo" :src="photo" class="avatar">
+            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+          </el-upload>
+        </el-tab-pane>
+        <el-tab-pane label="修改密码">
+          <h3 style="margin-left:40px">修改密码</h3>
+          <el-form size="small" :model="pwdForm" ref="pwdForm" label-width="100px">
+            <el-form-item label="旧密码" :rules="[ { required: true, message: '必填项不能为空', trigger: 'blur' }]" prop="oldPassword">
+              <el-input v-model="pwdForm.oldPassword" show-password></el-input>
+            </el-form-item>
+            <el-form-item label="新密码" :rules="[ { required: true, message: '必填项不能为空', trigger: 'blur' }]" prop="newPassword">
+              <el-input v-model="pwdForm.newPassword" show-password></el-input>
+            </el-form-item>
+            <el-form-item label="确认新密码" :rules="rule" prop="confirmNewPassword">
+              <el-input v-model="pwdForm.confirmNewPassword" show-password></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button size="small" type="primary" @click="submitPwdForm()">保存</el-button>
+            </el-form-item>
+          </el-form>
+        </el-tab-pane>
+        <el-tab-pane label="我的日志" v-if="this.generalForm.admin">
+          <el-menu  default-active="1" mode="horizontal" @select="changeLog">
+            <el-menu-item index="1">
+              <i class="el-icon-setting"></i>
+              <span slot="title">登陆日志</span>
+            </el-menu-item>
+            <el-menu-item index="2">
+              <i class="el-icon-setting"></i>
+              <span slot="title">访问日志</span>
+            </el-menu-item>
+          </el-menu>
+          <vxe-table
             border="inner"
             auto-resize
             resizable
@@ -102,31 +102,31 @@
             :sort-config="{remote:true}"
             :data="dataList"
             :checkbox-config="{}">
-          <vxe-column type="seq" width="40"></vxe-column>
-          <vxe-column title="操作菜单" field="title" sortable></vxe-column>
-          <vxe-column title="耗时(毫秒)" field="recordTime" sortable></vxe-column>
-          <vxe-column title="请求参数" field="params" sortable></vxe-column>
-          <vxe-column title="返回结果" field="result" sortable></vxe-column>
-          <vxe-column title="公司" field="createBy.companyDTO.name" sortable></vxe-column>
-          <vxe-column title="部门" field="createBy.officeDTO.name" sortable></vxe-column>
-          <vxe-column title="用户" field="createBy.name" sortable></vxe-column>
-          <vxe-column title="IP地址" field="remoteAddr" sortable></vxe-column>
-          <vxe-column title="访问时间" field="createDate" sortable></vxe-column>
-        </vxe-table>
-        <vxe-pager
-          background
-          size="small"
-          :current-page="tablePage.currentPage"
-          :page-size="tablePage.pageSize"
-          :total="tablePage.total"
-          :page-sizes="[10, 20, 100, 1000, {label: '全量数据', value: 1000000}]"
-          :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
-          @page-change="currentChangeHandle">
-        </vxe-pager>
-    </el-tab-pane>
-  </el-tabs>
-</div>
-</div>
+            <vxe-column type="seq" width="40"></vxe-column>
+            <vxe-column title="操作菜单" field="title" sortable></vxe-column>
+            <vxe-column title="耗时(毫秒)" field="recordTime" sortable></vxe-column>
+            <vxe-column title="请求参数" field="params" sortable></vxe-column>
+            <vxe-column title="返回结果" field="result" sortable></vxe-column>
+            <vxe-column title="公司" field="createBy.companyDTO.name" sortable></vxe-column>
+            <vxe-column title="部门" field="createBy.officeDTO.name" sortable></vxe-column>
+            <vxe-column title="用户" field="createBy.name" sortable></vxe-column>
+            <vxe-column title="IP地址" field="remoteAddr" sortable></vxe-column>
+            <vxe-column title="访问时间" field="createDate" sortable></vxe-column>
+          </vxe-table>
+          <vxe-pager
+            background
+            size="small"
+            :current-page="tablePage.currentPage"
+            :page-size="tablePage.pageSize"
+            :total="tablePage.total"
+            :page-sizes="[10, 20, 100, 1000, {label: '全量数据', value: 1000000}]"
+            :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']"
+            @page-change="currentChangeHandle">
+          </vxe-pager>
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+  </div>
 </template>
 
 <script>
@@ -153,7 +153,8 @@
           officeDTO: {
             name: ''
           },
-          remarks: ''
+          remarks: '',
+          admin: ''
         },
         concatForm: {
           id: '',
@@ -197,7 +198,7 @@
             this.refreshList()
           }
         },
-  
+
         immediate: true,
         deep: false
       }
@@ -254,7 +255,7 @@
           }
         })
       },
- // 获取数据列表
+      // 获取数据列表
       refreshList () {
         this.loading = true
         this.logService.mine({

+ 54 - 45
src/views/modules/sys/userInfo/UserInfoForm.vue

@@ -27,16 +27,21 @@
             </el-form-item>
             <el-form-item label=""  prop="headPortraitUrl"
                           style="position:absolute;top:0px;left:350px">
-              <el-upload
-                class="avatar-uploader"
-                :action="`${$http.BASE_URL}/sys/file/webupload/upload?uploadPath=headPortraitUrl`"
-                :on-success="handleAvatarSuccess1"
-                :before-upload="beforeAvatarUpload"
-                :show-file-list="false">
-                <img v-if="inputForm.headPortraitUrl" :src="inputForm.headPortraitUrl" class="avatar-uploader">
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
-                <div>头像</div>
-              </el-upload>
+              <el-popover
+                placement="right-end"
+                trigger="hover">
+                <el-button @click="showPhoto(inputForm.headPortraitUrl)">查看</el-button>
+                <el-upload slot="reference"
+                           class="avatar-uploader"
+                           :action="`${$http.BASE_URL}/sys/file/webupload/upload?uploadPath=headPortraitUrl`"
+                           :on-success="handleAvatarSuccess1"
+                           :before-upload="beforeAvatarUpload"
+                           :show-file-list="false">
+                  <img v-if="inputForm.headPortraitUrl" :src="inputForm.headPortraitUrl" class="avatar-uploader">
+                  <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                  <div>头像</div>
+                </el-upload>
+              </el-popover>
             </el-form-item>
           </el-col>
 
@@ -335,28 +340,38 @@
           </el-input>
         </el-form-item>
 
-        <!--        <el-form-item label="头像"  prop="headPortraitUrl">-->
-        <!--          <el-upload-->
-        <!--            class="avatar-uploader"-->
-        <!--            :action="`${$http.BASE_URL}/sys/file/webupload/upload?uploadPath=headPortraitUrl`"-->
-        <!--            :on-success="handleAvatarSuccess1"-->
-        <!--            :before-upload="beforeAvatarUpload"-->
-        <!--            :show-file-list="false">-->
-        <!--            <img v-if="inputForm.headPortraitUrl" :src="inputForm.headPortraitUrl" class="avatar">-->
-        <!--            <i v-else class="el-icon-plus avatar-uploader-icon"></i>-->
-        <!--          </el-upload>-->
-        <!--        </el-form-item>-->
+        <el-form-item v-if="method === 'view' || method === 'edit'" label="手签章" prop="signatureUrl">
+          <el-popover
+            placement="right-end"
+            trigger="hover">
+            <el-button @click="showPhoto(inputForm.signatureUrl)">查看</el-button>
+            <el-upload slot="reference"
+                       class="avatar-uploader"
+                       :action="`${$http.BASE_URL}/sys/userInfo/webupload/upload?uploadPath=signatureUrl`"
+                       :on-success="handleAvatarSuccess2"
+                       :before-upload="beforeAvatarUpload"
+                       :show-file-list="false">
+              <img v-if="inputForm.signatureUrl" :src="urlStart" class="avatar-uploader">
+              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+            </el-upload>
+          </el-popover>
+        </el-form-item>
 
-        <el-form-item label="手签章" prop="signatureUrl">
-          <el-upload
-            class="avatar-uploader"
-            :action="`${$http.BASE_URL}/sys/file/webupload/upload?uploadPath=signatureUrl`"
-            :on-success="handleAvatarSuccess2"
-            :before-upload="beforeAvatarUpload"
-            :show-file-list="false">
-            <img v-if="inputForm.signatureUrl" :src="inputForm.signatureUrl" class="avatar-uploader">
-            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
-          </el-upload>
+        <el-form-item v-else-if="method === 'add'" label="手签章" prop="signatureUrl">
+          <el-popover
+            placement="right-end"
+            trigger="hover">
+            <el-button @click="showPhoto(inputForm.signatureUrl)">查看</el-button>
+            <el-upload slot="reference"
+                       class="avatar-uploader"
+                       :action="`${$http.BASE_URL}/sys/userInfo/webupload/upload?uploadPath=signatureUrl`"
+                       :on-success="handleAvatarSuccess2"
+                       :before-upload="beforeAvatarUpload"
+                       :show-file-list="false">
+              <img v-if="inputForm.signatureUrl" :src="urlStart" class="avatar-uploader">
+              <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+            </el-upload>
+          </el-popover>
         </el-form-item>
 
         <el-form-item label="教育经历" prop="sysUserEducations">
@@ -465,8 +480,7 @@
                 :on-success="(res,file)=> handleAvatarSuccess4(res,file,scope)"
                 :before-upload="beforeAvatarUpload"
                 :show-file-list="false">
-                <img v-if="scope.row.degreeCertificateUrl" :src="scope.row.degreeCertificateUrl" class="avatar">
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                <img :src="scope.row.degreeCertificateUrl" class="avatar">
               </el-upload>
             </template>
           </vxe-table-column>
@@ -553,7 +567,7 @@
                 :before-upload="beforeAvatarUpload"
                 :show-file-list="false">
                 <img v-if="scope.row.fileUrl" :src="scope.row.fileUrl" class="avatar">
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                <i v-else class="el-icon-plus avatar-uploader-table"></i>
               </el-upload>
             </template>
           </vxe-table-column>
@@ -631,7 +645,7 @@
                 :before-upload="beforeAvatarUpload"
                 :show-file-list="false">
                 <img v-if="scope.row.fileUrl" :src="scope.row.fileUrl" class="avatar">
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                <i v-else class="el-icon-plus avatar-uploader-table"></i>
               </el-upload>
             </template>
           </vxe-table-column>
@@ -780,7 +794,7 @@
                 :before-upload="beforeAvatarUpload"
                 :show-file-list="false">
                 <img v-if="scope.row.fileUrl" :src="scope.row.fileUrl" class="avatar">
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                <i v-else class="el-icon-plus avatar-uploader-table"></i>
               </el-upload>
             </template>
           </vxe-table-column>
@@ -847,7 +861,7 @@
                 :before-upload="beforeAvatarUpload"
                 :show-file-list="false">
                 <img v-if="scope.row.fileUrl" :src="scope.row.fileUrl" class="avatar">
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                <i v-else class="el-icon-plus avatar-uploader-table"></i>
               </el-upload>
             </template>
           </vxe-table-column>
@@ -996,7 +1010,7 @@
                 :before-upload="beforeAvatarUpload"
                 :show-file-list="false">
                 <img v-if="scope.row.fileUrl" :src="scope.row.fileUrl" class="avatar">
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                <i v-else class="el-icon-plus avatar-uploader-table"></i>
               </el-upload>
             </template>
           </vxe-table-column>
@@ -1235,7 +1249,7 @@
                 :before-upload="beforeAvatarUpload"
                 :show-file-list="false">
                 <img v-if="scope.row.fileUrl" :src="scope.row.fileUrl" class="avatar">
-                <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+                <i v-else class="el-icon-plus avatar-uploader-table"></i>
               </el-upload>
             </template>
           </vxe-table-column>
@@ -1280,6 +1294,7 @@
   export default {
     data () {
       return {
+        urlStart: '',
         scope: {},
         visable: false,
         gridData: [],
@@ -2207,12 +2222,6 @@
   .tid_45 .vxe-header--row .col--last{
     text-align: center;
   }
-  .vxe-select--panel {
-    z-index: 9997 !important
-  }
-  .vxe-input--panel.type--date, .vxe-input--panel.type--month, .vxe-input--panel.type--week, .vxe-input--panel.type--year {
-    z-index: 9998 !important
-  }
 </style>
 
 <style scoped>