Pārlūkot izejas kodu

9.21年度评价提交

王宇昕 5 gadi atpakaļ
vecāks
revīzija
b792a46e93

+ 1 - 1
src/dashoo.cn/frontend_web/src/api/oilcontract/contract.js

@@ -36,7 +36,7 @@ export default {
   // 编辑后的评价内容
   contractEvaluationTree(entityId, myAxios) {
     return myAxios({
-      url: '/contract-evaluation/tree/'+entityId,
+      url: '/contract-evaluation-items/tree/'+entityId,
       method: 'GET',
     });
   },

+ 18 - 14
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-basis/_opera/evaluate.vue

@@ -14,12 +14,12 @@
           <i class="icon icon-table2"></i> 编辑 - 承包商合同
         </span>
         <span style="float: right;">
-          <el-button type="primary" size="mini" style="margin-left: 8px" @click="commonAuditClick">企管法规处</el-button>
-          <el-button type="primary" size="mini" style="margin-left: 8px" @click="commonAuditClick">专业处室审核</el-button>
-          <el-button type="primary" size="mini" style="margin-left: 8px" @click="commonAuditClick2">专业科室接收</el-button>
-          <el-button type="primary" size="mini" style="margin-left: 8px" @click="commonAuditClick">复审</el-button>
-          <el-button type="primary" size="mini" style="margin-left: 8px" @click="commonAuditClick">初审</el-button>
-          <el-button type="primary" size="mini" style="margin-left: 8px" v-if="routeDataType==2" @click="onSubmitBigAdd">提交审核</el-button>
+          <el-button type="primary" size="mini" style="margin-left: 8px" v-if="editFrom.Status==7" @click="commonAuditClick">企管法规处</el-button>
+          <el-button type="primary" size="mini" style="margin-left: 8px" v-if="editFrom.Status==4" @click="commonAuditClick">专业处室审核</el-button>
+          <el-button type="primary" size="mini" style="margin-left: 8px" v-if="editFrom.Status==3" @click="commonAuditClick2">专业科室接收</el-button>
+          <el-button type="primary" size="mini" style="margin-left: 8px" v-if="editFrom.Status==2" @click="commonAuditClick">复审</el-button>
+          <el-button type="primary" size="mini" style="margin-left: 8px" v-if="editFrom.Status==1" @click="commonAuditClick">初审</el-button>
+          <el-button type="primary" size="mini" style="margin-left: 8px" v-if="editFrom.Status==0" @click="onSubmitBigAdd">提交审核</el-button>
           <el-button type="primary" size="mini" v-if="activeName!=1" style="margin-left: 8px" @click="onSeaveBigAdd">保存</el-button>
           <el-button @click="onBack" type="primary" size="mini" style="margin-left: 8px">返回</el-button>
         </span>
@@ -169,6 +169,7 @@
       return {
         routeData:{},//上一页面传过来的值
         routeDataType:'',//上一页面传过来的type
+        editFrom:{},
 
         dialogVisibleCom:false,
 
@@ -221,14 +222,16 @@
       this.serviceId = this.$route.params.opera;
       this.getDictOptions();
 
-      // console.log(this.serviceId);
-      // if(this.serviceId != 'add' && this.serviceId>0) {
-      //   this.formData.Id = this.serviceId;
-      //   this.initDatas();
-      // } else {
-      //   this.formData.Id = 0;
-      // }
-      this.showIdDatas(this.serviceId)
+      if(this.serviceId != 'add' && this.serviceId>0) {
+        this.formData.Id = this.serviceId;
+        // this.initDatas();
+        this.showIdDatas(this.serviceId)
+      } else {
+        this.formData.Id = 0;
+        this.editFrom.Status = 0
+
+      }
+
 
     },
     methods: {
@@ -238,6 +241,7 @@
           api.getEntityAndCert(id, this.$axios).then(res => {
             console.log('审批流程',res)
             var data = res.data
+            this.editFrom = res.data
             this.entrydetail.business = id
             this.entrydetail.instance = data.WorkflowId
             this.entrydetail.process = data.ProcessKey

+ 260 - 0
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-goods-year/_opera/baselist.vue

@@ -0,0 +1,260 @@
+<template>
+  <div>
+    <el-table highlight-current-row :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
+      <el-table-column
+        property="SequenceNo"
+        label="序号"
+        header-align="center"
+        align="center"
+        width="80">
+      </el-table-column>
+      <el-table-column
+        property="Content"
+        header-align="center"
+        label="评价项目">
+      </el-table-column>
+      <el-table-column
+        property="Result"
+        label="是否满足"
+        header-align="center"
+        align="center"
+        width="100">
+        <template slot-scope="scope">
+          <el-button size="mini" type="success" v-if="scope.row.Result==1">是</el-button>
+          <el-button size="mini" type="danger" v-else>否</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+                   :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+    </el-pagination>
+  </div>
+</template>
+<script>
+  import { mapGetters } from 'vuex';
+  import api from '@/api/oilcontract/contractEvaluationItems';
+
+  export default {
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    name: 'oilcontractevaluationitems',
+
+    data() {
+      return {
+        dialogVisible: false,
+        //列表数据
+        entityList: [],
+        //分页参数
+        size: 10,
+        currentPage: 1,
+        currentItemCount: 0,
+        //列表排序
+        Column: {
+          Order: '',
+          Prop: ''
+        },
+        //查询时间
+        CreateOn: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()],
+        //查询项
+        searchFormReset: {},
+        searchForm: {
+          Id: '',
+          ContractId: '',
+          ParentId: '',
+          SequenceNo: '',
+          Content: '',
+          NormalScore: '',
+          Score: '',
+          LevelCode: '',
+          Remark: '',
+          ModifiedOn: '',
+          ModifiedUserId: '',
+          ModifiedBy: '',
+
+        }
+      }
+    },
+    created() {
+      //查询条件初始值备份
+      Object.assign(this.searchFormReset, this.searchForm);
+      //查询列表
+      //this.initDatas();
+      //this.getDictOptions()
+
+      this.entityList = [
+        {
+          SequenceNo: '1',
+          Content: '法人资格和相应的资质证明文件应满足要求且持续有效',
+          Result: 1,
+        },
+        {
+          SequenceNo: '2',
+          Content: '国家有关部门、行业颁发的生产经营、安全生产许可证应满足要求且持续有效',
+          Result: 1,
+        },
+        {
+          SequenceNo: '3',
+          Content: '质量、职业健康与安全、环境管理体系应通过认证且持续有效',
+          Result: 1,
+        },
+        {
+          SequenceNo: '4',
+            Content: '近一年内未发生较大及以上质量、生产安全事故和严重环境污染事件',
+          Result: 1,
+        },
+        {
+          SequenceNo: '5',
+            Content: '应继续保持具有与其资质等级相适应的生产经营能力、良好业绩及社会信',
+          Result: 1,
+        },
+        {
+          SequenceNo: '6',
+            Content: '未发生违规分包和违法转包,允许其他企业挂靠、出借资质证明文件及有关资格证书的情况',
+          Result: 1,
+        },
+        {
+          SequenceNo: '7',
+            Content: '未发生严重扰乱集团公司工程建设市场秩序、提供虚假材料和信息的行为',
+          Result: 1,
+        },
+        {
+          SequenceNo: '8',
+            Content: '承包商能在规定时间内向评价单位提交基本条件评价所需相关证明文件,办理评价相关手续',
+          Result: 1,
+        }]
+    },
+    methods: {
+      initDatas() {
+        //分页及列表条件
+        let params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          Order: this.Column.Order,
+          Prop: this.Column.Prop,
+        }
+        let myCreateOn = []
+        // 解析时间
+        if (this.CreateOn.length == 2) {
+          this.CreateOn[1].setHours(23)
+          this.CreateOn[1].setMinutes(59)
+          this.CreateOn[1].setSeconds(59)
+          myCreateOn.push(this.formatDateTime(this.CreateOn[0]))
+          myCreateOn.push(this.formatDateTime(this.CreateOn[1]))
+        }
+        //查询条件
+        Object.assign(params, this.searchForm)
+        //访问接口
+        api.getList(myCreateOn.join(','), params, this.$axios).then(res => {
+          this.entityList = res.data.items
+          this.currentItemCount = res.data.currentItemCount
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      getDictOptions() {
+        api.getDictList(this.$axios).then(res => {
+          //this.dictOptions.customerList = res.data.items['customerList']
+          //this.dictOptions.projectList = res.data.items['projectList']
+
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
+      //列表排序功能
+      orderby(column) {
+        if (column.order == 'ascending') {
+          this.Column.Order = 'asc'
+        } else if (column.order == 'descending') {
+          this.Column.Order = 'desc'
+        }
+        this.Column.Prop = column.prop
+        this.initDatas()
+      },
+      clearSearch() {
+        Object.assign(this.searchForm, this.searchFormReset);
+        //this.searchForm = this.searchFormReset;
+        this.CreateOn = ''
+        this.initDatas()
+      },
+      handleSearch() {
+        this.currentPage = 1;
+        this.dialogVisible = false;
+        this.initDatas();
+      },
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initDatas()
+      },
+      handleSizeChange(value) {
+        this.size = value
+        this.currentPage = 1
+        this.initDatas()
+      },
+      deleteEntity(row) {
+        row.deleteConfirmFlag = false;
+        api.deleteEntity(row.Id, this.$axios).then(res => {
+          if (res.data.code === 0) {
+            this.initDatas();
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            });
+
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            });
+          }
+        }).catch(err => {
+          console.error(err)
+        });
+      },
+
+      jstimehandle(val) {
+        if (val === '') {
+          return '----'
+        } else if (val === '0001-01-01T08:00:00+08:00') {
+          return '----'
+        } else if (val === '5000-01-01T23:59:59+08:00') {
+          return '永久'
+        } else {
+          val = val.replace('T', ' ')
+          return val.substring(0, 10)
+        }
+      },
+
+      formatDateTime(date) {
+        var y = date.getFullYear();
+        var m = date.getMonth() + 1;
+        m = m < 10 ? ('0' + m) : m;
+        var d = date.getDate();
+        d = d < 10 ? ('0' + d) : d;
+        var h = date.getHours();
+        var minute = date.getMinutes();
+        minute = minute < 10 ? ('0' + minute) : minute;
+        return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss">
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+</style>

+ 296 - 0
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-goods-year/_opera/evaluationlist.vue

@@ -0,0 +1,296 @@
+<template>
+  <div>
+    <el-table highlight-current-row :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
+      <el-table-column
+        property="SequenceNo"
+        label="序号"
+        header-align="center"
+        width="80">
+        <template slot-scope="scope">
+          <span v-if="scope.row.type=='SUM'" style="font-weight: bold">{{scope.row.SequenceNo}}</span>
+          <span v-else>{{scope.row.SequenceNo}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        property="Content"
+        header-align="center"
+        label="评价项目及标准分值">
+        <template slot-scope="scope">
+          <span v-if="scope.row.type=='SUM'" style="font-weight: bold">{{scope.row.Content}}</span>
+          <span v-else>{{scope.row.Content}}</span>
+        </template>
+      </el-table-column>
+
+      <el-table-column
+        property="Score"
+        label="评价得分"
+        header-align="center"
+        width="120">
+        <template slot-scope="scope">
+          <span v-if="scope.row.type=='SUM'" style="font-weight: bold">{{scope.row.Score}}</span>
+          <el-input v-else size="mini" placeholder="实得分数" v-model="scope.row.Score"></el-input>
+        </template>
+      </el-table-column>
+
+      <el-table-column
+        property="Reason"
+        label="备  注"
+        header-align="center">
+      </el-table-column>
+    </el-table>
+    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+                   :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+    </el-pagination>
+  </div>
+</template>
+<script>
+  import { mapGetters } from 'vuex';
+  import api from '@/api/oilcontract/contractEvaluationItems';
+
+  export default {
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    name: 'oilcontractevaluationitems',
+
+    data() {
+      return {
+        dialogVisible: false,
+        //列表数据
+        entityList: [],
+        //分页参数
+        size: 10,
+        currentPage: 1,
+        currentItemCount: 0,
+        //列表排序
+        Column: {
+          Order: '',
+          Prop: ''
+        },
+        //查询时间
+        CreateOn: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()],
+        //查询项
+        searchFormReset: {},
+        searchForm: {
+          Id: '',
+          ContractId: '',
+          ParentId: '',
+          SequenceNo: '',
+          Content: '',
+          NormalScore: '',
+          Score: '',
+          LevelCode: '',
+          Remark: '',
+          ModifiedOn: '',
+          ModifiedUserId: '',
+          ModifiedBy: '',
+
+        }
+      }
+    },
+    created() {
+      //查询条件初始值备份
+      Object.assign(this.searchFormReset, this.searchForm);
+      //查询列表
+      //this.initDatas();
+      //this.getDictOptions()
+
+      this.entityList = [
+        {
+          SequenceNo: '1',
+          type: 'ITEM',
+          Content: '项目组织实施(10分)',
+          NormalScore: 10,
+          Score: 0
+        },
+        {
+          SequenceNo: '2',
+          type: 'ITEM',
+          Content: '质量管理(20分)',
+          NormalScore: 20,
+          Score: 0
+        },
+        {
+          SequenceNo: '3',
+          type: 'ITEM',
+          Content: '职业健康安全与环境管理(20分)',
+          NormalScore: 20,
+          Score: 0
+        },
+        {
+          SequenceNo: '4',
+          type: 'ITEM',
+          Content: '成本管理(5分)',
+          NormalScore: 5,
+          Score: 0
+        },
+        {
+          SequenceNo: '5',
+          type: 'ITEM',
+          Content: '进度管理(10分)',
+          NormalScore: 10,
+          Score: 0
+        },
+        {
+          SequenceNo: '6',
+          type: 'ITEM',
+          Content: '分包管理(15分)',
+          NormalScore: 15,
+          Score: 0
+        },
+        {
+          SequenceNo: '7',
+          type: 'ITEM',
+          Content: '信息资料管理(10分)',
+          NormalScore: 10,
+          Score: 0
+        },
+        {
+          SequenceNo: '8',
+          type: 'ITEM',
+          Content: '诚信履约(10分)',
+          NormalScore: 10,
+          Score: 0
+        },
+        {
+          SequenceNo: '9',
+          type: 'SUM',
+          Content: '总分',
+          NormalScore: 100,
+          Score: 0
+        }]
+    },
+    methods: {
+      initDatas() {
+        //分页及列表条件
+        let params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          Order: this.Column.Order,
+          Prop: this.Column.Prop,
+        }
+        let myCreateOn = []
+        // 解析时间
+        if (this.CreateOn.length == 2) {
+          this.CreateOn[1].setHours(23)
+          this.CreateOn[1].setMinutes(59)
+          this.CreateOn[1].setSeconds(59)
+          myCreateOn.push(this.formatDateTime(this.CreateOn[0]))
+          myCreateOn.push(this.formatDateTime(this.CreateOn[1]))
+        }
+        //查询条件
+        Object.assign(params, this.searchForm)
+        //访问接口
+        api.getList(myCreateOn.join(','), params, this.$axios).then(res => {
+          this.entityList = res.data.items
+          this.currentItemCount = res.data.currentItemCount
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      getDictOptions() {
+        api.getDictList(this.$axios).then(res => {
+          //this.dictOptions.customerList = res.data.items['customerList']
+          //this.dictOptions.projectList = res.data.items['projectList']
+
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
+      //列表排序功能
+      orderby(column) {
+        if (column.order == 'ascending') {
+          this.Column.Order = 'asc'
+        } else if (column.order == 'descending') {
+          this.Column.Order = 'desc'
+        }
+        this.Column.Prop = column.prop
+        this.initDatas()
+      },
+      clearSearch() {
+        Object.assign(this.searchForm, this.searchFormReset);
+        //this.searchForm = this.searchFormReset;
+        this.CreateOn = ''
+        this.initDatas()
+      },
+      handleSearch() {
+        this.currentPage = 1;
+        this.dialogVisible = false;
+        this.initDatas();
+      },
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initDatas()
+      },
+      handleSizeChange(value) {
+        this.size = value
+        this.currentPage = 1
+        this.initDatas()
+      },
+      deleteEntity(row) {
+        row.deleteConfirmFlag = false;
+        api.deleteEntity(row.Id, this.$axios).then(res => {
+          if (res.data.code === 0) {
+            this.initDatas();
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            });
+
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            });
+          }
+        }).catch(err => {
+          console.error(err)
+        });
+      },
+
+      jstimehandle(val) {
+        if (val === '') {
+          return '----'
+        } else if (val === '0001-01-01T08:00:00+08:00') {
+          return '----'
+        } else if (val === '5000-01-01T23:59:59+08:00') {
+          return '永久'
+        } else {
+          val = val.replace('T', ' ')
+          return val.substring(0, 10)
+        }
+      },
+
+      formatDateTime(date) {
+        var y = date.getFullYear();
+        var m = date.getMonth() + 1;
+        m = m < 10 ? ('0' + m) : m;
+        var d = date.getDate();
+        d = d < 10 ? ('0' + d) : d;
+        var h = date.getHours();
+        var minute = date.getMinutes();
+        minute = minute < 10 ? ('0' + minute) : minute;
+        return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss">
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+</style>

+ 141 - 123
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-goods-year/_opera/operation.vue

@@ -4,90 +4,104 @@
   <div>
     <el-breadcrumb class="heading">
       <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/oilcontract/contract-goods-year' }">合同表</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/oilsupplier/oilcontract' }">合同表</el-breadcrumb-item>
       <el-breadcrumb-item>编辑</el-breadcrumb-item>
     </el-breadcrumb>
 
     <el-card class="box-card" style="mini-height: calc(100vh - 113px);">
       <div slot="header">
         <span>
-          <i class="icon icon-table2"></i> 编辑-供应商年度评价信息
+          <i class="icon icon-table2"></i> 编辑
         </span>
         <span style="float: right;">
-                <el-button type="primary" size="mini" @click="saveEntity">保存</el-button>
-                <router-link :to="'/oilcontract/contract-goods-year'">
-                  <el-button type="primary" size="mini" style="margin-left: 8px">返回</el-button>
-                </router-link>
-              </span>
+          <el-button type="primary" size="mini"  @click="saveEntity">保存</el-button>
+        </span>
       </div>
-      <el-form label-width="110px" ref="EntityForm" :model="formData">
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="供应商名称">
-              <el-select ref="SupplierSelect" v-model="formData.SupplierId" placeholder="请选择" style="width: 100%" @change="supplierChangeHandler">
-                <el-option key="1" label="天津油气公司" value="1"></el-option>
-                <el-option key="2" label="北京管道公司" value="2"></el-option>
-                <el-option key="3" label="上海监控公司" value="3"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="8">
-            <el-form-item label="评价得分">
-              <el-input v-model="formData.ProjectName" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="8">
-            <el-form-item label="产品质量(30分)">
-              <el-input v-model="formData.ContractNo" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="8">
-            <el-form-item label="合同履约(20分)">
-              <el-input v-model="formData.ProjectPlace" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="8">
-            <el-form-item label="售后服务(15分)">
-              <el-input v-model="formData.ProjectOwner" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="8">
-            <el-form-item label="诚信经营(15分)">
-              <el-input v-model="formData.Telephone" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="8">
-            <el-form-item label="协同响应(20分)">
-              <el-input v-model="formData.Telephone" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="8">
-            <el-form-item label="评价结果">
-              <el-select v-model="formData.ProjectType" placeholder="请选择" style="width: 100%">
-                <el-option key="1" label="优秀" value="1"></el-option>
-                <el-option key="2" label="合格" value="2"></el-option>
-                <el-option key="3" label="不合格" value="3"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="24">
-            <el-form-item label="备注">
-              <el-input type="textarea" v-model="formData.Remark" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
+      <el-tabs v-model="activeName" style="margin-top: -10px">
+        <el-tab-pane label="评价信息" name="1">
+          <el-card class="box-card" style="mini-height: calc(100vh - 113px);">
+            <el-form label-width="110px" ref="EntityForm" :model="formData">
+              <el-row>
+                <el-col :span="8">
+                  <el-form-item label="服务商名称">
+                    <el-input disabled="disabled" v-model="formData.SupplierName"  style="width: 100%"></el-input>
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="8">
+                  <el-form-item label="评价得分">
+                    <el-input-number v-model="formData.SumScore" placeholder="请输入"  style="width: 100%" />
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="8">
+                  <el-form-item label="项目管理(40分)">
+                    <el-input-number v-model="formData.SumScore1" placeholder="请输入"  style="width: 100%" />
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="8">
+                  <el-form-item label="HSE管理(30分)">
+                    <el-input-number v-model="formData.SumScore2" placeholder="请输入"  style="width: 100%" />
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="8">
+                  <el-form-item label="合同履行(15分)">
+                    <el-input-number v-model="formData.SumScore3" placeholder="请输入"  style="width: 100%" />
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="8">
+                  <el-form-item label="企业诚信(15分)">
+                    <el-input-number v-model="formData.SumScore4" placeholder="请输入"  style="width: 100%" />
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="8">
+                  <el-form-item label="评价结果">
+                    <el-select v-model="formData.Conclusion" placeholder="请选择" style="width: 100%">
+                      <el-option key="1" label="优秀" value="1"></el-option>
+                      <el-option key="2" label="合格" value="2"></el-option>
+                      <el-option key="3" label="不合格" value="3"></el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
+
+                <el-col :span="24">
+                  <el-form-item label="备注">
+                    <el-input type="textarea" v-model="formData.Remark" placeholder="请输入"  style="width: 100%"></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </el-form>
+          </el-card>
+        </el-tab-pane>
+        <el-tab-pane label="基本条件评价" name="2">
+          <base-list></base-list>
+        </el-tab-pane>
+        <el-tab-pane label="专业处室基本条件评价" name="3">
+          <base-list></base-list>
+        </el-tab-pane>
+        <el-tab-pane label="业绩评价" name="4">
+          <evaluation-list></evaluation-list>
+        </el-tab-pane>
+        <el-tab-pane label="专业处室业绩评价" name="5">
+          <evaluation-list></evaluation-list>
+        </el-tab-pane>
+        <el-tab-pane label="审批流程" name="6">
+          <el-card class="box-card mycard">
+            <div slot="header"
+                 class="clearfix">
+              <span>审批流程</span>
+            </div>
+            <!-- :entryinfo="entrydetail" -->
+            <wf-history ref="WfHistory" :entryinfo="entrydetail"></wf-history>
+          </el-card>
+        </el-tab-pane>
+      </el-tabs>
     </el-card>
 
-
   </div>
 </template>
 
@@ -95,7 +109,10 @@
   import {
     mapGetters
   } from 'vuex'
-  import api from '@/api/oilcontract/contract'
+  import api from '@/api/oilcontract/contractSumScore'
+  import evaluationList from './evaluationlist'
+  import baseList from './baselist'
+  import WfHistory from '@/components/workflow/wfhistory.vue'
   export default {
     computed: {
       ...mapGetters({
@@ -103,50 +120,35 @@
       })
     },
     name: 'oilcontractEdit',
+    components: {
+      evaluationList,
+      baseList,
+      WfHistory
+    },
 
     data() {
       return {
+        // 当前操作
+        operate:'add',   // add 新增 edit 编辑
+        // 工作流
+        entrydetail: {
+          process: '',
+          business: '',
+          instance: ''
+        },
         activeName: '1',
         serviceId: '',
         formData: {
           Id: '',
-          SupplierId: '1',
-          SupplierName: '',
-          ProjectName: '',
-          ContractNo: '',
-          ProjectPlace: '',
-          ProjectOwner: '',
-          Telephone: '',
-          ProjectType: '1',
-          ContractMode: '',
-          Amount: '',
-          ContractPeriod: '',
-          OpenDate: '',
-          PlanFinishDate: '',
-          ConstructionUnit: '',
-          ConstructionOwner: '',
-          ConstructionTelphone: '',
-          BuildUnit: '',
-          BuildOwner: '',
-          BuildTelphone: '',
-          SuperviseUnit: '',
-          SuperviseOwner: '',
-          SuperviseTelphone: '',
-          QualityUnit: '',
-          QualityOwner: '',
-          QualityTelphone: '',
-          Remark: '',
-          IsDelete: '',
-          CreateOn: '',
-          CreateUserId: '',
-          CreateBy: '',
-          ModifiedOn: '',
-          ModifiedUserId: '',
-          ModifiedBy: '',
-          //缺少
-          SubPackage: '',
-          ContractType: ''
-
+          SupplierId:'',
+          SupplierName:'',
+          SumScore :0,
+          SumScore1:0,
+          SumScore2:0,
+          SumScore3:0,
+          SumScore4:0,
+          Conclusion:1,
+          Note:''
         },
 
         //下拉选择项
@@ -156,17 +158,34 @@
       }
     },
     created() {
-      this.serviceId = this.$route.params.opera;
-      this.getDictOptions();
-      console.log(this.serviceId);
-      if(this.serviceId != 'add' && this.serviceId>0) {
-        this.formData.Id = this.serviceId;
-        this.initDatas();
-      } else {
-        this.formData.Id = 0;
+      console.log('接受操作',this.$route.params)
+      this.operate  = this.$route.params.opera;
+      if(this.operate == 'add'){  // 新增进入
+        this.initPage(this.$route.query.item)
+      }else{ // 编辑进入
+
       }
+      
+      // this.getDictOptions();
+      // console.log(this.serviceId);
+      // if(this.serviceId != 'add' && this.serviceId>0) {
+      //   this.formData.Id = this.serviceId;
+      //   this.initDatas();
+      // } else {
+      //   this.formData.Id = 0;
+      // }
     },
     methods: {
+      initPage(item){
+        this.formData.SupplierId   = parseInt(item.SupplierId)
+        this.formData.SupplierName = item.SupplierName
+        this.formData.SumScore     = item.Score
+        this.formData.SumScore1    = item.Score1
+        this.formData.SumScore2    = item.Score2
+        this.formData.SumScore3    = item.Score3
+        this.formData.SumScore4    = item.Score4
+        this.formData.Conclusion   = item.Evaluate
+      },
       initDatas() {
         if(this.formData.Id) {
           api.getEntity(this.formData.Id, this.$axios).then(res => {
@@ -190,14 +209,11 @@
       saveEntity() {
         this.$refs['EntityForm'].validate((valid) => {
           if (valid) {
-            //this.formData.WellNo = this.$refs.selectWellNo.selectedLabel + '';
-
-            if (!this.formData.Id) {
+            if (this.operate == 'add') {
               this.addEntity();
             } else {
               this.updateEntity();
             }
-
           } else {
             return false
           }
@@ -205,9 +221,11 @@
       },
 
       addEntity() {
+        this.formData.Conclusion   = parseInt( this.formData.Conclusion ) 
         api.addEntity(this.formData, this.$axios).then(res => {
           if (res.data.code === 0) {
             //保存成功后,初始化数据,变成修改
+            this.operate = 'edit'
             this.formData.Id = res.data.item;
             this.initDatas();
             this.$message({

+ 74 - 93
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-goods-year/index.vue

@@ -12,10 +12,8 @@
           <i class="icon icon-table2"></i> 合同表
         </span>
         <span style="float: right;">
-          <router-link :to="'/oilcontract/contract-goods-year/add/operation'">
-            <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
-          </router-link>
           <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">导入</el-button>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="exportExcel">导出</el-button>
         </span>
         <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
           <el-form-item label="上报时间">
@@ -34,44 +32,26 @@
           </el-form-item>
         </el-form>
       </div>
-      <el-table size="mini" :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
+      <el-table id="rebateSetTable" size="mini" :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
         <el-table-column label="操作" header-align="center" width="100" align="center" fixed>
-          <template slot-scope="scope">
-            <router-link :to="'/oilsupplier/oilcontract/' + scope.row.Id + '/operation'">
-              <el-button type="text" title="编辑" size="small" icon="el-icon-edit"></el-button>
-            </router-link>
-
-            <el-popover placement="top" title="提示" v-model="scope.row.deleteConfirmFlag">
-              <el-alert
-                title=""
-                description="确认要删除吗?"
-                type="warning"
-                :closable="false">
-              </el-alert>
-              <br/>
-              <div style="text-align: right; margin: 0">
-                <el-button type="primary" size="mini" @click="deleteEntity(scope.row)">删除</el-button>
-              </div>
-              <el-button slot="reference" type="text" title="删除" style="margin-left:3px" size="small" @click="scope.row.deleteConfirmFlag = true">
-                <i class="el-icon-delete"></i>
-              </el-button>
-            </el-popover>
-          </template>
+            <template slot-scope="scope">
+                <el-button type="text" title="生成" size="small" icon="el-icon-edit" @click="onNavigateScore(scope.row)">生成</el-button>
+            </template>
         </el-table-column>
 
         <el-table-column prop="SupplierName" header-align="center" label="供应商名称"></el-table-column>
-        <el-table-column prop="ContractNo" header-align="center" label="评价得分(100分)" width="120"></el-table-column>
+        <el-table-column prop="Score" header-align="center" label="评价得分(100分)" width="120"></el-table-column>
         <el-table-column label="评价内容及得分" header-align="center">
-          <el-table-column prop="ProjectPlace" header-align="center" label="产品质量(30分)" width="120"></el-table-column>
-          <el-table-column prop="ProjectOwner" header-align="center" label="合同履约(20分)" width="120"></el-table-column>
-          <el-table-column prop="Telephone" header-align="center" label="售后服务(15分)" width="120"></el-table-column>
-          <el-table-column prop="ProjectType" header-align="center" label="诚信经营(15分)" width="120"></el-table-column>
-          <el-table-column prop="ProjectType" header-align="center" label="协同响应(20分)" width="120"></el-table-column>
+          <el-table-column prop="Score5" header-align="center" label="产品质量(30分)" width="120"></el-table-column>
+          <el-table-column prop="Score6" header-align="center" label="合同履约(20分)" width="120"></el-table-column>
+          <el-table-column prop="Score7" header-align="center" label="售后服务(15分)" width="120"></el-table-column>
+          <el-table-column prop="Score8" header-align="center" label="诚信经营(15分)" width="120"></el-table-column>
+          <el-table-column prop="Score9" header-align="center" label="协同响应(20分)" width="120"></el-table-column>
         </el-table-column>
-        <el-table-column label="评价结果" header-align="center">
-          <el-table-column prop="ProjectPlace" header-align="center" label="优秀" width="80"></el-table-column>
-          <el-table-column prop="ProjectOwner" header-align="center" label="合格" width="80"></el-table-column>
-          <el-table-column prop="Telephone" header-align="center" label="不合格" width="80"></el-table-column>
+        <el-table-column prop="Evaluate" label="评价结果" header-align="center" >
+          <template slot-scope="scope">
+            {{evaluateFun(scope.row.Evaluate)}}
+          </template>
         </el-table-column>
       </el-table>
       <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
@@ -90,18 +70,6 @@
             </el-form-item>
           </el-col>
 
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.Id" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="供应商ID">
-              <el-input size="mini" v-model="searchForm.SupplierId" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
           <el-col :span="12">
             <el-form-item label="企业名称">
               <el-input size="mini" v-model="searchForm.SupplierName" style="width:100%" placeholder="请输入"></el-input>
@@ -252,47 +220,6 @@
             </el-form-item>
           </el-col>
 
-          <el-col :span="12">
-            <el-form-item label="删除状态,0正常,1已删除">
-              <el-input size="mini" v-model="searchForm.IsDelete" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateOn" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateUserId" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateBy" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedOn" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedUserId" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedBy" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
 
         </el-row>
       </el-form>
@@ -306,7 +233,9 @@
 </template>
 <script>
   import { mapGetters } from 'vuex';
-  import api from '@/api/oilcontract/contract';
+  import api from '@/api/oilcontract/contractSumScore';
+  import FileSaver from 'file-saver'
+  import XLSX from 'xlsx'
 
   export default {
     computed: {
@@ -314,6 +243,26 @@
         authUser: 'authUser'
       })
     },
+    computed:{
+      evaluateFun:function(){
+        return function(item){
+          var index = Number(item)
+          switch(index){
+            case 1:
+              return '优秀'
+            break;
+            case 2:
+              return '合格'
+            break;
+            case 3:
+              return '不合格'
+            break;
+            default:
+              return '--'
+          }
+        }
+      }
+    },
     name: 'oilcontract',
 
     data() {
@@ -330,8 +279,8 @@
           Order: '',
           Prop: ''
         },
-        //查询时间
-        CreateOn: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()],
+        //查询时间new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()
+        CreateOn: [],
         //查询项
         searchFormReset: {},
         searchForm: {
@@ -451,7 +400,7 @@
         //查询条件
         Object.assign(params, this.searchForm)
         //访问接口
-        api.getList(myCreateOn.join(','), params, this.$axios).then(res => {
+        api.GetComputeList(myCreateOn.join(','), params, this.$axios).then(res => {
           this.entityList = res.data.items
           this.currentItemCount = res.data.currentItemCount
         }).catch(err => {
@@ -539,7 +488,39 @@
           return val.substring(0, 10)
         }
       },
-
+      //跳转评价
+      onNavigateScore(item){
+        console.log('跳转',item)
+        this.$router.push({
+          path:'/oilcontract/contract-goods-year/' + 'add' + '/operation',
+          query:{
+            item:item
+          }
+        })
+      },
+      exportExcel () {
+        /* generate workbook object from table */
+        let wb = XLSX.utils.table_to_book(
+          document.querySelector('#rebateSetTable')
+        )
+        /* get binary string as output */
+        let wbout = XLSX.write(wb, {
+          bookType: 'xlsx',
+          bookSST: true,
+          type: 'array'
+        })
+        try {
+          FileSaver.saveAs(
+            new Blob([wbout], {
+              type: 'application/octet-stream'
+            }),
+            'SupplierUsedName.xlsx'
+          )
+        } catch (e) {
+          if (typeof console !== 'undefined') console.log(e, wbout)
+        }
+        return wbout
+      },
       formatDateTime(date) {
         var y = date.getFullYear();
         var m = date.getMonth() + 1;

+ 96 - 144
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-goods/index.vue

@@ -15,7 +15,7 @@
           <!-- <router-link :to="'/oilcontract/contract-basis/add/operation'">
             <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
           </router-link> -->
-          <!-- <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">导入</el-button> -->
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="exportExcel">导出</el-button>
         </span>
         <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
           <el-form-item label="上报时间">
@@ -34,7 +34,7 @@
           </el-form-item>
         </el-form>
       </div>
-      <el-table size="mini" :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
+      <el-table size="mini" id="rebateSetTable" :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
         <el-table-column label="操作" min-width="160" align="center" fixed>
           <template slot-scope="scope">
             <el-button type="text" title="编辑" size="small" icon="el-icon-edit" @click="onNavigateEvaluate(scope.row)">编辑</el-button>
@@ -56,7 +56,11 @@
         </el-table-column>
 
         <el-table-column v-for="column in tableColumns" :key="column.Id"
-                         v-if="column.prop != 'CreateOn'" :prop="column.prop" sortable min-width="100" :label="column.label" align="center" show-overflow-tooltip></el-table-column>
+                         v-if="column.prop != 'CreateOn'" :prop="column.prop" sortable min-width="100" :label="column.label" align="center" show-overflow-tooltip>
+                         <template slot-scope="scope" >
+                           <div>{{columnFun(scope.row[column.prop],column.prop) }}</div>
+                         </template>
+        </el-table-column>
 
         <!--<el-table-column prop="CreateOn" sortable min-width="150" label="生成时间" align="center" show-overflow-tooltip>
           <template slot-scope="scope">
@@ -242,42 +246,6 @@
             </el-form-item>
           </el-col>
 
-          <!-- <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateOn" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateUserId" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateBy" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedOn" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col> -->
-
-          <!-- <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedUserId" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedBy" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col> -->
-
         </el-row>
       </el-form>
       <span slot="footer" class="dialog-footer">
@@ -291,6 +259,8 @@
 <script>
   import { mapGetters } from 'vuex';
   import api from '@/api/oilcontract/contract';
+  import FileSaver from 'file-saver'
+  import XLSX from 'xlsx'
 
   export default {
     computed: {
@@ -298,6 +268,53 @@
         authUser: 'authUser'
       })
     },
+    computed:{
+      columnFun:function(){
+        return function(item,index){
+          if(index == 'Status'){
+            var index = Number(item)
+            switch(index){
+              case 0:
+                return '初始'
+              break;
+              case 1:
+                return '待二级初审'
+              break;
+              case 2:
+                return '待二级复审'
+              break;
+              case 3:
+                return '专业科室接收'
+              break;
+              case 4:
+                return '待专业科室审核'
+              break;
+              case 5:
+                return '待集中评审'
+              break;
+              case 6:
+                return '待交费'
+              break;
+              case 7:
+                return '待入库'
+              break;
+              case 8:
+                return '完成'
+              break;
+              case 9:
+                return '审核未通过'
+              break;
+              default:
+                return '--'
+              break;
+            }
+          }else{
+            return item;
+          }
+
+        }
+      }
+    },
     name: 'oilcontract',
 
     data() {
@@ -358,18 +375,18 @@
         tableColumns: [
 
           {
-            prop: "Id",
-            label: '',
+            prop: "Status",
+            label: '状态',
             width: 100,
             sort: true
           },
 
-          {
-            prop: "SupplierId",
-            label: '评价单位',
-            width: 100,
-            sort: true
-          },
+          // {
+          //   prop: "SupplierId",
+          //   label: '评价单位',
+          //   width: 100,
+          //   sort: true
+          // },
 
           {
             prop: "SupplierName",
@@ -420,12 +437,12 @@
             sort: true
           },
 
-          {
-            prop: "ContractMode",
-            label: '合同模式',
-            width: 100,
-            sort: true
-          },
+          // {
+          //   prop: "ContractMode",
+          //   label: '合同模式',
+          //   width: 100,
+          //   sort: true
+          // },
 
           {
             prop: "Amount",
@@ -455,96 +472,8 @@
             sort: true
           },
 
-          {
-            prop: "ConstructionUnit",
-            label: '建设单位',
-            width: 100,
-            sort: true
-          },
 
-          {
-            prop: "ConstructionOwner",
-            label: '建设负责人',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "ConstructionTelphone",
-            label: '手机号',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "BuildUnit",
-            label: '施工单位',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "BuildOwner",
-            label: '施工负责人',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "BuildTelphone",
-            label: '手机号',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "SuperviseUnit",
-            label: '监理单位',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "SuperviseOwner",
-            label: '监理负责人',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "SuperviseTelphone",
-            label: '手机号',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "QualityUnit",
-            label: '质量监督单位',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "QualityOwner",
-            label: '质量监督负责人',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "QualityTelphone",
-            label: '手机号',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "Remark",
-            label: '备注',
-            width: 100,
-            sort: true
-          }]
+          ]
       }
     },
     created() {
@@ -555,11 +484,12 @@
       //this.getDictOptions()
     },
     methods: {
+
       //跳转评价
       onNavigateEvaluate(item){
         console.log('跳转',item)
         this.$router.push({
-          path:'/oilcontract/contract-goods/' + item.Id + '/evaluate',
+          path:'/oilcontract/contract-basis/' + item.Id + '/evaluate',
           query:{
             item:item,
             type:2,
@@ -680,7 +610,29 @@
           return val.substring(0, 10)
         }
       },
-
+      exportExcel () {
+        /* generate workbook object from table */
+        let wb = XLSX.utils.table_to_book(
+          document.querySelector('#rebateSetTable')
+        )
+        /* get binary string as output */
+        let wbout = XLSX.write(wb, {
+          bookType: 'xlsx',
+          bookSST: true,
+          type: 'array'
+        })
+        try {
+          FileSaver.saveAs(
+            new Blob([wbout], {
+              type: 'application/octet-stream'
+            }),
+            'SupplierUsedName.xlsx'
+          )
+        } catch (e) {
+          if (typeof console !== 'undefined') console.log(e, wbout)
+        }
+        return wbout
+      },
       formatDateTime(date) {
         var y = date.getFullYear();
         var m = date.getMonth() + 1;

+ 260 - 0
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-service-year/_opera/baselist.vue

@@ -0,0 +1,260 @@
+<template>
+  <div>
+    <el-table highlight-current-row :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
+      <el-table-column
+        property="SequenceNo"
+        label="序号"
+        header-align="center"
+        align="center"
+        width="80">
+      </el-table-column>
+      <el-table-column
+        property="Content"
+        header-align="center"
+        label="评价项目">
+      </el-table-column>
+      <el-table-column
+        property="Result"
+        label="是否满足"
+        header-align="center"
+        align="center"
+        width="100">
+        <template slot-scope="scope">
+          <el-button size="mini" type="success" v-if="scope.row.Result==1">是</el-button>
+          <el-button size="mini" type="danger" v-else>否</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+                   :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+    </el-pagination>
+  </div>
+</template>
+<script>
+  import { mapGetters } from 'vuex';
+  import api from '@/api/oilcontract/contractEvaluationItems';
+
+  export default {
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    name: 'oilcontractevaluationitems',
+
+    data() {
+      return {
+        dialogVisible: false,
+        //列表数据
+        entityList: [],
+        //分页参数
+        size: 10,
+        currentPage: 1,
+        currentItemCount: 0,
+        //列表排序
+        Column: {
+          Order: '',
+          Prop: ''
+        },
+        //查询时间
+        CreateOn: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()],
+        //查询项
+        searchFormReset: {},
+        searchForm: {
+          Id: '',
+          ContractId: '',
+          ParentId: '',
+          SequenceNo: '',
+          Content: '',
+          NormalScore: '',
+          Score: '',
+          LevelCode: '',
+          Remark: '',
+          ModifiedOn: '',
+          ModifiedUserId: '',
+          ModifiedBy: '',
+
+        }
+      }
+    },
+    created() {
+      //查询条件初始值备份
+      Object.assign(this.searchFormReset, this.searchForm);
+      //查询列表
+      //this.initDatas();
+      //this.getDictOptions()
+
+      this.entityList = [
+        {
+          SequenceNo: '1',
+          Content: '法人资格和相应的资质证明文件应满足要求且持续有效',
+          Result: 1,
+        },
+        {
+          SequenceNo: '2',
+          Content: '国家有关部门、行业颁发的生产经营、安全生产许可证应满足要求且持续有效',
+          Result: 1,
+        },
+        {
+          SequenceNo: '3',
+          Content: '质量、职业健康与安全、环境管理体系应通过认证且持续有效',
+          Result: 1,
+        },
+        {
+          SequenceNo: '4',
+            Content: '近一年内未发生较大及以上质量、生产安全事故和严重环境污染事件',
+          Result: 1,
+        },
+        {
+          SequenceNo: '5',
+            Content: '应继续保持具有与其资质等级相适应的生产经营能力、良好业绩及社会信',
+          Result: 1,
+        },
+        {
+          SequenceNo: '6',
+            Content: '未发生违规分包和违法转包,允许其他企业挂靠、出借资质证明文件及有关资格证书的情况',
+          Result: 1,
+        },
+        {
+          SequenceNo: '7',
+            Content: '未发生严重扰乱集团公司工程建设市场秩序、提供虚假材料和信息的行为',
+          Result: 1,
+        },
+        {
+          SequenceNo: '8',
+            Content: '承包商能在规定时间内向评价单位提交基本条件评价所需相关证明文件,办理评价相关手续',
+          Result: 1,
+        }]
+    },
+    methods: {
+      initDatas() {
+        //分页及列表条件
+        let params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          Order: this.Column.Order,
+          Prop: this.Column.Prop,
+        }
+        let myCreateOn = []
+        // 解析时间
+        if (this.CreateOn.length == 2) {
+          this.CreateOn[1].setHours(23)
+          this.CreateOn[1].setMinutes(59)
+          this.CreateOn[1].setSeconds(59)
+          myCreateOn.push(this.formatDateTime(this.CreateOn[0]))
+          myCreateOn.push(this.formatDateTime(this.CreateOn[1]))
+        }
+        //查询条件
+        Object.assign(params, this.searchForm)
+        //访问接口
+        api.getList(myCreateOn.join(','), params, this.$axios).then(res => {
+          this.entityList = res.data.items
+          this.currentItemCount = res.data.currentItemCount
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      getDictOptions() {
+        api.getDictList(this.$axios).then(res => {
+          //this.dictOptions.customerList = res.data.items['customerList']
+          //this.dictOptions.projectList = res.data.items['projectList']
+
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
+      //列表排序功能
+      orderby(column) {
+        if (column.order == 'ascending') {
+          this.Column.Order = 'asc'
+        } else if (column.order == 'descending') {
+          this.Column.Order = 'desc'
+        }
+        this.Column.Prop = column.prop
+        this.initDatas()
+      },
+      clearSearch() {
+        Object.assign(this.searchForm, this.searchFormReset);
+        //this.searchForm = this.searchFormReset;
+        this.CreateOn = ''
+        this.initDatas()
+      },
+      handleSearch() {
+        this.currentPage = 1;
+        this.dialogVisible = false;
+        this.initDatas();
+      },
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initDatas()
+      },
+      handleSizeChange(value) {
+        this.size = value
+        this.currentPage = 1
+        this.initDatas()
+      },
+      deleteEntity(row) {
+        row.deleteConfirmFlag = false;
+        api.deleteEntity(row.Id, this.$axios).then(res => {
+          if (res.data.code === 0) {
+            this.initDatas();
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            });
+
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            });
+          }
+        }).catch(err => {
+          console.error(err)
+        });
+      },
+
+      jstimehandle(val) {
+        if (val === '') {
+          return '----'
+        } else if (val === '0001-01-01T08:00:00+08:00') {
+          return '----'
+        } else if (val === '5000-01-01T23:59:59+08:00') {
+          return '永久'
+        } else {
+          val = val.replace('T', ' ')
+          return val.substring(0, 10)
+        }
+      },
+
+      formatDateTime(date) {
+        var y = date.getFullYear();
+        var m = date.getMonth() + 1;
+        m = m < 10 ? ('0' + m) : m;
+        var d = date.getDate();
+        d = d < 10 ? ('0' + d) : d;
+        var h = date.getHours();
+        var minute = date.getMinutes();
+        minute = minute < 10 ? ('0' + minute) : minute;
+        return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss">
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+</style>

+ 296 - 0
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-service-year/_opera/evaluationlist.vue

@@ -0,0 +1,296 @@
+<template>
+  <div>
+    <el-table highlight-current-row :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
+      <el-table-column
+        property="SequenceNo"
+        label="序号"
+        header-align="center"
+        width="80">
+        <template slot-scope="scope">
+          <span v-if="scope.row.type=='SUM'" style="font-weight: bold">{{scope.row.SequenceNo}}</span>
+          <span v-else>{{scope.row.SequenceNo}}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        property="Content"
+        header-align="center"
+        label="评价项目及标准分值">
+        <template slot-scope="scope">
+          <span v-if="scope.row.type=='SUM'" style="font-weight: bold">{{scope.row.Content}}</span>
+          <span v-else>{{scope.row.Content}}</span>
+        </template>
+      </el-table-column>
+
+      <el-table-column
+        property="Score"
+        label="评价得分"
+        header-align="center"
+        width="120">
+        <template slot-scope="scope">
+          <span v-if="scope.row.type=='SUM'" style="font-weight: bold">{{scope.row.Score}}</span>
+          <el-input v-else size="mini" placeholder="实得分数" v-model="scope.row.Score"></el-input>
+        </template>
+      </el-table-column>
+
+      <el-table-column
+        property="Reason"
+        label="备  注"
+        header-align="center">
+      </el-table-column>
+    </el-table>
+    <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+                   :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
+    </el-pagination>
+  </div>
+</template>
+<script>
+  import { mapGetters } from 'vuex';
+  import api from '@/api/oilcontract/contractEvaluationItems';
+
+  export default {
+    computed: {
+      ...mapGetters({
+        authUser: 'authUser'
+      })
+    },
+    name: 'oilcontractevaluationitems',
+
+    data() {
+      return {
+        dialogVisible: false,
+        //列表数据
+        entityList: [],
+        //分页参数
+        size: 10,
+        currentPage: 1,
+        currentItemCount: 0,
+        //列表排序
+        Column: {
+          Order: '',
+          Prop: ''
+        },
+        //查询时间
+        CreateOn: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()],
+        //查询项
+        searchFormReset: {},
+        searchForm: {
+          Id: '',
+          ContractId: '',
+          ParentId: '',
+          SequenceNo: '',
+          Content: '',
+          NormalScore: '',
+          Score: '',
+          LevelCode: '',
+          Remark: '',
+          ModifiedOn: '',
+          ModifiedUserId: '',
+          ModifiedBy: '',
+
+        }
+      }
+    },
+    created() {
+      //查询条件初始值备份
+      Object.assign(this.searchFormReset, this.searchForm);
+      //查询列表
+      //this.initDatas();
+      //this.getDictOptions()
+
+      this.entityList = [
+        {
+          SequenceNo: '1',
+          type: 'ITEM',
+          Content: '项目组织实施(10分)',
+          NormalScore: 10,
+          Score: 0
+        },
+        {
+          SequenceNo: '2',
+          type: 'ITEM',
+          Content: '质量管理(20分)',
+          NormalScore: 20,
+          Score: 0
+        },
+        {
+          SequenceNo: '3',
+          type: 'ITEM',
+          Content: '职业健康安全与环境管理(20分)',
+          NormalScore: 20,
+          Score: 0
+        },
+        {
+          SequenceNo: '4',
+          type: 'ITEM',
+          Content: '成本管理(5分)',
+          NormalScore: 5,
+          Score: 0
+        },
+        {
+          SequenceNo: '5',
+          type: 'ITEM',
+          Content: '进度管理(10分)',
+          NormalScore: 10,
+          Score: 0
+        },
+        {
+          SequenceNo: '6',
+          type: 'ITEM',
+          Content: '分包管理(15分)',
+          NormalScore: 15,
+          Score: 0
+        },
+        {
+          SequenceNo: '7',
+          type: 'ITEM',
+          Content: '信息资料管理(10分)',
+          NormalScore: 10,
+          Score: 0
+        },
+        {
+          SequenceNo: '8',
+          type: 'ITEM',
+          Content: '诚信履约(10分)',
+          NormalScore: 10,
+          Score: 0
+        },
+        {
+          SequenceNo: '9',
+          type: 'SUM',
+          Content: '总分',
+          NormalScore: 100,
+          Score: 0
+        }]
+    },
+    methods: {
+      initDatas() {
+        //分页及列表条件
+        let params = {
+          _currentPage: this.currentPage,
+          _size: this.size,
+          Order: this.Column.Order,
+          Prop: this.Column.Prop,
+        }
+        let myCreateOn = []
+        // 解析时间
+        if (this.CreateOn.length == 2) {
+          this.CreateOn[1].setHours(23)
+          this.CreateOn[1].setMinutes(59)
+          this.CreateOn[1].setSeconds(59)
+          myCreateOn.push(this.formatDateTime(this.CreateOn[0]))
+          myCreateOn.push(this.formatDateTime(this.CreateOn[1]))
+        }
+        //查询条件
+        Object.assign(params, this.searchForm)
+        //访问接口
+        api.getList(myCreateOn.join(','), params, this.$axios).then(res => {
+          this.entityList = res.data.items
+          this.currentItemCount = res.data.currentItemCount
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      getDictOptions() {
+        api.getDictList(this.$axios).then(res => {
+          //this.dictOptions.customerList = res.data.items['customerList']
+          //this.dictOptions.projectList = res.data.items['projectList']
+
+        }).catch(err => {
+          console.error(err)
+        })
+      },
+
+      searchCommand(command) {
+        if (command == 'search') {
+          this.dialogVisible = true
+        } else if (command == 'clear') {
+          this.clearSearch()
+        }
+      },
+      //列表排序功能
+      orderby(column) {
+        if (column.order == 'ascending') {
+          this.Column.Order = 'asc'
+        } else if (column.order == 'descending') {
+          this.Column.Order = 'desc'
+        }
+        this.Column.Prop = column.prop
+        this.initDatas()
+      },
+      clearSearch() {
+        Object.assign(this.searchForm, this.searchFormReset);
+        //this.searchForm = this.searchFormReset;
+        this.CreateOn = ''
+        this.initDatas()
+      },
+      handleSearch() {
+        this.currentPage = 1;
+        this.dialogVisible = false;
+        this.initDatas();
+      },
+      handleCurrentChange(value) {
+        this.currentPage = value
+        this.initDatas()
+      },
+      handleSizeChange(value) {
+        this.size = value
+        this.currentPage = 1
+        this.initDatas()
+      },
+      deleteEntity(row) {
+        row.deleteConfirmFlag = false;
+        api.deleteEntity(row.Id, this.$axios).then(res => {
+          if (res.data.code === 0) {
+            this.initDatas();
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            });
+
+          } else {
+            this.$message({
+              type: 'warning',
+              message: res.data.message
+            });
+          }
+        }).catch(err => {
+          console.error(err)
+        });
+      },
+
+      jstimehandle(val) {
+        if (val === '') {
+          return '----'
+        } else if (val === '0001-01-01T08:00:00+08:00') {
+          return '----'
+        } else if (val === '5000-01-01T23:59:59+08:00') {
+          return '永久'
+        } else {
+          val = val.replace('T', ' ')
+          return val.substring(0, 10)
+        }
+      },
+
+      formatDateTime(date) {
+        var y = date.getFullYear();
+        var m = date.getMonth() + 1;
+        m = m < 10 ? ('0' + m) : m;
+        var d = date.getDate();
+        d = d < 10 ? ('0' + d) : d;
+        var h = date.getHours();
+        var minute = date.getMinutes();
+        minute = minute < 10 ? ('0' + minute) : minute;
+        return y + '-' + m + '-' + d + ' ' + h + ':' + minute;
+      }
+    }
+  }
+
+</script>
+
+<style lang="scss">
+  .el-pagination {
+    margin: 1rem 0 2rem;
+    text-align: right;
+  }
+</style>

+ 134 - 110
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-service-year/_opera/operation.vue

@@ -4,84 +4,104 @@
   <div>
     <el-breadcrumb class="heading">
       <el-breadcrumb-item :to="{ path: '/' }">平台首页</el-breadcrumb-item>
-      <el-breadcrumb-item :to="{ path: '/oilcontract/contract-service-year' }">合同表</el-breadcrumb-item>
+      <el-breadcrumb-item :to="{ path: '/oilsupplier/oilcontract' }">合同表</el-breadcrumb-item>
       <el-breadcrumb-item>编辑</el-breadcrumb-item>
     </el-breadcrumb>
 
     <el-card class="box-card" style="mini-height: calc(100vh - 113px);">
       <div slot="header">
         <span>
-          <i class="icon icon-table2"></i> 编辑-服务商年度评价信息
+          <i class="icon icon-table2"></i> 编辑
         </span>
         <span style="float: right;">
-                <el-button type="primary" size="mini" @click="saveEntity">保存</el-button>
-                <router-link :to="'/oilcontract/contract-service-year'">
-                  <el-button type="primary" size="mini" style="margin-left: 8px">返回</el-button>
-                </router-link>
-              </span>
+          <el-button type="primary" size="mini"  @click="saveEntity">保存</el-button>
+        </span>
       </div>
-      <el-form label-width="110px" ref="EntityForm" :model="formData">
-        <el-row>
-          <el-col :span="8">
-            <el-form-item label="服务商名称">
-              <el-select ref="SupplierSelect" v-model="formData.SupplierId" placeholder="请选择" style="width: 100%" @change="supplierChangeHandler">
-                <el-option key="1" label="天津油气公司" value="1"></el-option>
-                <el-option key="2" label="北京管道公司" value="2"></el-option>
-                <el-option key="3" label="上海监控公司" value="3"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
+      <el-tabs v-model="activeName" style="margin-top: -10px">
+        <el-tab-pane label="评价信息" name="1">
+          <el-card class="box-card" style="mini-height: calc(100vh - 113px);">
+            <el-form label-width="110px" ref="EntityForm" :model="formData">
+              <el-row>
+                <el-col :span="8">
+                  <el-form-item label="服务商名称">
+                    <el-input disabled="disabled" v-model="formData.SupplierName"  style="width: 100%"></el-input>
+                  </el-form-item>
+                </el-col>
 
-          <el-col :span="8">
-            <el-form-item label="评价得分">
-              <el-input v-model="formData.ProjectName" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
+                <el-col :span="8">
+                  <el-form-item label="评价得分">
+                    <el-input-number v-model="formData.SumScore" placeholder="请输入"  style="width: 100%" />
+                  </el-form-item>
+                </el-col>
 
-          <el-col :span="8">
-            <el-form-item label="项目管理(40分)">
-              <el-input v-model="formData.ContractNo" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
+                <el-col :span="8">
+                  <el-form-item label="项目管理(40分)">
+                    <el-input-number v-model="formData.SumScore1" placeholder="请输入"  style="width: 100%" />
+                  </el-form-item>
+                </el-col>
 
-          <el-col :span="8">
-            <el-form-item label="HSE管理(30分)">
-              <el-input v-model="formData.ProjectPlace" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
+                <el-col :span="8">
+                  <el-form-item label="HSE管理(30分)">
+                    <el-input-number v-model="formData.SumScore2" placeholder="请输入"  style="width: 100%" />
+                  </el-form-item>
+                </el-col>
 
-          <el-col :span="8">
-            <el-form-item label="合同履行(15分)">
-              <el-input v-model="formData.ProjectOwner" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
+                <el-col :span="8">
+                  <el-form-item label="合同履行(15分)">
+                    <el-input-number v-model="formData.SumScore3" placeholder="请输入"  style="width: 100%" />
+                  </el-form-item>
+                </el-col>
 
-          <el-col :span="8">
-            <el-form-item label="企业诚信(15分)">
-              <el-input v-model="formData.Telephone" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
+                <el-col :span="8">
+                  <el-form-item label="企业诚信(15分)">
+                    <el-input-number v-model="formData.SumScore4" placeholder="请输入"  style="width: 100%" />
+                  </el-form-item>
+                </el-col>
 
-          <el-col :span="8">
-            <el-form-item label="评价结果">
-              <el-select v-model="formData.ProjectType" placeholder="请选择" style="width: 100%">
-                <el-option key="1" label="优秀" value="1"></el-option>
-                <el-option key="2" label="合格" value="2"></el-option>
-                <el-option key="3" label="不合格" value="3"></el-option>
-              </el-select>
-            </el-form-item>
-          </el-col>
+                <el-col :span="8">
+                  <el-form-item label="评价结果">
+                    <el-select v-model="formData.Conclusion" placeholder="请选择" style="width: 100%">
+                      <el-option key="1" label="优秀" value="1"></el-option>
+                      <el-option key="2" label="合格" value="2"></el-option>
+                      <el-option key="3" label="不合格" value="3"></el-option>
+                    </el-select>
+                  </el-form-item>
+                </el-col>
 
-          <el-col :span="24">
-            <el-form-item label="备注">
-              <el-input type="textarea" v-model="formData.Remark" placeholder="请输入"  style="width: 100%"></el-input>
-            </el-form-item>
-          </el-col>
-        </el-row>
-      </el-form>
+                <el-col :span="24">
+                  <el-form-item label="备注">
+                    <el-input type="textarea" v-model="formData.Remark" placeholder="请输入"  style="width: 100%"></el-input>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </el-form>
+          </el-card>
+        </el-tab-pane>
+        <el-tab-pane label="基本条件评价" name="2">
+          <base-list></base-list>
+        </el-tab-pane>
+        <el-tab-pane label="专业处室基本条件评价" name="3">
+          <base-list></base-list>
+        </el-tab-pane>
+        <el-tab-pane label="业绩评价" name="4">
+          <evaluation-list></evaluation-list>
+        </el-tab-pane>
+        <el-tab-pane label="专业处室业绩评价" name="5">
+          <evaluation-list></evaluation-list>
+        </el-tab-pane>
+        <el-tab-pane label="审批流程" name="6">
+          <el-card class="box-card mycard">
+            <div slot="header"
+                 class="clearfix">
+              <span>审批流程</span>
+            </div>
+            <!-- :entryinfo="entrydetail" -->
+            <wf-history ref="WfHistory" :entryinfo="entrydetail"></wf-history>
+          </el-card>
+        </el-tab-pane>
+      </el-tabs>
     </el-card>
 
-
   </div>
 </template>
 
@@ -89,7 +109,10 @@
   import {
     mapGetters
   } from 'vuex'
-  import api from '@/api/oilcontract/contract'
+  import api from '@/api/oilcontract/contractSumScore'
+  import evaluationList from './evaluationlist'
+  import baseList from './baselist'
+  import WfHistory from '@/components/workflow/wfhistory.vue'
   export default {
     computed: {
       ...mapGetters({
@@ -97,50 +120,35 @@
       })
     },
     name: 'oilcontractEdit',
+    components: {
+      evaluationList,
+      baseList,
+      WfHistory
+    },
 
     data() {
       return {
+        // 当前操作
+        operate:'add',   // add 新增 edit 编辑
+        // 工作流
+        entrydetail: {
+          process: '',
+          business: '',
+          instance: ''
+        },
         activeName: '1',
         serviceId: '',
         formData: {
           Id: '',
-          SupplierId: '1',
-          SupplierName: '',
-          ProjectName: '',
-          ContractNo: '',
-          ProjectPlace: '',
-          ProjectOwner: '',
-          Telephone: '',
-          ProjectType: '1',
-          ContractMode: '',
-          Amount: '',
-          ContractPeriod: '',
-          OpenDate: '',
-          PlanFinishDate: '',
-          ConstructionUnit: '',
-          ConstructionOwner: '',
-          ConstructionTelphone: '',
-          BuildUnit: '',
-          BuildOwner: '',
-          BuildTelphone: '',
-          SuperviseUnit: '',
-          SuperviseOwner: '',
-          SuperviseTelphone: '',
-          QualityUnit: '',
-          QualityOwner: '',
-          QualityTelphone: '',
-          Remark: '',
-          IsDelete: '',
-          CreateOn: '',
-          CreateUserId: '',
-          CreateBy: '',
-          ModifiedOn: '',
-          ModifiedUserId: '',
-          ModifiedBy: '',
-          //缺少
-          SubPackage: '',
-          ContractType: ''
-
+          SupplierId:'',
+          SupplierName:'',
+          SumScore :0,
+          SumScore1:0,
+          SumScore2:0,
+          SumScore3:0,
+          SumScore4:0,
+          Conclusion:1,
+          Note:''
         },
 
         //下拉选择项
@@ -150,17 +158,34 @@
       }
     },
     created() {
-      this.serviceId = this.$route.params.opera;
-      this.getDictOptions();
-      console.log(this.serviceId);
-      if(this.serviceId != 'add' && this.serviceId>0) {
-        this.formData.Id = this.serviceId;
-        this.initDatas();
-      } else {
-        this.formData.Id = 0;
+      console.log('接受操作',this.$route.params)
+      this.operate  = this.$route.params.opera;
+      if(this.operate == 'add'){  // 新增进入
+        this.initPage(this.$route.query.item)
+      }else{ // 编辑进入
+
       }
+      
+      // this.getDictOptions();
+      // console.log(this.serviceId);
+      // if(this.serviceId != 'add' && this.serviceId>0) {
+      //   this.formData.Id = this.serviceId;
+      //   this.initDatas();
+      // } else {
+      //   this.formData.Id = 0;
+      // }
     },
     methods: {
+      initPage(item){
+        this.formData.SupplierId   = parseInt(item.SupplierId)
+        this.formData.SupplierName = item.SupplierName
+        this.formData.SumScore     = item.Score
+        this.formData.SumScore1    = item.Score1
+        this.formData.SumScore2    = item.Score2
+        this.formData.SumScore3    = item.Score3
+        this.formData.SumScore4    = item.Score4
+        this.formData.Conclusion   = item.Evaluate
+      },
       initDatas() {
         if(this.formData.Id) {
           api.getEntity(this.formData.Id, this.$axios).then(res => {
@@ -184,14 +209,11 @@
       saveEntity() {
         this.$refs['EntityForm'].validate((valid) => {
           if (valid) {
-            //this.formData.WellNo = this.$refs.selectWellNo.selectedLabel + '';
-
-            if (!this.formData.Id) {
+            if (this.operate == 'add') {
               this.addEntity();
             } else {
               this.updateEntity();
             }
-
           } else {
             return false
           }
@@ -199,9 +221,11 @@
       },
 
       addEntity() {
+        this.formData.Conclusion   = parseInt( this.formData.Conclusion ) 
         api.addEntity(this.formData, this.$axios).then(res => {
           if (res.data.code === 0) {
             //保存成功后,初始化数据,变成修改
+            this.operate = 'edit'
             this.formData.Id = res.data.item;
             this.initDatas();
             this.$message({

+ 56 - 62
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-service-year/index.vue

@@ -13,6 +13,7 @@
         </span>
         <span style="float: right;">
           <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">导入</el-button>
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="exportExcel">导出</el-button>
         </span>
         <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
           <el-form-item label="上报时间">
@@ -31,7 +32,7 @@
           </el-form-item>
         </el-form>
       </div>
-      <el-table size="mini" :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
+      <el-table id="rebateSetTable" size="mini" :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
         <el-table-column label="操作" header-align="center" width="100" align="center" fixed>
           <template slot-scope="scope">
               <el-button type="text" title="生成" size="small" icon="el-icon-edit" @click="onNavigateScore(scope.row)">生成</el-button>
@@ -45,7 +46,11 @@
           <el-table-column prop="Score3" header-align="center" label="合同履行(15分)" width="120"></el-table-column>
           <el-table-column prop="Score4" header-align="center" label="企业诚信(15分)" width="120"></el-table-column>
         </el-table-column>
-        <el-table-column prop="Evaluate" label="评价结果" header-align="center" />
+        <el-table-column prop="Evaluate" label="评价结果" header-align="center" >
+          <template slot-scope="scope">
+            {{evaluateFun(scope.row.Evaluate)}}
+          </template>
+        </el-table-column>
       </el-table>
       <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
                      :page-sizes="[10, 15, 20, 25]" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="currentItemCount">
@@ -62,19 +67,6 @@
                               start-placeholder="生成日期" end-placeholder="结束日期"></el-date-picker>
             </el-form-item>
           </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.Id" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="供应商ID">
-              <el-input size="mini" v-model="searchForm.SupplierId" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
           <el-col :span="12">
             <el-form-item label="企业名称">
               <el-input size="mini" v-model="searchForm.SupplierName" style="width:100%" placeholder="请输入"></el-input>
@@ -225,48 +217,6 @@
             </el-form-item>
           </el-col>
 
-          <el-col :span="12">
-            <el-form-item label="删除状态,0正常,1已删除">
-              <el-input size="mini" v-model="searchForm.IsDelete" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateOn" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateUserId" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateBy" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedOn" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedUserId" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedBy" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
         </el-row>
       </el-form>
       <span slot="footer" class="dialog-footer">
@@ -280,13 +230,35 @@
 <script>
   import { mapGetters } from 'vuex';
   import api from '@/api/oilcontract/contractSumScore';
-
+  import FileSaver from 'file-saver'
+  import XLSX from 'xlsx'
+  
   export default {
     computed: {
       ...mapGetters({
         authUser: 'authUser'
       })
     },
+    computed:{
+      evaluateFun:function(){
+        return function(item){
+          var index = Number(item)
+          switch(index){
+            case 1:
+              return '优秀'
+            break;
+            case 2:
+              return '合格'
+            break;
+            case 3:
+              return '不合格'
+            break;
+            default:
+              return '--'
+          }
+        }
+      }
+    },
     name: 'oilcontract',
 
     data() {
@@ -303,8 +275,8 @@
           Order: '',
           Prop: ''
         },
-        //查询时间
-        CreateOn: [new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()],
+        //查询时间new Date(new Date().getTime() - 30 * 24 * 60 * 60 * 1000), new Date()
+        CreateOn: [],
         //查询项
         searchFormReset: {},
         searchForm: {
@@ -512,7 +484,29 @@
           return val.substring(0, 10)
         }
       },
-
+      exportExcel () {
+        /* generate workbook object from table */
+        let wb = XLSX.utils.table_to_book(
+          document.querySelector('#rebateSetTable')
+        )
+        /* get binary string as output */
+        let wbout = XLSX.write(wb, {
+          bookType: 'xlsx',
+          bookSST: true,
+          type: 'array'
+        })
+        try {
+          FileSaver.saveAs(
+            new Blob([wbout], {
+              type: 'application/octet-stream'
+            }),
+            'SupplierUsedName.xlsx'
+          )
+        } catch (e) {
+          if (typeof console !== 'undefined') console.log(e, wbout)
+        }
+        return wbout
+      },
       formatDateTime(date) {
         var y = date.getFullYear();
         var m = date.getMonth() + 1;
@@ -528,7 +522,7 @@
       onNavigateScore(item){
         console.log('跳转',item)
         this.$router.push({
-          path:'/oilcontract/contract-service-year-check/add/operation',
+          path:'/oilcontract/contract-service-year/' + 'add' + '/operation',
           query:{
             item:item
           }

+ 187 - 147
src/dashoo.cn/frontend_web/src/pages/oilcontract/contract-service/index.vue

@@ -15,8 +15,7 @@
           <!-- <router-link :to="'/oilcontract/contract-basis/add/operation'">
             <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">添加</el-button>
           </router-link> -->
-          <!-- <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;">导入</el-button> -->
-
+          <el-button type="primary" size="mini" style="margin-left:10px; margin-top: -4px;" @click="exportExcel">导出</el-button>
         </span>
         <el-form ref="form" :inline="true" style="float: right; margin-top: -10px">
           <el-form-item label="上报时间">
@@ -35,7 +34,7 @@
           </el-form-item>
         </el-form>
       </div>
-      <el-table size="mini" :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
+      <el-table size="mini" id="rebateSetTable" :data="entityList" border height="calc(100vh - 243px)" style="width: 100%" @sort-change="orderby">
         <el-table-column label="操作" min-width="160" align="center" fixed>
           <template slot-scope="scope">
             <el-button type="text" title="编辑" size="small" icon="el-icon-edit" @click="onNavigateEvaluate(scope.row)">编辑</el-button>
@@ -57,7 +56,11 @@
         </el-table-column>
 
         <el-table-column v-for="column in tableColumns" :key="column.Id"
-                         v-if="column.prop != 'CreateOn'" :prop="column.prop" sortable min-width="100" :label="column.label" align="center" show-overflow-tooltip></el-table-column>
+                         v-if="column.prop != 'CreateOn'" :prop="column.prop" sortable min-width="100" :label="column.label" align="center" show-overflow-tooltip>
+                         <template slot-scope="scope" >
+                           <div>{{columnFun(scope.row[column.prop],column.prop) }}</div>
+                         </template>
+        </el-table-column>
 
         <!--<el-table-column prop="CreateOn" sortable min-width="150" label="生成时间" align="center" show-overflow-tooltip>
           <template slot-scope="scope">
@@ -243,42 +246,6 @@
             </el-form-item>
           </el-col>
 
-          <!-- <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateOn" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateUserId" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.CreateBy" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedOn" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col> -->
-
-          <!-- <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedUserId" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col>
-
-          <el-col :span="12">
-            <el-form-item label="">
-              <el-input size="mini" v-model="searchForm.ModifiedBy" style="width:100%" placeholder="请输入"></el-input>
-            </el-form-item>
-          </el-col> -->
-
         </el-row>
       </el-form>
       <span slot="footer" class="dialog-footer">
@@ -292,6 +259,8 @@
 <script>
   import { mapGetters } from 'vuex';
   import api from '@/api/oilcontract/contract';
+  import FileSaver from 'file-saver'
+  import XLSX from 'xlsx'
 
   export default {
     computed: {
@@ -299,6 +268,53 @@
         authUser: 'authUser'
       })
     },
+    computed:{
+      columnFun:function(){
+        return function(item,index){
+          if(index == 'Status'){
+            var index = Number(item)
+            switch(index){
+              case 0:
+                return '初始'
+              break;
+              case 1:
+                return '待二级初审'
+              break;
+              case 2:
+                return '待二级复审'
+              break;
+              case 3:
+                return '专业科室接收'
+              break;
+              case 4:
+                return '待专业科室审核'
+              break;
+              case 5:
+                return '待集中评审'
+              break;
+              case 6:
+                return '待交费'
+              break;
+              case 7:
+                return '待入库'
+              break;
+              case 8:
+                return '完成'
+              break;
+              case 9:
+                return '审核未通过'
+              break;
+              default:
+                return '--'
+              break;
+            }
+          }else{
+            return item;
+          }
+
+        }
+      }
+    },
     name: 'oilcontract',
 
     data() {
@@ -359,18 +375,18 @@
         tableColumns: [
 
           {
-            prop: "Id",
-            label: '',
+            prop: "Status",
+            label: '状态',
             width: 100,
             sort: true
           },
 
-          {
-            prop: "SupplierId",
-            label: '评价单位',
-            width: 100,
-            sort: true
-          },
+          // {
+          //   prop: "SupplierId",
+          //   label: '评价单位',
+          //   width: 100,
+          //   sort: true
+          // },
 
           {
             prop: "SupplierName",
@@ -421,12 +437,12 @@
             sort: true
           },
 
-          {
-            prop: "ContractMode",
-            label: '合同模式',
-            width: 100,
-            sort: true
-          },
+          // {
+          //   prop: "ContractMode",
+          //   label: '合同模式',
+          //   width: 100,
+          //   sort: true
+          // },
 
           {
             prop: "Amount",
@@ -456,96 +472,97 @@
             sort: true
           },
 
-          {
-            prop: "ConstructionUnit",
-            label: '建设单位',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "ConstructionOwner",
-            label: '建设负责人',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "ConstructionTelphone",
-            label: '手机号',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "BuildUnit",
-            label: '施工单位',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "BuildOwner",
-            label: '施工负责人',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "BuildTelphone",
-            label: '手机号',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "SuperviseUnit",
-            label: '监理单位',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "SuperviseOwner",
-            label: '监理负责人',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "SuperviseTelphone",
-            label: '手机号',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "QualityUnit",
-            label: '质量监督单位',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "QualityOwner",
-            label: '质量监督负责人',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "QualityTelphone",
-            label: '手机号',
-            width: 100,
-            sort: true
-          },
-
-          {
-            prop: "Remark",
-            label: '备注',
-            width: 100,
-            sort: true
-          }]
+          // {
+          //   prop: "ConstructionUnit",
+          //   label: '建设单位',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "ConstructionOwner",
+          //   label: '建设负责人',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "ConstructionTelphone",
+          //   label: '手机号',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "BuildUnit",
+          //   label: '施工单位',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "BuildOwner",
+          //   label: '施工负责人',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "BuildTelphone",
+          //   label: '手机号',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "SuperviseUnit",
+          //   label: '监理单位',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "SuperviseOwner",
+          //   label: '监理负责人',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "SuperviseTelphone",
+          //   label: '手机号',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "QualityUnit",
+          //   label: '质量监督单位',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "QualityOwner",
+          //   label: '质量监督负责人',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "QualityTelphone",
+          //   label: '手机号',
+          //   width: 100,
+          //   sort: true
+          // },
+
+          // {
+          //   prop: "Remark",
+          //   label: '备注',
+          //   width: 100,
+          //   sort: true
+          // }
+          ]
       }
     },
     created() {
@@ -556,11 +573,12 @@
       //this.getDictOptions()
     },
     methods: {
+
       //跳转评价
       onNavigateEvaluate(item){
         console.log('跳转',item)
         this.$router.push({
-          path:'/oilcontract/contract-service/' + item.Id + '/evaluate',
+          path:'/oilcontract/contract-basis/' + item.Id + '/evaluate',
           query:{
             item:item,
             type:2,
@@ -579,7 +597,7 @@
         // <el-option label="物资类" value="01" key="01"></el-option>
         // <el-option label="基建类" value="02" key="02"></el-option>
         // <el-option label="技术服务" value="03" key="03"></el-option>
-        
+
         let myCreateOn = []
         // 解析时间
         if (this.CreateOn.length == 2) {
@@ -681,7 +699,29 @@
           return val.substring(0, 10)
         }
       },
-
+      exportExcel () {
+        /* generate workbook object from table */
+        let wb = XLSX.utils.table_to_book(
+          document.querySelector('#rebateSetTable')
+        )
+        /* get binary string as output */
+        let wbout = XLSX.write(wb, {
+          bookType: 'xlsx',
+          bookSST: true,
+          type: 'array'
+        })
+        try {
+          FileSaver.saveAs(
+            new Blob([wbout], {
+              type: 'application/octet-stream'
+            }),
+            'SupplierUsedName.xlsx'
+          )
+        } catch (e) {
+          if (typeof console !== 'undefined') console.log(e, wbout)
+        }
+        return wbout
+      },
       formatDateTime(date) {
         var y = date.getFullYear();
         var m = date.getMonth() + 1;