浏览代码

合同失败重新编辑提交

Sunny Feng 2 年之前
父节点
当前提交
c915afbe48

+ 15 - 1
src/api/contracts.js

xqd
@@ -1,5 +1,19 @@
 import request from '@/utils/request'
-
+
+// 获取合同详情
+export function contractsDetailApi(id) {
+  return request({
+    url: '/api/Contract/' + id,
+    method: 'get'
+  })
+}
+export function contractsExportApi(data) {
+  return request({
+    url: '/api/Contract/export',
+    method: 'post',
+    data: data
+  })
+}
 export function contractsPageApi(data) {
   return request({
     url: '/api/Contract/search',

+ 9 - 1
src/api/supplier.js

xqd
@@ -1,9 +1,17 @@
 import request from '@/utils/request'
 
+export function supplierExportApi(data) {
+  return request({
+    url: '/api/Contract/export',
+    method: 'post',
+    //responseType: 'blob', //设置响应的数据类型为一个包含二进制数据的 Blob 对象,必须设置!!!
+    data: data
+  })
+}
 export function getSupplierSearch(data) {
   return request({
     url:'/api/Supplier/search',
     method: 'post',
     data
   })
-}
+}

+ 256 - 0
src/components/upload/FileUpload.vue

xqd
@@ -0,0 +1,256 @@
+<template>
+  <div>
+    <el-upload
+      :action="action"
+      :file-list="fileList"
+      list-type="picture-card"
+      :limit="limit"
+      :accept="accept"
+      :class="hideUpload || uploading ? 'hideUpload' : ''"
+      :on-error="handleError"
+      :before-upload="beforeUpload"
+      :on-success="handleImageSuccess"
+      multiple
+    >
+
+      <i slot="default" class="el-icon-plus"></i>
+
+      <div slot="file" slot-scope="{ file }">
+        <div>
+
+        <img
+        class="el-upload-list__item-thumbnail"
+        :src="isPDF(file.url) ? pdf : file.url"
+        alt="" />
+
+        <span
+          v-if="file.status === 'success'"
+          class="el-upload-list__item-actions"
+        >
+          <span
+            v-if="preview"
+            class="el-upload-list__item-preview"
+            @click="handlePreview(file)"
+          >
+            <i class="el-icon-zoom-in"></i>
+          </span>
+          <span
+            v-if="download"
+            class="el-upload-list__item-delete"
+            @click="handleDownload(file)"
+          >
+            <i class="el-icon-download"></i>
+          </span>
+          <span
+            v-if="deleted"
+            class="el-upload-list__item-delete"
+            @click="handleRemove(file)"
+          >
+            <i class="el-icon-delete"></i>
+          </span>
+        </span>
+        <span
+          v-else
+          :class="[
+            uploading ? 'uploading' : '',
+            'el-upload-list__item-actions',
+          ]"
+        >
+          <i class="el-icon-loading" /><i style="font-size: 14px">上传中</i>
+        </span>
+
+        <!--<div style="word-break: break-all;
+         text-overflow: ellipsis;
+         display: -webkit-box;
+         -webkit-box-orient: vertical;
+         -webkit-line-clamp: 2;
+         overflow: hidden;">{{ file.name+'.'+file.ext }}</div>-->
+      </div>
+
+      </div>
+    </el-upload>
+
+    <el-dialog :visible.sync="previewVisible">
+      <img width="100%" :src="previewImgUrl" alt="" />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+
+import logo from '@/assets/pdf.png'
+
+export default {
+  name: 'FileUpload',
+  props: {
+    value: {
+      type: [String, Array],
+      default: ''
+    },
+    // 上传的地址
+    action: {
+      type: String,
+      default: 'https://ht.9026.com/api/File',
+    },
+    // 设置上传的请求头部
+    headers: {
+      type: Object,
+      default: () => {
+        return {}
+      },
+    },
+    // 上传文件大小限制, 默认 50M,单位M
+    size: {
+      type: [Number, String],
+      default: 50,
+    },
+    // 文件上传格式, 默认jpeg, png,jpg
+    accept: {
+      type: String,
+      default: 'image/jpeg,image/png',
+    },
+    // 是否显示删除操作按钮
+    deleted: {
+      type: Boolean,
+      default: true,
+    },
+    // 是否显示预览操作按钮
+    preview: {
+      type: Boolean,
+      default: true,
+    },
+    // 是否显示下载操作按钮
+    download: {
+      type: Boolean,
+      default: true,
+    },
+    // 上传文件个数限制,默认0 不限制
+    limit: {
+      type: [Number, String],
+      default: 0,
+    },
+  },
+  data() {
+    return {
+      fileList: [], // 默认文件列表
+      hideUpload: false, // 超出限制掩藏上传按钮
+      uploading: false, // 是否上传中,上传时隐藏上传按钮
+      previewImgUrl: '', // 预览图片地址
+      previewVisible: false, // 是否显示预览
+      pdf: logo,
+      files: [], // 文件url数组
+    }
+  },
+  watch:{
+    value(val, old) {
+      console.log('value=', val)
+      if(val){
+        this.files = val
+        this.fileList = [] // 先清空
+        for(var i=0; i<val.length;i++){
+          this.fileList.push({
+            url: val[i] // 转化
+          })
+        }
+        this.handleChange()
+      }
+    }
+  },
+  methods: {
+    emitInput() {
+      this.$emit('input', this.files)
+    },
+    // 判断是否pdf
+    isPDF(url) {
+      if(!url){
+        return false
+      }
+      const fileType = ['pdf']
+      const index = url.lastIndexOf('.')
+      const type = url.substr(index + 1)
+      return fileType.indexOf(type) > -1
+    },
+    // 文件上传成功
+    handleImageSuccess(res) {
+      if (res.code === 200) {
+        this.files.push(res.data.file)
+        this.emitInput()
+      } else {
+        this.$message.error('文件上传失败')
+      }
+    },
+    // 上传前文件大小判断
+    beforeUpload(file) {
+      const { size } = this
+      const overSize = size > 0 && file.size < 1024 * 1024 * size
+      if (!overSize) this.$message.error(`上传文件大小不能超过 ${size}MB!`)
+      this.uploading = overSize // 是否上传中
+      return overSize
+    },
+    // 上传出错返回
+    handleError(event, file, fileList) {
+      console.log(event, file, fileList, 'error')
+      this.$message.error('服务出错,上传失败!')
+      this.handleChange()
+    },
+    // 删除图片
+    async handleRemove(file) {
+      this.$confirm(`确认删除文件?`, '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning'
+      }).then(async () => {
+        const { fileList } = this
+        this.files = this.files.filter((v) => v !== file.url)
+        this.emitInput()
+      }).catch(()=>{})
+    },
+    // 图片预览
+    handlePreview(file) {
+      if(this.isPDF(file.url)){
+        window.open(file.url, "_blank");
+      } else {
+        this.previewImgUrl = file.url
+        this.previewVisible = true
+      }
+    },
+    handleChange(file, list) {
+      const { limit, fileList } = this
+      if (limit > 0 && fileList.length >= limit) this.hideUpload = true
+      else this.hideUpload = false
+      this.uploading = false
+    },
+    handleDownload(file) {
+      window.open(file.url, "_blank");
+      /*const a = document.createElement('a')
+      a.href = file.url
+      a.click() // 模拟点击事件,实现图片文件的同源下载
+      */
+    },
+  },
+}
+</script>
+
+<style>
+.hideUpload .el-upload--picture-card {
+  display: none;
+}
+.el-upload-list--picture-card .uploading.el-upload-list__item-actions {
+  opacity: 1;
+}
+/*添加、删除文件时去掉动画过渡*/
+.el-upload-list__item {
+  transition: none !important;
+}
+
+.el-upload-list--picture-card .el-upload-list__item-thumbnail {
+    width: 148px;
+    height: 148px;
+}
+.el-upload-list--picture-card .el-upload-list__item {
+    background-color: inherit;
+    border: none;
+    width: 148px;
+    height: 148px;
+}
+</style>

