Ver código fonte

首页排名调整

sunjh 6 anos atrás
pai
commit
5328799032

+ 6 - 2
src/components/InstitutionRank.vue

@@ -10,8 +10,12 @@
       <el-table-column prop="name" label="机构名称">
         <template slot-scope="scope"><span class="institution-name" style="font-size: 12px">{{scope.row.name}}</span></template>
       </el-table-column>
-      <el-table-column prop="name" label="积分">
-        <template slot-scope="scope"><span class="institution-name" style="font-size: 12px"><el-tag type="primary">{{scope.row.allTaskPrice}}</el-tag></span></template>
+      <el-table-column prop="name" label="金额">
+        <template slot-scope="scope">
+          <span class="institution-name" style="font-size: 12px">
+            {{scope.row.allTaskPrice}}
+          </span>
+        </template>
       </el-table-column>
     </el-table>
   </div>

+ 8 - 3
src/components/PersonRank.vue

@@ -8,10 +8,15 @@
         </template>
       </el-table-column>
       <el-table-column prop="name" label="用户名">
-        <template slot-scope="scope"><span class="institution-style" style="font-size: 12px">{{scope.row.name}}</span></template>
+        <template slot-scope="scope"><span class="institution-style" style="font-size: 12px">{{scope.row.name}}</span>
+        </template>
       </el-table-column>
-      <el-table-column prop="number" label="积分">
-        <template slot-scope="scope"><span class="institution-style" style="font-size: 12px"><el-tag type="primary">{{scope.row.allProjectPrice}}</el-tag></span></template>
+      <el-table-column prop="number" label="金额">
+        <template slot-scope="scope">
+          <span class="institution-style" style="font-size: 12px">
+            {{scope.row.allProjectPrice}}
+          </span>
+        </template>
       </el-table-column>
     </el-table>
   </div>

+ 5 - 1
src/components/authen/AuthenticationManage.vue

