Tartarus 2 年 前
コミット
446274a73b

+ 2 - 2
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(res)
+	console.log(response)
     // if (res.code !== 200) {
     //   Message({
     //     message: res.msg || 'Error',
@@ -105,7 +105,7 @@ service.interceptors.response.use(
     //   return res
     // }
 		if(res.type==="application/x-zip-compressed"){
-			return res
+			return response
 		}else if(res.code !== 200){
 			Message({
 			    message: res.msg || 'Error',

+ 3 - 3
src/views/contracts/billDetail.vue

xqd xqd
@@ -1,7 +1,7 @@
 <template>
   <div>
 
-    <el-descriptions title="汇票详情">
+    <el-descriptions title="汇票详情" :column="3" border>
       <el-descriptions-item label="汇票名">{{
         list[0].name
       }}</el-descriptions-item>
@@ -25,13 +25,13 @@
       }}</el-descriptions-item>
       <el-descriptions-item label="服务费率">{{
         list[0].serviceRate
-      }}</el-descriptions-item>
+      }}%</el-descriptions-item>
       <el-descriptions-item label="服务费">{{
         list[0].serviceMoney
       }}</el-descriptions-item>
       <el-descriptions-item label="利率">{{
         list[0].interestRate
-      }}</el-descriptions-item>
+      }}%</el-descriptions-item>
       <el-descriptions-item label="利息">{{
         list[0].interest
       }}</el-descriptions-item>

+ 672 - 701
src/views/contracts/detail.vue

xqd
@@ -1,718 +1,689 @@
 <template>