+ 2 - 0
src/main.js

xqd
@@ -17,8 +17,10 @@ import '@/icons' // icon
 import '@/permission' // permission control
 import TableWrapper from '@/components/TableWrapper/TableWrapper.vue'
 import Upload from '@/components/upload/upload.vue'
+import FileUpload from '@/components/upload/FileUpload.vue'
 Vue.component('TableWrapper', TableWrapper)
 Vue.component('Upload', Upload)
+Vue.component('FileUpload', FileUpload)
 /**
  * If you don't want to use mock-server
  * you want to use MockJs for mock api

+ 1 - 1
src/router/index.js

xqd
@@ -108,7 +108,7 @@ export const asyncRouterMap = [{
 			{
 				path: 'contracts/addcontract',
 				name: 'addcontract',
-				component: () => import('@/views/contracts/new_file'),
+				component: () => import('@/views/contracts/editcontract'),
 				meta: {
 					title: '新增合同',
 					roles: ['admin', 'salesman', 'supplier']

+ 4 - 3
src/utils/request.js

xqd xqd
@@ -78,7 +78,7 @@ service.interceptors.response.use(
     const res = response.data
     // if the custom code is not 20000, it is judged as an error.
 
-	console.log(response)
+	// console.log(response)
     // if (res.code !== 200) {
     //   Message({
     //     message: res.msg || 'Error',
@@ -104,9 +104,10 @@ service.interceptors.response.use(
     // } else {
     //   return res
     // }
-		if(res.type==="application/x-zip-compressed"){
+		if(res.type==="application/x-zip-compressed" ||
+       res.type==="application/vnd.ms-excel"){
 			return response
-		}else if(res.code !== 200){
+		}else if(res.code != 200){
 			Message({
 			    message: res.msg || 'Error',
 			    type: 'error',

+ 695 - 0
src/views/contracts/editcontract.vue

xqd
@@ -0,0 +1,695 @@
+<template>
+  <div class="app-container">
+    <el-card class="box-card" style="padding: 20px 10px; margin-bottom: 20px">
+      <div class="contract">
+        <div>
+          <p>合同名称</p>
+          <el-input
+            v-model="form.name"
+            placeholder="请输入合同名称"
+            style="width: 500px"
+            clearable
+            @input="getContractNo"
+          />
+        </div>
+        <div>
+          <p>合同编号</p>
+          <el-input
+            v-model="form.contractNo"
+            placeholder="请输入合同编号"
+            style="width: 500px"
+            disabled
+          />
+        </div>
+      </div>
+      <!-- 合同附件图片 -->
+      <div class="titlesa">
+        <span>合同附件</span>
+        <span style="color: #d05c39">*支持上传pdf、jpg/jpeg、png格式</span>
+      </div>
+      <div>
+        <div>
+          <FileUpload
+          v-model="form.pics"
+          accept=".jpg, .jpeg, .png, .pdf"
+          />
+        </div>
+      </div>
+      <!-- 发票附件图片 -->
+      <div class="titlesa">
+        <span>发票附件</span>
+        <span style="color: #d05c39">*支持上传pdf、jpg/jpeg、png格式</span>
+      </div>
+      <div>
+        <FileUpload
+        v-model="form.invoicePics"
+        accept=".jpg, .jpeg, .png, .pdf"
+        />
+      </div>
+      <!-- 贸易附件图片 -->
+      <div class="titlesa">
+        <span>贸易合同</span>
+        <span style="color: #d05c39">*支持上传pdf、jpg/jpeg、png格式</span>
+      </div>
+      <div>
+        <FileUpload
+        v-model="form.tradePics"
+        accept=".jpg, .jpeg, .png, .pdf"
+        />
+      </div>
+    </el-card>
+
+    <!-- 汇票模块 -->
+    <div
+      v-for="(item, index) in form.contractDrafts"
+      :key="index"
+      class="form"
+      style="
+        margin: 20px;
+        border: 1px solid #c0c0c0;
+        padding: 10px;
+        border-radius: 10px;
+      "
+    >
+      <!-- 汇票名称 -->
+      <el-form label-width="90px">
+        <el-form-item label="汇票名称">
+          <el-input
+            v-model="item.name"
+            class="ipwidth"
+            placeholder="请填写汇票名称"
+            style="width: 220px"
+          />
+        </el-form-item>
+        <!-- 预计贴现日 -->
+        <el-form-item label="预计贴现日"
+        :prop="'contractDrafts.' + index + '.expectDiscountDate'">
+          <el-date-picker
+            v-model="item.expectDiscountDate"
+            type="date"
+            placeholder="选择日期"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd"
+            @change="inputMoney(index, 4)"
+          />
+        </el-form-item>
+        <!-- 出票日期 -->
+        <el-form-item label="出票日期"
+        :prop="'contractDrafts.' + index + '.acceptDate'">
+          <el-date-picker
+            v-model="item.acceptDate"
+            type="date"
+            placeholder="选择日期"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd"
+            class="ipwidth"
+          />
+        </el-form-item>
+        <!-- 承兑日期 -->
+        <el-form-item label="承兑日期"
+        :prop="'contractDrafts.' + index + '.issueDate'">
+          <el-date-picker
+            v-model="item.issueDate"
+            type="date"
+            placeholder="选择日期"
+            default-value
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd"
+            @change="inputMoney(index, 1)"
+          />
+        </el-form-item>
+        <!-- 到期日期 -->
+        <el-form-item label="到期日期"
+        :prop="'contractDrafts.' + index + '.expireDate'">
+          <el-date-picker
+            v-model="item.expireDate"
+            type="date"
+            placeholder="选择日期"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd"
+          />
+        </el-form-item>
+      </el-form>
+      <!-- 汇票号码 -->
+      <el-form label-width="100px">
+        <el-form-item label="汇票号码">
+          <el-input
+            v-model="item.draftNo"
+            class="ipwidth"
+            placeholder="请填写汇票号码"
+            style="width: 220px"
+          />
+        </el-form-item>
+
+        <!-- 金额 -->
+        <el-form-item label="金额">
+          <el-input
+            v-model="item.money"
+            class="ipwidth"
+            placeholder="请填写金额"
+            style="width: 220px"
+            @blur="getMoney(index)"
+            @input="inputMoney(index)"
+          />
+        </el-form-item>
+        <!-- 服务费 -->
+        <el-form-item label="服务费">
+          <el-input
+            v-model="item.serviceMoney"
+            class="ipwidth"
+            placeholder="计算得出服务费"
+            style="width: 220px"
+            @input="inputMoney(index)"
+          />
+        </el-form-item>
+        <!-- 最高贷款额度 -->
+        <el-form-item label="最高贷款额度">
+          <el-input
+            v-model="item.loanLimit"
+            class="ipwidth"
+            placeholder="计算得出最高贷款额度"
+            style="width: 220px"
+            @input="inputMoney(index)"
+          />
+        </el-form-item>
+
+        <el-form-item label="利息">
+          <el-input
+            v-model="item.interest"
+            class="ipwidth"
+            placeholder="计算得出利息"
+            style="width: 220px"
+            @input="inputMoney(index)"
+          />
+        </el-form-item>
+      </el-form>
+      <!-- 出票人 -->
+      <el-form label-width="90px">
+        <el-form-item label="出票人">
+          <el-select
+            v-model="item.drawersId"
+            filterable
+            placeholder="请选择出票人"
+          >
+            <el-option
+              label="新增出票人"
+              value=""
+              style="color: darkorange"
+              @click.native="addDrawer"
+            />
+            <el-option
+              v-for="v in drawersList"
+              :key="v.id"
+              :label="v.name"
+              :value="v.id"
+            />
+          </el-select>
+        </el-form-item>
+        <!-- 承兑人 -->
+        <el-form-item label="承兑人">
+          <el-select
+            v-model="item.acceptorId"
+            filterable
+            placeholder="请选择承兑人"
+          >
+            <el-option
+              v-for="v in acceptorList"
+              :key="v.id"
+              :label="v.name"
+              :value="v.id"
+              @click.native="getRate(item, v)"
+            />
+          </el-select>
+        </el-form-item>
+
+        <!-- 服务费率 -->
+        <el-form-item label="服务费率">
+          <el-input
+            v-model="item.serviceRate"
+            class="ipwidth"
+            placeholder="服务费率"
+            style="width: 220px"
+            @input="inputMoney(index)"
+          />
+        </el-form-item>
+        <!-- 利率 -->
+        <el-form-item label="利率">
+          <el-input
+            v-model="item.interestRate"
+            class="ipwidth"
+            placeholder="利率"
+            style="width: 220px"
+            @input="inputMoney(index)"
+          />
+        </el-form-item>
+      </el-form>
+      <!-- 汇票附件上传 -->
+      <div>
+        <el-row>
+          <el-col style="margin: 0 auto">
+            <div class="titlesa">
+              <span>附件</span>
+              <span
+                style="color: #d05c39"
+              >*支持上传pdf、jpg/jpeg、png格式</span>
+            </div>
+            <div>
+              <FileUpload
+              v-model="item.picUrls"
+              accept=".jpg, .jpeg, .png, .pdf"
+              />
+            </div>
+          </el-col>
+        </el-row>
+
+        <!-- 删除汇票 -->
+        <el-button
+          type="primary"
+          style="width: 100px; height: 50px; margin-top: 50px"
+          @click="deletedraft(index)"
+        >删除汇票</el-button>
+      </div>
+    </div>
+
+    <!-- 新增汇票 -->
+    <div class="commit">
+      <div class="addnew">
+        <el-button type="primary" @click="adddraft">新增汇票</el-button>
+      </div>
+      <div class="addall">
+        <el-button
+          type="warning"
+          style="width: 180px; height: 45px; font-size: 16px"
+          @click="onSubmit"
+        >确认上传
+        </el-button>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { maxLoanAmount, serviceCharge, interest } from '@/utils/calc'
+import { contractsDetailApi } from '@/api/contracts'
+
+export default {
+  data() {
+    return {
+      dialogVisible: false,
+      disabled: false,
+      drawersList: [],
+      acceptorList: [],
+      contractList: [],
+      filesArray: [], // 汇票图片上传数组
+      picsArray: [], // 合同图片上传数组
+      invoicePicsArray: [], // 发票图片上传数组
+      tradePicsArray: [], // 贸易图片上传数组
+      file: '',
+      form: {
+        contractNo: '',
+        supplierId: 2,
+        name: '',
+        invoicePics: [],
+        pics: [],
+        tradePics: [],
+        /* 汇票的数据 */
+        contractDrafts: [
+          {
+            name: '',
+            draftNo: '',
+            acceptorId: '',
+            drawersId: '',
+            money: '',
+            acceptDate: '',
+            loanLimit: '',
+            serviceRate: '',
+            serviceMoney: '',
+            interestRate: '',
+            interest: '',
+            picUrls: [],
+            expectDiscountDate: '',
+            issueDate: '',
+            expireDate: '',
+            limitTime: '',
+            acceptDateTime: '',
+            expectDiscountDateTime: ''
+          }
+        ]
+      },
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() > Date.now()
+        },
+        shortcuts: [
+          {
+            text: '今天',
+            onClick(picker) {
+              picker.$emit('pick', new Date())
+            }
+          },
+          {
+            text: '昨天',
+            onClick(picker) {
+              const date = new Date()
+              date.setTime(date.getTime() - 3600 * 1000 * 24)
+              picker.$emit('pick', date)
+            }
+          },
+          {
+            text: '一周前',
+            onClick(picker) {
+              const date = new Date()
+              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)
+              picker.$emit('pick', date)
+            }
+          }
+        ]
+      }
+    }
+  },
+  mounted() {
+    // 获取承兑人列表
+    this.$request({
+      url: '/api/Acceptor/search',
+      method: 'post',
+      data: {
+        pageIndex: 1,
+        pageSize: 100
+      }
+    }).then((res) => {
+      this.acceptorList = res.data.result
+    })
+
+    // 获取出票人列表
+    this.$request({
+      url: '/api/Drawer/search',
+      method: 'post',
+      data: {
+        pageIndex: 1,
+        pageSize: 100
+      }
+    }).then((res) => {
+      this.drawersList = res.data.result
+    })
+
+    /* 调用获取当前的时间 */
+    this.loadTime()
+
+    // 编辑获取详情
+    this.getDetail()
+  },
+  methods: {
+    getDetail() {
+      const id = this.$route.query.id
+      if(!id){
+        return
+      }
+      contractsDetailApi(id).then((res) => {
+        console.log('detail=', res.data)
+        this.form.id   = res.data.id
+        this.form.name = res.data.name
+        this.form.contractNo = res.data.contractNo
+        this.form.invoicePics = res.data.invoicePicList
+        this.form.tradePics = res.data.tradePicList
+        this.form.pics = res.data.picList
+        this.form.contractDrafts = res.data.contractDraft.result
+
+        /*{
+        	//"contractNo": "",
+        	//"supplierId": 2,
+        	//"name": "测试123",
+        	//"invoicePics": [
+        	//	"https://zhengda.oss-cn-chengdu.aliyuncs.com/anlian/2022-07/0fc9d62bd3ee4433ae72e6c6bb978ab0.png"
+        	//],
+        	//"pics": [
+        	//	"https://zhengda.oss-cn-chengdu.aliyuncs.com/anlian/2022-07/9b7c81006bcb434fa7cfadc6e1ec809a.png"
+        	//],
+        	//"tradePics": [
+        	//	"https://zhengda.oss-cn-chengdu.aliyuncs.com/anlian/2022-07/baf3fb3079d143cd9c9a19f52ec68953.png"
+        	//],
+        	"contractDrafts": [{
+        		"name": "测试汇票",
+        		"draftNo": "",
+        		"acceptorId": 51,
+        		"drawersId": 56,
+        		"money": "100",
+        		"acceptDate": "2022-07-31",
+        		"loanLimit": "100.00",
+        		"serviceRate": 0.2,
+        		"serviceMoney": "0.00",
+        		"interestRate": 0.6,
+        		"interest": "0.00",
+        		"picUrls": [
+        			"https://zhengda.oss-cn-chengdu.aliyuncs.com/anlian/2022-07/07d0ea4303f1419ebb7251aa7a7f4235.png"
+        		],
+        		"expectDiscountDate": "2022-07-31",
+        		"issueDate": "2022-07-31",
+        		"expireDate": "2022-07-31",
+        		"limitTime": 0,
+        		"acceptDateTime": 1659242900000,
+        		"expectDiscountDateTime": 1659242900000
+        	}]
+        }*/
+
+      });
+    },
+    inputMoney(index) {
+      this.getloanLimt(index)
+      this.getSerMoney(index)
+      this.getInterMoney(index)
+    },
+    /* 计算最高贷款额度 */
+    getloanLimt(index) {
+      const {
+        money,
+        serviceRate,
+        interestRate,
+        expectDiscountDate,
+        issueDate
+      } = this.form.contractDrafts[index]
+      this.form.contractDrafts[index].loanLimit = maxLoanAmount(
+        money,
+        serviceRate,
+        interestRate,
+        expectDiscountDate,
+        issueDate
+      )
+    },
+    // /* 计算服务费 */
+    getSerMoney(index) {
+      const {
+        loanLimit,
+        serviceRate,
+        expectDiscountDate,
+        issueDate
+      } = this.form.contractDrafts[index]
+      this.form.contractDrafts[index].serviceMoney = serviceCharge(
+        loanLimit,
+        serviceRate,
+        expectDiscountDate,
+        issueDate
+      )
+    },
+    /* 利息*/
+    getInterMoney(index) {
+      const {
+        loanLimit,
+        interestRate,
+        expectDiscountDate,
+        issueDate
+      } = this.form.contractDrafts[index]
+      this.form.contractDrafts[index].interest = interest(
+        loanLimit,
+        interestRate,
+        expectDiscountDate,
+        issueDate
+      )
+    },
+    onSubmit() {
+      this.$request({
+        url: '/api/Contract',
+        method: 'post',
+        data: this.form
+      }).then((res) => {
+        console.log(res)
+        this.$message({
+          message: '上传成功',
+          type: 'success'
+        })
+      })
+    },
+
+    /* 默认时间 */
+    loadTime() {
+      const myDate = new Date()
+      const wk = parseInt(Date.now() / 100000).toFixed(0) * 100000
+      const yy = String(myDate.getFullYear())
+      // let mm = myDate.getMonth() + 1
+      const mm = String(
+        myDate.getMonth() + 1 < 10
+          ? '0' + (myDate.getMonth() + 1)
+          : myDate.getMonth() + 1
+      )
+      const dd = String(
+        myDate.getDate() < 10 ? '0' + myDate.getDate() : myDate.getDate()
+      )
+      const nowDate = yy + '-' + mm + '-' + dd
+      this.form.contractDrafts.forEach((item) => {
+        item.acceptDate = nowDate
+        item.issueDate = nowDate
+        item.expireDate = nowDate
+        item.expectDiscountDate = nowDate
+        item.expectDiscountDateTime = wk
+        item.acceptDateTime = wk
+        const nTime = item.acceptDateTime - item.expectDiscountDateTime
+        item.limitTime = Math.floor(nTime / 86400000)
+      })
+    },
+    getContractNo() {
+      const temporaryList = this.contractList.filter(
+        (item) => item.name === this.form.name
+      )
+      if (this.form.name === '' || temporaryList === '') {
+        this.form.contractNo = ''
+      } else {
+        this.form.contractNo = temporaryList[0].contractNo
+      }
+    },
+
+    /* 获取服务率和利率,承兑人id */
+    getRate(item, acceptor) {
+      item.interestRate = acceptor.interest
+      item.serviceRate  = acceptor.serviceRate
+    },
+    addDrawer() {
+      this.$router.push({
+        path: '../form/addTicketdrawer'
+      })
+    },
+    // 新增汇票
+    adddraft() {
+      this.form.contractDrafts.push({
+        name: '',
+        draftNo: '',
+        acceptorId: '',
+        drawersId: '',
+        money: '',
+        acceptDate: '',
+        loanLimit: '',
+        serviceRate: '',
+        serviceMoney: '',
+        interestRate: '',
+        interest: '',
+        picUrls: [],
+        expectDiscountDate: '',
+        issueDate: '',
+        expireDate: '',
+        limitTime: ''
+      })
+    },
+    // 删除汇票
+    deletedraft(index) {
+      const contractDraftsLength = this.form.contractDrafts.length
+      if (contractDraftsLength > 1) {
+        this.form.contractDrafts.splice(index, 1)
+      } else {
+        this.$message.error('至少一个')
+      }
+    },
+
+    /* 计算时间段 */
+    change(e, number) {}
+
+    // /* 获取金额 */
+    // getMoney(index) {
+    //   this.getloanLimt(index)
+    //   this.getSerMoney(index)
+    //   this.getInterMoney(index)
+    // }
+    // /* 计算最高贷款额度 */
+    // getloanLimt(i) {
+    //   if (
+    //     this.form.contractDrafts[i].money &&
+    //     this.form.contractDrafts[i].serviceRate &&
+    //     this.form.contractDrafts[i].interestRate
+    //   ) {
+    //     this.form.contractDrafts[i].loanLimit = (
+    //       ((this.form.contractDrafts[i].money /
+    //         (this.form.contractDrafts[i].serviceRate +
+    //           this.form.contractDrafts[i].interestRate)) *
+    //         this.form.contractDrafts[i].limitTime) /
+    //         360 +
+    //       1
+    //     ).toFixed(2)
+    //   }
+    // },
+    // /* 计算服务费 */
+    // getSerMoney(i) {
+    //   if (
+    //     this.form.contractDrafts[i].money &&
+    //     this.form.contractDrafts[i].serviceRate &&
+    //     this.form.contractDrafts[i].interestRate
+    //   ) {
+    //     this.form.contractDrafts[i].serviceMoney = (
+    //       ((((this.form.contractDrafts[i].money /
+    //         (this.form.contractDrafts[i].serviceRate +
+    //           this.form.contractDrafts[i].interestRate)) *
+    //         this.form.contractDrafts[i].limitTime) /
+    //         360 +
+    //         1) *
+    //         this.form.contractDrafts[i].serviceRate *
+    //         this.form.contractDrafts[i].limitTime) /
+    //       360
+    //     ).toFixed(2)
+    //   }
+    // },
+    // /* 利息*/
+    // getInterMoney(i) {
+    //   if (
+    //     this.form.contractDrafts[i].money &&
+    //     this.form.contractDrafts[i].serviceRate &&
+    //     this.form.contractDrafts[i].interestRate
+    //   ) {
+    //     this.form.contractDrafts[i].interest = (
+    //       ((((this.form.contractDrafts[i].money /
+    //         (this.form.contractDrafts[i].serviceRate +
+    //           this.form.contractDrafts[i].interestRate)) *
+    //         this.form.contractDrafts[i].limitTime) /
+    //         360 +
+    //         1) *
+    //         this.form.contractDrafts[i].interestRate *
+    //         this.form.contractDrafts[i].limitTime) /
+    //       360
+    //     ).toFixed(2)
+    //   }
+    // }
+  }
+}
+</script>
+
+<style lang="scss">
+.contract {
+  display: flex;
+  justify-content: space-between;
+  margin-bottom: 20px;
+}
+
+.form {
+  display: flex;
+  justify-content: space-around;
+}
+
+.addnew {
+  display: flex;
+  justify-content: flex-end;
+}
+
+.addall {
+  display: flex;
+  justify-content: center;
+}
+
+.commit {
+  margin: 20px 0;
+}
+</style>

