刘湘琪 3 years ago
parent
commit
3114c16023
44 changed files with 2686 additions and 624 deletions
  1. 8 0
      src/api/admin/ent/ent.js
  2. 18 0
      src/api/admin/msg/msg.js
  3. 10 0
      src/api/admin/project/project.js
  4. 33 0
      src/api/admin/tax/tax.js
  5. 25 2
      src/api/enterprise/declare/declare.js
  6. 54 1
      src/api/enterprise/project/project.js
  7. BIN
      src/assets/images/stat_ent.png
  8. BIN
      src/assets/images/stat_fin_all.png
  9. BIN
      src/assets/images/stat_fined.png
  10. BIN
      src/assets/images/stat_fining.png
  11. BIN
      src/assets/images/stat_project.png
  12. BIN
      src/assets/images/stat_projected.png
  13. BIN
      src/assets/images/stat_projecting.png
  14. BIN
      src/assets/images/stat_serviced.png
  15. BIN
      src/assets/images/stat_servicing.png
  16. 22 10
      src/assets/styles/index.scss
  17. 18 0
      src/router/index.js
  18. 14 0
      src/utils/dataFormat.js
  19. 117 0
      src/views/enterprise/declare/components/BasicInfo.vue
  20. 136 0
      src/views/enterprise/declare/components/EnclosureInfo.vue
  21. 16 21
      src/views/enterprise/declare/index.vue
  22. 43 0
      src/views/enterprise/declare/info.vue
  23. 10 15
      src/views/enterprise/ent/edit.vue
  24. 3 3
      src/views/enterprise/ent/index.vue
  25. 130 324
      src/views/enterprise/project/components/BasicInfo.vue
  26. 153 0
      src/views/enterprise/project/components/EnclosureInfo.vue
  27. 7 7
      src/views/enterprise/project/components/EntBasic.vue
  28. 145 0
      src/views/enterprise/project/components/EntEnclosure.vue
  29. 39 24
      src/views/enterprise/project/components/FinBasic.vue
  30. 143 0
      src/views/enterprise/project/components/FinDataEnclosure.vue
  31. 144 0
      src/views/enterprise/project/components/FinEnclosure.vue
  32. 21 19
      src/views/enterprise/project/components/TechBasic.vue
  33. 143 0
      src/views/enterprise/project/components/TechEnclosure.vue
  34. 103 0
      src/views/enterprise/project/components/UploadEnclosure.vue
  35. 66 0
      src/views/enterprise/project/components/declare.vue
  36. 0 87
      src/views/enterprise/project/components/enclosure.vue
  37. 20 14
      src/views/enterprise/project/edit.vue
  38. 75 31
      src/views/enterprise/project/index.vue
  39. 92 0
      src/views/enterprise/project/info.vue
  40. 322 66
      src/views/index.vue
  41. 94 0
      src/views/message/index.vue
  42. 59 0
      src/views/message/info.vue
  43. 189 0
      src/views/tax/components/AddTaxUser.vue
  44. 214 0
      src/views/tax/index.vue

+ 8 - 0
src/api/admin/ent/ent.js

@@ -63,3 +63,11 @@ export function updateEntInfoApi(data) {
     data: data
   })
 }
+//注册企业用户
+export function registerEnterUserApi(data) {
+  return request({
+    url: `/admin/enterprise/save`,
+    method: 'post',
+    data: data
+  })
+}

+ 18 - 0
src/api/admin/msg/msg.js

@@ -0,0 +1,18 @@
+import request from '@/utils/request'
+
+// 消息列表
+export function listMsgApi(query) {
+  return request({
+    url: '/notice/list',
+    method: 'get',
+    params: query
+  })
+}
+//消息详情
+export function noticeByIdApi(noticeId, query) {
+  return request({
+    url: `/notice/${noticeId}`,
+    method: 'get',
+    params: query
+  })
+}

+ 10 - 0
src/api/admin/project/project.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+// 查询项目列表
+export function listProjectAdminApi(query) {
+  return request({
+    url: '/admin/project/list',
+    method: 'get',
+    params: query
+  })
+}

+ 33 - 0
src/api/admin/tax/tax.js

@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+
+// 查询税务人员列表
+export function listTaxAdminApi(query) {
+  return request({
+    url: '/admin/gov/list',
+    method: 'get',
+    params: query
+  })
+}
+//新增税务人员
+export function addTaxUserApi(data) {
+  return request({
+    url: `/admin/gov`,
+    method: 'post',
+    data: data
+  })
+}
+//删除税务人员
+export function deleteTaxApi(ids) {
+  return request({
+    url: `/admin/gov/${ids}`,
+    method: 'delete'
+  })
+}
+//根据id查询税务人员
+export function getTaxInfoByIdApi(id, query) {
+  return request({
+    url: `/admin/gov/${id}`,
+    method: 'get',
+    params: query
+  })
+}

+ 25 - 2
src/api/enterprise/declare/declare.js

@@ -1,10 +1,33 @@
 import request from '@/utils/request'
 
-// 查询项目列表
+// 查询项目申报列表 企业角色
 export function listDeclareApi(query) {
   return request({
     url: '/ent/project/reportList',
     method: 'get',
     params: query
   })
-}
+}
+//查询项目申报列表 税务角色
+// export function listDeclareTaxApi(query) {
+//   return request({
+//     url: ``
+//   })
+// }
+//提交申报
+export function submitDeclareApi(id, data) {
+  return request({
+    url: `/ent/project/apply/${id}`,
+    method: 'put',
+    data: data
+  })
+}
+
+//查询项目申报列表
+export function listDeclareCommonApi(query) {
+  return request({
+    url: `/project/list`,
+    method: 'get',
+    params: query
+  })
+}

+ 54 - 1
src/api/enterprise/project/project.js

@@ -32,11 +32,64 @@ export function editProjectApi(data) {
     data: data
   })
 }
-//获取信息
+//获取项目信息  企业
 export function getProjectInfoApi(id, query) {
   return request({
     url: `/ent/project/${id}`,
     method: 'get',
     params: query
   })
+}
+//获取项目详情信息 科德管理员
+export function getProjectInfoAdminApi(id, query) {
+  return request({
+    url: `/admin/project/${id}`,
+    method: 'get',
+    params: query
+  })
+}
+//同步给技术
+export function synTechApi(id,data) {
+  return request({
+    url: `/ent/project/sync/tech/${id}`,
+    method: 'put',
+    data: data
+  })
+}
+//同步给财务
+export function synFinApi(id, data) {
+  return request({
+    url: `/ent/project/sync/finc/${id}`,
+    method: 'put',
+    data: data
+  })
+}
+//删除项目
+export function deleteProjectApi(ids) {
+  return request({
+    url: `/ent/project/${ids}`,
+    method: 'delete'
+  })
+}
+//获取项目附件
+export function getEnclosureApi(attachType,dataId) {
+  return request({
+    url: `/common/attach/attach/${attachType}/${dataId}`,
+    method: 'get'
+  })
+}
+//删除附件信息
+export function deleteEnclosureApi(ids) {
+  return request({
+    url: `/common/attach/${ids}`,
+    method: 'delete'
+  })
+}
+
+export function getProjectInfoCommonApi(id, query) {
+  return request({
+    url: `/project/${id}`,
+    method: 'get',
+    params: query
+  })
 }

BIN
src/assets/images/stat_ent.png


BIN
src/assets/images/stat_fin_all.png


BIN
src/assets/images/stat_fined.png


BIN
src/assets/images/stat_fining.png


BIN
src/assets/images/stat_project.png


BIN
src/assets/images/stat_projected.png


BIN
src/assets/images/stat_projecting.png


BIN
src/assets/images/stat_serviced.png


BIN
src/assets/images/stat_servicing.png


+ 22 - 10
src/assets/styles/index.scss

@@ -648,20 +648,32 @@ $border: #ddd;
       height: 76px;
       border-radius: 50%;
       transform: translate(0, -50%);