-  <div>
-    <el-card class="box-card">
-      <el-col :xs="24" :sm="24" :md="10" :lg="10" :xl="12">
-        <div class="grid-content bg-purple">
-          <span style="font-weight: 600">合同基础信息</span>
-          <div class="titlein">
-            <span class="titlename">合同名称</span>
-            <span class="meatatitle">{{ contract.name }}</span>
-          </div>
-          <div class="titlein">
-            <span class="titlename">合同编号</span>
-            <span class="meatatitle">{{ contract.contractNo }}</span>
-          </div>
-          <div class="titlein">
-            <span class="titlename">合同附件</span>
-            <div style="display: flex">
-              <div class="imgbox">
-                <el-image
-                  v-for="(item) in picList"
-                  :key="item.id"
-                  style="width: 100px; height: 100px"
-                  :src="item"
-                />
-                <img
-                  v-for="(item) in picList"
-                  :key="item.id"
-                  style="width: 100px; height: 100px"
-                  :src="item"
-                />
-              </div>
-            </div>
-          </div>
-          <div class="titlein">
-            <span class="titlename">发票附件</span>
-            <div style="display: flex">
-              <div class="imgbox">
-                <el-image
-                  v-for="(item) in invoicePicList"
-                  :key="item.id"
-                  style="width: 100px; height: 100px"
-                  :src="item"
-                />
-
-              </div>
-            </div>
-          </div>
-        </div>
-      </el-col>
-      <el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="12">
-        <div class="jas">
-          <div class="titlein jas">
-            <span class="titlename">贸易合同</span>
-            <div style="display: flex">
-              <div class="imgbox">
-                <el-image
-                  v-for="(item) in tradePicList"
-                  :key="item.id"
-                  style="width: 100px; height: 100px"
-                  :src="item"
-                />
-
-              </div>
-            </div>
-          </div>
-          <div class="yusa jas">
-            <div class="boxas">
-              <span style="color: #fff">合同状态:</span>
-              <span style="color: #d05c39">{{
+	<div>
+		<el-card class="box-card">
+			<el-col :xs="24" :sm="24" :md="10" :lg="10" :xl="12">
+				<div class="grid-content bg-purple">
+					<span style="font-weight: 600">合同基础信息</span>
+					<div class="titlein">
+						<span class="titlename">合同名称</span>
+						<span class="meatatitle">{{ contract.name }}</span>
+					</div>
+					<div class="titlein">
+						<span class="titlename">合同编号</span>
+						<span class="meatatitle">{{ contract.contractNo }}</span>
+					</div>
+					<div class="titlein">
+						<span class="titlename">合同附件</span>
+						<div style="display: flex">
+							<div class="imgbox">
+								<el-image v-for="(item) in picList" :key="item.id" style="width: 100px; height: 100px"
+									:src="item" />
+								<img v-for="(item) in picList" :key="item.id" style="width: 100px; height: 100px"
+									:src="item" />
+							</div>
+						</div>
+					</div>
+					<div class="titlein">
+						<span class="titlename">发票附件</span>
+						<div style="display: flex">
+							<div class="imgbox">
+								<el-image v-for="(item) in invoicePicList" :key="item.id"
+									style="width: 100px; height: 100px" :src="item" />
+
+							</div>
+						</div>
+					</div>
+				</div>
+			</el-col>
+			<el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="12">
+				<div class="jas">
+					<div class="titlein jas">
+						<span class="titlename">贸易合同</span>
+						<div style="display: flex">
+							<div class="imgbox">
+								<el-image v-for="(item) in tradePicList" :key="item.id"
+									style="width: 100px; height: 100px" :src="item" />
+
+							</div>
+						</div>
+					</div>
+					<div class="yusa jas">
+						<div class="boxas">
+							<span style="color: #fff">合同状态:</span>
+							<span style="color: #d05c39">{{
                 contract.contractStatusText
               }}</span>
-            </div>
-            <span class="aoiisp">审核结果:
-              <p style="color: #d8ab5a">{{ contract.statusText }}</p></span>
-          </div>
-
-          <!-- 审核反馈和审核截图框  -->
-          <div class="yusa">
-            <el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="10" class="jas">
-              <el-form ref="form" :model="feed" label-width="0px">
-                <span class="sah">审核反馈:</span>
-                <el-form-item label="">
-                  <el-input v-model="feed.feedback" type="textarea" />
-                </el-form-item>
-              </el-form>
-            </el-col>
-            <el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="14" class="jas">
-              <span class="sah">审核截图:</span>
-              <div style="display: flex; justify-content: flex-end">
-                <div class="imgbox">
-                  <el-upload
-                    action="https://ht.9026.com/api/File"
-                    list-type="picture-card"
-                    :on-success="handleFeedbackPicList"
-                  >
-                  <!-- <img v-if="feed.feedbackPicList" :src="feed.feedbackPicList" class="avatar"> -->
-                    <i class="el-icon-plus" />
-                  </el-upload>
-                  <el-dialog :visible.sync="dialogVisible">
-                    <img width="100%" :src="feed.feedbackPicList">
-                  </el-dialog>
-                </div>
-              </div>
-            </el-col>
-          </div>
-          <div slot="" class="clearfix">
-            <el-button
-              type="primary"
-              style="float: right; margin-left: 10px"
-            >导出
-            </el-button>
-            <el-button
-              v-if="contract.contractStatus === 0"
-              type="danger"
-              style="float: right"
-              @click="deletedContract"
-            >删除</el-button>
-
-            <el-button
-              v-if="contract.contractStatus === 1"
-              type="primary"
-              style="float: right"
-              @click="recoverContract"
-            >恢复
-            </el-button>
-            <el-button
-              v-if="role === 1"
-              type="warning"
-              style="float: right"
-              @click="failed"
-            >审核失败
-            </el-button>
-            <el-button
-              v-if="role === 1"
-              type="success"
-              style="float: right"
-              @click="success"
-            >审核成功
-            </el-button>
-          </div>
-        </div>
-      </el-col>
-    </el-card>
-
-    <el-card class="box-card">
-      <el-table
-        v-loading="listLoading"
-        :data="temporaryList"
-        element-loading-text="Loading"
-        border
-        fit
-        highlight-current-row
-        @select="handleSelectionChange"
-        @select-all="handleAll"
-      >
-        <el-table-column align="center" label="" width="55" type="selection" />
-        <el-table-column label="汇票名称" align="center" prop="name" />
-        <el-table-column label="汇票编号" align="center" prop="draftNo" />
-        <el-table-column label="承兑人" align="center" prop="acceptorName" />
-        <el-table-column label="金额" align="center">
-          <template slot-scope="scope">
-            {{ scope.row.money }}
-          </template>
-        </el-table-column>
-        <el-table-column label="服务费" align="center">
-          <template slot-scope="scope">
-            {{ scope.row.serviceMoney }}
-          </template>
-        </el-table-column>
-        <el-table-column
-          label="汇票状态"
-          align="center"
-          prop="draftStatusText"
-        />
-        <el-table-column label="审核状态" align="center">
-          <template slot-scope="scope">
-            {{ scope.row.statusText }}
-          </template>
-        </el-table-column>
-        <el-table-column
-          align="center"
-          prop="created_at"
-          label="操作"
-          width="250"
-        >
-          <template slot-scope="scope">
-            <el-tag
-              type="primary"
-              style="cursor: pointer; margin-right: 15px"
-              @click="tapDetail(scope.row.id)"
-            >查看详情</el-tag>
-            <el-tag
-              v-if="scope.row.draftStatus == 1"
-              type="success"
-              style="margin-right: 15px; cursor: pointer"
-              @click="recover(scope.row.id)"
-            >恢复</el-tag>
-            <el-tag
-              v-if="scope.row.draftStatus == 0"
-              type="danger"
-              style="margin-right: 15px; cursor: pointer"
-              @click="deleted(scope.row.id)"
-            >删除</el-tag>
-          </template>
-        </el-table-column>
-      </el-table>
-
-      <div class="pagesip">
-        <el-button v-if="role === 2" type="primary" @click="addNewBill">
-          新增汇票</el-button>
-        <el-button
-          type="success"
-          style="float: right"
-          @click="recoverContractDraft"
-        >恢复
-        </el-button>
-        <el-button
-          type="danger"
-          style="float: right"
-          @click="deletedContractDraft"
-        >删除</el-button>
-        <el-button
-          type="primary"
-          style="float: right; margin-left: 10px"
-          @click="ExportsContractDraft"
-        >导出
-        </el-button>
-        <el-button
-          type="primary"
-          size="small"
-          style="
+						</div>
+						<span class="aoiisp">审核结果:
+							<p style="color: #d8ab5a">{{ contract.statusText }}</p>
+						</span>
+					</div>
+
+					<!-- 审核反馈和审核截图框  -->
+					<div class="yusa">
+						<el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="10" class="jas">
+							<el-form ref="form" :model="feed" label-width="0px">
+								<span class="sah">审核反馈:</span>
+								<el-form-item label="">
+									<el-input v-model="feed.feedback" type="textarea" />
+								</el-form-item>
+							</el-form>
+						</el-col>
+						<el-col :xs="24" :sm="24" :md="14" :lg="14" :xl="14" class="jas">
+							<span class="sah">审核截图:</span>
+							<div style="display: flex; justify-content: flex-end">
+								<div class="imgbox">
+									<el-upload action="https://ht.9026.com/api/File" list-type="picture-card"
+										:on-success="handleFeedbackPicList">
+										<!-- <img v-if="feed.feedbackPicList" :src="feed.feedbackPicList" class="avatar"> -->
+										<i class="el-icon-plus" />
+									</el-upload>
+									<el-dialog :visible.sync="dialogVisible">
+										<img width="100%" :src="feed.feedbackPicList">
+									</el-dialog>
+								</div>
+							</div>
+						</el-col>
+					</div>
+					<div slot="" class="clearfix">
+						<el-button type="primary" style="float: right; margin-left: 10px">导出
+						</el-button>
+						<el-button v-if="contract.contractStatus === 0" type="danger" style="float: right"
+							@click="deletedContract">删除</el-button>
+
+						<el-button v-if="contract.contractStatus === 1" type="primary" style="float: right"
+							@click="recoverContract">恢复
+						</el-button>
+						<el-button v-if="role === 1" type="warning" style="float: right" @click="failed">审核失败
+						</el-button>
+						<el-button v-if="role === 1" type="success" style="float: right" @click="success">审核成功
+						</el-button>
+					</div>
+				</div>
+			</el-col>
+		</el-card>
+
+		<el-card class="box-card">
+			<el-table v-loading="listLoading" :data="temporaryList" element-loading-text="Loading" border fit
+				highlight-current-row @select="handleSelectionChange" @select-all="handleAll">
+				<el-table-column align="center" label="" width="55" type="selection" />
+				<el-table-column label="汇票名称" align="center" prop="name" />
+				<el-table-column label="汇票编号" align="center" prop="draftNo" />
+				<el-table-column label="承兑人" align="center" prop="acceptorName" />
+				<el-table-column label="金额" align="center">
+					<template slot-scope="scope">
+						{{ scope.row.money }}
+					</template>
+				</el-table-column>
+				<el-table-column label="服务费" align="center">
+					<template slot-scope="scope">
+						{{ scope.row.serviceMoney }}
+					</template>
+				</el-table-column>
+				<el-table-column label="汇票状态" align="center" prop="draftStatusText" />
+				<el-table-column label="审核状态" align="center">
+					<template slot-scope="scope">
+						{{ scope.row.statusText }}
+					</template>
+				</el-table-column>
+				<el-table-column align="center" prop="created_at" label="操作" width="250">
+					<template slot-scope="scope">
+						<el-tag type="primary" style="cursor: pointer; margin-right: 15px"
+							@click="tapDetail(scope.row.id)">查看详情</el-tag>
+						<el-tag v-if="scope.row.draftStatus == 1" type="success"
+							style="margin-right: 15px; cursor: pointer" @click="recover(scope.row.id)">恢复</el-tag>
+						<el-tag v-if="scope.row.draftStatus == 0" type="danger"
+							style="margin-right: 15px; cursor: pointer" @click="deleted(scope.row.id)">删除</el-tag>
+					</template>
+				</el-table-column>
+			</el-table>
+
+			<div class="pagesip">
+				<el-button v-if="role === 2" type="primary" @click="addNewBill">
+					新增汇票</el-button>
+				<el-button v-if="role === 1" type="success" style="float: right" @click="contractDraftSuccess">审核成功
+				</el-button>
+				<el-button v-if="role === 1" type="warning" style="float: right" @click="contractDraftFailed">审核失败
+				</el-button>
+				<el-button type="success" style="float: right" @click="recoverContractDraft">恢复
+				</el-button>
+				<el-button type="danger" style="float: right" @click="deletedContractDraft">删除</el-button>
+				<el-button type="primary" style="float: right; margin-left: 10px" @click="ExportsContractDraft">导出
+				</el-button>
+				<el-button type="primary" size="small" style="
             background-color: #d8ab5a;
             border-color: #d8ab5a;
             margin: 0 20px;
-          "
-          @click="jumpFirstPage"
-        >首页
-        </el-button>
-        <el-pagination
-          ref="pagination"
-          background
-          layout="prev, pager, next"
-          :total="list.length"
-          :page-size="10"
-          prev-text="上一页"
-          next-text="下一页"
-          :hide-on-single-page="false"
-          @current-change="handleCurrentChange"
-        />
-        <el-button
-          type="primary"
-          size="small"
-          style="
+          " @click="jumpFirstPage">首页
+				</el-button>
+				<el-pagination ref="pagination" background layout="prev, pager, next" :total="list.length"
+					:page-size="10" prev-text="上一页" next-text="下一页" :hide-on-single-page="false"
+					@current-change="handleCurrentChange" />
+				<el-button type="primary" size="small" style="
             background-color: #d8ab5a;
             border-color: #d8ab5a;
             margin: 0 20px;
-          "
-          @click="jumpLastPage"
-        >尾页
-        </el-button>
-        <el-button type="primary" size="small" @click="back">返回 </el-button>
-      </div>
-    </el-card>
-  </div>
+          " @click="jumpLastPage">尾页
+				</el-button>
+				<el-button type="primary" size="small" @click="back">返回 </el-button>
+			</div>
+		</el-card>
+	</div>
 </template>
 
 <script>
-import { dataConversionUtil } from '../../utils/Excel.js'
-import logo from '@/assets/pdf.png'
-export default {
-  data() {
-    return {
-      dialogVisible: false,
-      role: '',
-      srcList: [],
-      temporaryList: [],
-      list: [],
-      listLoading: false,
-      contract: {},
-      currentPage: 1,
-      multipleSelection: [],
-      pagesize: 11,
-      form: '',
-      invoicePicList: [],
-      picList: [],
-      tradePicList: [],
-      feedbackPicListArray: [],
-      pdf: logo,
-      /* 审核反馈和审核截图的数据 */
-      feed: {
-        id: '',
-        feedback: '',
-        feedbackPicList: [],
-        approveStatus: ''
-      }
-    }
-  },
-
-  mounted() {
-
-    this.role = this.$store.state.user.userInfo.type;
-    this.checked = this.$store.state.user.checked;
-    this.getData();
-
-  },
-  methods: {
-    getData() {
-      const id = this.$route.query.id
-      this.$request({
-        url: '/api/Contract/' + id,
-        method: 'get'
-      }).then((res) => {
-        this.contract = res.data;
-        this.invoicePicList = this.contract.invoicePicList;
-        this.picList = this.contract.picList;
-        this.list = res.data.contractDraft.result;
-        this.feed.feedbackPicList = this.contract.feedbackPics;
-        this.tradePicList = this.contract.tradePicList;
-        this.feed.id = this.$route.query.id;
-        this.feed.feedback = this.contract.feedback;
-        this.getPageData();
-      });
-
-    },
-    addNewBill() {
-	  const id = this.$route.query.id
-      this.$router.push({
-        name: 'addnewbill',
-		query:{
-				id:id
+	import {
+		dataConversionUtil
+	} from '../../utils/Excel.js'
+	import logo from '@/assets/pdf.png'
+	export default {
+		data() {
+			return {
+				dialogVisible: false,
+				role: '',
+				srcList: [],
+				temporaryList: [],
+				list: [],
+				listLoading: false,
+				contract: {},
+				currentPage: 1,
+				multipleSelection: [],
+				pagesize: 11,
+				form: '',
+				invoicePicList: [],
+				picList: [],
+				tradePicList: [],
+				feedbackPicListArray: [],
+				pdf: logo,
+				/* 审核反馈和审核截图的数据 */
+				feed: {
+					id: '',
+					feedback: '',
+					feedbackPicList: [],
+					approveStatus: ''
 				}
-      })
-    },
-    tapDetail(id) {
-      this.$router.push({
-        name: 'billDetail',
-        query: {
-          id: id
-        }
-      })
-    },
-    handleAll(data) {
-      this.multipleSelection = data
-      console.log(this.multipleSelection)
-    },
-    handleSelectionChange(data) {
-      this.multipleSelection = data
-      console.log(this.multipleSelection)
-    },
-    handleCurrentChange(val) {
-      this.currentPage = val
-      this.getPageData()
-    },
-    jumpFirstPage() {
-      this.$refs.pagination.handleCurrentChange(1)
-      this.$emit('handleCurrentChange', 1)
-    },
-    jumpLastPage() {
-      const font = this.$refs.pagination
-      const cpage = Math.ceil(font.total / font.pageSize)
-      font.handleCurrentChange(cpage)
-    },
-    getPageData() {
-      const start = (this.currentPage - 1) * this.pagesize
-      const end = start + this.pagesize
-      this.srcList = this.list.slice(start, end)
-      this.temporaryList = this.srcList
-    },
-
-
-    /* 导出 */
-    ExportsContractDraft() {
-      if (this.multipleSelection === '') {
-        this.$message({
-          type: 'warning',
-          message: '请选择数据!'
-        })
-      } else {
-        var tableHeader = [
-          [
-            '序号',
-            '汇票名称',
-            '汇票编号',
-            '承兑人',
-            '金额',
-            '服务费',
-            '汇票状态',
-            '审核状态'
-          ]
-        ]
-        var dataList = []
-        this.multipleSelection.forEach((item, index) => {
-          dataList.push([
-            index + 1,
-            item.name,
-            item.draftNo,
-            item.acceptorName,
-            item.money,
-            item.serviceMoney,
-            item.draftStatusText,
-            item.statusText
-          ])
-        })
-        dataConversionUtil.dataToExcel('汇票列表', tableHeader, dataList)
-        this.$message.success('导出成功!')
-      }
-    },
-
-    /* 反馈图片图片上传成功 */
-
-    handleFeedbackPicList(res){
-      //解构
-      const { file } = res.data;
-      this.feedbackPicListArray.push(file)
-      this.feed.feedbackPicList = this.feedbackPicListArray;
-
-    },
-
-    /* 审核成功发送请求  */
-    success() {
-      /* 反馈图片赋值 */
-      this.feed.feedbackPicList = this.picList
-      /* 合同id赋值 */
-      this.feed.id = this.$route.query.id
-      /* 反馈内容赋值 */
-      this.feed.approveStatus = 1
-      this.$request({
-        url: '/api/Contract/approveContract',
-        method: 'post',
-        data: this.feed
-      }).then((res) => {
-        if (res.code === 200) {
-          this.$message({
-            type: 'success',
-            message: res.msg
-          })
-          this.getData()
-        } else {
-          this.$message({
-            type: 'error',
-            message: '提交失败'
-          })
-          this.getData()
-        }
-      })
-    },
-
-    /* 审核失败发送请求  */
-    failed() {
-      /* 反馈图片赋值 */
-      this.feed.feedbackPicList = this.picList
-      /* 合同id赋值 */
-      this.feed.id = this.$route.query.id
-      this.feed.approveStatus = 2
-      this.$request({
-        url: '/api/Contract/approveContract',
-        method: 'post',
-        data: this.feed
-      }).then((res) => {
-        if (res.code === 200) {
-          this.$message({
-            type: 'success',
-            message: res.msg
-          })
-          this.getData()
-        } else {
-          this.$message({
-            type: 'error',
-            message: '提交失败'
-          })
-          this.getData()
-        }
-      })
-    },
-    recoverContract() {
-      const id = this.$route.query.id
-      this.$request({
-        url: '/api/Contract/manage',
-        method: 'post',
-        data: {
-          ids: [id],
-          operateType: 2
-        }
-      }).then((res) => {
-        if (res.code === 200) {
-          this.$message({
-            type: 'success',
-            message: res.msg
-          })
-          this.getData()
-        } else {
-          this.$message({
-            type: 'error',
-            message: '提交失败'
-          })
-          this.getData()
-        }
-      })
-    },
-    deletedContract() {
-      const id = this.$route.query.id
-      this.$request({
-        url: '/api/Contract/manage',
-        method: 'post',
-        data: {
-          ids: [id],
-          operateType: 1
-        }
-      }).then((res) => {
-        if (res.code === 200) {
-          this.$message({
-            type: 'success',
-            message: res.msg
-          })
-          this.getData()
-        } else {
-          this.$message({
-            type: 'error',
-            message: '提交失败'
-          })
-          this.getData()
-        }
-      })
-    },
-    recoverContractDraft() {
-      const ids = Array.from(this.multipleSelection, ({ id }) => id)
-      this.$request({
-        url: '/api/Contract/contractDraft/manager',
-        method: 'post',
-        data: {
-          ids: ids,
-          operateType: 2
-        }
-      }).then((res) => {
-        if (res.code === 200) {
-          this.$message({
-            type: 'success',
-            message: res.msg
-          })
-          this.getData()
-        } else {
-          this.$message({
-            type: 'error',
-            message: '提交失败'
-          })
-          this.getData()
-        }
-      })
-    },
-    deletedContractDraft() {
-      const ids = Array.from(this.multipleSelection, ({ id }) => id)
-      this.$request({
-        url: '/api/Contract/contractDraft/manager',
-        method: 'post',
-        data: {
-          ids: ids,
-          operateType: 1
-        }
-      }).then((res) => {
-        if (res.code === 200) {
-          this.$message({
-            type: 'success',
-            message: res.msg
-          })
-          this.getData()
-        } else {
-          this.$message({
-            type: 'error',
-            message: '提交失败'
-          })
-          this.getData()
-        }
-      })
-    },
-    recover(id) {
-      this.$request({
-        url: '/api/Contract/contractDraft/manager',
-        method: 'post',
-        data: {
-          ids: [id],
-          operateType: 2
-        }
-      }).then((res) => {
-        if (res.code === 200) {
-          this.$message({
-            type: 'success',
-            message: res.msg
-          })
-          this.getData()
-        } else {
-          this.$message({
-            type: 'error',
-            message: '提交失败'
-          })
-          this.getData()
-        }
-      })
-    },
-    deleted(id) {
-      this.$request({
-        url: '/api/Contract/contractDraft/manager',
-        method: 'post',
-        data: {
-          ids: [id],
-          operateType: 1
-        }
-      }).then((res) => {
-        if (res.code === 200) {
-          this.$message({
-            type: 'success',
-            message: res.msg
-          })
-          this.getData()
-        } else {
-          this.$message({
-            type: 'error',
-            message: '提交失败'
-          })
-          this.getData()
-        }
-      })
-    },
-    back() {
-      this.$router.go(-1)
-    }
-  }
-}
+			}
+		},
+
+		mounted() {
+
+			this.role = this.$store.state.user.userInfo.type;
+			this.checked = this.$store.state.user.checked;
+			this.getData();
+
+		},
+		methods: {
+			getData() {
+				const id = this.$route.query.id
+				this.$request({
+					url: '/api/Contract/' + id,
+					method: 'get'
+				}).then((res) => {
+					this.contract = res.data;
+					this.invoicePicList = this.contract.invoicePicList;
+					this.picList = this.contract.picList;
+					this.list = res.data.contractDraft.result;
+					this.feed.feedbackPicList = this.contract.feedbackPics;
+					this.tradePicList = this.contract.tradePicList;
+					this.feed.id = this.$route.query.id;
+					this.feed.feedback = this.contract.feedback;
+					this.getPageData();
+				});
+
+			},
+			addNewBill() {
+				const id = this.$route.query.id
+				this.$router.push({
+					name: 'addnewbill',
+					query: {
+						id: id
+					}
+				})
+			},
+			tapDetail(id) {
+				this.$router.push({
+					name: 'billDetail',
+					query: {
+						id: id
+					}
+				})
+			},
+			handleAll(data) {
+				this.multipleSelection = data
+				console.log(this.multipleSelection)
+			},
+			handleSelectionChange(data) {
+				this.multipleSelection = data
+				console.log(this.multipleSelection)
+			},
+			handleCurrentChange(val) {
+				this.currentPage = val
+				this.getPageData()
+			},
+			jumpFirstPage() {
+				this.$refs.pagination.handleCurrentChange(1)
+				this.$emit('handleCurrentChange', 1)
+			},
+			jumpLastPage() {
+				const font = this.$refs.pagination
+				const cpage = Math.ceil(font.total / font.pageSize)
+				font.handleCurrentChange(cpage)
+			},
+			getPageData() {
+				const start = (this.currentPage - 1) * this.pagesize
+				const end = start + this.pagesize
+				this.srcList = this.list.slice(start, end)
+				this.temporaryList = this.srcList
+			},
+
+
+			/* 导出 */
+			ExportsContractDraft() {
+				if (this.multipleSelection === '') {
+					this.$message({
+						type: 'warning',
+						message: '请选择数据!'
+					})
+				} else {
+					var tableHeader = [
+						[
+							'序号',
+							'汇票名称',
+							'汇票编号',
+							'承兑人',
+							'金额',
+							'服务费',
+							'汇票状态',
+							'审核状态'
+						]
+					]
+					var dataList = []
+					this.multipleSelection.forEach((item, index) => {
+						dataList.push([
+							index + 1,
+							item.name,
+							item.draftNo,
+							item.acceptorName,
+							item.money,
+							item.serviceMoney,
+							item.draftStatusText,
+							item.statusText
+						])
+					})
+					dataConversionUtil.dataToExcel('汇票列表', tableHeader, dataList)
+					this.$message.success('导出成功!')
+				}
+			},
+
+			/* 反馈图片图片上传成功 */
+
+			handleFeedbackPicList(res) {
+				//解构
+				const {
+					file
+				} = res.data;
+				this.feedbackPicListArray.push(file)
+				this.feed.feedbackPicList = this.feedbackPicListArray;
+
+			},
+
+			/* 审核成功发送请求  */
+			success() {
+				/* 反馈图片赋值 */
+				this.feed.feedbackPicList = this.picList
+				/* 合同id赋值 */
+				this.feed.id = this.$route.query.id
+				/* 反馈内容赋值 */
+				this.feed.approveStatus = 1
+				this.$request({
+					url: '/api/Contract/approveContract',
+					method: 'post',
+					data: this.feed
+				}).then((res) => {
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: res.msg
+						})
+						this.getData()
+					} else {
+						this.$message({
+							type: 'error',
+							message: '提交失败'
+						})
+						this.getData()
+					}
+				})
+			},
+
+			/* 审核失败发送请求  */
+			failed() {
+				/* 反馈图片赋值 */
+				this.feed.feedbackPicList = this.picList
+				/* 合同id赋值 */
+				this.feed.id = this.$route.query.id
+				this.feed.approveStatus = 2
+				this.$request({
+					url: '/api/Contract/approveContract',
+					method: 'post',
+					data: this.feed
+				}).then((res) => {
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: res.msg
+						})
+						this.getData()
+					} else {
+						this.$message({
+							type: 'error',
+							message: '提交失败'
+						})
+						this.getData()
+					}
+				})
+			},
+			recoverContract() {
+				const id = this.$route.query.id
+				this.$request({
+					url: '/api/Contract/manage',
+					method: 'post',
+					data: {
+						ids: [id],
+						operateType: 2
+					}
+				}).then((res) => {
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: res.msg
+						})
+						this.getData()
+					} else {
+						this.$message({
+							type: 'error',
+							message: '提交失败'
+						})
+						this.getData()
+					}
+				})
+			},
+			deletedContract() {
+				const id = this.$route.query.id
+				this.$request({
+					url: '/api/Contract/manage',
+					method: 'post',
+					data: {
+						ids: [id],
+						operateType: 1
+					}
+				}).then((res) => {
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: res.msg
+						})
+						this.getData()
+					} else {
+						this.$message({
+							type: 'error',
+							message: '提交失败'
+						})
+						this.getData()
+					}
+				})
+			},
+			recoverContractDraft() {
+				const ids = Array.from(this.multipleSelection, ({
+					id
+				}) => id)
+				this.$request({
+					url: '/api/Contract/contractDraft/manager',
+					method: 'post',
+					data: {
+						ids: ids,
+						operateType: 2
+					}
+				}).then((res) => {
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: res.msg
+						})
+						this.getData()
+					} else {
+						this.$message({
+							type: 'error',
+							message: '提交失败'
+						})
+						this.getData()
+					}
+				})
+			},
+			deletedContractDraft() {
+				const ids = Array.from(this.multipleSelection, ({
+					id
+				}) => id)
+				this.$request({
+					url: '/api/Contract/contractDraft/manager',
+					method: 'post',
+					data: {
+						ids: ids,
+						operateType: 1
+					}
+				}).then((res) => {
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: res.msg
+						})
+						this.getData()
+					} else {
+						this.$message({
+							type: 'error',
+							message: '提交失败'
+						})
+						this.getData()
+					}
+				})
+			},
+			recover(id) {
+				this.$request({
+					url: '/api/Contract/contractDraft/manager',
+					method: 'post',
+					data: {
+						ids: [id],
+						operateType: 2
+					}
+				}).then((res) => {
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: res.msg
+						})
+						this.getData()
+					} else {
+						this.$message({
+							type: 'error',
+							message: '提交失败'
+						})
+						this.getData()
+					}
+				})
+			},
+			deleted(id) {
+				this.$request({
+					url: '/api/Contract/contractDraft/manager',
+					method: 'post',
+					data: {
+						ids: [id],
+						operateType: 1
+					}
+				}).then((res) => {
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: res.msg
+						})
+						this.getData()
+					} else {
+						this.$message({
+							type: 'error',
+							message: '提交失败'
+						})
+						this.getData()
+					}
+				})
+			},
+			back() {
+				this.$router.go(-1)
+			},
+			// 批量审核汇票成功
+			contractDraftSuccess(){
+				const ids = Array.from(this.multipleSelection, ({
+					id
+				}) => id)
+				this.$request({
+					url:'/api/Contract/contractDraft/manager',
+					method:'post',
+					data:{
+						ids:ids,
+						operateType:3
+					}
+				}).then((res)=>{
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: res.msg
+						})
+						this.getData()
+					} else {
+						this.$message({
+							type: 'error',
+							message: '提交失败'
+						})
+						this.getData()
+					}
+				})
+			},
+			// 批量审核汇票失败
+			contractDraftFailed(){
+				const ids = Array.from(this.multipleSelection, ({
+					id
+				}) => id)
+				this.$request({
+					url:'/api/Contract/contractDraft/manager',
+					method:'post',
+					data:{
+						ids:ids,
+						operateType:4
+					}
+				}).then((res)=>{
+					if (res.code === 200) {
+						this.$message({
+							type: 'success',
+							message: res.msg
+						})
+						this.getData()
+					} else {
+						this.$message({
+							type: 'error',
+							message: '提交失败'
+						})
+						this.getData()
+					}
+				})
+			}
+		}
+	}
 </script>
 
 <style lang="scss">