+ 37 - 12
src/views/contracts/index.vue

xqd xqd xqd xqd xqd xqd xqd
@@ -144,20 +144,31 @@
             style="cursor: pointer"
             @click="tapDetail(scope.row.id)"
           >查看详情</el-tag>
-          <el-tag
+          &nbsp;<el-tag
            v-permission="['salesman','admin']"
             type="success"
-            style="cursor: pointer"
+            style="cursor: pointer"
+            v-if="scope.row.status == 0"
             @click="Ssuccessed(scope.row.id)"
           >
             审核成功</el-tag>
-          <el-tag
+          &nbsp;<el-tag
            v-permission="['salesman','admin']"
             type="danger"
-            style="cursor: pointer"
+            style="cursor: pointer"
+            v-if="scope.row.status == 0"
             @click="Sfailed(scope.row.id)"
           >审核失败
-          </el-tag>
+          </el-tag>
+          &nbsp;<el-tag
+           v-permission="['supplier']"
+            type="danger"
+            style="cursor: pointer"
+            v-show="scope.row.status == 2"
+            @click="editNewContract(scope.row)"
+          >重新提交
+          </el-tag>
+
         </template>
       </el-table-column>
     </el-table>
@@ -179,7 +190,7 @@
             type="primary"
             @click="failed"
           >审核失败</el-button>