-      &.icon_customer {
-        background: url(~@/assets/images/stat_customer.png) no-repeat center;
+      &.icon_1 {
+        background: url(~@/assets/images/stat_ent.png) no-repeat center;
       }
-      &.icon_employee {
-        background: url(~@/assets/images/stat_employee.png) no-repeat center;
+      &.icon_2 {
+        background: url(~@/assets/images/stat_fin_all.png) no-repeat center;
       }
-      &.icon_amount {
-        background: url(~@/assets/images/stat_amount.png) no-repeat center;
+      &.icon_3 {
+        background: url(~@/assets/images/stat_fined.png) no-repeat center;
       }
-      &.icon_payment {
-        background: url(~@/assets/images/stat_payment.png) no-repeat center;
+      &.icon_4 {
+        background: url(~@/assets/images/stat_fining.png) no-repeat center;
       }
-      &.icon_advance {
-        background: url(~@/assets/images/stat_advance.png) no-repeat center;
+      &.icon_5 {
+        background: url(~@/assets/images/stat_project.png) no-repeat center;
+      }
+      &.icon_6 {
+        background: url(~@/assets/images/stat_projected.png) no-repeat center;
+      }
+      &.icon_7 {
+        background: url(~@/assets/images/stat_projecting.png) no-repeat center;
+      }
+      &.icon_8 {
+        background: url(~@/assets/images/stat_serviced.png) no-repeat center;
+      }
+      &.icon_9 {
+        background: url(~@/assets/images/stat_servicing.png) no-repeat center;
       }
     }
     &>span {

+ 18 - 0
src/router/index.js

@@ -134,6 +134,24 @@ export const constantRoutes = [
         name: 'editProject',
         meta: { title: '修改项目信息'}
       },
+      {
+        path: 'info/:id',
+        component: (resolve) => require(['@/views/enterprise/project/info'], resolve),
+        name: 'projectInfo',
+        meta: {title: '项目详情'}
+      }
+    ]
+  }, {
+    path: '/declare',
+    component: Layout,
+    hidden: true,
+    children: [
+      {
+        path: 'info/:id',
+        component: (resolve) => require(['@/views/enterprise/declare/info'], resolve),
+        name: 'declareInfo',
+        meta: {title: '项目申报详情'}
+      }
     ]
   }
 ]

+ 14 - 0
src/utils/dataFormat.js

@@ -75,6 +75,20 @@ export const authStateOptions =[
   { dictLabel: '通过', dictValue: '2'},
   { dictLabel: '驳回', dictValue: '3'}
 ]
+export const dutyAreaOptions =[
+  { dictLabel: '省级', dictValue: 1},
+  { dictLabel: '市级', dictValue: 2},
+  { dictLabel: '区级', dictValue: 3}
+]
+
+/**
+ * 申报状态
+ */
+export const reportStateOptions = [
+  { dictLabel: '未申报', dictValue: 1},
+  { dictLabel: '已申报', dictValue: 2},
+  { dictLabel: '撤回', dictValue: 3}
+]
 export function getLabel(list, val) {
   for (let i = 0; i < list.length; i++) {
     if (val == list[i].dictValue) {

+ 117 - 0
src/views/enterprise/declare/components/BasicInfo.vue

@@ -0,0 +1,117 @@
+<template>
+  <div class="app-container" v-loading="loading">
+    <h3 class="toolbar">
+      <span class="title">项目基本信息</span>
+    </h3>
+    <table class="table_view">
+      <tr>
+        <th>企业名称</th>
+        <td>{{info.entName}}</td>
+        <th>通讯地址</th>
+        <td>{{info.address}}</td>
+      </tr>
+      <tr>
+        <th>企业联系人</th>
+        <td>{{info.linkName}}</td>
+        <th>联系人(座机)</th>
+        <td>{{info.linkPhone}}</td>
+      </tr>
+      <tr>
+        <th>联系电话(手机)</th>
+        <td>{{info.linkMobile}}</td>
+        <th>职工总人数(人)</th>
+        <td>{{info.totoalPersons}}</td>
+      </tr>
+      <tr>
+        <th>年度企业销售收入(万元)</th>
+        <td>{{info.sales}}</td>
+        <th>占销售收入比例(%)</th>
+        <td>{{info.techRate}}</td>
+      </tr>
+      <tr>
+        <th>研发人数</th>
+        <td>{{info.techPersons}}</td>
+        <th>年度研发投入(万元)</th>
+        <td>{{info.techInvest}}</td>
+      </tr>
+      <tr>
+        <th>企业所属行业</th>
+        <td>{{info.industry}}</td>
+        <th>国家自主创新示范区企业</th>
+        <td>{{info.innovateFlag}}</td>
+      </tr>
+    </table>
+    <h3 class="toolbar mt20">
+      <span class="title">项目是否跨年</span>
+    </h3>
+    <table class="table_view">
+      <tr>
+        <th>是否跨年</th>
+        <td>{{info.overYearFlag}}</td>
+        <th>项目期限</th>
+        <td>{{info.projectTime}}</td>
+      </tr>
+    </table>
+    <h3 class="toolbar mt20">
+      <span class="title">科技型中小企业信息</span>
+    </h3>
+    <table class="table_view">
+      <tr>
+        <th>是否科技型中小企业</th>
+        <td>{{info.smallFlag}}</td>
+      </tr>
+    </table>
+    <h3 class="toolbar mt20">
+      <span class="title">高新技术企业信息</span>
+    </h3>
+    <table class="table_view">
+      <tr>
+        <th>企业是否高新技术</th>
+        <td>{{info.techFlag}}</td>
+        <th>高新技术企业所属技术领域</th>
+        <td>{{info.techScope}}</td>
+      </tr>
+      <tr>
+        <th>证书有限期限</th>
+        <td>{{info.lisenceTime}}</td>
+        <th>高新证书</th>
+        <td>{{info.listingCode}}</td>
+      </tr>
+    </table>
+  </div>
+</template>
+
+<script>
+  import { getProjectInfoCommonApi } from "@/api/enterprise/project/project"
+  export default {
+    name: 'projectInfo',
+    data () {
+      return {
+        loading: false,
+        id: undefined,
+        info: {
+        },
+      }
+    },
+    created () {
+      this.id = this.$route.params.id || undefined;
+      if(this.id) {
+        this.getData()
+      }
+    },
+    methods: {
+      getData() {
+        getProjectInfoCommonApi(this.id).then(res => {
+          this.info = res.data.finProject || {}
+        })
+      },
+      cancel() {
+        this.$store.dispatch("tagsView/delView", this.$route); // 关闭当前tab
+        this.$router.go(-1);
+      }
+    }
+  }
+</script>
+
+<style>
+</style>

+ 136 - 0
src/views/enterprise/declare/components/EnclosureInfo.vue

@@ -0,0 +1,136 @@
+<template>
+  <div class="app-container">
+    <h3 class="toolbar">
+      <div class="tool">
+        <!-- <el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleDownload">批量下载</el-button> -->
+      </div>
+    </h3>
+    <el-table v-loading="loading" :data="list" border @selection-change="handleSelectionChange" style="width: 100%" @select-all="selectAll">
+      <el-table-column type="selection" width="55"></el-table-column>
+      <el-table-column label="序号" type="index" width="50" align="center"></el-table-column>
+      <el-table-column label="文件名称" prop="fileName" align="center"></el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleView(scope.row)">查看</el-button>
+          <!-- <el-button type="text" @click="handleDownload(scope.row)">下载</el-button> -->
+          <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"/>
+  </div>
+</template>
+
+<script>
+  import {getEnclosureApi,deleteEnclosureApi,getProjectInfoApi,getProjectInfoCommonApi} from '@/api/enterprise/project/project'
+  export default {
+    props: {
+      finEnclosure: {
+        type: String
+      }
+    },
+    data() {
+      return {
+        total: 0,
+        enclosureVisible: false,
+        list: [],
+        id: this.$route.query.id,
+        dataId: undefined,
+        attachType: 'PROJECT',
+        loading: false,
+        selectionList: [],
+        ids: '',
+        info: {},
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10
+        }
+      };
+    },
+    created() {
+      this.id = this.$route.params.id || undefined;
+      this.getData()
+    },
+    methods: {
+      getData() {
+        getProjectInfoCommonApi(this.id).then(res => {
+          this.info = res.data.finProject || {}
+          this.dataId = this.info.id
+          this.getList()
+        })
+      },
+      getList() {
+        if(this.finEnclosure == 'fin') {
+          this.attachType = 'FINACIAL'
+        }
+        getEnclosureApi(this.attachType,this.dataId).then(res => {
+          if(res.code == 200) {
+            this.list = res.data.records
+            this.total = res.data.total
+          }
+        })
+      },
+      handleBatchDelte() {
+        if(this.selectionList.length <=0) {
+          this.$message.error('请选择要删除的数据');
+          return
+        }
+        this.$confirm('请确认是否删除所选择的数据!', '提示').then(() => {
+        	deleteEnclosureApi(this.ids).then(res => {
+            if(res.code == 200) {
+              this.queryParams.pageNum = 1;
+              this.getList();
+              this.$modal.msgSuccess("删除成功");
+            }
+        	})
+        })
+      },
+      handleView() {
+
+      },
+      handleDelete(row) {
+        const id = row.id;
+        this.$confirm('是否确认删除该数据?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            return deleteEnclosureApi(id);
+          }).then(() => {
+            this.queryParams.pageNum = 1;
+            this.getList();
+            this.$modal.msgSuccess("删除成功");
+          })
+      },
+      // 取消全选
+      selectAll(selection) {
+        if (selection.length == 0) {
+          let list = this.selectedList.filter(item => !this.list.some(ele => ele.id === item.id));
+          this.selectionList = list;
+        }
+      },
+      handleSelectionChange(val) {
+        this.selectionList = val;
+        if(this.selectionList.length > 0) {
+          let selectionIds = []
+          for (let i = 0, len = this.selectionList.length; i < len; i++) {
+          	selectionIds.push(this.selectionList[i].id)
+          }
+          this.ids = selectionIds.join(',')
+        }else {
+          this.ids = ''
+        }
+      }
+    }
+  };
+  </script>
+
+</script>
+
+<style>
+</style>

+ 16 - 21
src/views/enterprise/declare/index.vue

@@ -39,19 +39,19 @@
     <h3 class="toolbar">
       <span class="title">列表</span>
       <div class="tool">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleBatchDel">批量删除</el-button>
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleBatchDow">批量下载</el-button>
+        <!-- <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleBatchDel">批量删除</el-button> -->
+        <!-- <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleBatchDow">批量下载</el-button> -->
       </div>
     </h3>
     <el-table v-loading="loading" :data="list" border>
-      <el-table-column label="项目编号" prop="projectNo" width="120" align="center" />
-      <el-table-column label="项目名称" prop="projectName" align="center" width="120"></el-table-column>
-      <el-table-column label="企业名称" prop="entName" align="center" width="120"/>
-      <el-table-column label="社会信用代码" prop="license" align="center" width="120" />
-      <el-table-column label="项目年份" prop="projectYear" align="center" width="120" />
-      <el-table-column label="项目跨年" prop="overYearFlag" align="center" width="120"></el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="150"></el-table-column>
-      <el-table-column label="留存备查时间" prop="linkMobile" align="center" width="120"></el-table-column>
+      <el-table-column label="项目编号" prop="projectNo" width="150" align="center" />
+      <el-table-column label="项目名称" prop="projectName" align="center" width="150"></el-table-column>
+      <el-table-column label="企业名称" prop="entName" align="center" width="150"/>
+      <el-table-column label="社会信用代码" prop="license" align="center" width="150" />
+      <el-table-column label="项目年份" prop="projectYear" align="center" width="150" />
+      <el-table-column label="项目跨年" prop="overYearFlag" align="center" width="150"></el-table-column>
+      <el-table-column label="创建时间" align="center" prop="createTime" width="160"></el-table-column>
+      <el-table-column label="留存备查时间" prop="linkMobile" align="center" width="150"></el-table-column>
       <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button type="text" @click="handleView(scope.row)">查看</el-button>
@@ -73,7 +73,7 @@
 
 <script>
   import {getProvinceDataApi,getRegionChildrenApi} from "@/api/common/common"
-  import {listDeclareApi} from '@/api/enterprise/declare/declare'
+  import {listDeclareApi,listDeclareCommonApi} from '@/api/enterprise/declare/declare'
   import {entStateOptions, getLabel, authStateOptions} from '@/utils/dataFormat'
   export default {
     data () {
@@ -133,24 +133,19 @@
       },
       getList() {
         this.loading = true;
-        listDeclareApi(this.queryParams).then(response => {
+        listDeclareCommonApi(this.queryParams).then(response => {
           this.list = response.data.records;
           this.total = response.data.total;
           this.loading = false;
         });
       },
-      handleAdd() {
-        this.$router.push("/ent/add")
-      },
-      handleUpdate(row) {
-        this.$router.push("/ent/edit/"+row.id)
-      },
-      // 审核
-      handleAudit(row) {
-        this.$router.push("/ent/info/"+row.id+'?type=audit')
+      handleDownload() {
+
       },
+
       // 查看
       handleView(row) {
+        this.$router.push("/declare/info/"+row.id)
       },
       handleDelete(row) {
         const id = row.id;

+ 43 - 0
src/views/enterprise/declare/info.vue

@@ -0,0 +1,43 @@
+<template>
+  <div class="app-container" v-loading="loading">
+    <el-tabs type="border-card" v-model="activeName">
+      <el-tab-pane label="项目基本信息" name="1">
+        <basic-info></basic-info>
+      </el-tab-pane>
+      <el-tab-pane label="资料附件" name="2">
+        <enclosure-info :finEnclosure="'com'"></enclosure-info>
+      </el-tab-pane>
+      <el-tab-pane label="财务资料附件" name="3">
+        <enclosure-info :finEnclosure="'fin'"></enclosure-info>
+      </el-tab-pane>
+    </el-tabs>
+  </div>
+</template>
+
+<script>
+
+import BasicInfo from './components/BasicInfo'
+import EnclosureInfo from './components/EnclosureInfo'
+export default {
+  name: "declareInfo",
+  components: {
+    BasicInfo,
+    EnclosureInfo
+  },
+  data() {
+    return {
+      loading: false,
+      activeName: '1'
+    };
+  },
+  created() {
+
+  },
+};
+</script>
+
+<style rel="stylesheet/scss" lang="scss">
+  .el-tabs__nav {
+    width: 96px
+  }
+</style>

+ 10 - 15
src/views/enterprise/ent/edit.vue

@@ -231,8 +231,7 @@
         <el-col :span="12">
           <el-form-item label="企业是否上市" prop="listedFlag">
             <el-radio-group v-model="form.listedFlag">
-              <el-radio label="1">是</el-radio>
-              <el-radio label="0">否</el-radio>
+              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
             </el-radio-group>
           </el-form-item>
         </el-col>
@@ -250,8 +249,7 @@
         <el-col :span="12">
           <el-form-item label="是否引入风险投资" prop="investFlag">
             <el-radio-group v-model="form.investFlag">
-              <el-radio label="1">是</el-radio>
-              <el-radio label="0">否</el-radio>
+              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
             </el-radio-group>
           </el-form-item>
         </el-col>
@@ -269,8 +267,7 @@
         <el-col :span="12">
           <el-form-item label="是否为高新企业" prop="techFlag">
             <el-radio-group v-model="form.techFlag">
-              <el-radio label="1">是</el-radio>
-              <el-radio label="0">否</el-radio>
+              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
             </el-radio-group>
           </el-form-item>
         </el-col>
@@ -288,8 +285,7 @@
         <el-col :span="12">
           <el-form-item label="上年度是否做加计扣除" prop="deductionFlag">
             <el-radio-group v-model="form.deductionFlag">
-              <el-radio label="1">是</el-radio>
-              <el-radio label="0">否</el-radio>
+              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
             </el-radio-group>
           </el-form-item>
         </el-col>
@@ -345,9 +341,9 @@
 <script>
 
 import { getEntInfoByIdApi,updateEntInfoApi } from "@/api/admin/ent/ent"
-import { registerEntApi } from "@/api/login";
+import { registerEnterUserApi } from "@/api/admin/ent/ent";
 import {getProvinceDataApi,getRegionChildrenApi} from "@/api/common/common"
-import { regTypeOptions,mainProductsOptions,signatoriesOptions } from "@/utils/dataFormat"
+import { regTypeOptions,mainProductsOptions,yesOrNoOptions } from "@/utils/dataFormat"
 import FileUpload from '@/components/FileUpload'
 import ImageUpload from '@/components/ImageUpload'
 
@@ -374,14 +370,14 @@ export default {
       codeUrl: "",
       regTypeOptions: regTypeOptions,
       mainProductsOptions: mainProductsOptions,
-      signatoriesOptions: signatoriesOptions,
+      yesOrNoOptions: yesOrNoOptions,
       provinceDataList: [],
       cityDataList: [],
       districtDataList: [],
       form: {
         serviceDate: [],
-        listedFlag: '1',
-        investFlag: '1',
+        listedFlag: 1,
+        investFlag: 1,
         startDate: '',
         endDate: '',
         attachIds: [],
@@ -508,7 +504,6 @@ export default {
       })
     },
     handleRegister() {
-      console.log(process.env.VUE_APP_BASE_API)
       this.form.mainProducts = this.form.mainProductArray.join(',')
       if(this.type == 'update') {
         this.$refs.form.validate(valid => {
@@ -532,7 +527,7 @@ export default {
         this.$refs.form.validate(valid => {
           if (valid) {
             this.loading = true;
-            registerEntApi(this.form).then(res => {
+            registerEnterUserApi(this.form).then(res => {
               const userName = this.form.userName;
               this.$alert("<font color='red'>恭喜你,您的账号 " + userName + " 注册成功!</font>", '系统提示', {
                 dangerouslyUseHTMLString: true,

+ 3 - 3
src/views/enterprise/ent/index.vue

@@ -17,13 +17,13 @@
         </el-select>
       </el-form-item>
       <el-form-item label="企业名称">
-        <el-input v-model="queryParams.entName" clearable style="width: 200px;"></el-input>
+        <el-input v-model="queryParams.entName" clearable style="width: 200px;" placeholder="请输入企业名称"></el-input>
       </el-form-item>
       <el-form-item label="社会信用代码">
-        <el-input v-model="queryParams.license" style="width: 200px;"></el-input>
+        <el-input v-model="queryParams.license" style="width: 200px;" placeholder="请输入社会信用代码"></el-input>
       </el-form-item>
       <el-form-item label="服务状态">
-        <el-select v-model="queryParams.entState" style="width: 200px;">
+        <el-select v-model="queryParams.entState" style="width: 200px;" placeholder="请选择">
           <el-option v-for="(item, index) in entStateOptions" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
         </el-select>
       </el-form-item>

+ 130 - 324
src/views/enterprise/project/components/BasicInfo.vue

@@ -1,333 +1,139 @@
-<template>
-  <div class="app-container" v-loading="loading">
-    <el-form ref="form" :model="form" :rules="rules" label-width="180px">
-      <h3 class="toolbar">
-        <span class="title">项目基本信息</span>
-      </h3>
-      <el-row :gutter="40">
-        <el-col :span="12">
-          <el-form-item label="企业名称" prop="entName">
-            <el-input v-model="form.entName" type="text" auto-complete="off" placeholder="请输入企业名称"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="通讯地址" prop="address">
-            <el-input v-model="form.address" placeholder="请输入通讯地址"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="企业联系人" prop="linkName">
-            <el-input v-model="form.linkName" placeholder="请输入企业联系人"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="联系电话(座机)" prop="mobile">
-            <el-input v-model="form.mobile" type="text" auto-complete="off" placeholder="请输入联系电话(座机)">
-            </el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="联系电话(手机)" prop="linkMobile">
-            <el-input v-model="form.linkMobile" type="text" auto-complete="off" placeholder="请输入联系电话(手机)">
-            </el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="职工总人数(人)" prop="totoalPersons">
-            <el-input v-model="form.totoalPersons" type="text" auto-complete="off" placeholder="请输入职工总人数">
-            </el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="年度企业销售收入(万元)" prop="sales">
-            <el-input v-model="form.sales" type="text" auto-complete="off" placeholder="请输入年度企业销售收入(万元)">
-            </el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="研发人数" prop="techPersons">
-            <el-input v-model="form.techPersons" type="text" auto-complete="off" placeholder="请输入研发人数">
-            </el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="年度研发投入(万元)" prop="techInvest">
-            <el-input v-model="form.techInvest" type="text" auto-complete="off" placeholder="请输入年度研发投入(万元)">
-            </el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="占销售收入比例(%)" prop="techRate">
-            <el-input v-model="form.techRate" type="text" auto-complete="off" placeholder="请输入占销售收入比例(%)">
-            </el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="企业所属行业" prop="industry">
-            <el-input v-model="form.industry" type="text" auto-complete="off" placeholder="请输入企业所属行业">
-            </el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="国家自主创新示范区企业" prop="innovateFlag">
-            <el-radio-group v-model="form.innovateFlag">
-              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
-            </el-radio-group>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <h3 class="toolbar">
-        <span class="title">项目是否跨年</span>
-      </h3>
-      <el-row :gutter="40">
-        <el-col :span="12">
-          <el-form-item label="是否跨年" prop="overYearFlag">
-            <el-radio-group v-model="form.overYearFlag">
-              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
-            </el-radio-group>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="项目时间段" prop="projectTime">
-            <el-date-picker v-model="form.projectTime" placeholder="选择日期" type="daterange" value-format="yyyy-MM-dd" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <h3 class="toolbar">
-        <span class="title">科技型中小企业信息</span>
-      </h3>
-      <el-row :gutter="40">
-        <el-col :span="12">
-          <el-form-item label="是否科技型中小企业" prop="investFlag">
-            <el-radio-group v-model="form.investFlag">
-              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
-            </el-radio-group>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <h3 class="toolbar">
-        <span class="title">高新技术企业信息</span>
-      </h3>
-      <el-row :gutter="40">
-        <el-col :span="12">
-          <el-form-item label="是否高新技术企业" prop="techFlag">
-            <el-radio-group v-model="form.techFlag">
-              <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
-            </el-radio-group>
-          </el-form-item>
-        </el-col>
-        <template v-if="form.techFlag == 1">
-          <el-col :span="24">
-            <el-form-item label="高新技术企业所属技术领域" prop="techScopeArray">
-              <el-checkbox-group v-model="form.techScopeArray">
-                <el-checkbox v-for="(item, index) in techScopeOptions" :label="item.dictLabel" :key="index">{{item.dictLabel}}</el-checkbox>
-              </el-checkbox-group>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="证书有效期限" prop="lisenceTime">
-              <el-date-picker v-model="form.lisenceTime" placeholder="选择日期" type="daterange" value-format="yyyy-MM" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
-            </el-form-item>
-          </el-col>
-          <el-col :span="24">
-            <el-form-item label="高新证书" prop="investFlag">
-              <FileUpload :file="{url: form.licensePath, name: form.fileName}" @input="handleSuccess">上传证书</FileUpload>
-            </el-form-item>
-          </el-col>
-        </template>
-      </el-row>
-      <template v-if="entOwnVisible">
-        <el-row :gutter="40">
-          <el-col :span="24">
-            <el-form-item style="width:100%;text-align: center;" label-width="0px">
-              <el-button :loading="loading" size="medium" type="primary" @click.native.prevent="submitForm" style="width: 100px;">自填保存</el-button>
-              <el-button size="medium" type="primary" style="width: 100px;">取消</el-button>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </template>
-      <template v-if="entFinVisible">
-        <el-row :gutter="40">
-          <el-col :span="24">
-            <el-form-item style="width:100%;text-align: center;" label-width="0px">
-              <el-button :loading="loading" size="medium" type="primary" @click.native.prevent="submitForm" style="width: 100px;">财务保存</el-button>
-              <el-button size="medium" type="primary" style="width: 100px;">取消</el-button>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </template>
-      <template v-if="entTechVisible">
-        <el-row :gutter="40">
-          <el-col :span="24">
-            <el-form-item style="width:100%;text-align: center;" label-width="0px">
-              <el-button :loading="loading" size="medium" type="primary" @click.native.prevent="submitForm" style="width: 100px;">技术保存</el-button>
-              <el-button size="medium" type="primary" style="width: 100px;">取消</el-button>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </template>
-    </el-form>
-  </div>
-</template>
-
+<template>
+  <div class="app-container" v-loading="loading">
+    <h3 class="toolbar">
+      <span class="title">项目基本信息</span>
+    </h3>
+    <table class="table_view">
+      <tr>
+        <th>企业名称</th>
+        <td>{{info.entName}}</td>
+        <th>通讯地址</th>
+        <td>{{info.address}}</td>
+      </tr>
+      <tr>
+        <th>企业联系人</th>
+        <td>{{info.linkName}}</td>
+        <th>联系人(座机)</th>
+        <td>{{info.linkPhone}}</td>
+      </tr>
+      <tr>
+        <th>联系电话(手机)</th>
+        <td>{{info.linkMobile}}</td>
+        <th>职工总人数(人)</th>
+        <td>{{info.totoalPersons}}</td>
+      </tr>
+      <tr>
+        <th>年度企业销售收入(万元)</th>
+        <td>{{info.sales}}</td>
+        <th>占销售收入比例(%)</th>
+        <td>{{info.techRate}}</td>
+      </tr>
+      <tr>
+        <th>研发人数</th>
+        <td>{{info.techPersons}}</td>
+        <th>年度研发投入(万元)</th>
+        <td>{{info.techInvest}}</td>
+      </tr>
+      <tr>
+        <th>企业所属行业</th>
+        <td>{{info.industry}}</td>
+        <th>国家自主创新示范区企业</th>
+        <td>{{info.innovateFlag}}</td>
+      </tr>
+    </table>
+    <h3 class="toolbar mt20">
+      <span class="title">项目是否跨年</span>
+    </h3>
+    <table class="table_view">
+      <tr>
+        <th>是否跨年</th>
+        <td>{{info.overYearFlag}}</td>
+        <th>项目期限</th>
+        <td>{{info.projectTime}}</td>
+      </tr>
+    </table>
+    <h3 class="toolbar mt20">
+      <span class="title">科技型中小企业信息</span>
+    </h3>
+    <table class="table_view">
+      <tr>
+        <th>是否科技型中小企业</th>
+        <td>{{info.smallFlag}}</td>
+      </tr>
+    </table>
+    <h3 class="toolbar mt20">
+      <span class="title">高新技术企业信息</span>
+    </h3>
+    <table class="table_view">
+      <tr>
+        <th>企业是否高新技术</th>
+        <td>{{info.techFlag}}</td>
+        <th>高新技术企业所属技术领域</th>
+        <td>{{info.techScope}}</td>
+      </tr>
+      <tr>
+        <th>证书有限期限</th>
+        <td>{{info.lisenceTime}}</td>
+        <th>高新证书</th>
+        <td>{{info.listingCode}}</td>
+      </tr>
+    </table>
+  </div>
+</template>
+
 <script>
-import { editProjectApi,getProjectInfoApi } from "@/api/enterprise/project/project"
-import { techScopeOptions,yesOrNoOptions } from "@/utils/dataFormat"
-import FileUpload from '@/components/FileUpload'
-
-export default {
-  name: "First",
-  components: {
-    FileUpload
-  },
-  props: {
-    projectOwner: {
-      type: String
-    },
-    entOwnVisible: {
-      type: Boolean
-    },
-    entTechVisible: {
-      type: Boolean
-    },
-    entFinVisible: {
-      type: Boolean
-    }
-  },
-  data() {
-    const equalToPassword = (rule, value, callback) => {
-      if (this.form.password !== value) {
-        callback(new Error("两次输入的密码不一致"));
-      } else {
-        callback();
-      }
-    };
-    return {
-      activeName: '3',
-      serviceDate: [],
-      provinceName: '',
-      cityName: '',
-      districtName: '',
-      codeUrl: "",
-      techScopeOptions: techScopeOptions,
-      yesOrNoOptions: yesOrNoOptions,
-      provinceDataList: [],
-      cityDataList: [],
-      districtDataList: [],
-      form: {
-        projectOwner: this.projectOwner,
-        lisenceTime: [],
-        techStartDate: '',
-        techEndDate: '',
-        projectTime: [],
-        projectStartDate: '',
-        projectEndDate: '',
-        techScopeArray: [],
-      },
-      rules: {
-        userName: [
-          { required: true, trigger: "blur", message: "请输入您的账号" },
-          { min: 2, max: 20, message: '用户账号长度必须介于 2 和 20 之间', trigger: 'blur' }
-        ],
-        password: [
-          { required: true, trigger: "blur", message: "请输入您的密码" },
-          { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
-        ],
-        confirmPassword: [
-          { required: true, trigger: "blur", message: "请再次输入您的密码" },
-          { required: true, validator: equalToPassword, trigger: "blur" }
-        ],
-        code: [{ required: true, trigger: "change", message: "请输入验证码" }]
-      },
-      loading: false,
-      captchaOnOff: true
-    };
-  },
-  created() {
-    this.form.id = this.$route.query.id || undefined;
-    this.form.entId = this.$route.query.entId || undefined;
-    if(this.form.id) {
-      this.getData()
-    }
-  },
-  methods: {
-    getData() {
-      getProjectInfoApi(this.form.id).then(res => {
-        if(this.projectOwner == '1') {
-          let obj = res.data.entProject || {}
-          if(obj.projectStartDate) {
-            this.form.projectTime[0] = obj.projectStartDate
-            this.form.projectTime[1] = obj.projectEndDate
-          }
-          this.form = obj || {}
-        }else if(this.projectOwner == '2') {
-          let obj = res.data.entProject || {}
-          if(obj.projectStartDate) {
-            this.form.projectTime[0] = obj.projectStartDate
-            this.form.projectTime[1] = obj.projectEndDate
-          }
-          this.form = obj || {}
-        }else if(this.projectOwner == '3') {
-          let obj = res.data.entProject || {}
-          if(obj.projectStartDate) {
-            this.form.projectTime[0] = obj.projectStartDate
-            this.form.projectTime[1] = obj.projectEndDate
-          }
-          this.form = obj || {}
-        }
-      })
-    },
-    handleSuccess(file) {
-      this.form.licensePath = file.url;
-      this.form.fileName = file.name;
+  import { getProjectInfoApi,getProjectInfoAdminApi,getProjectInfoCommonApi } from "@/api/enterprise/project/project"
+  export default {
+    name: 'projectInfo',
+    data () {
+      return {
+        loading: false,
+        id: undefined,
+        roleType: '',
+        info: {
+        },
+      }
     },
-    handleSaleSuccess(files) {
-      files.forEach(item => {
-        this.form.attachIds.push(item.response.data.id)
-      });
+    props: {
+      projectOwner: {
+        type: String
+      },
     },
-    submitForm() {
-      this.$refs.form.validate(valid => {
-        if(valid) {
-          this.loading = true
-          editProjectApi(this.form).then(res => {
-            this.loading = false
-            this.$store.dispatch("tagsView/delView", this.$route);
-            this.$router.go(-1);
-          })
-        }
-      })
-    }
-  },
-  watch: {
-    'entProjectList': {
-      immediate: true,
-      handler (val) {
-        this.form.entProjectList = this.entProjectList || {}
+    computed: {
+      scopeId() {
+        return this.$store.state.user.scopeId
+      },
+      roles() {
+        return this.$store.state.user.roles
       }
     },
-    'form.projectTime'(val) {
-      if(this.form.projectTime) {
-        this.form.projectStartDate = this.form.projectTime[0]
-        this.form.projectEndDate = this.form.projectTime[1]
-      }else {
-        this.form.projectStartDate = ''
-        this.form.projectEndDate = ''
+    created () {
+      this.id = this.$route.params.id || undefined;
+      this.roleType = this.roles.join(',')
+      if(this.id) {
+        this.getData()
       }
     },
-    'form.lisenceTime'(val) {
-      if(this.form.lisenceTime) {
-        this.form.techEndDate = this.form.lisenceTime[1]
-        this.form.techStartDate = this.form.lisenceTime[0]
-      }else {
-        this.form.techStartDate = ''
-        this.form.techEndDate = ''
+    methods: {
+      //判断是科德管理员 还是企业角色
+      getData() {
+        getProjectInfoCommonApi(this.id).then(res => {
+          if(this.projectOwner == '1') {
+            this.info = res.data.entProject || {}
+          }else if(this.projectOwner == '2') {
+            this.info = res.data.techProject || {}
+          }else if(this.projectOwner == '3') {
+            this.info = res.data.finProject || {}
+          }
+        })
+      },
+      cancel() {
+        this.$store.dispatch("tagsView/delView", this.$route); // 关闭当前tab
+        this.$router.go(-1);
       }
     }
-  }
-};
-</script>
-
-<style rel="stylesheet/scss" lang="scss">
-
-</style>
+  }
+</script>
+
+<style>
+</style>

+ 153 - 0
src/views/enterprise/project/components/EnclosureInfo.vue

@@ -0,0 +1,153 @@
+<template>
+  <div class="app-container">
+    <h3 class="toolbar">
+      <div class="tool">
+        <!-- <el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleDownload">批量下载</el-button> -->
+      </div>
+    </h3>
+    <el-table v-loading="loading" :data="list" border @selection-change="handleSelectionChange" style="width: 100%" @select-all="selectAll">
+      <el-table-column type="selection" width="55"></el-table-column>
+      <el-table-column label="序号" type="index" width="50" align="center"></el-table-column>
+      <el-table-column label="文件名称" prop="fileName" align="center"></el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleView(scope.row)">查看</el-button>
+          <!-- <el-button type="text" @click="handleDownload(scope.row)">下载</el-button> -->
+          <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"/>
+    <upload-enclosure ref="uploadEnclosure" v-if="enclosureVisible" @refreshData="getList()" :dataId="dataId" :attachType="'PROJECT'"></upload-enclosure>
+  </div>
+</template>
+
+<script>
+  import {getEnclosureApi,deleteEnclosureApi,getProjectInfoApi,getProjectInfoCommonApi} from '@/api/enterprise/project/project'
+  import UploadEnclosure from './UploadEnclosure'
+  export default {
+    components: {
+      UploadEnclosure
+    },
+    props: {
+      projectOwner: {
+        type: String
+      },
+      finOwner:{
+        type: String
+      }
+    },
+    data() {
+      return {
+        total: 0,
+        enclosureVisible: false,
+        list: [],
+        id: this.$route.query.id,
+        dataId: undefined,
+        attachType: 'PROJECT',
+        loading: false,
+        selectionList: [],
+        ids: '',
+        info: {},
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10
+        }
+      };
+    },
+    created() {
+      this.id = this.$route.params.id || undefined;
+      console.log(this.id)
+      this.getData()
+    },
+    methods: {
+      getData() {
+        getProjectInfoCommonApi(this.id).then(res => {
+          if(this.projectOwner == '1') {
+            this.info = res.data.entProject || {}
+            this.dataId = this.info.id
+          }else if(this.projectOwner == '2') {
+            this.info = res.data.techProject || {}
+            this.dataId = this.info.id
+          }else if(this.projectOwner == '3') {
+            this.info = res.data.finProject || {}
+            this.dataId = this.info.id
+          }
+          this.getList()
+        })
+      },
+      getList() {
+        if(this.finOwner == 'fin') {
+          this.attachType = 'FINACIAL'
+        }
+        getEnclosureApi(this.attachType,this.dataId).then(res => {
+          if(res.code == 200) {
+            this.list = res.data.records
+            this.total = res.data.total
+          }
+        })
+      },
+      handleBatchDelte() {
+        if(this.selectionList.length <=0) {
+          this.$message.error('请选择要删除的数据');
+          return
+        }
+        this.$confirm('请确认是否删除所选择的数据!', '提示').then(() => {
+        	deleteEnclosureApi(this.ids).then(res => {
+            if(res.code == 200) {
+              this.queryParams.pageNum = 1;
+              this.getList();
+              this.$modal.msgSuccess("删除成功");
+            }
+        	})
+        })
+      },
+      handleView() {
+
+      },
+      handleDelete(row) {
+        const id = row.id;
+        this.$confirm('是否确认删除该数据?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            return deleteEnclosureApi(id);
+          }).then(() => {
+            this.queryParams.pageNum = 1;
+            this.getList();
+            this.$modal.msgSuccess("删除成功");
+          })
+      },
+      // 取消全选
+      selectAll(selection) {
+        if (selection.length == 0) {
+          let list = this.selectedList.filter(item => !this.list.some(ele => ele.id === item.id));
+          this.selectionList = list;
+        }
+      },
+      handleSelectionChange(val) {
+        this.selectionList = val;
+        if(this.selectionList.length > 0) {
+          let selectionIds = []
+          for (let i = 0, len = this.selectionList.length; i < len; i++) {
+          	selectionIds.push(this.selectionList[i].id)
+          }
+          this.ids = selectionIds.join(',')
+        }else {
+          this.ids = ''
+        }
+      }
+    }
+  };
+  </script>
+
+</script>
+
+<style>
+</style>

+ 7 - 7
src/views/enterprise/project/components/EntBasic.vue

@@ -21,8 +21,8 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="联系电话(座机)" prop="mobile">
-            <el-input v-model="form.mobile" type="text" auto-complete="off" placeholder="请输入联系电话(座机)">
+          <el-form-item label="联系电话(座机)" prop="linkPhone">
+            <el-input v-model="form.linkPhone" type="text" auto-complete="off" placeholder="请输入联系电话(座机)">
             </el-input>
           </el-form-item>
         </el-col>
@@ -98,8 +98,8 @@
       </h3>
       <el-row :gutter="40">
         <el-col :span="12">
-          <el-form-item label="是否科技型中小企业" prop="investFlag">
-            <el-radio-group v-model="form.investFlag">
+          <el-form-item label="是否科技型中小企业" prop="smallFlag">
+            <el-radio-group v-model="form.smallFlag">
               <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
             </el-radio-group>
           </el-form-item>
@@ -144,8 +144,8 @@
               <el-button size="medium" type="primary" style="width: 100px;">取消</el-button>
             </el-form-item>
           </el-col>
-        </el-row>  
-      </template>   
+        </el-row>
+      </template>
     </el-form>
   </div>
 </template>
@@ -188,7 +188,7 @@ export default {
         projectTime: [],
         projectStartDate: '',
         projectEndDate: '',
-        techScopeArray: [],
+        techScopeArray: ['电子信息'],
       },
       rules: {
         userName: [

+ 145 - 0
src/views/enterprise/project/components/EntEnclosure.vue

@@ -0,0 +1,145 @@
+<template>
+  <div class="app-container">
+    <h3 class="toolbar">
+      <div class="tool">
+        <el-button type="primary" plain icon="el-icon-upload2" size="mini" @click="handleUpload">一键上传</el-button>
+        <el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleDownload">批量下载</el-button>
+        <el-button type="primary" plain icon="el-icon-delete" size="mini" @click="handleBatchDelte">批量删除</el-button>
+      </div>
+    </h3>
+    <el-table v-loading="loading" :data="list" border @selection-change="handleSelectionChange" style="width: 100%" @select-all="selectAll">
+      <el-table-column type="selection" width="55"></el-table-column>
+      <el-table-column label="序号" type="index" width="50" align="center"></el-table-column>
+      <el-table-column label="文件名称" prop="fileName" align="center"></el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleView(scope.row)">查看</el-button>
+          <el-button type="text" @click="handleDownload(scope.row)">下载</el-button>
+          <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"/>
+    <upload-enclosure ref="uploadEnclosure" v-if="enclosureVisible" @refreshData="getList()" :dataId="dataId" :attachType="'PROJECT'"></upload-enclosure>
+  </div>
+</template>
+
+<script>
+  import {getEnclosureApi,deleteEnclosureApi,getProjectInfoApi} from '@/api/enterprise/project/project'
+  import UploadEnclosure from './UploadEnclosure'
+  export default {
+    components: {
+      UploadEnclosure
+    },
+    data() {
+      return {
+        total: 0,
+        enclosureVisible: false,
+        list: [],
+        id: this.$route.query.id,
+        dataId: undefined,
+        attachType: 'PROJECT',
+        loading: false,
+        selectionList: [],
+        ids: '',
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10
+        }
+      };
+    },
+    created() {
+      this.id = this.$route.query.id || undefined;
+      this.getData()
+    },
+    methods: {
+      getData() {
+        getProjectInfoApi(this.id).then(res => {
+          let obj = res.data.entProject || {}
+          console.log("%%%%%%%%%%%%%")
+          console.log(obj.id)
+          this.dataId = obj.id //企业资料id
+          this.getList()
+        })
+      },
+      getList() {
+        getEnclosureApi(this.attachType,this.dataId).then(res => {
+          if(res.code == 200) {
+            this.list = res.data.records
+            this.total = res.data.total
+          }
+        })
+      },
+      handleUpload() {
+        this.enclosureVisible = true
+        this.$nextTick(() => {
+          this.$refs.uploadEnclosure.init()
+        })
+      },
+      handleDownload() {
+
+      },
+      handleBatchDelte() {
+        if(this.selectionList.length <=0) {
+          this.$message.error('请选择要删除的数据');
+          return
+        }
+        this.$confirm('请确认是否删除所选择的数据!', '提示').then(() => {
+        	deleteEnclosureApi(this.ids).then(res => {
+            if(res.code == 200) {
+              this.queryParams.pageNum = 1;
+              this.getList();
+              this.$modal.msgSuccess("删除成功");
+            }
+        	})
+        })
+      },
+      handleView() {
+
+      },
+      handleDelete(row) {
+        const id = row.id;
+        this.$confirm('是否确认删除该数据?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            return deleteEnclosureApi(id);
+          }).then(() => {
+            this.queryParams.pageNum = 1;
+            this.getList();
+            this.$modal.msgSuccess("删除成功");
+          })
+      },
+      // 取消全选
+      selectAll(selection) {
+        if (selection.length == 0) {
+          let list = this.selectedList.filter(item => !this.list.some(ele => ele.id === item.id));
+          this.selectionList = list;
+        }
+      },
+      handleSelectionChange(val) {
+        this.selectionList = val;
+        if(this.selectionList.length > 0) {
+          let selectionIds = []
+          for (let i = 0, len = this.selectionList.length; i < len; i++) {
+          	selectionIds.push(this.selectionList[i].id)
+          }
+          this.ids = selectionIds.join(',')
+        }else {
+          this.ids = ''
+        }
+      }
+    }
+  };
+  </script>
+
+</script>
+
+<style>
+</style>

+ 39 - 24
src/views/enterprise/project/components/FinBasic.vue

@@ -21,8 +21,8 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="联系电话(座机)" prop="mobile">
-            <el-input v-model="form.mobile" type="text" auto-complete="off" placeholder="请输入联系电话(座机)">
+          <el-form-item label="联系电话(座机)" prop="linkPhone">
+            <el-input v-model="form.linkPhone" type="text" auto-complete="off" placeholder="请输入联系电话(座机)">
             </el-input>
           </el-form-item>
         </el-col>
@@ -98,8 +98,8 @@
       </h3>
       <el-row :gutter="40">
         <el-col :span="12">
-          <el-form-item label="是否科技型中小企业" prop="investFlag">
-            <el-radio-group v-model="form.investFlag">
+          <el-form-item label="是否科技型中小企业" prop="smallFlag">
+            <el-radio-group v-model="form.smallFlag">
               <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
             </el-radio-group>
           </el-form-item>
@@ -140,6 +140,8 @@
         <el-row :gutter="40">
           <el-col :span="24">
             <el-form-item style="width:100%;text-align: center;" label-width="0px">
+              <el-button @click="synTechSubmit" size="medium" type="primary">同步技术填报</el-button>
+              <el-button @click="synEntSubmit" size="medium" type="primary">同步企业填报</el-button>
               <el-button :loading="loading" size="medium" type="primary" @click.native.prevent="submitForm" style="width: 100px;">财务保存</el-button>
               <el-button size="medium" type="primary" style="width: 100px;">取消</el-button>
             </el-form-item>
@@ -151,7 +153,7 @@
 </template>
 
 <script>
-import { editProjectApi,getProjectInfoApi } from "@/api/enterprise/project/project"
+import { editProjectApi,getProjectInfoApi,synFinApi } from "@/api/enterprise/project/project"
 import { techScopeOptions,yesOrNoOptions } from "@/utils/dataFormat"
 import FileUpload from '@/components/FileUpload'
 
@@ -166,22 +168,11 @@ export default {
     },
   },
   props: {
-    projectOwner: {
-      type: String
-    },
-    entOwnVisible: {
-      type: Boolean
-    },
-    entTechVisible: {
-      type: Boolean
-    },
-    entFinVisible: {
-      type: Boolean
-    }
   },
   data() {
     return {
-      activeName: '3',
+      techId: undefined,
+      adminId: undefined,
       serviceDate: [],
       provinceName: '',
       cityName: '',
@@ -193,14 +184,16 @@ export default {
       cityDataList: [],
       districtDataList: [],
       form: {
-        projectOwner: this.projectOwner,
+        id: undefined,
+        entId: undefined,
+        projectOwner: 3,
         lisenceTime: [],
         techStartDate: '',
         techEndDate: '',
         projectTime: [],
         projectStartDate: '',
         projectEndDate: '',
-        techScopeArray: [],
+        techScopeArray: ['电子信息'],
       },
       rules: {
         userName: [
@@ -225,13 +218,35 @@ export default {
     }
   },
   methods: {
+    //同步技术资料
+    synTechSubmit() {
+      this.loading = true
+      synFinApi(this.techId).then(res => {
+        this.loading = false
+        if(res.data) {
+          this.getData()
+        }
+      })
+    },
+    //同步企业自填资料
+    synEntSubmit() {
+      this.loading = true
+      synFinApi(this.adminId).then(res => {
+        this.loading = false
+        if(res.data) {
+          this.getData()
+        }
+      })
+    },
     getData() {
       getProjectInfoApi(this.form.id).then(res => {
         let obj = res.data.finProject || {}
-        if(obj.projectStartDate) {
-          this.form.projectTime[0] = obj.projectStartDate
-          this.form.projectTime[1] = obj.projectEndDate
-        }
+        this.techId = res.data.techProject.id || undefined
+        this.adminId = res.data.entProject.id
+        // if(obj.projectStartDate) {
+        //   this.form.projectTime[0] = obj.projectStartDate
+        //   this.form.projectTime[1] = obj.projectEndDate
+        // }
         this.form = obj || {}
       })
     },

+ 143 - 0
src/views/enterprise/project/components/FinDataEnclosure.vue

@@ -0,0 +1,143 @@
+<template>
+  <div class="app-container">
+    <h3 class="toolbar">
+      <div class="tool">
+        <el-button type="primary" plain icon="el-icon-upload2" size="mini" @click="handleUpload">一键上传</el-button>
+        <el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleDownload">批量下载</el-button>
+        <el-button type="primary" plain icon="el-icon-delete" size="mini" @click="handleBatchDelte">批量删除</el-button>
+      </div>
+    </h3>
+    <el-table v-loading="loading" :data="list" border @selection-change="handleSelectionChange" style="width: 100%" @select-all="selectAll">
+      <el-table-column type="selection" width="55"></el-table-column>
+      <el-table-column label="序号" type="index" width="50" align="center"></el-table-column>
+      <el-table-column label="文件名称" prop="fileName" align="center"></el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleView(scope.row)">查看</el-button>
+          <el-button type="text" @click="handleDownload(scope.row)">下载</el-button>
+          <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"/>
+    <upload-enclosure ref="uploadEnclosure" v-if="enclosureVisible" @refreshData="getList()" :dataId="dataId" :attachType="'FINACIAL'"></upload-enclosure>
+  </div>
+</template>
+
+<script>
+  import {getEnclosureApi,deleteEnclosureApi,getProjectInfoApi} from '@/api/enterprise/project/project'
+  import UploadEnclosure from './UploadEnclosure'
+  export default {
+    components: {
+      UploadEnclosure
+    },
+    data() {
+      return {
+        total: 0,
+        enclosureVisible: false,
+        list: [],
+        dataId: undefined,
+        id: this.$route.query.id,
+        attachType: 'FINACIAL',
+        loading: false,
+        selectionList: [],
+        ids: '',
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10
+        }
+      };
+    },
+    created() {
+      this.id = this.$route.query.id || undefined;
+      this.getData()
+    },
+    methods: {
+      getData() {
+        getProjectInfoApi(this.id).then(res => {
+          let obj = res.data.finProject || {}
+          this.dataId = obj.id //财务资料id
+          this.getList()
+        })
+      },
+      getList() {
+        getEnclosureApi(this.attachType,this.dataId).then(res => {
+          if(res.code == 200) {
+            this.list = res.data.records
+            this.total = res.data.total
+          }
+        })
+      },
+      handleUpload() {
+        this.enclosureVisible = true
+        this.$nextTick(() => {
+          this.$refs.uploadEnclosure.init()
+        })
+      },
+      handleDownload() {
+
+      },
+      handleBatchDelte() {
+        if(this.selectionList.length <=0) {
+          this.$message.error('请选择要删除的数据');
+          return
+        }
+        this.$confirm('请确认是否删除所选择的数据!', '提示').then(() => {
+        	deleteEnclosureApi(this.ids).then(res => {
+            if(res.code == 200) {
+              this.queryParams.pageNum = 1;
+              this.getList();
+              this.$modal.msgSuccess("删除成功");
+            }
+        	})
+        })
+      },
+      handleView() {
+
+      },
+      handleDelete(row) {
+        const id = row.id;
+        this.$confirm('是否确认删除该数据?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            return deleteEnclosureApi(id);
+          }).then(() => {
+            this.queryParams.pageNum = 1;
+            this.getList();
+            this.$modal.msgSuccess("删除成功");
+          })
+      },
+      // 取消全选
+      selectAll(selection) {
+        if (selection.length == 0) {
+          let list = this.selectedList.filter(item => !this.list.some(ele => ele.id === item.id));
+          this.selectionList = list;
+        }
+      },
+      handleSelectionChange(val) {
+        this.selectionList = val;
+        if(this.selectionList.length > 0) {
+          let selectionIds = []
+          for (let i = 0, len = this.selectionList.length; i < len; i++) {
+          	selectionIds.push(this.selectionList[i].id)
+          }
+          this.ids = selectionIds.join(',')
+        }else {
+          this.ids = ''
+        }
+      }
+    }
+  };
+  </script>
+
+</script>
+
+<style>
+</style>

+ 144 - 0
src/views/enterprise/project/components/FinEnclosure.vue

@@ -0,0 +1,144 @@
+<template>
+  <div class="app-container">
+    <h3 class="toolbar">
+      <div class="tool">
+        <el-button type="primary" plain icon="el-icon-upload2" size="mini" @click="handleUpload">一键上传</el-button>
+        <el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleDownload">批量下载</el-button>
+        <el-button type="primary" plain icon="el-icon-delete" size="mini" @click="handleBatchDelte">批量删除</el-button>
+      </div>
+    </h3>
+    <el-table v-loading="loading" :data="list" border @selection-change="handleSelectionChange" style="width: 100%" @select-all="selectAll">
+      <el-table-column type="selection" width="55"></el-table-column>
+      <el-table-column label="序号" type="index" width="50" align="center"></el-table-column>
+      <el-table-column label="文件名称" prop="fileName" align="center"></el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleView(scope.row)">查看</el-button>
+          <el-button type="text" @click="handleDownload(scope.row)">下载</el-button>
+          <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"/>
+    <upload-enclosure ref="uploadEnclosure" v-if="enclosureVisible" @refreshData="getList()" :dataId="dataId" :attachType="'PROJECT'"></upload-enclosure>
+  </div>
+</template>
+
+<script>
+  import {getEnclosureApi,deleteEnclosureApi,getProjectInfoApi} from '@/api/enterprise/project/project'
+  import UploadEnclosure from './UploadEnclosure'
+  export default {
+    components: {
+      UploadEnclosure
+    },
+    data() {
+      return {
+        total: 0,
+        enclosureVisible: false,
+        list: [],
+        dataId: undefined,
+        id: '',
+        attachType: 'PROJECT',
+        loading: false,
+        selectionList: [],
+        ids: '',
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10
+        }
+      };
+    },
+    created() {
+      this.id = this.$route.query.id || undefined;
+      this.getData()
+    },
+    methods: {
+      getData() {
+        getProjectInfoApi(this.id).then(res => {
+          let obj = res.data.finProject || {}
+          this.dataId = obj.id //财务资料id
+          this.getList()
+        })
+      },
+      getList() {
+        getEnclosureApi(this.attachType,this.dataId).then(res => {
+          if(res.code == 200) {
+            this.list = res.data.records
+            this.total = res.data.total
+          }
+        })
+      },
+      handleUpload() {
+        this.enclosureVisible = true
+        this.$nextTick(() => {
+          this.$refs.uploadEnclosure.init()
+        })
+      },
+      handleDownload() {
+
+      },
+      handleBatchDelte() {
+        if(this.selectionList.length <=0) {
+          this.$message.error('请选择要删除的数据');
+          return
+        }
+        this.$confirm('请确认是否删除所选择的数据!', '提示').then(() => {
+        	deleteEnclosureApi(this.ids).then(res => {
+            if(res.code == 200) {
+              this.queryParams.pageNum = 1;
+              this.getList();
+              this.$modal.msgSuccess("删除成功");
+            }
+        	})
+        })
+      },
+      handleView() {
+
+      },
+      handleDelete(row) {
+        const id = row.id;
+        this.$confirm('是否确认删除该数据?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            return deleteEnclosureApi(id);
+          }).then(() => {
+            this.queryParams.pageNum = 1;
+            this.getList();
+            this.$modal.msgSuccess("删除成功");
+          })
+      },
+
+      // 取消全选
+      selectAll(selection) {
+        if (selection.length == 0) {
+          let list = this.selectedList.filter(item => !this.list.some(ele => ele.id === item.id));
+          this.selectionList = list;
+        }
+      },
+      handleSelectionChange(val) {
+        this.selectionList = val;
+        if(this.selectionList.length > 0) {
+          let selectionIds = []
+          for (let i = 0, len = this.selectionList.length; i < len; i++) {
+          	selectionIds.push(this.selectionList[i].id)
+          }
+          this.ids = selectionIds.join(',')
+        }else {
+          this.ids = ''
+        }
+      }
+    }
+  };
+  </script>
+
+</script>
+
+<style>
+</style>

+ 21 - 19
src/views/enterprise/project/components/TechBasic.vue

@@ -21,8 +21,8 @@
           </el-form-item>
         </el-col>
         <el-col :span="12">
-          <el-form-item label="联系电话(座机)" prop="mobile">
-            <el-input v-model="form.mobile" type="text" auto-complete="off" placeholder="请输入联系电话(座机)">
+          <el-form-item label="联系电话(座机)" prop="linkPhone">
+            <el-input v-model="form.linkPhone" type="text" auto-complete="off" placeholder="请输入联系电话(座机)">
             </el-input>
           </el-form-item>
         </el-col>
@@ -98,8 +98,8 @@
       </h3>
       <el-row :gutter="40">
         <el-col :span="12">
-          <el-form-item label="是否科技型中小企业" prop="investFlag">
-            <el-radio-group v-model="form.investFlag">
+          <el-form-item label="是否科技型中小企业" prop="smallFlag">
+            <el-radio-group v-model="form.smallFlag">
               <el-radio v-for="(item, index) in yesOrNoOptions" :key="index" :label="item.dictValue">{{item.dictLabel}}</el-radio>
             </el-radio-group>
           </el-form-item>
@@ -140,6 +140,7 @@
         <el-row :gutter="40">
           <el-col :span="24">
             <el-form-item style="width:100%;text-align: center;" label-width="0px">
+              <el-button @click="synSubmit" size="medium" type="primary">同步企业填报</el-button>
               <el-button :loading="loading" size="medium" type="primary" @click.native.prevent="submitForm" style="width: 100px;">技术保存</el-button>
               <el-button size="medium" type="primary" style="width: 100px;">取消</el-button>
             </el-form-item>
@@ -151,7 +152,7 @@
 </template>
 
 <script>
-import { editProjectApi,getProjectInfoApi } from "@/api/enterprise/project/project"
+import { editProjectApi,getProjectInfoApi,synTechApi } from "@/api/enterprise/project/project"
 import { techScopeOptions,yesOrNoOptions } from "@/utils/dataFormat"
 import FileUpload from '@/components/FileUpload'
 
@@ -180,15 +181,10 @@ export default {
     }
   },
   data() {
-    const equalToPassword = (rule, value, callback) => {
-      if (this.form.password !== value) {
-        callback(new Error("两次输入的密码不一致"));
-      } else {
-        callback();
-      }
-    };
     return {
-      activeName: '3',
+      adminId: undefined,
+      techId: undefined,
+      finId: undefined,
       serviceDate: [],
       provinceName: '',
       cityName: '',
@@ -200,14 +196,16 @@ export default {
       cityDataList: [],
       districtDataList: [],
       form: {
-        projectOwner: this.projectOwner,
+        id: undefined,
+        entId: undefined,
+        projectOwner: 2,
         lisenceTime: [],
         techStartDate: '',
         techEndDate: '',
         projectTime: [],
         projectStartDate: '',
         projectEndDate: '',
-        techScopeArray: [],
+        techScopeArray: ['电子信息'],
       },
       rules: {
         userName: [
@@ -218,10 +216,6 @@ export default {
           { required: true, trigger: "blur", message: "请输入您的密码" },
           { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' }
         ],
-        confirmPassword: [
-          { required: true, trigger: "blur", message: "请再次输入您的密码" },
-          { required: true, validator: equalToPassword, trigger: "blur" }
-        ],
         code: [{ required: true, trigger: "change", message: "请输入验证码" }]
       },
       loading: false,
@@ -236,9 +230,17 @@ export default {
     }
   },
   methods: {
+    synSubmit() {
+      synTechApi(this.adminId).then(res => {
+        if(res.data) {
+          this.getData()
+        }
+      })
+    },
     getData() {
       getProjectInfoApi(this.form.id).then(res => {
         let obj = res.data.techProject || {}
+        this.adminId = res.data.entProject.id
         if(obj.projectStartDate) {
           this.form.projectTime[0] = obj.projectStartDate
           this.form.projectTime[1] = obj.projectEndDate

+ 143 - 0
src/views/enterprise/project/components/TechEnclosure.vue

@@ -0,0 +1,143 @@
+<template>
+  <div class="app-container">
+    <h3 class="toolbar">
+      <div class="tool">
+        <el-button type="primary" plain icon="el-icon-upload2" size="mini" @click="handleUpload">一键上传</el-button>
+        <el-button type="primary" plain icon="el-icon-download" size="mini" @click="handleDownload">批量下载</el-button>
+        <el-button type="primary" plain icon="el-icon-delete" size="mini" @click="handleBatchDelte">批量删除</el-button>
+      </div>
+    </h3>
+    <el-table v-loading="loading" :data="list" border @selection-change="handleSelectionChange" style="width: 100%" @select-all="selectAll">
+      <el-table-column type="selection" width="55"></el-table-column>
+      <el-table-column label="序号" type="index" width="50" align="center"></el-table-column>
+      <el-table-column label="文件名称" prop="fileName" align="center"></el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleView(scope.row)">查看</el-button>
+          <el-button type="text" @click="handleDownload(scope.row)">下载</el-button>
+          <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"/>
+    <upload-enclosure ref="uploadEnclosure" v-if="enclosureVisible" @refreshData="getList()" :dataId="dataId" :attachType="'PROJECT'"></upload-enclosure>
+  </div>
+</template>
+
+<script>
+  import {getEnclosureApi,deleteEnclosureApi,getProjectInfoApi} from '@/api/enterprise/project/project'
+  import UploadEnclosure from './UploadEnclosure'
+  export default {
+    components: {
+      UploadEnclosure
+    },
+    data() {
+      return {
+        total: 0,
+        enclosureVisible: false,
+        list: [],
+        id: this.$route.query.id,
+        dataId: undefined,
+        attachType: 'PROJECT',
+        loading: false,
+        selectionList: [],
+        ids: '',
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10
+        }
+      };
+    },
+    created() {
+      this.id = this.$route.query.id || undefined;
+      this.getData()
+    },
+    methods: {
+      getData() {
+        getProjectInfoApi(this.id).then(res => {
+          let obj = res.data.techProject || {}
+          this.dataId = obj.id //技术资料id
+          this.getList()
+        })
+      },
+      getList() {
+        getEnclosureApi(this.attachType,this.dataId).then(res => {
+          if(res.code == 200) {
+            this.list = res.data.records
+            this.total = res.data.total
+          }
+        })
+      },
+      handleUpload() {
+        this.enclosureVisible = true
+        this.$nextTick(() => {
+          this.$refs.uploadEnclosure.init()
+        })
+      },
+      handleDownload() {
+
+      },
+      handleBatchDelte() {
+        if(this.selectionList.length <=0) {
+          this.$message.error('请选择要删除的数据');
+          return
+        }
+        this.$confirm('请确认是否删除所选择的数据!', '提示').then(() => {
+        	deleteEnclosureApi(this.ids).then(res => {
+            if(res.code == 200) {
+              this.queryParams.pageNum = 1;
+              this.getList();
+              this.$modal.msgSuccess("删除成功");
+            }
+        	})
+        })
+      },
+      handleView() {
+
+      },
+      handleDelete(row) {
+        const id = row.id;
+        this.$confirm('是否确认删除该数据?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            return deleteEnclosureApi(id);
+          }).then(() => {
+            this.queryParams.pageNum = 1;
+            this.getList();
+            this.$modal.msgSuccess("删除成功");
+          })
+      },
+      // 取消全选
+      selectAll(selection) {
+        if (selection.length == 0) {
+          let list = this.selectedList.filter(item => !this.list.some(ele => ele.id === item.id));
+          this.selectionList = list;
+        }
+      },
+      handleSelectionChange(val) {
+        this.selectionList = val;
+        if(this.selectionList.length > 0) {
+          let selectionIds = []
+          for (let i = 0, len = this.selectionList.length; i < len; i++) {
+          	selectionIds.push(this.selectionList[i].id)
+          }
+          this.ids = selectionIds.join(',')
+        }else {
+          this.ids = ''
+        }
+      }
+    }
+  };
+  </script>
+
+</script>
+
+<style>
+</style>

+ 103 - 0
src/views/enterprise/project/components/UploadEnclosure.vue

@@ -0,0 +1,103 @@
+<template>
+  <el-dialog title="上传附件" :visible.sync="open" width="500px" append-to-body>
+    <el-upload
+      ref="upload"
+      accept=".xlsx, .xls"
+      :headers="upload.headers"
+      :action="upload.url"
+      :disabled="upload.isUploading"
+      :on-progress="handleFileUploadProgress"
+      :on-success="handleFileSuccess"
+      :auto-upload="false"
+      :data="params"
+      drag
+    >
+      <i class="el-icon-upload"></i>
+      <div class="el-upload__text">
+        将文件拖到此处,或
+        <em>点击上传</em>
+      </div>
+      <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
+    </el-upload>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="submitFileForm">确 定</el-button>
+      <el-button @click="open = false">取 消</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import FileUpload from '@/components/FileUpload'
+  import { getToken } from "@/utils/auth";
+  export default {
+    components: {
+      FileUpload
+    },
+    props: {
+      dataId: {
+        type: Number
+      },
+      attachType: {
+        type: String
+      }
+    },
+    data() {
+      return {
+        // 项目导入参数
+        upload: {
+          title: "导入资料附件",
+          // 是否禁用上传
+          isUploading: false,
+          // 设置上传的请求头部
+          headers: { Authorization: "Bearer " + getToken() },
+          // 上传的地址
+          url: process.env.VUE_APP_BASE_API + "/common/attach/upload"
+        },
+        open: false,
+        disabled: false,
+        form: {
+          fileList: ''
+        },
+        rules: {
+        },
+        params: {
+          attachType: this.attachType,
+          dataId: this.dataId
+        }
+      }
+    },
+    methods: {
+      init() {
+        this.open = true;
+        this.form.fileList = '';
+        this.resetForm("form");
+      },
+      handleSuccess(files) {
+        this.form.fileList = files;
+        this.$refs.form.validateField('fileList');
+      },
+      // 文件上传中处理
+      handleFileUploadProgress(event, file, fileList) {
+        this.upload.isUploading = true;
+      },
+      // 文件上传成功处理
+      handleFileSuccess(response, file, fileList) {
+        this.open = false;
+        this.upload.isUploading = false;
+        this.$refs.upload.clearFiles();
+        this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+        this.$emit('refreshData')
+      },
+      // 提交上传文件
+      submitFileForm() {
+        this.$refs.upload.submit();
+      },
+      cancel() {
+        this.open = false;
+      }
+    }
+  }
+</script>
+
+<style>
+</style>

+ 66 - 0
src/views/enterprise/project/components/declare.vue

@@ -0,0 +1,66 @@
+<template>
+  <el-dialog title="项目申报提交" :visible.sync="open" width="500px" append-to-body>
+    <el-form ref="form" :model="form" :rules="rules" label-width="140px">
+        <el-form-item label="项目资料选择" prop="projectData">
+          <el-select v-model="form.projectData">
+            <el-option value="1">财务数据</el-option>
+          </el-select>
+        </el-form-item>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" :disabled="disabled" @click="submitForm">确 定</el-button>
+      <el-button @click="cancel">取 消</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import {submitDeclareApi} from "@/api/enterprise/declare/declare"
+  export default {
+    data () {
+      return {
+        open: false,
+        disabled: false,
+        form: {
+          projectData: ''
+        },
+        rules: {
+          projectData: [
+            {required: true, message: '请选择项目资料', trigger: 'change'}
+          ]
+        }
+      }
+    },
+    methods: {
+      init(id) {
+        this.open = true;
+        this.form.id = id;
+        this.resetForm("form");
+      },
+      submitForm() {
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            this.disabled = true
+            submitDeclareApi(this.form.id).then(res => {
+              this.disabled = false;
+              if(res.code == 200) {
+                this.$message({
+                  message: '项目申报成功',
+                  type: 'success'
+                });
+              }
+              this.open = false;
+              this.$emit('refreshData');
+            })
+          }
+        })
+      },
+      cancel() {
+        this.open = false
+      },
+    },
+  }
+</script>
+
+<style>
+</style>

+ 0 - 87
src/views/enterprise/project/components/enclosure.vue

@@ -1,87 +0,0 @@
-<template>
-  <div class="app-container">
-    <h3 class="toolbar">
-      <span class="title">列表</span>
-      <div class="tool">
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleUpload">一键上传</el-button>
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleDownload">批量下载</el-button>
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleBatchDelte">批量删除</el-button>
-      </div>
-    </h3>
-    <el-table v-loading="loading" :data="list" border>
-      <el-table-column label="项目编号" prop="projectNo" width="120" align="center" />
-      <el-table-column label="项目名称" prop="projectName" align="center" width="120"></el-table-column>
-      <el-table-column label="企业名称" prop="entName" align="center" width="120"/>
-      <el-table-column label="社会信用代码" prop="license" align="center" width="120" />
-      <el-table-column label="项目年份" prop="projectYear" align="center" width="120" />
-      <el-table-column label="项目跨年" prop="overYearFlag" align="center" width="120"></el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime" width="160"></el-table-column>
-      <el-table-column label="留存备查时间" prop="linkMobile" align="center" width="120"></el-table-column>
-      <el-table-column label="资料完善度" prop="linkEmail" align="center" width="120"></el-table-column>
-      <el-table-column label="负责状态" prop="createTime" align="center" width="160"></el-table-column>
-      <el-table-column label="项目状态" align="center" width="120">
-      </el-table-column>
-      <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
-        <template slot-scope="scope">
-          <el-button type="text" @click="handleView(scope.row)">查看</el-button>
-          <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
-          <el-button type="text" @click="handleDownload(scope.row)">下载</el-button>
-          <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination
-      v-show="total>0"
-      :total="total"
-      :page.sync="queryParams.pageNum"
-      :limit.sync="queryParams.pageSize"
-      @pagination="getList"/>
-  </div>
-</template>
-
-<script>
-  export default {
-    data() {
-      return {
-        total: 0,
-        list: [],
-        loading: false,
-        queryParams: {
-          pageNum: 1,
-          pageSize: 10
-        }
-      };
-    },
-    created() {
-
-    },
-    methods: {
-      handleUpload() {
-
-      },
-      handleDownload() {
-
-      },
-      handleBatchDelte() {
-
-      },
-      handleView() {
-
-      },
-      handleEdit() {
-
-      },
-      handleDelete() {
-
-      },
-      getList() {
-        
-      }
-    }
-  };
-  </script>
-
-</script>
-
-<style>
-</style>

+ 20 - 14
src/views/enterprise/project/edit.vue

@@ -1,14 +1,13 @@
 <template>
   <div class="app-container" v-loading="loading">
-    <el-tabs :tab-position="tabPosition">
+    <el-tabs :tab-position="tabPosition" stretch>
       <el-tab-pane label="企业自填">
         <el-tabs type="border-card">
           <el-tab-pane label="项目基本信息">
-            <!-- <basic-info ref="basicInfo" :projectOwner="'1'" :entOwnVisible="entOwnVisible"></basic-info> -->
             <ent-basic></ent-basic>
           </el-tab-pane>
           <el-tab-pane label="资料附件">
-            <enclosure :projectOwner="'1'"></enclosure>
+            <ent-enclosure></ent-enclosure>
           </el-tab-pane>
         </el-tabs>
       </el-tab-pane>
@@ -16,10 +15,9 @@
         <el-tabs type="border-card">
           <el-tab-pane label="项目基本信息">
             <tech-basic></tech-basic>
-            <!-- <basic-info ref="basicInfo" :projectOwner="'2'" :entTechVisible="entTechVisible"></basic-info> -->
           </el-tab-pane>
           <el-tab-pane label="资料附件">
-            <enclosure :projectOwner="'1'"></enclosure>
+            <tech-enclosure></tech-enclosure>
           </el-tab-pane>
         </el-tabs>
       </el-tab-pane>
@@ -27,10 +25,12 @@
         <el-tabs type="border-card">
           <el-tab-pane label="项目基本信息">
             <fin-basic></fin-basic>
-            <!-- <basic-info ref="basicInfo" :projectOwner="'3'" :entFinVisible="entFinVisible"></basic-info> -->
           </el-tab-pane>
           <el-tab-pane label="资料附件">
-            <enclosure :projectOwner="'3'"></enclosure>
+            <fin-enclosure></fin-enclosure>
+          </el-tab-pane>
+          <el-tab-pane label="财务资料附件">
+            <fin-data-enclosure></fin-data-enclosure>
           </el-tab-pane>
         </el-tabs>
       </el-tab-pane>
@@ -40,12 +40,14 @@
 
 <script>
 
-import BasicInfo from './components/BasicInfo'
-import Enclosure from './components/enclosure'
 import EntBasic from './components/EntBasic'
 import TechBasic from './components/TechBasic'
 import FinBasic from './components/FinBasic'
-import {getProjectInfoApi} from '@/api/enterprise/project/project'
+import {getProjectInfoApi} from '@/api/enterprise/project/project'
+import EntEnclosure from './components/EntEnclosure'
+import FinEnclosure from './components/FinEnclosure'
+import TechEnclosure from './components/TechEnclosure'
+import FinDataEnclosure from './components/FinDataEnclosure'
 export default {
   name: "First",
   computed: {
@@ -54,11 +56,13 @@ export default {
     },
   },
   components: {
-    BasicInfo,
-    Enclosure,
     EntBasic,
     TechBasic,
-    FinBasic
+    FinBasic,
+    EntEnclosure,
+    FinEnclosure,
+    TechEnclosure,
+    FinDataEnclosure
   },
   data() {
     return {
@@ -91,5 +95,7 @@ export default {
 </script>
 
 <style rel="stylesheet/scss" lang="scss">
-
+  .el-tabs__nav {
+    width: 96px
+  }
 </style>

+ 75 - 31
src/views/enterprise/project/index.vue

@@ -20,16 +20,16 @@
         <el-date-picker v-model="queryParams.year" type="year" placeholder="选择年" style="width: 200px;"></el-date-picker>
       </el-form-item>
       <el-form-item label="企业名称">
-        <el-input v-model="queryParams.entName" clearable style="width: 200px;"></el-input>
+        <el-input v-model="queryParams.entName" clearable style="width: 200px;" placeholder="请填入企业名称"></el-input>
       </el-form-item>
       <el-form-item label="社会信用代码">
-        <el-input v-model="queryParams.license" style="width: 200px;"></el-input>
+        <el-input v-model="queryParams.license" style="width: 200px;" placeholder="请输入社会信用代码"></el-input>
       </el-form-item>
       <el-form-item label="项目编号">
-        <el-input v-model="queryParams.projectNo" style="width: 200px;"></el-input>
+        <el-input v-model="queryParams.projectNo" style="width: 200px;" placeholder="请输入项目编号"></el-input>
       </el-form-item>
       <el-form-item label="项目名称">
-        <el-input v-model="queryParams.projectName" style="width: 200px;"></el-input>
+        <el-input v-model="queryParams.projectName" style="width: 200px;" placeholder="请输入项目名称"></el-input>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" @click="handleQuery">搜索</el-button>
@@ -40,11 +40,11 @@
       <span class="title">列表</span>
       <div class="tool">
         <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleBatchAdd">批量新增</el-button>
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleDownloadMode">模板下载</el-button>
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleUpload">一键上传</el-button>
+        <!-- <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleBatchAdd">批量新增</el-button> -->
+        <!-- <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleDownloadMode">模板下载</el-button> -->
+        <!-- <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleUpload">一键上传</el-button> -->
         <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleDownload">下载</el-button>
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleBatchDelte">批量删除</el-button>
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleBatchDel">批量删除</el-button>
       </div>
     </h3>
     <el-table v-loading="loading" :data="list" border>
@@ -56,16 +56,50 @@
       <el-table-column label="项目跨年" prop="overYearFlag" align="center" width="120"></el-table-column>
       <el-table-column label="创建时间" align="center" prop="createTime" width="160"></el-table-column>
       <el-table-column label="留存备查时间" prop="linkMobile" align="center" width="120"></el-table-column>
-      <el-table-column label="资料完善度" prop="linkEmail" align="center" width="120"></el-table-column>
-      <el-table-column label="负责状态" prop="createTime" align="center" width="160"></el-table-column>
-      <el-table-column label="项目状态" align="center" width="120">
+      <el-table-column label="资料完善度" prop="linkEmail" align="center" width="340">
+        <template slot-scope="scope">
+          <span>企业 {{scope.row.compRate}} 科德技术 {{scope.row.techCompRate}} 科德财务 {{scope.row.finCompRate}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="负责状态" align="center" width="160">
+        <template slot-scope="scope">
+          <template v-if="scope.row.finCompRate !='100.0%'">
+            <span>待完善</span>
+          </template>
+          <template v-if="scope.row.finCompRate =='100.0%' && scope.row.authState == '1'">
+            <span>已完善</span>
+          </template>
+          <template v-if="scope.row.authState == '2'">
+            <span>待审核</span>
+          </template>
+          <template v-if="scope.row.authState == '3'">
+            <span>审核通过</span>
+          </template>
+          <template v-if="scope.row.authState == '4'">
+            <span>审核通过</span>
+          </template>
+        </template>
+      </el-table-column>
+      </el-table-column>
+      <el-table-column label="项目状态" prop="reportState" align="center" width="160" :formatter="reportStateFormat"></el-table-column>
       </el-table-column>
       <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button type="text" @click="handleView(scope.row)">查看</el-button>
-          <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
           <el-button type="text" @click="handleDownload(scope.row)">下载</el-button>
           <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
+          <template v-if="roleType == 'entAdmin'">
+            <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
+            <template v-if="scope.row.finCompRate == '100.0%'">
+              <el-button type="text" @click="handleDeclare(scope.row)">提交申报</el-button>
+            </template>
+            <template v-if="scope.row.finCompRate == '100.0%' && (userType == 'ENT_TECH' || userType == 'ENT_FIN')">
+              <el-button type="text" @click="handleAudit(scope.row)">提交审核</el-button>
+            </template>
+            <template v-if="scope.row.authState == '2' && (userType == 'ENT_ADMIN_TECH' || userType == 'ENT_ADMIN_FIN')">
+              <el-button type="text" @click="handleAuditAdmin(scope.row)">审核</el-button>
+            </template>
+          </template>
         </template>
       </el-table-column>
     </el-table>
@@ -76,23 +110,28 @@
       :limit.sync="queryParams.pageSize"
       @pagination="getList"/>
       <add-project v-if="addProjectVisible" ref="addProject" @refreshData="getList()"></add-project>
+      <declare v-if="declareVisible" ref="declare" @refreshData="getList()"></declare>
   </div>
 </template>
 
 <script>
   import {getProvinceDataApi,getRegionChildrenApi} from "@/api/common/common"
-  import {listProjectApi, deleteEntApi} from '@/api/enterprise/project/project'
-  import {entStateOptions, getLabel, authStateOptions} from '@/utils/dataFormat'
+  import {listProjectApi, deleteEntApi, deleteProjectApi} from '@/api/enterprise/project/project'
+  import {listProjectAdminApi} from '@/api/admin/project/project'
+  import {entStateOptions, getLabel, authStateOptions, reportStateOptions} from '@/utils/dataFormat'
   import AddProject from './components/addProject'
+  import declare from './components/declare'
   export default {
     components: {
-      AddProject
+      AddProject,
+      declare
     },
     // ADMIN,GOV_PROV,GOV_CITY,GOV_DISTRI,ENT_ADMIN,ENT_TECH,ENT_ADMIN_TECH,ENT_FIN,ENT_ADMIN_FIN
     data () {
       return {
         loading: false,
         addProjectVisible: false,
+        declareVisible: false,
         provinceDataList: [],
         cityDataList: [],
         districtDataList: [],
@@ -112,6 +151,7 @@
         total: 0,
         open: false,
         openInfo: false,
+        roleType: '',
       }
     },
     computed: {
@@ -125,6 +165,7 @@
     created() {
       this.getList()
       this.getProvinceData()
+      this.roleType = this.roles.join(',')
     },
     methods: {
       //选择省份
@@ -161,6 +202,12 @@
             this.total = response.data.total;
             this.loading = false;
           });
+        }else if(this.userType == 'ADMIN') {
+          listProjectAdminApi(this.queryParams).then(response => {
+            this.list = response.data.records;
+            this.total = response.data.total;
+            this.loading = false;
+          });
         }
 
       },
@@ -176,28 +223,31 @@
       handleDownload() {
 
       },
-      handleBatchDelte() {
+      handleBatchDel() {
 
       },
       handleDownloadMode() {
 
       },
       handleUpload() {
-        
+
+      },
+      handleDeclare(row) {
+        this.declareVisible = true
+        this.$nextTick(() => {
+          this.$refs.declare.init(row.id)
+        })
       },
       handleEdit(row) {
         this.$router.push({name: 'editProject', query: {id: row.id, entId: row.entId}})
       },
-      handleUpdate(row) {
-        this.$router.push("/ent/edit/"+row.id)
-      },
       // 审核
       handleAudit(row) {
-        this.$router.push("/ent/info/"+row.id+'?type=audit')
+
       },
       // 查看
       handleView(row) {
-        this.$router.push("/ent/info/"+row.id+'?type=view')
+        this.$router.push("/project/info/"+row.id)
       },
       handleDelete(row) {
         const id = row.id;
@@ -206,7 +256,7 @@
             cancelButtonText: "取消",
             type: "warning"
           }).then(function() {
-            return deleteEntApi(id);
+            return deleteProjectApi(id);
           }).then(() => {
             this.queryParams.pageNum = 1;
             this.getList();
@@ -224,14 +274,8 @@
         this.queryParams.pageNum = 1;
         this.getList();
       },
-      statusFormat(row, col, val, index) {
-        return getLabel(accessStatus, val)
-      },
-      entSateFormat(row, col, val, index) {
-        return getLabel(entStateOptions, val)
-      },
-      authStateFormat(row, col, val, index) {
-        return getLabel(authStateOptions, val)
+      reportStateFormat(row, col, val, index) {
+        return getLabel(reportStateOptions, val)
       }
     }
   }

+ 92 - 0
src/views/enterprise/project/info.vue

@@ -0,0 +1,92 @@
+<template>
+  <div class="app-container" v-loading="loading">
+    <el-tabs :tab-position="tabPosition" stretch ref="tabsFirst" v-model="activeName">
+      <el-tab-pane label="企业自填" name="1">
+        <el-tabs type="border-card">
+          <el-tab-pane label="项目基本信息">
+            <basic-info :projectOwner="'1'"></basic-info>
+          </el-tab-pane>
+          <el-tab-pane label="资料附件">
+            <enclosure-info :projectOwner="'1'"></enclosure-info>
+          </el-tab-pane>
+        </el-tabs>
+      </el-tab-pane>
+      <!-- 用户不是企业管理员 -->
+      <!-- <template v-if="userType ! = 'ENT_ADMIN'"> -->
+        <el-tab-pane label="企业技术" name="2" v-if="tabVisible">
+          <el-tabs type="border-card">
+            <el-tab-pane label="项目基本信息">
+              <basic-info :projectOwner="'2'"></basic-info>
+            </el-tab-pane>
+            <el-tab-pane label="资料附件">
+              <enclosure-info :projectOwner="'2'"></enclosure-info>
+            </el-tab-pane>
+          </el-tabs>
+        </el-tab-pane>
+      <!-- </template> -->
+      <!-- <template v-if="userType != 'ENT_ADMIN' || userType != 'ENT_TECH' || userType != 'ENT_ADMIN_TECH'"> -->
+        <el-tab-pane label="企业财务" name="3" v-if="finVisible">
+          <el-tabs type="border-card">
+            <el-tab-pane label="项目基本信息">
+              <basic-info :projectOwner="'3'"></basic-info>
+            </el-tab-pane>
+            <el-tab-pane label="资料附件">
+              <enclosure-info :projectOwner="'3'"></enclosure-info>
+            </el-tab-pane>
+            <el-tab-pane label="财务资料附件">
+              <enclosure-info :projectOwner="'3'" :finOwner="'fin'"></enclosure-info>
+            </el-tab-pane>
+          </el-tabs>
+        </el-tab-pane>
+      <!-- </template> -->
+      <!-- 用户不是企业管理员 技术员 -->
+
+    </el-tabs>
+  </div>
+</template>
+
+<script>
+
+import BasicInfo from './components/BasicInfo'
+import EnclosureInfo from './components/EnclosureInfo'
+export default {
+  name: "First",
+  computed: {
+    userType() {
+      return this.$store.state.user.userType
+    },
+  },
+  components: {
+    BasicInfo,
+    EnclosureInfo
+  },
+  data() {
+    return {
+      activeName: '1',
+      tabPosition: 'left',
+      loading: false,
+      entOwnVisible: false,
+      entTechVisible: false,
+      entFinVisible: false,
+      id: undefined,
+      tabVisible: false,
+      finVisible: false
+    };
+  },
+  created() {
+    this.id = this.$route.query.id || undefined;
+    if(this.userType != 'ENT_ADMIN') {
+      this.tabVisible = true
+    }
+    if(this.userType != 'ENT_ADMIN' || this.userType != 'ENT_TECH' || this.userType != 'ENT_ADMIN_TECH') {
+      this.finVisible = true
+    }
+  }
+};
+</script>
+
+<style rel="stylesheet/scss" lang="scss">
+  .el-tabs__nav {
+    width: 96px
+  }
+</style>

+ 322 - 66
src/views/index.vue

@@ -3,77 +3,333 @@
     <h3 class="toolbar">
       <span class="title">数据累计</span>
     </h3>
-    <el-row :gutter="20">
-      <el-col :span="8">
-        <div class="stat_box">
-          <i class="icon icon_customer"></i>
-          <span class="num">10</span>
-          <span class="label">企业总数</span>
-        </div>
-      </el-col>
-      <el-col :span="8">
-        <div class="stat_box">
-          <i class="icon icon_employee"></i>
-          <span class="num"></span>
-          <span class="label">服务中企业</span>
-        </div>
-      </el-col>
-      <el-col :span="8">
-        <div class="stat_box">
-          <i class="icon icon_amount"></i>
-          <span class="num"></span>
-          <span class="label">服务已到期企业</span>
-        </div>
-      </el-col>
-      <el-col :span="8">
-        <div class="stat_box">
-          <i class="icon icon_payment"></i>
-          <span class="num"></span>
-          <span class="label">项目总数</span>
-        </div>
-      </el-col>
-      <el-col :span="8">
-        <div class="stat_box">
-          <i class="icon icon_advance"></i>
-          <span class="num"></span>
-          <span class="label">已完成项目</span>
-        </div>
-      </el-col>
-      <el-col :span="8">
-        <div class="stat_box">
-          <i class="icon icon_advance"></i>
-          <span class="num"></span>
-          <span class="label">待完成项目</span>
-        </div>
-      </el-col>
-      <el-col :span="8">
-        <div class="stat_box">
-          <i class="icon icon_advance"></i>
-          <span class="num"></span>
-          <span class="label">财务资料总数</span>
-        </div>
-      </el-col>
-      <el-col :span="8">
-        <div class="stat_box">
-          <i class="icon icon_advance"></i>
-          <span class="num"></span>
-          <span class="label">已完成财务资料</span>
-        </div>
-      </el-col>
-      <el-col :span="8">
-        <div class="stat_box">
-          <i class="icon icon_advance"></i>
-          <span class="num"></span>
-          <span class="label">待完成财务资料</span>
-        </div>
-      </el-col>
-    </el-row>
+    <template v-if="userType == 'ADMIN'">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_1"></i>
+            <span class="num">10</span>
+            <span class="label">企业总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_9"></i>
+            <span class="num"></span>
+            <span class="label">服务中企业</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_8"></i>
+            <span class="num"></span>
+            <span class="label">服务已到期企业</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_5"></i>
+            <span class="num"></span>
+            <span class="label">项目总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_6"></i>
+            <span class="num"></span>
+            <span class="label">已完成项目</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_7"></i>
+            <span class="num"></span>
+            <span class="label">待完成项目</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_2"></i>
+            <span class="num"></span>
+            <span class="label">财务资料总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_3"></i>
+            <span class="num"></span>
+            <span class="label">已完成财务资料</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_4"></i>
+            <span class="num"></span>
+            <span class="label">待完成财务资料</span>
+          </div>
+        </el-col>
+      </el-row>
+    </template>
+    <template v-if="userType == 'GOV_PROV' || userType == 'GOV_CITY' || userType == 'GOV_DISTRI'">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_1"></i>
+            <span class="num">10</span>
+            <span class="label">企业总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_1"></i>
+            <span class="num">10</span>
+            <span class="label">项目申报数</span>
+          </div>
+        </el-col>
+      </el-row>
+    </template>
+    <template v-if="userType == 'ENT_ADMIN'">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_5"></i>
+            <span class="num"></span>
+            <span class="label">项目总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_6"></i>
+            <span class="num"></span>
+            <span class="label">已完成项目</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_7"></i>
+            <span class="num"></span>
+            <span class="label">待完成项目</span>
+          </div>
+        </el-col>
+      </el-row>
+    </template>
+    <template v-if="userType == 'ENT_TECH'">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_1"></i>
+            <span class="num">10</span>
+            <span class="label">企业总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_9"></i>
+            <span class="num"></span>
+            <span class="label">服务中企业</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_8"></i>
+            <span class="num"></span>
+            <span class="label">服务已到期企业</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_5"></i>
+            <span class="num"></span>
+            <span class="label">项目总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_6"></i>
+            <span class="num"></span>
+            <span class="label">已完成项目</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_7"></i>
+            <span class="num"></span>
+            <span class="label">待完成项目</span>
+          </div>
+        </el-col>
+      </el-row>
+    </template>
+    <template v-if="userType == 'ENT_ADMIN_TECH'">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_1"></i>
+            <span class="num">10</span>
+            <span class="label">企业总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_9"></i>
+            <span class="num"></span>
+            <span class="label">服务中企业</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_8"></i>
+            <span class="num"></span>
+            <span class="label">服务已到期企业</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_5"></i>
+            <span class="num"></span>
+            <span class="label">项目总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_6"></i>
+            <span class="num"></span>
+            <span class="label">已完成项目</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_7"></i>
+            <span class="num"></span>
+            <span class="label">待完成项目</span>
+          </div>
+        </el-col>
+      </el-row>
+    </template>
+    <template v-if="userType == 'ENT_FIN'">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_1"></i>
+            <span class="num">10</span>
+            <span class="label">企业总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_9"></i>
+            <span class="num"></span>
+            <span class="label">服务中企业</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_8"></i>
+            <span class="num"></span>
+            <span class="label">服务已到期企业</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_5"></i>
+            <span class="num"></span>
+            <span class="label">项目总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_6"></i>
+            <span class="num"></span>
+            <span class="label">已完成项目</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_7"></i>
+            <span class="num"></span>
+            <span class="label">待完成项目</span>
+          </div>
+        </el-col>
+      </el-row>
+    </template>
+    <template v-if="userType == 'ENT_ADMIN_FIN'">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_1"></i>
+            <span class="num">10</span>
+            <span class="label">企业总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_9"></i>
+            <span class="num"></span>
+            <span class="label">服务中企业</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_8"></i>
+            <span class="num"></span>
+            <span class="label">服务已到期企业</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_5"></i>
+            <span class="num"></span>
+            <span class="label">项目总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_6"></i>
+            <span class="num"></span>
+            <span class="label">已完成项目</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_7"></i>
+            <span class="num"></span>
+            <span class="label">待完成项目</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_7"></i>
+            <span class="num"></span>
+            <span class="label">财务报表总数</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_7"></i>
+            <span class="num"></span>
+            <span class="label">已完成财务报表</span>
+          </div>
+        </el-col>
+        <el-col :span="8">
+          <div class="stat_box">
+            <i class="icon icon_7"></i>
+            <span class="num"></span>
+            <span class="label">待完成财务报表</span>
+          </div>
+        </el-col>
+      </el-row>
+    </template>
+
   </div>
 </template>
 
 <script>
 export default {
-  name: "Index",
+  name: "Index",
+  computed: {
+    userType() {
+      return this.$store.state.user.userType
+    },
+  },
   data() {
     return {
       // 版本号

+ 94 - 0
src/views/message/index.vue

@@ -1,7 +1,101 @@
 <template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" size="small" label-width="100px">
+      <el-form-item label="内容关键字">
+        <el-input v-model="queryParams.noticeContent" clearable style="width: 200px;" placeholder="请输入内容关键字"></el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="handleQuery">搜索</el-button>
+        <el-button @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+    <h3 class="toolbar">
+      <span class="title">列表</span>
+    </h3>
+    <el-table v-loading="loading" :data="list" border>
+      <el-table-column label="通知类型" prop="noticeType" width="120" align="center" />
+      <el-table-column label="内容" prop="noticeContent" align="center"></el-table-column>
+      <el-table-column label="状态" prop="status" align="center" width="120" />
+      <el-table-column label="发送时间" align="center" prop="createTime" width="160"></el-table-column>
+      <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleView(scope.row)">查看</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"/>
+  </div>
 </template>
 
 <script>
+  import {listMsgApi} from "@/api/admin/msg/msg"
+  import {entStateOptions, getLabel, authStateOptions} from '@/utils/dataFormat'
+  export default {
+    data () {
+      return {
+        loading: false,
+        addTaxVisible: false,
+        type: '',
+        provinceDataList: [],
+        cityDataList: [],
+        districtDataList: [],
+        entStateOptions: entStateOptions,
+        authStateOptions: authStateOptions,
+        // 模板状态
+        // statusOptions: accessStatus,
+        dateRange: [],
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          noticeContent: ''
+        },
+        list: [],
+        total: 0,
+        open: false,
+        openInfo: false,
+      }
+    },
+    created() {
+      this.getList()
+    },
+    methods: {
+      getList() {
+        this.loading = true;
+        listMsgApi(this.queryParams).then(response => {
+          this.list = response.data.records;
+          this.total = response.data.total;
+          this.loading = false;
+        });
+      },
+      handleView(row) {
+        this.$router.push("message/info/"+row.noticeId)
+      },
+      // 重置
+      resetQuery() {
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 搜索
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      statusFormat(row, col, val, index) {
+        return getLabel(accessStatus, val)
+      },
+      entSateFormat(row, col, val, index) {
+        return getLabel(entStateOptions, val)
+      },
+      authStateFormat(row, col, val, index) {
+        return getLabel(authStateOptions, val)
+      }
+    }
+  }
 </script>
 
 <style>

+ 59 - 0
src/views/message/info.vue

@@ -0,0 +1,59 @@
+<template>
+  <div class="app-container" v-loading="loading">
+    <h3 class="toolbar">
+      <span class="title">消息信息</span>
+    </h3>
+    <table class="table_view">
+      <tr>
+        <th>通知类型</th>
+        <td>{{info.noticeType}}</td>
+        <th>状态</th>
+        <td>{{info.status}}</td>
+      </tr>
+      <tr>
+        <th>发送时间</th>
+        <td>{{info.createTime}}</td>
+      </tr>
+      <tr>
+        <th>内容</th>
+        <td>{{info.noticeContent}}</td>
+      </tr>
+
+    </table>
+  </div>
+</template>
+
+<script>
+  import { noticeByIdApi } from "@/api/admin/msg/msg"
+  export default {
+    data () {
+      return {
+        loading: false,
+        noticeId: undefined,
+        roleType: '',
+        info: {
+        },
+      }
+    },
+    created () {
+      this.noticeId = this.$route.params.noticeId || undefined;
+      if(this.noticeId) {
+        this.getData()
+      }
+    },
+    methods: {
+      getData() {
+        noticeByIdApi(this.noticeId).then(res => {
+          this.info = res.data.records || {}
+        })
+      },
+      cancel() {
+        this.$store.dispatch("tagsView/delView", this.$route); // 关闭当前tab
+        this.$router.go(-1);
+      }
+    }
+  }
+</script>
+
+<style>
+</style>

+ 189 - 0
src/views/tax/components/AddTaxUser.vue

@@ -0,0 +1,189 @@
+ <template>
+   <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+     <el-form ref="form" :model="form" :rules="rules" label-width="90px">
+         <el-form-item label="账户" prop="userName" v-if="type == 'add'">
+           <el-input v-model="form.userName"></el-input>
+         </el-form-item>
+         <el-form-item label="姓名" prop="nickName">
+           <el-input v-model="form.nickName"></el-input>
+         </el-form-item>
+         <el-form-item label="手机号" prop="phonenumber">
+           <el-input v-model="form.phonenumber"></el-input>
+         </el-form-item>
+         <el-form-item label="负责地区" prop="dutyArea">
+           <el-select v-model="form.dutyArea" placeholder="请选择负责地区" style="width: 200px;" filterable>
+             <el-option v-for="(item,index) in dutyAreaOptions" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
+           </el-select>
+         </el-form-item>
+         <el-form-item label="省" prop="provinceId" v-if="form.dutyArea">
+           <el-select v-model="form.provinceId" placeholder="请选择省" @change="getCityData" filterable style="width: 200px;">
+             <el-option v-for="(item,index) in provinceDataList" :key="index" :label="item.name" :value="item.id"></el-option>
+           </el-select>
+         </el-form-item>
+         <el-form-item label="市" prop="cityId" v-if="form.dutyArea == '2' || form.dutyArea == '3'">
+           <el-select v-model="form.cityId" placeholder="请选择市" @change="getDistrictData" filterable style="width: 200px;">
+             <el-option v-for="(item, index) in cityDataList" :key="index" :label="item.name" :value="item.id"></el-option>
+           </el-select>
+         </el-form-item>
+         <el-form-item label="区" prop="districtId" v-if="form.dutyArea == '3'">
+           <el-select v-model="form.districtId" placeholder="请选择区" filterable style="width: 200px;">
+             <el-option v-for="(item, index) in districtDataList" :key="index" :label="item.name" :value="item.id"></el-option>
+           </el-select>
+         </el-form-item>
+         <el-form-item label="密码" prop="password" v-if="type == 'add'">
+           <el-input v-model="form.password" type="password"></el-input>
+         </el-form-item>
+         <el-form-item label="确认密码" prop="confirmPassword" v-if="type == 'add'">
+           <el-input v-model="form.confirmPassword" type="password"></el-input>
+         </el-form-item>
+     </el-form>
+     <div slot="footer" class="dialog-footer">
+       <el-button type="primary" :disabled="disabled" @click="submitForm">确 定</el-button>
+       <el-button @click="cancel">取 消</el-button>
+     </div>
+   </el-dialog>
+ </template>
+
+ <script>
+   import {addTaxUserApi,getTaxInfoByIdApi} from "@/api/admin/tax/tax"
+   import {getProvinceDataApi,getRegionChildrenApi} from "@/api/common/common"
+   import {dutyAreaOptions} from '@/utils/dataFormat'
+   export default {
+     data () {
+       return {
+         open: false,
+         disabled: false,
+         type: '',
+         title: '',
+         provinceDataList: [],
+         cityDataList: [],
+         districtDataList: [],
+         provinceName: '',
+         cityName: '',
+         districtName: '',
+         dutyAreaOptions: dutyAreaOptions,
+         form: {
+         },
+         rules: {
+           checkStatus: [
+             {required: true, message: '请选择审核结果', trigger: 'change'}
+           ],
+           serviceTime: [
+             {required: true, message: '请设置服务时间段', trigger: 'change'}
+           ]
+         }
+       }
+     },
+     methods: {
+       init(type, id) {
+         this.open = true
+         this.type = type
+         this.form.id = id
+         if(this.type == 'add') {
+           this.title = '新增'
+         }else if(this.type == 'update') {
+           this.title = '修改'
+         }
+         if(this.form.id) {
+           this.getData()
+         }
+         console.log(this.form.id)
+         this.resetForm("form");
+         this.getProvinceData()
+       },
+       getData() {
+         getTaxInfoByIdApi(this.form.id).then(res => {
+           if(res.code == 200) {
+             this.form = res.data
+           }
+         })
+       },
+       //选择省份
+       getCityData() {
+         this.form.cityId = ''
+         this.form.districtId = ''
+         getRegionChildrenApi(this.form.provinceId).then(res => {
+           if(res.code == 200) {
+             this.cityDataList = res.data
+           }
+         })
+       },
+       //选择市
+       getDistrictData() {
+         this.form.districtId = ''
+         getRegionChildrenApi(this.form.cityId).then(res => {
+           if(res.code == 200) {
+             this.districtDataList = res.data
+           }
+         })
+       },
+       getProvinceData() {
+         getProvinceDataApi().then(res => {
+           if(res.code == 200) {
+             this.provinceDataList = res.data
+           }
+         })
+       },
+       submitForm() {
+         this.$refs.form.validate(valid => {
+           if (valid) {
+             this.disabled = true
+             if(this.form.dutyArea == '1') {
+               let obj = this.provinceDataList.find(item => {
+                 return item.id == this.form.provinceId
+               })
+               this.form.scopeId = this.form.provinceId
+               this.form.remark = obj.name
+               this.form.userType = 'GOV_PROV'
+             }else if(this.form.dutyArea == '2') {
+               let obj = this.provinceDataList.find(item => {
+                 return item.id == this.form.provinceId
+               })
+               this.provinceName = obj.name
+               let objCity = this.cityDataList.find(item => {
+                 return item.id == this.form.cityId
+               })
+               this.cityName = objCity.name
+               this.form.remark = this.provinceName+this.cityName
+               this.form.scopeId = this.form.cityId
+               this.form.userType = 'GOV_CITY'
+             }else if(this.form.dutyArea == '3') {
+               let obj = this.provinceDataList.find(item => {
+                 return item.id == this.form.provinceId
+               })
+               this.provinceName = obj.name
+               let objCity = this.cityDataList.find(item => {
+                 return item.id == this.form.cityId
+               })
+               this.cityName = objCity.name
+               let objDis = this.districtDataList.find(item => {
+                 return item.id == this.form.districtId
+               })
+               this.districtName = objDis.name
+               this.form.remark = this.provinceName+this.cityName+this.districtName
+               this.form.scopeId = this.form.districtId
+               this.form.userType = 'GOV_DISTRI'
+             }
+             addTaxUserApi(this.form).then(res => {
+               this.disabled = false;
+               if(res.code == 200) {
+                 this.$message({
+                   message: '新增成功',
+                   type: 'success'
+                 });
+               }
+               this.open = false;
+               this.$emit('refreshData');
+             })
+           }
+         })
+       },
+       cancel() {
+         this.open = false
+       },
+     }
+   }
+ </script>
+
+ <style>
+ </style>

+ 214 - 0
src/views/tax/index.vue

@@ -1,7 +1,221 @@
 <template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" :inline="true" size="small" label-width="100px">
+      <el-form-item label="省" prop="provinceId">
+        <el-select v-model="queryParams.provinceId" placeholder="请选择省" @change="getCityData" filterable style="width: 200px;">
+          <el-option v-for="(item,index) in provinceDataList" :key="index" :label="item.name" :value="item.id"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="市" prop="cityId">
+        <el-select v-model="queryParams.cityId" placeholder="请选择市" @change="getDistrictData" filterable style="width: 200px;">
+          <el-option v-for="(item, index) in cityDataList" :key="index" :label="item.name" :value="item.id"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="区" prop="districtId">
+        <el-select v-model="queryParams.districtId" placeholder="请选择区" filterable style="width: 200px;">
+          <el-option v-for="(item, index) in districtDataList" :key="index" :label="item.name" :value="item.id"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="用户名称">
+        <el-input v-model="queryParams.entName" clearable style="width: 200px;"></el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="handleQuery">搜索</el-button>
+        <el-button @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+    <h3 class="toolbar">
+      <span class="title">列表</span>
+      <div class="tool">
+        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
+      </div>
+    </h3>
+    <el-table v-loading="loading" :data="list" border>
+      <el-table-column label="账户" prop="userName" width="120" align="center" />
+      <el-table-column label="用户名称" prop="nickName" align="center" width="120"></el-table-column>
+      <el-table-column label="手机号" prop="phonenumber" align="center" width="120" />
+      <el-table-column label="负责地区" prop="remark" align="center" width="200"></el-table-column>
+      <el-table-column label="创建时间" align="center" prop="createTime" width="160"></el-table-column>
+      <el-table-column label="状态" align="center" key="status">
+        <template slot-scope="scope">
+          <el-switch
+            v-model="scope.row.status"
+            active-value="0"
+            inactive-value="1"
+            @change="handleStatusChange(scope.row)"
+          ></el-switch>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button type="text" @click="handleUpdate(scope.row)">修改</el-button>
+          <el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
+          <el-button type="text" @click="handleResetPwd(scope.row)">重置密码</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"/>
+    <add-tax-user ref="addTax" v-if="addTaxVisible" @refreshData="getList()"></add-tax-user>
+  </div>
 </template>
 
 <script>
+  import {getProvinceDataApi,getRegionChildrenApi} from "@/api/common/common"
+  import {entStateOptions, getLabel, authStateOptions} from '@/utils/dataFormat'
+  import {listTaxAdminApi,deleteTaxApi} from '@/api/admin/tax/tax'
+  import { changeUserStatus } from "@/api/system/user";
+  import AddTaxUser from './components/AddTaxUser'
+  import { resetUserPwd } from "@/api/system/user";
+  export default {
+    components: {
+      AddTaxUser
+    },
+    data () {
+      return {
+        loading: false,
+        addTaxVisible: false,
+        type: '',
+        provinceDataList: [],
+        cityDataList: [],
+        districtDataList: [],
+        entStateOptions: entStateOptions,
+        authStateOptions: authStateOptions,
+        // 模板状态
+        // statusOptions: accessStatus,
+        dateRange: [],
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          provinceId: undefined,
+          cityId: undefined,
+          districtId: undefined
+        },
+        list: [],
+        total: 0,
+        open: false,
+        openInfo: false,
+      }
+    },
+    created() {
+      this.getList()
+      this.getProvinceData()
+    },
+    methods: {
+      //选择省份
+      getCityData() {
+        this.queryParams.cityId = ''
+        this.queryParams.districtId = ''
+        getRegionChildrenApi(this.queryParams.provinceId).then(res => {
+          if(res.code == 200) {
+            this.cityDataList = res.data
+          }
+        })
+      },
+      //选择市
+      getDistrictData() {
+        this.queryParams.districtId = ''
+        getRegionChildrenApi(this.queryParams.cityId).then(res => {
+          if(res.code == 200) {
+            this.districtDataList = res.data
+          }
+        })
+      },
+      getProvinceData() {
+        getProvinceDataApi().then(res => {
+          if(res.code == 200) {
+            this.provinceDataList = res.data
+          }
+        })
+      },
+      getList() {
+        this.loading = true;
+        listTaxAdminApi(this.queryParams).then(response => {
+          this.list = response.data.records;
+          this.total = response.data.total;
+          this.loading = false;
+        });
+      },
+      handleAdd() {
+        this.type = 'add'
+        this.addTaxVisible = true
+        this.$nextTick(() => {
+          this.$refs.addTax.init(this.type)
+        })
+      },
+      handleUpdate(row) {
+        this.type = 'update'
+        this.addTaxVisible = true
+        this.$nextTick(() => {
+          this.$refs.addTax.init(this.type, row.userId)
+        })
+      },
+      // 用户状态修改
+      handleStatusChange(row) {
+        let text = row.status === "0" ? "启用" : "停用";
+        this.$modal.confirm('确认要"' + text + '""' + row.userName + '"用户吗?').then(function() {
+          return changeUserStatus(row.userId, row.status);
+        }).then(() => {
+          this.$modal.msgSuccess(text + "成功");
+        }).catch(function() {
+          row.status = row.status === "0" ? "1" : "0";
+        });
+      },
+      /** 重置密码按钮操作 */
+      handleResetPwd(row) {
+        this.$prompt('请输入"' + row.userName + '"的新密码', "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          closeOnClickModal: false,
+          inputPattern: /^.{5,20}$/,
+          inputErrorMessage: "用户密码长度必须介于 5 和 20 之间"
+        }).then(({ value }) => {
+            resetUserPwd(row.userId, value).then(response => {
+              this.$modal.msgSuccess("修改成功,新密码是:" + value);
+            });
+          }).catch(() => {});
+      },
+      handleDelete(row) {
+        const id = row.userId;
+        this.$confirm('是否确认删除该数据?', "警告", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          }).then(function() {
+            return deleteTaxApi(id);
+          }).then(() => {
+            this.queryParams.pageNum = 1;
+            this.getList();
+            this.msgSuccess("删除成功");
+          })
+      },
+      // 重置
+      resetQuery() {
+        this.dateRange = [];
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      // 搜索
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      statusFormat(row, col, val, index) {
+        return getLabel(accessStatus, val)
+      },
+      entSateFormat(row, col, val, index) {
+        return getLabel(entStateOptions, val)
+      },
+      authStateFormat(row, col, val, index) {
+        return getLabel(authStateOptions, val)
+      }
+    }
+  }
 </script>
 
 <style>