@@ -239,13 +239,17 @@ export default {
         const explain = event.value
         console.log(explain)
         this.showLoading()
-        checkRejectAuth(type, userId, this.handleAuthenticationRejectSuccess, this.handleAuthenticationRejectFail)
+        const data = {
+          explain : event.value
+        }
+        checkRejectAuth(type, userId, data, this.handleAuthenticationRejectSuccess, this.handleAuthenticationRejectFail)
       }).catch(() => {
       })
     },
     handleAuthenticationRejectSuccess (res) {
       this.hideLoading()
       this.getHandlingAuthList()
+      notify('success','驳回成功')
       console.log(res)
     },
     handleAuthenticationRejectFail (error) {

+ 481 - 0
src/components/cheat/AgencyDetail.vue

@@ -0,0 +1,481 @@
+<template>
+  <div class="create-container">
+    <div class="create-body">
+      <div class="title">添加机构</div>
+      <el-form v-loading="loading" :model="agency" :rules="rules" ref="agency" label-width="12%" class="demo-report">
+        <el-form-item label="机构名称" prop="name">
+          <el-input size="small" v-if="isModifyMode" v-model="agency.name"></el-input>
+          <!--<span v-if="!isModifyMode">{{agency.name}}</span>-->
+        </el-form-item>
+        <el-form-item size="small" label="机构电话" prop="mobile">
+          <el-input v-if="isModifyMode" v-model="agency.mobile"></el-input>
+          <!--<span v-if="!isModifyMode">{{agency.name}}</span>-->
+        </el-form-item>
+        <el-form-item size="small" label="机构邮箱" prop="email">
+          <el-input v-if="isModifyMode" v-model="agency.email"></el-input>
+          <!--<span v-if="!isModifyMode">{{agency.name}}</span>-->
+        </el-form-item>
+        <el-form-item size="small" label="银行卡账户" prop="bankAccount">
+          <el-input v-if="isModifyMode" v-model="agency.bankAccount"></el-input>
+          <!--<span v-if="!isModifyMode">{{agency.bankAccount}}</span>-->
+        </el-form-item>
+        <el-form-item size="small" label="地址" prop="address">
+          <el-input v-if="isModifyMode" v-model="agency.address"></el-input>
+          <!--<span v-if="!isModifyMode">{{agency.address}}</span>-->
+        </el-form-item>
+        <el-form-item label="测评机构能力" prop="evaluationAgencyAbilityList">
+          <el-checkbox-group v-if="isModifyMode" v-model="agency.evaluationAgencyAbilityList">
+            <span v-for="(item,index) in serviceTypes" :key="index">
+              <el-checkbox :label="item"
+                           name="evaluationAgencyAbilityList">{{item}}&nbsp;&nbsp;&nbsp;&nbsp;</el-checkbox>
+            </span>
+          </el-checkbox-group>
+          <!--<span v-if="!isModifyMode">{{agency.ability}}</span>-->
+        </el-form-item>
+        <el-form-item label="测评机构资源" prop="resource">
+          <span v-for="item in agency.evaluationAgencyResourceList" :key="item.id">
+            资源类型:&nbsp;<el-select size="small" v-model="item.type" placeholder="请选择" style="width: 15%;margin-bottom: 10px"
+                                  :value="item.type">
+              <el-option
+                v-for="item in resourceTypes"
+                :key="item"
+                :label="item"
+                :value="item">
+              </el-option>
+            </el-select>
+            资源名称:&nbsp;<el-input size="small" v-model="item.name" style="width: 15%"></el-input>
+            总量:&nbsp;<el-input-number size="small" :min="0" v-model="item.totalNum"></el-input-number>
+            可用数量:&nbsp;<el-input-number size="small" :min="0" :max="item.totalNum" v-model="item.availableNum"></el-input-number>
+            <el-button size="small" type="danger" icon="el-icon-delete" @click="removeAgencyResource(item.id)"></el-button>
+            <br/>
+          </span>
+          <el-button  type="primary" icon="el-icon-circle-plus" plain size="mini" @click="addAgencyResource">添加资源
+          </el-button>
+        </el-form-item>
+        <el-form-item prop="file" label="机构logo">
+          <el-upload
+            v-if="isModifyMode"
+            class="avatar-uploader"
+            :show-file-list="false"
+            action="https://jsonplaceholder.typicode.com/posts/"
+            :before-upload="beforeFileUpload"
+            :http-request="uploadFile"
+            :file-list="agency.photo"
+          >
+            <img v-if="agency.photoUrl" :src="agency.photoUrl" class="avatar">
+            <i v-else class="el-icon-plus avatar-uploader-icon"></i>
+            <!--<div class="el-upload__text">-->
+            <!--将文件拖到此处,或-->
+            <!--<em>点击上传</em>-->
+            <!--</div>-->
+            <!--<div class="el-upload__tip" slot="tip">请上传报告文件</div>-->
+          </el-upload>
+          <!--<div v-if="!isModifyMode">-->
+          <!--<span v-if="agency.photo==null">暂无文件</span>-->
+          <!--<a :href="agency.photo" v-if="agency.photo!=null"><i class="fa fa-file-text-o"></i>-->
+          <!--{{agency.photo}}</a>-->
+          <!--</div>-->
+        </el-form-item>
+
+        <!--<el-form-item v-if="!isModifyMode">-->
+        <!--<div class="btn btn-medium btn-info" @click="modifyInfo()">修改</div>-->
+        <!--<div class="btn btn-medium" @click="cancelModify()">返回</div>-->
+        <!--</el-form-item>-->
+        <el-form-item v-if="isModifyMode">
+          <div class="btn btn-primary btn-info" @click="submitInfo()">提交</div>
+          <!--<div class="btn btn-primary" @click="cancelModify()">取消</div>-->
+        </el-form-item>
+      </el-form>
+      <el-dialog
+        title="测评机构添加成功"
+        :visible.sync="dialogVisible"
+        width="30%"
+        :before-close="handleDialogClose"
+        center>
+        <span>
+          <el-card class="box-card" shadow="always">
+            <div slot="header" class="clearfix">
+              <span>您添加的机构信息</span>
+            </div>
+            <div class="text item">
+              <ul style="list-style-type:none">
+                <li>机构名称:{{ agency.name }}</li>
+                <li>机构电话:{{ agency.mobile }}</li>
+                <li>银行卡账户:{{ agency.bankAccount }}</li>
+                <li>地址:{{ agency.address }}</li>
+                <li>邮箱:{{ agency.email }}</li>
+              </ul>
+            </div>
+          </el-card>
+          <br/>
+          <el-card class="box-card" shadow="always">
+            <div class="text item">
+              您可以使用以下的账号密码登录系统:
+              <ul style="list-style-type:none">
+                <li>账号:{{ agency.email }}</li>
+                <li>密码:{{ agency.mobile }}</li>
+              </ul>
+              也可以使用手机号{{ agency.mobile }}验证码登录
+            </div>
+          </el-card>
+        </span>
+        <span slot="footer" class="dialog-footer">
+    <el-button @click="handleDialogClose">返 回</el-button>
+    <el-button type="primary" @click="toLogin">去登录</el-button>
+  </span>
+      </el-dialog>
+    </div>
+  </div>
+</template>
+
+<script>
+import Http from '@/js/http'
+import Apis from '@/js/api'
+import {notify} from '@/constants/index'
+import {getAllAbilities, getAllAgencyResourceTypes, storageGet} from '@/js/index'
+
+export default {
+  name: 'AgencyAdd',
+  data () {
+    return {
+      user: {},
+      userId: 0,
+      loading: false,
+      isModifyMode: true,
+      dialogVisible: false,
+      serviceTypes: [],
+      resourceTypes: [],
+      agency: {
+        mobile: '',
+        email: '',
+        name: '',
+        bankAccount: '',
+        address: '',
+        evaluationAgencyAbilityList: [],
+        evaluationAgencyResourceList: [
+          {
+            id: 0,
+            type: '',
+            name: '',
+            totalNum: 0,
+            availableNum: 0,
+          }
+        ],
+        professionalsCount: 0,
+        professionalsFreeCount: 0,
+        serversCount: 0,
+        serversFreeCount: 0,
+        devicesCount: 0,
+        devicesFreeCount: 0,
+        photo: [],
+        photoUrl: '',
+        password: '',
+        username: '',
+      },
+      rules: {
+        name: [
+          {required: true, message: '请输入测评机构名称', trigger: 'blur'}
+          // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
+        ],
+        mobile: [
+          {required: true, message: '请输入手机号', trigger: 'blur'}
+          // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
+        ],
+        email: [
+          {required: true, message: '请输入邮箱地址', trigger: 'blur'}
+          // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
+        ],
+        bankAccount: [
+          {required: true, message: '请输入银行卡号', trigger: 'blur'}
+          // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
+        ],
+        address: [
+          {required: true, message: '请输入机构地址', trigger: 'blur'}
+          // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
+        ],
+        evaluationAgencyAbilityList: [
+          {type: 'array', required: true, message: '请至少选择一个机构能力', trigger: 'change'}
+          // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
+        ],
+        evaluationAgencyResourceList:[
+          {
+            validator: (rule, value, callback) => {
+              console.log(value)
+              if (true) {
+                callback(new Error('定向发布至少要选择一个区域管理员'))
+              } else {
+                callback()
+              }
+            }, trigger: 'change'
+          },
+        ]
+      },
+      tableData: [{
+        date: '2016-05-02',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1518 弄'
+      }, {
+        date: '2016-05-04',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1517 弄'
+      }, {
+        date: '2016-05-01',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1519 弄'
+      }, {
+        date: '2016-05-03',
+        name: '王小虎',
+        address: '上海市普陀区金沙江路 1516 弄'
+      }]
+    }
+  },
+  mounted () {
+    this.$nextTick(() => {
+      this.init()
+    })
+  },
+  methods: {
+    //初始化
+    init () {
+      this.setServiceTypes()
+      this.setResourceTypes()
+      this.setUserInfo()
+    },
+    //加载数据
+    loadData: function () {
+    },
+    //表单进入可编辑状态,可修改表单,不再使用
+    modifyInfo () {
+      this.isModifyMode = true
+    },
+    //提交表单
+    submitInfo () {
+      //this.showDialog()
+      this.showLoading()
+      const newAgency = {
+        mobile: this.agency.mobile,
+        evaluationAgencyName: this.agency.name,
+        bankAccount: this.agency.bankAccount,
+        address: this.agency.address,
+        evaluationAgencyAbilityList: this.agency.evaluationAgencyAbilityList,
+        evaluationAgencyResourceList: this.agency.evaluationAgencyResourceList,
+        agencyPhoto: this.agency.photoUrl,
+        email: this.agency.email
+      }
+      Http.post(Apis.USER.ADD_AGENCY, newAgency).then((res) => {
+        this.hideLoading()
+        console.log(res)
+        // console.log(res.data)
+        //res = res.data
+        this.agency.password = res.userVO.password
+        this.agency.username = res.userVO.userName
+        this.agency.mobile = res.userVO.mobile
+        this.showDialog()
+      }).catch(error => {
+        this.hideLoading()
+        notify('error', error.data)
+      })
+    },
+    //取消修改表单,表单进入不可编辑状态,不再使用
+    cancelModify () {
+      this.isModifyMode = false
+    },
+    //上传文件时移除文件的响应函数
+    handleRemove (file, fileList) {
+      console.log(file, fileList)
+    },
+    //添加文件时的响应函数
+    handleExceed (files, fileList) {
+      this.$message.warning(
+        `当前限制选择 1 个文件,本次选择了 ${
+          files.length
+          } 个文件,共选择了 ${files.length + fileList.length} 个文件`
+      )
+    },
+    //移除文件前的响应函数
+    beforeRemove (file, fileList) {
+      //return this.$confirm(`确定移除 ${file.name}?`)
+    },
+    //文件上传前的响应函数
+    beforeFileUpload () {
+    },
+    //上传文件,此处为上传图片
+    uploadFile (param) {
+      const formData = new FormData()
+      let config = {
+        //添加请求头
+        headers: {'Content-Type': 'multipart/form-data'},
+      }
+      formData.append('file', param.file)
+      //console.log(JSON.parse(this.user).userVO)
+      Http.upload(Apis.FILE.UPLOAD_IMAGE.replace('{userId}', this.user.userVO.id), formData, config).then((res) => {
+        this.agency.photoUrl = res.data
+        console.log(res.data)
+        notify('success', '上传成功')
+      }).catch(error => {
+        notify('error', error.data)
+      })
+    },
+    //关闭对话框时的响应函数
+    handleDialogClose (done) {
+      this.$confirm('确认退出?退出前请记录下登录账号和密码,否则无法找回!!!')
+        .then(_ => {
+          //done()
+          this.hideDialog()
+        })
+        .catch(_ => {
+        })
+    },
+    //弹出对话框
+    showDialog () {
+      this.dialogVisible = true
+    },
+    //隐藏对话框
+    hideDialog () {
+      this.dialogVisible = false
+      this.resetForm()
+    },
+    //TODO 跳转到登录页面
+    toLogin () {
+      this.hideDialog()
+      this.$router.push({
+        name: 'Home',
+        // params: {projectId: projectId, taskId: taskId}
+      })
+    },
+    //重置表单
+    resetForm () {
+      this.agency = {
+        mobile: '',
+        email: '',
+        name: '',
+        bankAccount: '',
+        address: '',
+        evaluationAgencyAbilityList: '',
+        evaluationAgencyResourceList: '',
+        photo: [],
+        photoUrl: '',
+        password: '',
+        username: '',
+      }
+    },
+    //设置服务类型
+    setServiceTypes () {
+      this.serviceTypes = getAllAbilities()
+    },
+    //添加一项测评机构资源
+    addAgencyResource () {
+      const tmpResource = {
+        id: this.agency.evaluationAgencyResourceList.length,
+        type: this.resourceTypes[0],
+        name: '',
+        totalNum: 0,
+        availableNum: 0,
+      }
+      this.agency.evaluationAgencyResourceList.push(tmpResource)
+    },
+    //删除一项测评机构资源
+    removeAgencyResource (id) {
+      this.agency.evaluationAgencyResourceList.splice(id, 1)
+      for (var i = 0; i < this.agency.evaluationAgencyResourceList.length; i++) {
+        this.agency.evaluationAgencyResourceList[i].id = i
+      }
+    },
+    //设置测评机构资源类型
+    setResourceTypes () {
+      this.resourceTypes = getAllAgencyResourceTypes()
+    },
+    //检测测评机构资源填写是否有效
+    checkAgencyResourceVaild () {
+      if (this.agency.evaluationAgencyResourceList.length === 0) {
+        return true
+      }
+      for (var i = 0; i < this.agency.evaluationAgencyResourceList.length; i++) {
+        const item = this.agency.evaluationAgencyResourceList[i]
+        if (item.type === '') {
+          notify('error', '资源类型不能为空')
+          return false
+        }
+        if (item.name === '') {
+          notify('error', '资源名称不能为空')
+          return false
+        }
+        if (item.totalNum < item.availableNum) {
+          notify('error', '资源总数量不能低于可用数量')
+          return false
+        }
+      }
+      return true
+    },
+    //获取用户信息
+    setUserInfo () {
+      this.user = storageGet('user')
+    },
+    //显示loading
+    showLoading () {
+      this.loading = true
+    },
+    //隐藏loading
+    hideLoading () {
+      this.loading = false
+    }
+  },
+  created: function () {
+  }
+}
+</script>
+
+<style scoped>
+  .el-radio {
+    margin: 10px 20px 10px 0;
+  }
+
+  .el-form-item /deep/ .el-tabs__content {
+    max-height: 120px !important;
+    overflow: auto;
+  }
+
+  .el-row {
+    margin-bottom: 10px;
+  }
+
+  .el-input {
+    width: 400px;
+  }
+
+  .avatar-uploader .el-upload {
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
+
+  .avatar-uploader .el-upload:hover {
+    border-color: #409EFF;
+  }
+
+  .avatar-uploader-icon {
+    font-size: 28px;
+    color: #8c939d;
+    width: 178px;
+    height: 178px;
+    line-height: 178px;
+    text-align: center;
+    border: 1px dashed #d9d9d9;
+    border-radius: 6px;
+    cursor: pointer;
+    position: relative;
+    overflow: hidden;
+  }
+
+  .avatar {
+    width: 178px;
+    height: 178px;
+    display: block;
+  }
+
+  .el-input-number {
+    width: 150px;
+  }
+</style>

+ 231 - 172
src/components/project/Project.vue

@@ -2,199 +2,209 @@
   <div class="create-container" v-loading="loading">
     <div class="title h1" v-if="!isModifyMode">项目</div>
     <div class="create-body">
-      <div class="title h2" v-if="!isModifyMode">基本信息</div>
-      <div v-if="!isModifyMode" class="el-form-item">
-        <label class="el-form-item__label" style="width: 12%;">编号</label>
-        <div class="el-form-item__content" style="margin-left: 12%;">
-          <div>{{projectId}}</div>
-        </div>
-      </div>
-      <el-form :model="project" :rules="rules" ref="project" label-width="12%" class="demo-project">
-        <el-form-item label="项目名称" prop="name">
-          <el-input size="small" v-if="isModifyMode" v-model="project.name"></el-input>
-          <span v-if="!isModifyMode">{{project.name}}</span>
-        </el-form-item>
+      <el-row type="flex" align="middle" justify="start">
+        <el-col :span="15">
+          <div class="title h2" v-if="!isModifyMode">基本信息</div>
+          <div v-if="!isModifyMode" class="el-form-item">
+            <label class="el-form-item__label" style="width: 30%;">编号</label>
+            <div class="el-form-item__content" style="margin-left: 30%;">
+              <div>{{projectId}}</div>
+            </div>
+          </div>
+          <el-form :model="project" :rules="rules" ref="project" label-width="30%" class="demo-project">
+            <el-form-item label="项目名称" prop="name">
+              <el-input size="small" v-if="isModifyMode" v-model="project.name"></el-input>
+              <span v-if="!isModifyMode">{{project.name}}</span>
+            </el-form-item>
 
-        <el-form-item size="small" label="联系人" prop="contactName">
-          <el-input v-if="isModifyMode" v-model="project.contactName" placeholder="请输入联系人姓名"></el-input>
-          <span v-if="!isModifyMode">{{project.contactName}}</span>
-        </el-form-item>
-        <el-form-item size="small" label="联系人电话" prop="contactPhone">
-          <el-input v-if="isModifyMode" v-model="project.contactPhone" placeholder="请输入联系人电话"></el-input>
-          <span v-if="!isModifyMode">{{project.contactPhone}}</span>
-        </el-form-item>
-        <el-form-item size="small" label="预算" prop="budget">
-          <el-input v-if="isModifyMode" type="number" v-model="project.budget">
-            ¥
-            <template slot="append"></template>
-          </el-input>
-          <span v-if="!isModifyMode">{{project.budget}}¥</span>
-        </el-form-item>
-        <el-form-item v-if="!isModifyMode" size="small" label="状态" prop="status">
-          <span v-if="!isModifyMode">{{project.status==1?'等待接收':(project.status==2?'已被接收':(project.status==3?'项目已提交':'项目已结束'))}}</span>
-        </el-form-item>
-        <el-form-item label="需求描述">
-          <el-input style="width: 400px" autosize v-if="isModifyMode" type="textarea" v-model="project.desc"></el-input>
-          <span v-if="!isModifyMode">{{project.desc}}</span>
-        </el-form-item>
-        <!--<el-form-item label="价格" prop="price">-->
-        <!--<el-input v-if="isModifyMode" type="number" v-model="project.price">-->
-        <!--<template slot="append">¥</template>-->
-        <!--</el-input>-->
-        <!--<span v-if="!isModifyMode">{{project.price}}¥</span>-->
-        <!--</el-form-item>-->
-        <el-form-item label="平台" prop="platform">
-          <el-checkbox-group v-if="isModifyMode" v-model="project.platform">
+            <el-form-item size="small" label="联系人" prop="contactName">
+              <el-input v-if="isModifyMode" v-model="project.contactName" placeholder="请输入联系人姓名"></el-input>
+              <span v-if="!isModifyMode">{{project.contactName}}</span>
+            </el-form-item>
+            <el-form-item size="small" label="联系人电话" prop="contactPhone">
+              <el-input v-if="isModifyMode" v-model="project.contactPhone" placeholder="请输入联系人电话"></el-input>
+              <span v-if="!isModifyMode">{{project.contactPhone}}</span>
+            </el-form-item>
+            <el-form-item size="small" label="预算" prop="budget">
+              <el-input v-if="isModifyMode" type="number" v-model="project.budget">
+                ¥
+                <template slot="append"></template>
+              </el-input>
+              <span v-if="!isModifyMode">{{project.budget}}¥</span>
+            </el-form-item>
+            <el-form-item v-if="!isModifyMode" size="small" label="状态" prop="status">
+              <span v-if="!isModifyMode">{{project.status==1?'等待接收':(project.status==2?'已被接收':(project.status==3?'项目已提交':'项目已结束'))}}</span>
+            </el-form-item>
+            <el-form-item label="需求描述">
+              <el-input style="width: 400px" autosize v-if="isModifyMode" type="textarea"
+                        v-model="project.desc"></el-input>
+              <span v-if="!isModifyMode">{{project.desc}}</span>
+            </el-form-item>
+            <!--<el-form-item label="价格" prop="price">-->
+            <!--<el-input v-if="isModifyMode" type="number" v-model="project.price">-->
+            <!--<template slot="append">¥</template>-->
+            <!--</el-input>-->
+            <!--<span v-if="!isModifyMode">{{project.price}}¥</span>-->
+            <!--</el-form-item>-->
+            <el-form-item label="平台" prop="platform">
+              <el-checkbox-group v-if="isModifyMode" v-model="project.platform">
             <span v-for="(item,index) in platforms" :key="index">
               <el-checkbox :label="item">{{ item }}&nbsp;&nbsp;&nbsp;&nbsp;</el-checkbox>
             </span>
-          </el-checkbox-group>
-          <span
-            v-if="!isModifyMode"
-            class="badge"
-            v-for="item in project.platform"
-          >{{item}}</span>
-        </el-form-item>
-        <el-form-item label="服务类型" prop="type">
-          <el-checkbox-group v-if="isModifyMode" v-model="project.type">
+              </el-checkbox-group>
+              <span
+                v-if="!isModifyMode"
+                class="badge"
+                v-for="item in project.platform"
+              >{{item}}</span>
+            </el-form-item>
+            <el-form-item label="服务类型" prop="type">
+              <el-checkbox-group v-if="isModifyMode" v-model="project.type">
             <span v-for="(item,index) in serviceType" :key="index">
               <el-checkbox :label="item" name="type">{{ item }}&nbsp;&nbsp;</el-checkbox>
             </span>
-          </el-checkbox-group>
-          <span v-if="!isModifyMode" class="badge" v-for="item in project.type">{{item}}</span>
-        </el-form-item>
-        <!--<el-form-item label="用途" prop="usage">-->
-        <!--<el-input v-if="isModifyMode" v-model="project.usage"></el-input>-->
-        <!--<span v-if="!isModifyMode">{{project.usage}}</span>-->
-        <!--</el-form-item>-->
+              </el-checkbox-group>
+              <span v-if="!isModifyMode" class="badge" v-for="item in project.type">{{item}}</span>
+            </el-form-item>
+            <!--<el-form-item label="用途" prop="usage">-->
+            <!--<el-input v-if="isModifyMode" v-model="project.usage"></el-input>-->
+            <!--<span v-if="!isModifyMode">{{project.usage}}</span>-->
+            <!--</el-form-item>-->
 
 
-        <el-form-item label="项目可见性" prop="resource">
-          <div v-if="!isModifyMode">
-            <div v-if="project.resource=='1'">{{updateLocation(project.location)}}</div>
-            <div v-if="project.resource=='0'">{{project.institution==null?'暂未被接收':project.institution}}</div>
-            <div v-if="project.resource=='2'">{{resourceType[project.resource]}}</div>
-          </div>
-          <el-tabs :tab-position="tabPosition" v-model="project.resource" style="max-height: 200px;"
-                   v-if="isModifyMode">
-            <el-tab-pane :label="resourceType[0]" name="0">
-              <el-radio-group v-model="project.institution">
-                <el-radio :label="item" name="type" v-for="(item,index) in institutionArray" :key="index">
-                  {{item.name}}
-                </el-radio>
-              </el-radio-group>
-            </el-tab-pane>
-            <el-tab-pane :label="resourceType[1]" name="1">
-              <provincecity
-                ref="addFormProvince"
-                @selectChange="locationChange"
-                :provinceCode="project.location==null?'3200':project.location.provinceCode"
-                :cityCode="project.location==null?'3201':project.location.cityCode"
-              ></provincecity>
-            </el-tab-pane>
-            <el-tab-pane :label="resourceType[2]" name="2"></el-tab-pane>
-          </el-tabs>
-        </el-form-item>
+            <el-form-item label="项目可见性" prop="resource">
+              <div v-if="!isModifyMode">
+                <div v-if="project.resource=='1'">{{updateLocation(project.location)}}</div>
+                <div v-if="project.resource=='0'">{{project.institution==null?'暂未被接收':project.institution}}</div>
+                <div v-if="project.resource=='2'">{{resourceType[project.resource]}}</div>
+              </div>
+              <el-tabs :tab-position="tabPosition" v-model="project.resource" style="max-height: 200px;"
+                       v-if="isModifyMode">
+                <el-tab-pane :label="resourceType[0]" name="0">
+                  <el-radio-group v-model="project.institution">
+                    <el-radio :label="item" name="type" v-for="(item,index) in institutionArray" :key="index">
+                      {{item.name}}
+                    </el-radio>
+                  </el-radio-group>
+                </el-tab-pane>
+                <el-tab-pane :label="resourceType[1]" name="1">
+                  <provincecity
+                    ref="addFormProvince"
+                    @selectChange="locationChange"
+                    :provinceCode="project.location==null?'3200':project.location.provinceCode"
+                    :cityCode="project.location==null?'3201':project.location.cityCode"
+                  ></provincecity>
+                </el-tab-pane>
+                <el-tab-pane :label="resourceType[2]" name="2"></el-tab-pane>
+              </el-tabs>
+            </el-form-item>
 
-        <el-form-item label="需求文档" prop="doc">
-          <el-upload
-            style="width: 400px"
-            v-if="isModifyMode"
-            drag
-            class="upload-demo"
-            action=""
-            :on-remove="handleRemove"
-            :before-remove="beforeRemove"
-            :limit="1"
-            :on-exceed="handleExceed"
-            :before-upload="beforeFileUpload"
-            :http-request="uploadRequireDoc"
-            :file-list="project.doc"
-          >
-            <i class="el-icon-upload"></i>
-            <div class="el-upload__text">
-              将文件拖到此处,或
-              <em>点击上传</em>
-            </div>
-          </el-upload>
-          <span v-if="!isModifyMode">
+            <el-form-item label="需求文档" prop="doc">
+              <el-upload
+                style="width: 400px"
+                v-if="isModifyMode"
+                drag
+                class="upload-demo"
+                action=""
+                :on-remove="handleRemove"
+                :before-remove="beforeRemove"
+                :limit="1"
+                :on-exceed="handleExceed"
+                :before-upload="beforeFileUpload"
+                :http-request="uploadRequireDoc"
+                :file-list="project.doc"
+              >
+                <i class="el-icon-upload"></i>
+                <div class="el-upload__text">
+                  将文件拖到此处,或
+                  <em>点击上传</em>
+                </div>
+              </el-upload>
+              <span v-if="!isModifyMode">
             <a :href="project.requireDocUrl" v-if="project.requireDocUrl!=null && project.requireDocUrl!=''"><el-link
               :underline="false" type="primary"><i
               class="el-icon-document"></i>下载文档</el-link></a>
             <i v-if="project.requireDocUrl==null || project.requireDocUrl==''" class="el-icon-document">暂无文档</i>
           </span>
-        </el-form-item>
-        <el-form-item label="安装包" prop="file">
-          <el-upload
-            style="width: 400px"
-            v-if="isModifyMode"
-            drag
-            class="upload-demo"
-            action=""
-            :on-remove="handleRemove"
-            :before-remove="beforeRemove"
-            :limit="1"
-            :on-exceed="handleExceed"
-            :before-upload="beforeApkUpload"
-            :http-request="uploadApkFile"
-            :file-list="project.file"
-          >
-            <i class="el-icon-upload"></i>
-            <div class="el-upload__text">
-              将文件拖到此处,或
-              <em>点击上传</em>
-            </div>
-          </el-upload>
-          <span v-if="!isModifyMode">
+            </el-form-item>
+            <el-form-item label="安装包" prop="file">
+              <el-upload
+                style="width: 400px"
+                v-if="isModifyMode"
+                drag
+                class="upload-demo"
+                action=""
+                :on-remove="handleRemove"
+                :before-remove="beforeRemove"
+                :limit="1"
+                :on-exceed="handleExceed"
+                :before-upload="beforeApkUpload"
+                :http-request="uploadApkFile"
+                :file-list="project.file"
+              >
+                <i class="el-icon-upload"></i>
+                <div class="el-upload__text">
+                  将文件拖到此处,或
+                  <em>点击上传</em>
+                </div>
+              </el-upload>
+              <span v-if="!isModifyMode">
             <a v-if="project.fileUrl!=null && project.fileUrl!=''" :href="project.fileUrl"><el-link :underline="false"
                                                                                                     type="primary"><i
               class="el-icon-document"></i>下载文件</el-link></a>
             <i v-if="project.fileUrl==null || project.fileUrl==''" class="el-icon-document">暂无文件</i>
           </span>
-        </el-form-item>
-        <el-form-item label="项目截止时间" prop="datetime">
-          <div class="block" v-if="isModifyMode">
-            <el-date-picker
-              size="small"
-              v-model="project.datetime"
-              type="datetime"
-              placeholder="选择截止时间"
-              align="right"
-              :picker-options="pickerOptions"
-            ></el-date-picker>
-          </div>
-          <span v-if="!isModifyMode">{{reformDate(new Date(project.datetime))}}</span>
-        </el-form-item>
-        <el-form-item v-if="isModifyMode">
-          <div class="btn btn-small btn-info" @click="submitForm('project')">确认修改</div>
-          <div class="btn btn-small" @click="resetForm('project')">重置</div>
-          <div class="btn btn-small" @click="cancelMode('project')">取消</div>
-        </el-form-item>
-        <el-form-item v-if="!isModifyMode">
+            </el-form-item>
+            <el-form-item label="项目截止时间" prop="datetime">
+              <div class="block" v-if="isModifyMode">
+                <el-date-picker
+                  size="small"
+                  v-model="project.datetime"
+                  type="datetime"
+                  placeholder="选择截止时间"
+                  align="right"
+                  :picker-options="pickerOptions"
+                ></el-date-picker>
+              </div>
+              <span v-if="!isModifyMode">{{reformDate(new Date(project.datetime))}}</span>
+            </el-form-item>
+            <el-form-item v-if="isModifyMode">
+              <div class="btn btn-small btn-info" @click="submitForm('project')">确认修改</div>
+              <div class="btn btn-small" @click="resetForm('project')">重置</div>
+              <div class="btn btn-small" @click="cancelMode('project')">取消</div>
+            </el-form-item>
+            <el-form-item v-if="!isModifyMode">
 
-          <el-button v-if="projectOperationControl.confirmFinish" type="success" size="mini" @click="endProject()">
-            结束项目
-          </el-button>
-          <el-button v-if="projectOperationControl.finish" type="primary" size="mini" @click="submitProjectRequest()">
-            提交项目
-          </el-button>
-          <el-button v-if="projectOperationControl.receive" type="primary" size="mini" @click="receiveProject()">
-            接受项目
-          </el-button>
-          <el-button v-if="projectOperationControl.reject" type="danger" size="mini" @click="rejectProject()">
-            拒绝项目
-          </el-button>
-          <el-button v-if="projectOperationControl.update" type="primary" size="mini" @click="modifyForm()">
-            修改项目
-          </el-button>
-          <el-button v-if="projectOperationControl.createTask" type="primary" size="mini" @click="createNewTask()">
-            新建任务
-          </el-button>
-          <el-button v-if="projectOperationControl.uploadReport" type="primary" size="mini" @click="createReport()">
-            上传报告
-          </el-button>
-        </el-form-item>
-      </el-form>
+              <el-button v-if="projectOperationControl.confirmFinish" type="success" size="mini" @click="endProject()">
+                结束项目
+              </el-button>
+              <el-button v-if="projectOperationControl.finish" type="primary" size="mini"
+                         @click="submitProjectRequest()">
+                提交项目
+              </el-button>
+              <el-button v-if="projectOperationControl.receive" type="primary" size="mini" @click="receiveProject()">
+                接受项目
+              </el-button>
+              <el-button v-if="projectOperationControl.reject" type="danger" size="mini" @click="rejectProject()">
+                拒绝项目
+              </el-button>
+              <el-button v-if="projectOperationControl.update" type="primary" size="mini" @click="modifyForm()">
+                修改项目
+              </el-button>
+              <el-button v-if="projectOperationControl.createTask" type="primary" size="mini" @click="createNewTask()">
+                新建任务
+              </el-button>
+              <el-button v-if="projectOperationControl.uploadReport" type="primary" size="mini" @click="createReport()">
+                上传报告
+              </el-button>
+            </el-form-item>
+          </el-form>
+
+        </el-col>
+        <el-col :span="5" id="pieImage" style="height: 500px;min-width: 500px">
+          这里画个饼
+        </el-col>
+      </el-row>
     </div>
     <div class="create-body" v-if="!isModifyMode">
       <div class="title h2">任务列表</div>
@@ -262,6 +272,7 @@ import Apis from '@/js/api.js'
 import ResourceType from '@/constants/enum/resource-type'
 import provincecity from '@/components/commons/ProvinceCity'
 import {notify} from '@/constants/index'
+import echarts from 'echarts'
 import {
   checkFileType,
   ensureEndProject,
@@ -335,6 +346,7 @@ export default {
         status: ''
       },
       task: [],
+      progress: [],
       reportList: [],
       pickerOptions: {
         shortcuts: [
@@ -484,6 +496,51 @@ export default {
       //   this.platformType.push(PlatformType[item])
       // })
     },
+    //画个饼
+    setEcharts () {
+      // 基于准备好的dom,初始化echarts实例
+      let myChart = echarts.init(document.getElementById('pieImage'))
+      // 绘制图表
+      var option = {
+        tooltip: {
+          trigger: 'item',
+          formatter: '{a} <br/>{b}: {c} ({d}%)'
+        },
+        legend: {
+          orient: 'vertical',
+          x: 'left',
+          data: ['已完成', '进行中']
+        },
+        series: [
+          {
+            name: '任务状态',
+            type: 'pie',
+            radius: ['50%', '70%'],
+            avoidLabelOverlap: false,
+            label: {
+              normal: {
+                show: false,
+                position: 'center'
+              },
+              emphasis: {
+                show: true,
+                textStyle: {
+                  fontSize: '30',
+                  fontWeight: 'bold'
+                }
+              }
+            },
+            labelLine: {
+              normal: {
+                show: false
+              }
+            },
+            data: this.progress
+          }
+        ]
+      }
+      myChart.setOption(option)
+    },
     //提交修改
     submitForm (formName) {
       this.$refs['project'].validate(valid => {
@@ -761,7 +818,9 @@ export default {
         this.task = res.taskList
         this.reportList = res.reportList
         this.projectOperationControl = res.projectOperationControl
+        this.progress = res.progress
         this.hideLoading()
+        this.setEcharts()
       }).catch((error) => {
         this.hideLoading()
         notify('error', error.data)

+ 13 - 13
src/js/userService.js

@@ -252,46 +252,46 @@ export const updateEnterpriseAuthInfo = (userId, authInfo, updateEnterpriseAuthI
 
 export const checkPassAuth = (type, userId, checkPassAuthSuccess, checkPassAuthFail) => {
   if (type == 'agency') {
-    Http.put(Apis.USER.PASS_AGENCY_AUTH.replace('{userId}',userId),{}).then((res)=>{
+    Http.put(Apis.USER.PASS_AGENCY_AUTH.replace('{userId}', userId), {}).then((res) => {
       checkPassAuthSuccess(res)
-    }).catch((error)=>{
+    }).catch((error) => {
       checkPassAuthFail(error)
     })
   }
   if (type == 'personal') {
-    Http.put(Apis.USER.PASS_INDIVIDUAL_AUTH.replace('{userId}',userId),{}).then((res)=>{
+    Http.put(Apis.USER.PASS_INDIVIDUAL_AUTH.replace('{userId}', userId), {}).then((res) => {
       checkPassAuthSuccess(res)
-    }).catch((error)=>{
+    }).catch((error) => {
       checkPassAuthFail(error)
     })
   }
   if (type == 'enterprise') {
-    Http.put(Apis.USER.PASS_ENTERPRISE_AUTH.replace('{userId}',userId),{}).then((res)=>{
+    Http.put(Apis.USER.PASS_ENTERPRISE_AUTH.replace('{userId}', userId), {}).then((res) => {
       checkPassAuthSuccess(res)
-    }).catch((error)=>{
+    }).catch((error) => {
       checkPassAuthFail(error)
     })
   }
 }
-export const checkRejectAuth = (type, userId, checkRejectAuthSuccess, checkRejectAuthFail) => {
+export const checkRejectAuth = (type, userId, data, checkRejectAuthSuccess, checkRejectAuthFail) => {
   if (type == 'agency') {
-    Http.put(Apis.USER.REJECT_INDIVIDUAL_AUTH.replace('{userId}',userId),{}).then((res)=>{
+    Http.put(Apis.USER.REJECT_INDIVIDUAL_AUTH.replace('{userId}', userId), data).then((res) => {
       checkRejectAuthSuccess(res)
-    }).catch((error)=>{
+    }).catch((error) => {
       checkRejectAuthFail(error)
     })
   }
   if (type == 'personal') {
-    Http.put(Apis.USER.REJECT_INDIVIDUAL_AUTH.replace('{userId}',userId),{}).then((res)=>{
+    Http.put(Apis.USER.REJECT_INDIVIDUAL_AUTH.replace('{userId}', userId), data).then((res) => {
       checkRejectAuthSuccess(res)
-    }).catch((error)=>{
+    }).catch((error) => {
       checkRejectAuthFail(error)
     })
   }
   if (type == 'enterprise') {
-    Http.put(Apis.USER.REJECT_ENTERPRISE_AUTH.replace('{userId}',userId),{}).then((res)=>{
+    Http.put(Apis.USER.REJECT_ENTERPRISE_AUTH.replace('{userId}', userId), data).then((res) => {
       checkRejectAuthSuccess(res)
-    }).catch((error)=>{
+    }).catch((error) => {
       checkRejectAuthFail(error)
     })
   }