-.box-card {
-  width: 98%;
-  margin: 0 auto;
-  margin-top: 10px;
-}
-
-.el-textarea__inner {
-  padding: 30px 0;
-}
-
-.imgbox {
-  margin-left: 15px;
-}
-
-.titlein {
-  display: flex;
-  justify-content: space-between;
-  margin: 20px 0;
-
-  .titlename {
-    color: #bebdbb;
-  }
-
-  .meatatitle {
-    color: #1f242a;
-  }
-}
-
-.yusa {
-  display: flex;
-}
-
-.jas {
-  margin: 20px 20px;
-  margin-bottom: 0;
-}
-
-.sah {
-  display: block;
-  color: #68625b;
-  padding-bottom: 10px;
-}
-
-.el-tag {
-  // font-size: 18px;
-}
-
-.grid-content {
-  margin: 15px 20px;
-}
-
-.bors {
-  height: 100%;
-}
-
-.aoiisp {
-  margin-left: 20px;
-  display: flex;
-  align-items: center;
-}
-
-.pagesip {
-  width: 100%;
-  margin: 20px auto;
-  display: flex;
-  // align-items: center;
-  justify-content: flex-end;
-}
-
-.el-pagination.is-background .el-pager li:not(.disabled).active {
-  background-color: #d8ab5a;
-}
-
-.el-col {
-  margin-bottom: 20px;
-}
-
-.boxas {
-  font-size: 18px;
-  width: 211px;
-  height: 40px;
-  background: linear-gradient(to right, #ffe1ad, #d8ab5a);
-  box-shadow: 0 10px 20px 1px rgba(179, 116, 5, 0.2);
-  border-radius: 0 26px 26px 0;
-  line-height: 40px;
-  text-align: center;
-}
+	.box-card {
+		width: 98%;
+		margin: 0 auto;
+		margin-top: 10px;
+	}
+
+	.el-textarea__inner {
+		padding: 30px 0;
+	}
+
+	.imgbox {
+		margin-left: 15px;
+	}
+
+	.titlein {
+		display: flex;
+		justify-content: space-between;
+		margin: 20px 0;
+
+		.titlename {
+			color: #bebdbb;
+		}
+
+		.meatatitle {
+			color: #1f242a;
+		}
+	}
+
+	.yusa {
+		display: flex;
+	}
+
+	.jas {
+		margin: 20px 20px;
+		margin-bottom: 0;
+	}
+
+	.sah {
+		display: block;
+		color: #68625b;
+		padding-bottom: 10px;
+	}
+
+	.el-tag {
+		// font-size: 18px;
+	}
+
+	.grid-content {
+		margin: 15px 20px;
+	}
+
+	.bors {
+		height: 100%;
+	}
+
+	.aoiisp {
+		margin-left: 20px;
+		display: flex;
+		align-items: center;
+	}
+
+	.pagesip {
+		width: 100%;
+		margin: 20px auto;
+		display: flex;
+		// align-items: center;
+		justify-content: flex-end;
+	}
+
+	.el-pagination.is-background .el-pager li:not(.disabled).active {
+		background-color: #d8ab5a;
+	}
+
+	.el-col {
+		margin-bottom: 20px;
+	}
+
+	.boxas {
+		font-size: 18px;
+		width: 211px;
+		height: 40px;
+		background: linear-gradient(to right, #ffe1ad, #d8ab5a);
+		box-shadow: 0 10px 20px 1px rgba(179, 116, 5, 0.2);
+		border-radius: 0 26px 26px 0;
+		line-height: 40px;
+		text-align: center;
+	}
 </style>

+ 3 - 4
src/views/databackup/index.vue

xqd xqd
@@ -91,7 +91,7 @@
           <el-tag
             type="warning"
             style="margin-right: 15px; cursor: pointer"
-            @click="download(scope.row.fileUrl)"
+            @click="download(scope.row.fileName)"
             >下载</el-tag
           >
           <el-tag
@@ -278,9 +278,8 @@ export default {
       this.multipleSelection = data;
       console.log(this.multipleSelection);
     },
-    download(url) {
-      // window.open('https://ht.9026.com/api/Database/export?fileName='+fileName)
-      window.open(url);
+    download(fileName) {
+      window.open('https://ht.9026.com/api/Database/export?fileName='+fileName)
       // this.$request({
       // 	url:'/api/Database/export',
       // 	method:'post',

+ 30 - 4
src/views/sucuirtyaudit/annexList.vue

xqd xqd xqd xqd
@@ -39,7 +39,7 @@
 			<div class="grid-content bg-purple" style="display: flex;justify-content: flex-end;">
 				<el-button type="primary" @click="toindex">操作日志</el-button>
 				<el-button type="primary" disabled>附件列表</el-button>
-				<el-button type="primary">批量下载</el-button>
+				<el-button type="primary" @click="Exports">批量下载</el-button>
 			</div>
 
 		</el-row>
@@ -111,6 +111,7 @@
 				temporaryList: [],
 				srcList: [],
 				list: [],
+				multipleSelection:[],
 				listLoading: false,
 				status: '',
 				currentPage: 1,
@@ -213,6 +214,7 @@
 				this.srcList = this.list.slice(start, end);
 				this.temporaryList = this.srcList;
 			},
+			// 下载合同附件zip
 			download(id) {
 				let that=this
 				this.$request({
@@ -226,23 +228,47 @@
 					let filename = this.getFileName(res.headers['content-disposition']);
 					let fileData = res.data;
 					let blob = new Blob([fileData],{ type:'application/zip'})
-					let url = window.URL.createobjectURL(blob)
+					let url = URL.createObjectURL(blob)
 					const link = document.createElement('a')
 					link.href = url
 					link.download = filename;
 					link.click()
 					// 释放内存
-					window . URL.revokeobjectURL(url);
+					URL.revokeObjectURL(url)
 				})
 			},
+			// 设置zip名
 			getFileName(contentDisposition) {
 				var filename = '';
-				var filenameRegex = /filename[^;=\n]*=((['"]).*?\2][^;\n]*)/;
+				var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
 				var matches = filenameRegex.exec(contentDisposition);
 				if (matches != null && matches[1]){
 				filename = matches[1].replace(/['"]/g,'');
 				}
 				return decodeURI(filename);
+			},
+			Exports(){
+				let ids=Array.from(this.multipleSelection,({id})=>id)
+				this.$request({
+					url: '/api/AuditLog/attachments/download',
+					method: 'post',
+					data: {
+						contractIds: ids
+					},
+					responseType:'blob'
+				}).then((res) => {
+					console.log(res)
+					let filename = this.getFileName(res.headers['content-disposition']);
+					let fileData = res.data;
+					let blob = new Blob([fileData],{ type:'application/zip'})
+					let url = URL.createObjectURL(blob)
+					const link = document.createElement('a')
+					link.href = url
+					link.download = filename;
+					link.click()
+					// 释放内存
+					URL.revokeObjectURL(url)
+				})
 			}
 		}
 	}

+ 37 - 2
src/views/sucuirtyaudit/index.vue

xqd xqd xqd xqd
@@ -48,7 +48,7 @@
       >
         <el-button type="primary" disabled>操作日志</el-button>
         <el-button type="primary" @click="toannexList">附件列表</el-button>
-        <el-button type="primary">批量下载</el-button>
+        <el-button type="primary" @click="Exports">批量下载</el-button>
       </div>
     </el-row>
     <el-table
@@ -58,6 +58,8 @@
       border
       fit
       highlight-current-row
+			@select="handleSelectionChange"
+			@select-all="handleAll"
     >
       <el-table-column align="center" label="" width="55" type="selection">
       </el-table-column>
@@ -119,7 +121,7 @@
 
 <script>
 import { getAuditLogSearch } from "@/api/auditlog";
-
+import { dataConversionUtil } from "../../utils/Excel.js";
 export default {
   filters: {
     statusFilter(status) {
@@ -260,6 +262,39 @@ export default {
       let cpage = Math.ceil(font.total / font.pageSize);
       font.handleCurrentChange(cpage);
     },
+		handleSelectionChange(data) {
+		  this.multipleSelection = data;
+		  console.log(this.multipleSelection);
+		},
+		handleAll(data) {
+		  this.multipleSelection = data;
+		  console.log(this.multipleSelection);
+		},
+		Exports() {
+		  if (this.multipleSelection == "") {
+		    this.$message({
+		      type: "warning",
+		      message: "请选择数据!",
+		    });
+		  } else {
+		    var tableHeader = [
+		      ["序号", "操作日", "事件", "操作人员", "操作状态", "操作说明"],
+		    ];
+		    var dataList = [];
+		    this.multipleSelection.forEach((item, index) => {
+		      dataList.push([
+		        index + 1,
+		        item.createdAt,
+		        item.event,
+		        item.userName,
+		        item.status,
+		        item.remark,
+		      ]);
+		    });
+		    dataConversionUtil.dataToExcel("安全审计列表", tableHeader, dataList);
+		    this.$message.success("导出成功!");
+		  }
+		},
   },
 };
 </script>