-         
+
           <el-button type="primary" @click="Exports">批量导出</el-button>
           <el-button type="success" @click="recover">恢复</el-button>
           <el-button type="danger" @click="deleted">删除</el-button>
@@ -226,7 +237,7 @@
 
 <script>
 import { dataConversionUtil } from '../../utils/Excel.js'
-import { contractsPageApi } from '@/api/contracts'
+import { contractsPageApi, contractsExportApi } from '@/api/contracts'
 export default {
   filters: {
     statusFilter(status) {
@@ -326,6 +337,11 @@ export default {
       this.$router.push({
         path: 'contracts/addcontract'
       })
+    },
+    editNewContract(row) {
+      this.$router.push({
+        path: 'contracts/addcontract?id=' + row.id
+      })
     },
     tapDetail(id) {
       console.log(id)
@@ -589,8 +605,15 @@ export default {
       font.handleCurrentChange(cpage)
     },
 
-    Exports() {
-      var tableHeader = [
+    Exports() {
+
+      contractsExportApi({
+        supplierId:1
+      }).then((res) => {
+        console.log(res)
+      })
+
+      /*var tableHeader = [
         [
           '序号',
           '合同名称',
@@ -618,8 +641,11 @@ export default {
         ])
       })
       dataConversionUtil.dataToExcel('合同列表', tableHeader, dataList)
-      this.$message.success('导出成功!')
-    }
+      this.$message.success('导出成功!')
+      */
+
+    }
+
   }
 }
 
@@ -658,4 +684,3 @@ export default {
   padding: 20px;
 }
 </style>
-

+ 21 - 2
src/views/delivery/index.vue

xqd xqd xqd
@@ -219,7 +219,7 @@
 
 <script>
 import { dataConversionUtil } from "../../utils/Excel.js";
-import { getSupplierSearch } from "@/api/supplier";
+import { getSupplierSearch, supplierExportApi } from "@/api/supplier";
 
 export default {
   filters: {
@@ -412,13 +412,31 @@ export default {
 
     /* 导出 */
     Exports() {
+      supplierExportApi({
+      }).then((data) => {
+        console.log(data)
+        if(!data){
+          return
+        }
+        var blob = new Blob([data])
+        var url = window.URL.createObjectURL(blob);
+        var aLink = document.createElement("a");
+        aLink.style.display = "none";
+        aLink.href = url;
+        aLink.setAttribute("download", "列表.xls");
+        document.body.appendChild(aLink);
+        aLink.click();
+        document.body.removeChild(aLink); //下载完成移除元素
+        window.URL.revokeObjectURL(url); //释放掉blob对象
+      })
+
       if (this.multipleSelection == "") {
         this.$message({
           type: "warning",
           message: "请选择数据!",
         });
       } else {
-        var tableHeader = [
+        /*var tableHeader = [
           [
             "序号",
             "供应商名称",
@@ -447,6 +465,7 @@ export default {
         });
         dataConversionUtil.dataToExcel("供应商列表", tableHeader, dataList);
         this.$message.success("导出成功!");
+        */
       }
     },
     success() {