浏览代码

前端gjy

gjy 3 年之前
父节点
当前提交
a8eddff3e6

+ 0 - 10
src/components/WsUpload/index.vue

@@ -39,17 +39,7 @@
       </template>
       </template>
       <template v-slot:file="{ file }">
       <template v-slot:file="{ file }">
         <div class="thumbnail-group">
         <div class="thumbnail-group">
-          <winsea-picture-view
-            v-if="isPictureFile(file)"
-            class="el-upload-list__item-thumbnail"
-            picturesShowType="fold"
-            :pic-small-list="_getFileImg(file)"
-            :pic-list="_getFileImgs"
-            :width="110"
-            :height="110"
-          />
           <img
           <img
-            v-else
             class="el-upload-list__item-thumbnail"
             class="el-upload-list__item-thumbnail"
             :class="getFileClass(file)"
             :class="getFileClass(file)"
           />
           />

+ 4 - 0
src/lang/zh.js

@@ -488,6 +488,9 @@
     salesContractAdd: '销售合同添加',
     salesContractAdd: '销售合同添加',
     purchaseContractAdd: '采购合同添加',
     purchaseContractAdd: '采购合同添加',
     purchaseContractEdit: '采购合同编辑',
     purchaseContractEdit: '采购合同编辑',
+    // 平台审核
+    platformAudit:'平台审核',
+    driveraudit:'司机审核',
     //仓库管理
     //仓库管理
     warehouseManagementList: '仓库管理',
     warehouseManagementList: '仓库管理',
     warehouseManagementAdd: '仓库管理添加',
     warehouseManagementAdd: '仓库管理添加',
@@ -4721,6 +4724,7 @@
   },
   },
   purchase: {
   purchase: {
     purchaseContract: '采购合同',
     purchaseContract: '采购合同',
+    driveraudit:'司机审核'
   },
   },
   //仓库管理
   //仓库管理
   warehouseManagement: {
   warehouseManagement: {

+ 63 - 0
src/views/platformAudit/component/routers/route.js

@@ -0,0 +1,63 @@
+import Layout from '@/layout/index';
+
+const contractManagementRouter = {
+  path: '/contractManagement',
+  component: Layout,
+  redirect: '/contractManagement',
+  name: 'platformAudit',
+  alwaysShow: true, // will always show the root menu
+  meta: {
+    title: 'platformAudit',
+    module: 'contractManagement',
+    icon: '-hetongguanli'
+  },
+  children: [
+    {
+      path: 'salesContract',
+      component: () =>
+        import(/* webpackChunkName: "applDetail" */ '@/views/contractManagement/salesContract'),
+      name: 'salesContract',
+      meta: {
+        title: 'salesContract',
+        shortcutEntrance: 'contractManagement',
+        module: 'contractManagement.salesContract',
+        permissicon: [],
+        keepAlive: true
+        // module: 'procurement.sparepart.applDetail'
+      }
+    },
+    // 司机审核
+    {
+      path: 'driverAudit',
+      component: () =>
+        import(/* webpackChunkName: "sparepartList" */ '@/views/contractManagement/purchaseContract'),
+      name: 'driveraudit',
+      meta: {
+        title: 'driveraudit',
+        shortcutEntrance: 'contractManagement',
+        module: 'contractManagement.buyContract',
+        permissicon: [],
+        keepAlive: true
+      }
+    },
+    {
+      path: 'purchaseContractExamine',
+      component: () =>
+        import(/* webpackChunkName: "applDetail" */ '@/views/contractManagement/purchaseContractExamine'),
+      name: 'purchaseContractExamine',
+      meta: {
+        title: 'purchaseContractExamine',
+        shortcutEntrance: 'contractManagement',
+        module: 'contractManagement.buyContract.buyContractInfo.view',
+        permissicon: [],
+        keepAlive: true
+        // module: 'procurement.sparepart.applDetail'
+      },
+      hidden: true
+    },
+    
+  ],
+
+};
+
+export default contractManagementRouter;

+ 926 - 0
src/views/platformAudit/driverAudit.vue

@@ -0,0 +1,926 @@
+<!--采购合同-->
+<!--2019年5月30日 20:25:16 by jlx-->
+<template>
+  <div>
+    <BaseHeaderLayout :leftSpan="8">
+      <template slot="left">
+        <ws-button type="primary" @click="handleAdd()"
+        v-hasPermission="
+            `contractManagement.buyContract.buyContractInfo.add`
+          "
+          ><img
+            width="13"
+            height="13"
+            style="
+              vertical-align: text-top;
+              position: relative;
+              top: 2px;
+              left: -4px;
+            "
+            src="../../../public/img/header-add.png"
+            alt=""
+          />添加</ws-button
+        >
+        <ws-button
+          @click="exportlist()"
+          v-hasPermission="
+           `contractManagement.buyContract.buyContractInfo.view`
+          "
+          >导出</ws-button
+        >
+      </template>
+      <template slot="right">
+          <span style="width: 142px; display: inline-block;color: #8890B1;">状态:</span>
+        <ws-select
+          v-model="searchTypeText"
+          placeholder=""
+          class="typeselect"
+          @change="selecttaskType"
+          :value="searchType"
+        >
+          <ws-option
+            v-for="item in taskTypeList"
+            :key="item.value"
+            :label="item.value"
+            :value="item.value"
+            style="color: #8890B1;"
+          />
+        </ws-select>
+
+        <el-date-picker
+          v-model="value2"
+          type="daterange"
+          align="right"
+          unlink-panels
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          :picker-options="pickerOptions"
+        >
+        </el-date-picker>
+        <ws-input
+          v-model="searchKeyWord"
+          placeholder="可按照合同编号、买方名称、卖方名称进行查找"
+          clearable
+          maxlength="500"
+          type="input"
+          class="findValue"
+        ></ws-input>
+        <!-- v-hasPermission="'procurement.sparepart.directShip'" -->
+        <ws-button
+          class="find"
+          type="primary"
+          @click="find()"
+          ><img
+            width="16"
+            height="16"
+            style="
+              vertical-align: text-top;
+              position: relative;
+              top: 0px;
+              left: -8px;
+            "
+            src="../../../public/img/sousuo.png"
+            alt=""
+        /></ws-button>
+      </template>
+    </BaseHeaderLayout>
+    <el-table
+      class="wenzi"
+      :data="contractList.records"
+      style="width: 100%; margin-top: 10px"
+      height="780"
+    >
+      <el-table-column type="index" label="序号">
+        <template scope="scope">
+          <span v-if="scope.$index < 9">0{{ scope.$index + 1 }}</span>
+          <span v-else>{{ scope.$index + 1 }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="contractNo" label="合同编号" width="80">
+      </el-table-column>
+      <el-table-column prop="goodsName" label="货名" width="80">
+      </el-table-column>
+      <el-table-column prop="grade" label="品级">
+        <template slot-scope="scope">
+          <span v-if="scope.row.grade == '一等品'" class="top-grade">{{
+            scope.row.grade
+          }}</span>
+          <span v-if="scope.row.grade == '二等品'" class="second-class">{{
+            scope.row.grade
+          }}</span>
+          <span v-if="scope.row.grade == '三等品'" class="third-class">{{
+            scope.row.grade
+          }}</span>
+          <span v-if="scope.row.grade == '等外'" class="substandard">{{
+            scope.row.grade
+          }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="weight" label="重量(吨)"> </el-table-column>
+      <el-table-column prop="unitContractPrice" label="合同单价(元)">
+      </el-table-column>
+      <el-table-column prop="packingMethod" label="包装方式"> </el-table-column>
+      <el-table-column prop="buyer" label="买方"> </el-table-column>
+      <el-table-column prop="seller" label="卖方"> </el-table-column>
+      <el-table-column prop="imperfectGrain" label="已完成(吨)">
+        <template slot-scope="scope">
+          <span style="color: #5473e8; font-weight: 600">{{
+            scope.row.imperfectGrain
+          }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="status" label="状态">
+        <template slot-scope="scope">
+          <el-popover
+            placement="left"
+            :width="285"
+            trigger="click"
+            visible-arrow="false"
+            @show="history(scope.row)"
+          >
+            <template>
+              <span slot="reference">
+                <span
+                  v-if="scope.row.status == '待执行'"
+                  class="executory"
+                ></span>
+                <span
+                  v-if="scope.row.status == '执行中'"
+                  class="inExecution"
+                ></span>
+                <span v-if="scope.row.status == '已完成'" class="done"></span
+                >{{ scope.row.status }}
+              </span>
+            </template>
+            <div>
+              <p style="margin-top: 0; padding-left: 10px">操作历史</p>
+              <div v-for="(item, index) in historyList" :key='index' class="flex">
+                <div class="vertical-text vertical-text-left">
+                  {{ item.updateDate }}
+                </div>
+                <div>
+                  <div class="vertical-circle"></div>
+                  <div
+                    v-if="index != historyList.length - 1"
+                    class="vertical-line"
+                  ></div>
+                </div>
+                <div class="vertical-text">
+                  {{ item.operateUser }}<br />{{ item.dealMsg }}
+                </div>
+              </div>
+            </div>
+          </el-popover>
+          <img
+            width="17"
+            height="18"
+            style="vertical-align: text-top; position: relative; top: -1px"
+            src="../../../public/img/edit.png"
+            @click="editClick(scope.row)"
+            alt=""
+          />
+          <!-- <i class="el-icon-edit" @click="editClick(scope.row)"></i> -->
+        </template>
+      </el-table-column>
+      <el-table-column prop="signingDate" label="签订日期"> </el-table-column>
+      <el-table-column prop="mildewGrain" label="已付款(元)">
+      </el-table-column>
+      <el-table-column prop="addressUrl" label="附件">
+        <template slot-scope="scope">
+          <img
+            width="18"
+            height="20"
+            style="vertical-align: text-top; position: relative; top: -1px"
+            src="../../../public/img/fujian.png"
+            @click="fujian(scope.row)"
+            alt=""
+          />
+          <span v-if="scope.row.addressUrlArray.length > 0">{{
+            scope.row.addressUrlArray.length
+          }}</span>
+          <!-- <i @click="fujian(scope.row)" class="el-icon-paperclip iconCss"></i> -->
+        </template>
+      </el-table-column>
+      <el-table-column prop="address" label="操作" width="200">
+        <template slot-scope="scope">
+          <img
+            width="16"
+            height="16"
+            style="vertical-align: text-top; margin: 0 6px"
+            src="../../../public/img/chakan.png"
+            @click="handleExamine(scope.row)"
+            v-hasPermission="
+           `contractManagement.buyContract.buyContractInfo.view`
+          "
+            alt=""
+          />
+          <img
+            width="17"
+            height="16"
+            style="vertical-align: text-top; margin: 0 6px"
+            src="../../../public/img/bianji.png"
+            @click="handleEdit(scope.row)"
+            v-hasPermission="
+           `contractManagement.buyContract.buyContractInfo.edit`
+          "
+            alt=""
+          />
+          <img
+            width="16"
+            height="17"
+            style="
+              vertical-align: text-top;
+              position: relative;
+              top: -1px;
+              margin: 0 6px;
+            "
+            src="../../../public/img/shanchu.png"
+            v-hasPermission="
+           `contractManagement.buyContract.buyContractInfo.delete`
+          "
+            @click="handleDelete(scope.row)"
+            alt=""
+          />
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :current-page="currentPage"
+      :page-size="deptCircularPage.pageSize"
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="deptBudgetTotal"
+    >
+    </el-pagination>
+    <!-- 附件弹框 -->
+    <WinseaContentModal
+      v-model="accessoryTFs"
+      :title="$t('system.noticeCircular.information')"
+      @on-cancel="handleClose"
+    >
+      <p>查看附件</p>
+      <ws-upload
+        ref="upload"
+        table-name="maintain_work_order"
+        oss-key="mainPlan"
+        :comp-id="compId"
+        :appendix-ids="appendixIdsAdd"
+        :vesselId="deptBudgetList.addressUrl"
+        :size-limit="size"
+        @uploadSuccess="uploadSuccess"
+        accept=".jpg, .jpeg, .png, .pdf, .doc, .zip, .rar"
+      />
+    </WinseaContentModal>
+  </div>
+</template>
+<script>
+import {
+  getList,
+  export1,
+  editstatus,
+  billoperatehis,
+  deletecontract,
+} from '@/model/contarct/index'
+import { downloadFile } from '@/utils/batchDown'
+import Pagination from '@/components/Pagination'
+import WsUpload from '@/components/WsUpload'
+import { dayjs,  EventBus } from 'base-core-lib'
+export default {
+  name: 'viewSpareMoney',
+  components: {
+    WsUpload,
+    Pagination,
+  },
+  watch: {
+    vesselId(val) {
+      this.getList()
+    },
+    isShow(val) {
+      this.showType = val
+    },
+  },
+  data() {
+    return {
+      //弹出框
+      dialogViewSpareMoney: false,
+      dialogApproveFormVisible: false,
+      // 船舶类型
+      monetaryKey: null,
+      // 表格显示数据
+      tableDate: [],
+      size: 10,
+      // 是否显示
+      showType: true,
+      // 年
+      year: '',
+      deliver_type: 1,
+      deptBudgetTotal: 0,
+      currentPage: 1,
+      pageSize: 10,
+      appendixIdsAdd: '',
+      searchType: 1,
+      searchTypeText: '未完成',
+      searchKeyWord: '',
+      contractType: 2,
+      startDate: null,
+      endDate: null,
+      // 提交类型
+      submitType: true,
+      deptCircularPage: {},
+      date: {
+        year: dayjs().format('YYYY'),
+        month: dayjs().format('MM'),
+      },
+      contractList: [],
+      deptBudgetList: {},
+      historyList: [],
+      compId: sessionStorage.getItem('ws-pf_compId'),
+      pickerBeginDateBefore: {
+        disabledDate: (time) => {
+          return time.getTime() > Date.now()
+        },
+      },
+      accessoryTFs: false,
+      taskTypeList: [
+        { value: '未完成', type: 1 },
+        { value: '已完成', type: 2 },
+        { value: '全部合同', type: '' },
+      ],
+      pickerOptions: {
+        shortcuts: [
+          {
+            text: '本周',
+            onClick(picker) {
+              const end = new Date()
+              const start = new Date()
+              var thisDay = start.getDay()
+              var thisDate = start.getDate()
+              if (thisDay != 0) {
+                start.setDate(thisDate - thisDay)
+              }
+              picker.$emit('pick', [start, end])
+            },
+          },
+          {
+            text: '本月',
+            onClick(picker) {
+              const end = new Date()
+              const start = new Date()
+              start.setDate(1)
+              picker.$emit('pick', [start, end])
+            },
+          },
+          {
+            text: '本季度',
+            onClick(picker) {
+              var oDate = new Date()
+
+              var thisYear = oDate.getFullYear()
+              var thisMonth = oDate.getMonth() + 1
+
+              var n = Math.ceil(thisMonth / 3) // 季度
+
+              var Month = n * 3 - 1
+
+              var start = new Date(thisYear, Month - 2, 1)
+              var end = new Date()
+
+              picker.$emit('pick', [start, end])
+            },
+          },
+        ],
+      },
+      value1: '',
+      value2: '',
+    }
+  },
+  activated() {
+    console.log(this.$permission('PERMISSIONS.BUYCONTRACTINFO_ADD'))
+    //cg.viewBudget
+    //cg.viewSpareMoney
+    // this.getVesselData();
+    this.getList()
+    this.showType = this.isShow
+  },
+  methods: {
+    dateFormat(fmt, date) {
+      let ret
+      const opt = {
+        'Y+': date.getFullYear().toString(), // 年
+        'm+': (date.getMonth() + 1).toString(), // 月
+        'd+': date.getDate().toString(), // 日
+        'H+': date.getHours().toString(), // 时
+        // "M+": date.getMinutes().toString(),         // 分
+        // "S+": date.getSeconds().toString()          // 秒
+        // 有其他格式化字符需求可以继续添加,必须转化成字符串
+      }
+      for (let k in opt) {
+        ret = new RegExp('(' + k + ')').exec(fmt)
+        if (ret) {
+          fmt = fmt.replace(
+            ret[1],
+            ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
+          )
+        }
+      }
+      return fmt
+    },
+
+    handleClose() {
+      this.accessoryTFs = false
+    },
+    handleSizeChange(val) {
+      console.log(`每页 ${val} 条`)
+      this.pageSize = val
+      this.getList()
+    },
+    handleCurrentChange(val) {
+      this.currentPage = val
+      console.log(`当前页: ${val}`)
+      this.getList()
+    },
+    getList() {
+      getList({
+        compId: sessionStorage.getItem('ws-pf_compId'),
+        contractType: this.contractType,
+        currentPage: this.currentPage,
+        pageSize: this.pageSize,
+        searchType: this.searchType,
+        searchKeyWord: this.searchKeyWord,
+        startDate: this.startDate,
+        endDate: this.endDate,
+        contrPage: this.contrPage,
+      })
+        .toPromise()
+        .then((response) => {
+          for (var i = 0; i < response.records.length; i++) {
+            if (response.records[i].addressUrl != null) {
+              response.records[i].addressUrlArray =
+                response.records[i].addressUrl.split(',')
+            } else {
+              response.records[i].addressUrlArray = []
+            }
+          }
+          this.deptCircularPage.currentPage = response.current
+          this.deptCircularPage.pageSize = response.size
+          this.deptBudgetTotal = response.total
+          this.contractList = response
+        })
+    },
+    // 上传附件
+    uploadSuccess(data, files, url) {
+      console.log(data, files, url)
+
+      // this.deptBudgetList.
+      // this.formData.append('files', files)
+      // this.feedbackObj.uploadNameAttachment = data.appendixName
+      // this.feedbackObj.pathUploadAttachment = data.appendixPath
+      // // this.newAppendixs = files
+      // this.onChangeFlag = true
+    },
+    editClick(row) {
+      var status = ''
+      if (row.status == '待执行' || row.status == '已完成') {
+        status = '执行中'
+      } else if (row.status == '执行中') {
+        status = '已完成'
+      }
+      this.$confirm(`是否将状态改为${status}`, '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+        .then(() => {
+          editstatus({ id: row.id })
+            .toPromise()
+            .then((response) => {
+              this.$notify.success({
+                title: '成功',
+                message: '状态修改成功',
+              })
+              this.getList()
+            })
+            .catch((response) => {
+              // EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
+            })
+        })
+        .catch(() => {
+          return false
+        })
+    },
+    selecttaskType(e) {
+      for (var i = 0; i < this.taskTypeList.length; i++) {
+        if (this.taskTypeList[i].value == e) {
+          this.searchType = this.taskTypeList[i].type
+        }
+      }
+    },
+    fujian(row) {
+      if (
+        row.addressUrl === null ||
+        row.addressUrl === ''
+      ) {
+        EventBus.$emit(
+          'warning',
+          this.$t('system.noticeCircular.NoInformation')
+        )
+      } else {
+        this.accessoryTFs = true
+      }
+      this.appendixIdss = row.addressUrlArray
+    },
+    handleExamine(row) {
+      console.log(row)
+      this.$router.push({
+        name: 'purchaseContractExamine',
+        query: { id: row.id, status: row.status },
+      })
+    },
+    handleAdd() {
+      this.$router.push({ path: 'purchaseContractAdd' })
+    },
+    handleEdit(row) {
+      this.$router.push({
+        name: 'purchaseContractEdit',
+        query: { id: row.id },
+      })
+    },
+    // 关闭 dialog时 处理文件url 初始化upload组件
+    handleCloe() {
+      this.dialogViewSpareMoney = false
+    },
+    history(row) {
+      console.log(row)
+      billoperatehis({ id: row.id })
+        .toPromise()
+        .then((response) => {
+          this.historyList = response
+        })
+    },
+    find() {
+      if (this.value2) {
+        this.startDate = this.dateFormat('YYYY-mm-dd', this.value2[0])
+        this.endDate = this.dateFormat('YYYY-mm-dd', this.value2[1])
+      } else {
+        this.startDate = ''
+        this.endDate = ''
+      }
+      this.currentPage = 1
+      this.getList()
+    },
+    async exportlist() {
+      const { data } = await export1(
+        {
+          compId: sessionStorage.getItem('ws-pf_compId'),
+          contractType: this.contractType,
+          currentPage: this.currentPage,
+          pageSize: this.pageSize,
+          searchType: this.searchType,
+          searchKeyWord: this.searchKeyWord,
+          startDate: this.startDate,
+          endDate: this.endDate,
+        },
+        {},
+        { responseType: 'blob' }
+      ).toPromise()
+      downloadFile({
+        res: data,
+        fileName: `${
+          this.date.year + (this.date.month ? `-${this.date.month}` : '')
+        }_采购合同`,
+        type: 'xls',
+      })
+    },
+    // deletecontract(){},
+    //删除
+    handleDelete(row) {
+      var text = ''
+      if (row.deliverType == 1) {
+        text =
+          '删除该合同将同时永久删除合同对应的临时仓库相关数据,是否确定删除?'
+      } else {
+        text = '合同删除后不可恢复,是否继续删除?'
+      }
+      this.$confirm(text, '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+        .then(() => {
+          deletecontract({ id: row.id })
+            .toPromise()
+            .then((response) => {
+              this.$notify.success({
+                title: '成功',
+                message: '删除成功',
+              })
+              this.getList()
+            })
+            .catch((response) => {})
+        })
+        .catch(() => {
+          return false
+        })
+    },
+  },
+}
+</script>
+<style lang="scss" scoped>
+.vertical-text-left {
+  width: 62px;
+  text-align: right;
+}
+.flex {
+  display: flex;
+}
+.el-range-editor.el-input__inner {
+  margin-left: 10px;
+}
+/deep/.base_header_layout .grid-content.right .find.el-button--primary {
+  width: 30px;
+  margin-left: -10px;
+  border-top-left-radius: 0px;
+  border-bottom-left-radius: 0px;
+}
+.el-button--primary {
+  background-color: #5878e8;
+  border-color: #5878e8;
+}
+.el-button--default {
+  border: 1px solid #5473e8;
+  color: #5473e8;
+}
+.warning {
+  width: 100%;
+  height: 2px;
+  background: red;
+}
+.executory,
+.inExecution,
+.done {
+  width: 6px;
+  height: 6px;
+  display: inline-block;
+  border-radius: 50%;
+  position: relative;
+  top: -1px;
+}
+.executory {
+  background: #ff9f24;
+}
+.inExecution {
+  background: #5878e8;
+}
+.done {
+  background: #50cad4;
+}
+.top-grade {
+  background: linear-gradient(90deg, #5678e9, #7993f6);
+  color: #fff;
+  padding: 3px;
+  border-radius: 2px;
+}
+.second-class {
+  background: linear-gradient(90deg, #50cdd9, #82e2ea);
+  color: #fff;
+  padding: 3px;
+  border-radius: 2px;
+}
+.third-class {
+  background: linear-gradient(90deg, #ffa735, #ffbf70);
+  color: #fff;
+  padding: 3px;
+  border-radius: 2px;
+}
+.substandard {
+  background: linear-gradient(90deg, #b2b4bb, #ced0d5);
+  color: #fff;
+  padding: 3px;
+  border-radius: 2px;
+}
+.wrap {
+  width: 400px;
+  position: absolute;
+  top: 131px;
+  left: 794px;
+  transform-origin: right center;
+  z-index: 2005;
+}
+.vertical-line {
+  height: 100px;
+  border-left: 2px solid #e9ecf7;
+  margin-left: 4px;
+  padding: 0 3px;
+  // border-image: -webkit-linear-gradient(#00eba7, #08b8e6) 30 30;
+  // border-image: -moz-linear-gradient(#00eba7, #08b8e6) 30 30;
+  // border-image: linear-gradient(#00eba7, #08b8e6) 30 30;
+}
+.el-pagination {
+  padding: 10px 15px;
+  margin-bottom: 0;
+  text-align: center;
+}
+/deep/.el-pager li.active {
+  color: #5878e8;
+  cursor: default;
+}
+/deep/.el-pager li:hover {
+  color: #5878e8;
+  cursor: default;
+}
+.vertical-circle {
+  width: 10px;
+  height: 10px;
+  border: 2px solid #5878e8;
+  background-color: #ffffff;
+  -webkit-border-radius: 100px;
+}
+.vertical-circle:first-child {
+  color: red;
+}
+.vertical-text {
+  margin: 0 10px;
+  color: #8890b1;
+  font-size: 12px;
+  margin-top: -4px;
+}
+/deep/.el-table .el-table__header .cell,
+/deep/.el-table .el-table__body .cell {
+  text-align: center;
+}
+.typeselect {
+  width: 500px;
+}
+.padding-xs {
+  padding: 15px;
+  text-align: right;
+}
+.clearfix:after {
+  content: '';
+  display: block;
+  clear: both;
+}
+.el-table {
+  font-size: 16px;
+}
+.taskType {
+  width: 100%;
+  background-color: #fff;
+  margin-top: 2px;
+  margin-bottom: 10px;
+  list-style: none;
+  // padding-bottom: 20px;
+  li {
+    float: left;
+    border: 1px solid #6ea0f3;
+    border-radius: 5px;
+    max-width: 190px;
+    padding: 0 5px;
+    text-align: center;
+    margin: 10px 20px;
+    cursor: pointer;
+    font-size: 14px;
+    p {
+      margin: 8px 0px;
+      span {
+        color: #e74c3c;
+      }
+    }
+  }
+  li:hover {
+    background-color: #e4eeff;
+    color: #1d6ced;
+  }
+}
+.el-date-editor--date {
+  margin: 0 10px;
+}
+.findValue {
+  margin: 0 10px;
+}
+/deep/.findValue .el-input__inner {
+  border-top-right-radius: 0px;
+  border-bottom-right-radius: 0px;
+}
+.button-container {
+  display: flex;
+  flex-wrap: nowrap;
+  justify-content: space-between;
+  align-items: center;
+  background-color: #fff;
+  width: 100%;
+  height: 50px;
+  padding: 0 10px;
+  & > div {
+    margin-left: 10px;
+    display: flex;
+    flex-wrap: nowrap;
+    flex-direction: row;
+    & > span {
+      line-height: 50px;
+    }
+  }
+
+  /deep/.auditFlow-box {
+    position: unset;
+    margin-left: 10px;
+    &/deep/.auditFlow-icon {
+      width: auto;
+      padding-right: 30px;
+    }
+    &/deep/.auditFlow-main {
+      position: absolute;
+    }
+  }
+}
+.box-app {
+  display: inline-block;
+  float: left;
+  margin-left: 30px;
+  line-height: 50px;
+}
+/deep/.el-dialog {
+  .el-form-item {
+    margin-bottom: 0 !important;
+    .el-input--medium {
+      textarea {
+        min-height: 100px !important;
+      }
+    }
+  }
+}
+.collapse-bottom {
+  margin-bottom: 20px;
+}
+
+.input-main .textarea .el-textarea__inner {
+  width: 100%;
+  z-index: 1;
+}
+/*.crt-main .textarea /deep/ .el-form-item__label {*/
+/*  height: 82px;*/
+/*}*/
+// 控制select为只读的时候显示样式
+
+.hide-sel {
+  .el-input__inner {
+    border: 0px;
+  }
+  .el-icon-arrow-up {
+    display: none;
+  }
+  .el-textarea__inner {
+    background-color: #fff !important;
+    border: 0;
+  }
+  .el-date-editor {
+    i {
+      display: none;
+    }
+  }
+  .is-disabled {
+    .el-input__inner:hover {
+      background-color: #fff !important;
+      border: 0;
+    }
+    color: #606266;
+    .el-input__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+    .el-textarea__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+  }
+}
+// 控制select为只读的时候显示样式
+/deep/.ws-class-table-col {
+  height: auto;
+  padding: 0px 2px;
+  /deep/.el-input__inner {
+    padding: 0px 2px;
+  }
+}
+/deep/.is-disabled {
+  .el-input__prefix,
+  .el-input__suffix {
+    display: none;
+  }
+  .el-input__inner {
+    background-color: #fff;
+    border-color: #fff !important;
+    color: #000 !important;
+    font-size: 14px;
+    cursor: text;
+    padding: 0 !important;
+  }
+}
+/deep/.typeselect .el-input__inner{
+   color: #8890B1;
+}
+</style>

+ 1617 - 0
src/views/platformAudit/purchaseContractAdd.vue

@@ -0,0 +1,1617 @@
+<template>
+  <div class="container">
+    <el-row>
+      <el-col :span="12">
+        <h2 class="bg-left title">创建采购合同</h2>
+      </el-col>
+      <el-col :span="12" class="bg-right">
+        <el-button
+          class="bg-bottom"
+          type="primary"
+          size="small"
+          @click="returnsales()"
+          ><img
+            width="6"
+            height="10"
+            style="vertical-align: bottom; margin-right: 3px"
+            src="../../../public/img/lujing.png"
+            alt=""
+          />返回</el-button
+        >
+      </el-col>
+    </el-row>
+    <ws-form ref="deptBudgetList" :rules="rules" :model="deptBudgetList">
+      <div class="remark">
+        <h3>基本信息</h3>
+        <p style="color: #8890b1">
+          注:基本信息和货物信息均为必填项,“*” 标记的条目提交后不可修改。
+        </p>
+      </div>
+      <ws-info-table>
+        <!--合同编号-->
+        <ws-form-item
+          label="合同编号"
+          span="1"
+          prop="contractNo"
+          class="readonly"
+          required
+        >
+          <ws-input
+            v-model="deptBudgetList.contractNo"
+            placeholder="请输入合同编号"
+            maxlength="20"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--运输方式-->
+        <ws-form-item label="运输方式" span="1" prop="shippingType">
+          <ws-input
+            v-model="deptBudgetList.shippingType"
+            placeholder="请输入运输方式"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <!--买方-->
+        <ws-form-item label="买方" span="1" prop="buyer" class="readonly">
+          <ws-input
+            v-model="deptBudgetList.buyer"
+            placeholder="请输入买方名称"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--结算方式-->
+        <ws-form-item label="结算方式" span="1" prop="settlementMethod">
+          <ws-input
+            v-model="deptBudgetList.settlementMethod"
+            placeholder="请输入结算方式"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--卖方-->
+        <ws-form-item label="卖方" span="1" prop="seller" class="readonly">
+          <ws-input
+            v-model="deptBudgetList.seller"
+            placeholder="请输入卖方名称"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <ws-form-item label="交货方式" span="1" prop="seller" class="readonly">
+          <el-radio v-model="deptBudgetList.deliverType" label="1"
+            >我方自提</el-radio
+          >
+          <el-radio v-model="deptBudgetList.deliverType" label="2"
+            >对方送货</el-radio
+          >
+        </ws-form-item>
+        <!--买方电话-->
+        <ws-form-item label="买方电话" span="1" prop="contractNo">
+          <ws-input
+            v-model.number="deptBudgetList.buyerPhone"
+            placeholder="请输入买方电话"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <!--包装方式-->
+        <ws-form-item label="包装方式" span="1" prop="packingMethod">
+          <ws-select
+            v-model="deptBudgetList.packingMethod"
+            placeholder=""
+            class="typeselect"
+            :value="value1"
+            @change="selectpackingMethod"
+          >
+            <ws-option
+              v-for="item in packtypeList"
+              :key="item.constKey"
+              :label="item.constValue"
+              :value="item.constValue"
+            />
+          </ws-select>
+        </ws-form-item>
+        <!--卖方电话-->
+        <ws-form-item label="卖方电话" span="1" prop="sellerPhone">
+          <ws-input
+            v-model="deptBudgetList.sellerPhone"
+            placeholder="请输入卖方电话"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <!--验收方式-->
+        <ws-form-item label="验收方式" span="1" prop="acceptanceMethod">
+          <el-select
+            v-model="deptBudgetList.acceptanceMethod"
+            placeholder="请选择验收方式"
+            style="width: 100%"
+            filterable
+            @change="selectunitList"
+          >
+            <el-option
+              v-for="(item, index) in unitList"
+              :key="item.constValue"
+              :label="item.constValue"
+              :value="item.constValue"
+            >
+              <span class="unit-left" style="float: left">
+                <span v-if="item.flag == 'delete'"> {{ item.constValue }}</span>
+                <!-- 新增文本框 -->
+                <div
+                  style="width: 160px"
+                  v-if="item.flag !== 'delete'"
+                  @click.stop
+                >
+                  <ws-input
+                    v-model="item.constValue"
+                    clearable
+                    maxlength="10"
+                    style="width: 100%"
+                  ></ws-input>
+                </div>
+              </span>
+              <span style="float: right; color: #8492a6; font-size: 13px">
+                <!-- 对号 -->
+                <i
+                  class="el-icon-check"
+                  style="line-height: 29px; margin-left: 10px"
+                  v-if="item.flag !== 'delete'"
+                  @click.stop="saveClick(item, index)"
+                ></i>
+                <!-- 编辑 -->
+                <i
+                  class="el-icon-edit"
+                  style="line-height: 29px; margin-left: 10px"
+                  v-if="item.flag == 'delete'"
+                  @click.stop="editClick(item, index)"
+                ></i>
+                <!-- 删除 -->
+                <i
+                  class="el-icon-delete"
+                  style="line-height: 29px"
+                  @click.stop="deleteClick(item, index)"
+                ></i>
+              </span>
+            </el-option>
+            <!-- 新增按钮 -->
+            <el-option value="" label="">
+              <div
+                style="
+                  text-align: right;
+                  border-top: 1px solid #dcdfe6;
+                  padding: 5px;
+                "
+              >
+                <ws-button type="primary" @click.stop="addClick">{{
+                  $t('button.add')
+                }}</ws-button>
+              </div>
+            </el-option>
+          </el-select>
+        </ws-form-item>
+        <!--重量(吨)-->
+        <ws-form-item label="重量(吨)" span="1" prop="weight">
+          <ws-input
+            @input="weightchange"
+            v-model="deptBudgetList.weight"
+            placeholder="请输入重量(吨)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <!--交货日期(起)-->
+        <ws-form-item label="交货日期(起)" span="1" prop="deliveryDateStart">
+          <ws-date-picker
+            v-model="deptBudgetList.deliveryDateStart"
+            type="date"
+            placeholder="请选择交货日期(起)"
+            value-format="yyyy-MM-dd"
+          />
+        </ws-form-item>
+        <!--溢短装(%)-->
+        <ws-form-item label="溢短装(%)" span="1" prop="overShort">
+          <ws-input
+            v-model="deptBudgetList.overShort"
+            placeholder="请输入溢短装比例(%)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <!--交货日期(止)-->
+        <ws-form-item label="交货日期(止)" span="1" prop="deliveryDateEnd">
+          <ws-date-picker
+            v-model="deptBudgetList.deliveryDateEnd"
+            type="date"
+            placeholder="请选择交货日期(止)"
+            value-format="yyyy-MM-dd"
+          />
+        </ws-form-item>
+        <!--合同单价(元/吨)-->
+        <ws-form-item
+          class="readonly"
+          label="合同单价(元/吨)"
+          span="1"
+          prop="unitContractPrice"
+        >
+          <ws-input
+            v-model="deptBudgetList.unitContractPrice"
+            placeholder="请输入合同单价"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--合同总价-->
+        <ws-form-item label="合同总价" span="1" prop="totalContractPrice">
+          <ws-input
+            v-model="deptBudgetList.totalContractPrice"
+            placeholder="请输入合同总价"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <ws-form-item label="货源所在地区" span="1" prop="sourceGoods">
+          <el-cascader
+            :options="options_"
+            v-model="selectedOptions"
+            clearable
+            size="large"
+            placeholder="请选择货源所在地区"
+            style="width: 200%"
+            @change="handleChange"
+          />
+        </ws-form-item>
+        <ws-form-item label="货源详细地址" span="1" prop="sourceGoods">
+          <ws-input
+            v-model="deptBudgetList.sourceGoods"
+            placeholder="请输入货源详细地址"
+            maxlength="20"
+            size="small"
+          />
+        </ws-form-item>
+        <ws-form-item label="交货所在地区" span="1" prop="sourceGoods">
+          <el-cascader
+            :options="options_"
+            v-model="selectedOptions1"
+            clearable
+            size="large"
+            placeholder="请选择交货所在地区"
+            style="width: 200%"
+            @change="handleChange1"
+          />
+        </ws-form-item>
+        <ws-form-item label="交货详细地址" span="1" prop="placeDelivery">
+          <ws-input
+            v-model="deptBudgetList.placeDelivery"
+            placeholder="请输入交货详细地址"
+            maxlength="20"
+            size="small"
+          />
+        </ws-form-item>
+        <!--签订日期-->
+        <ws-form-item label="签订日期" span="1" prop="signingDate">
+          <ws-date-picker
+            v-model="deptBudgetList.signingDate"
+            type="date"
+            placeholder="请选择合同签订日期"
+            value-format="yyyy-MM-dd"
+          />
+        </ws-form-item>
+        <ws-form-item
+          label="最终实际成交量(吨)"
+          span="1"
+          prop="finalTradingVolume"
+        >
+          <ws-input
+            v-model="deptBudgetList.finalTradingVolume"
+            placeholder="请输入最终实际成交量"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <ws-form-item
+          v-show="deptBudgetList.deliverType == 1"
+          label="临时仓库负责人"
+          span="1"
+          prop="packingMethod"
+        >
+          <el-select
+            v-model="deptBudgetList.personCharge"
+            placeholder="请选择临时仓库负责人"
+            filterable
+            :filter-method="dataFilter"
+            @change="selectstaff"
+          >
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.staffName"
+              :value="item.staffName"
+            />
+          </el-select>
+        </ws-form-item>
+      </ws-info-table>
+      <div class="wenzi">
+        <h3>货物信息</h3>
+      </div>
+      <!--货物信息-->
+
+      <ws-info-table>
+        <!--货名-->
+        <ws-form-item label="货名" span="1" prop="goodsName" class="readonly">
+          <ws-select
+            v-model="deptBudgetList.contractGoodsInfo.goodsName"
+            placeholder=""
+            class="typeselect"
+            @change="selectgoodsName"
+          >
+            <ws-option
+              v-for="item in goodnameList"
+              :key="item.constKey"
+              :label="item.constValue"
+              :value="item.constValue"
+            />
+          </ws-select>
+        </ws-form-item>
+
+        <!--水分(%)<=-->
+        <ws-form-item label="水分(%)" span="1" prop="waterContent">
+          <ws-input
+            v-model="deptBudgetList.contractGoodsInfo.waterContent"
+            placeholder="请输入水分占比"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--品级-->
+        <ws-form-item label="品级" span="1" prop="grade">
+          <ws-select
+            v-model="deptBudgetList.contractGoodsInfo.grade"
+            placeholder=""
+            class="typeselect"
+            @change="selectgrade"
+          >
+            <ws-option
+              v-for="item in gradeList"
+              :key="item.constKey"
+              :label="item.constValue"
+              :value="item.constValue"
+            />
+          </ws-select>
+        </ws-form-item>
+
+        <!--杂质(%)<=-->
+        <ws-form-item label="杂质(%)" span="1" prop="impurity">
+          <ws-input
+            v-model="deptBudgetList.contractGoodsInfo.impurity"
+            placeholder="请输入杂质占比(%)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--容量(克/升)>=-->
+        <ws-form-item label="容量(克/升)" span="1" prop="bulkDensity">
+          <ws-input
+            v-model="deptBudgetList.contractGoodsInfo.bulkDensity"
+            placeholder="请输入容重"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--霉变粒(%)<=-->
+        <ws-form-item label="霉变粒(%)" span="1" prop="mildewGrain">
+          <ws-input
+            v-model="deptBudgetList.contractGoodsInfo.mildewGrain"
+            placeholder="请输入霉变粒占比(%)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--热损伤(%)<=-->
+        <ws-form-item label="热损伤(%)" span="1" prop="jiaorenli">
+          <ws-input
+            v-model="deptBudgetList.contractGoodsInfo.jiaorenli"
+            placeholder="请输入输入热损伤占比(%)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <!--不完整粒(%)<=-->
+        <ws-form-item label="不完整粒(%)" span="1" prop="imperfectGrain">
+          <ws-input
+            v-model="deptBudgetList.contractGoodsInfo.imperfectGrain"
+            placeholder="请输入不完整粒占比(%)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+      </ws-info-table>
+
+      <div class="wenzi">
+        <h3>流程信息</h3>
+      </div>
+      <!--流程信息-->
+
+      <ws-info-table>
+        <!--已付款(元)-->
+        <ws-form-item label="已付款(元)" span="1" prop="goodsNameKey">
+          <ws-input
+            v-model="deptBudgetList.contractProcessInfo.goodsNameKey"
+            placeholder="请输入已付款(元)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--已开发票(元)-->
+        <ws-form-item label="已开发票(元)" span="1" prop="goodsName">
+          <ws-input
+            v-model="deptBudgetList.contractProcessInfo.goodsName"
+            placeholder="请输入已开发票(元)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--费用支出(元)-->
+        <ws-form-item label="费用支出(元)" span="1" prop="waterContent">
+          <ws-input
+            v-model="deptBudgetList.contractProcessInfo.waterContent"
+            placeholder="请输入费用支出(元)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!--未开发票(元)-->
+        <ws-form-item label="未开发票(元)" span="1" prop="impurity">
+          <ws-input
+            v-model="deptBudgetList.contractProcessInfo.impurity"
+            placeholder="请输入未开发票(元)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <!--双章原件回收情况-->
+        <ws-form-item label="双章原件回收情况" span="1" prop="grade">
+          <ws-select
+            v-model="deptBudgetList.contractProcessInfo.grade"
+            placeholder=""
+            class="typeselect"
+            @change="selectChapterTwo"
+          >
+            <ws-option
+              v-for="item in ChapterTwoList"
+              :key="item.constKey"
+              :label="item.constValue"
+              :value="item.constValue"
+            />
+          </ws-select>
+        </ws-form-item>
+        <!--已完成发货量(吨)-->
+        <ws-form-item label="已完成发货量(吨)" span="1" prop="imperfectGrain">
+          <ws-input
+            v-model="deptBudgetList.contractProcessInfo.imperfectGrain"
+            placeholder="请输入已完成发货量(吨)"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+      </ws-info-table>
+
+      <div class="wenzi">
+        <h3>备注信息</h3>
+      </div>
+      <!--备注信息-->
+      <ws-input
+        v-model="deptBudgetList.remarks"
+        type="textarea"
+        row="3"
+        placeholder="请输入备注信息,不超过200字"
+        maxlength="200"
+      />
+      <ws-upload
+        ref="upload"
+        table-name="maintain_work_order"
+        oss-key="mainPlan"
+        :comp-id="compId"
+        :appendix-ids="appendixIdsAdd"
+        :vesselId="deptBudgetList.addressUrl"
+        :size-limit="size"
+        @uploadSuccess="uploadSuccess"
+        @onChange="onChange"
+        accept=".jpg, .jpeg, .png, .pdf, .doc, .zip, .rar"
+      />
+    </ws-form>
+    <div style="text-align: right; padding: 10px" class="center">
+      <el-button
+        class="bg-bottom"
+        type="primary"
+        size="small"
+        @click="submit(deptBudgetList)"
+        >提交</el-button
+      >
+    </div>
+  </div>
+</template>
+<script>
+//  import { getVesselOne } from '@/model/procurement/basic'
+//  import { dayjs } from 'base-core-lib'
+import {
+  packList,
+  addList,
+  xiala,
+  addxiala,
+  editxiala,
+  delxiala,
+  getstaff,
+} from '@/model/contarct/index'
+import { regionData, CodeToText, TextToCode } from 'element-china-area-data'
+import { dayjs, fmoney, EventBus } from 'base-core-lib'
+import WsUpload from '@/components/WsUpload'
+
+export default {
+  name: 'viewSpareMoney',
+  components: {
+    WsUpload,
+  },
+  watch: {
+    vesselId(val) {
+      this.getVesselData()
+    },
+    isShow(val) {
+      this.showType = val
+    },
+  },
+  data() {
+    return {
+      //弹出框
+      dialogViewSpareMoney: false,
+      dialogApproveFormVisible: false,
+      // 船舶类型
+      monetaryKey: null,
+      // 表格显示数据
+      tableDate: [],
+      // 是否显示
+      showType: true,
+      // 年
+      year: '',
+      options_: regionData,
+      selectedOptions: [],
+      selectedOptions1: [],
+      // 提交类型
+      submitType: true,
+      tableData: [{ date: 1111, name: 'qqqq', address: 'errrtt' }],
+
+      packtypeList: [],
+      compId: sessionStorage.getItem('ws-pf_compId'),
+      rules: {
+        // contractNo: [
+        //   { required: true, message: '请输入合同编号', trigger: 'blur' },
+        //   { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' },
+        // ],
+      },
+      options: [],
+      staffList: [],
+      appendixIdsAdd: '',
+      size: 10,
+      // uploadSuccess: {},
+      // onChange:{},
+      unitList: [],
+      goodnameList: [],
+      value1: '袋装',
+      value2: '未回收',
+      gradeList: [],
+      ChapterTwoList: [],
+
+      deptBudgetList: {
+        deliverType: '1',
+        finalTradingVolume: 0,
+        contractGoodsInfo: {
+          goodsName: '',
+        },
+        contractProcessInfo: {},
+      },
+      acceptanceCheck: {},
+      pickerBeginDateBefore: {
+        disabledDate: (time) => {
+          return time.getTime() > Date.now()
+        },
+      },
+      // selectpackingMethod: {},
+      // selectgrade: {},
+      // selectunitList: {},
+      // selectDuty: {},
+      // isEdited: false,
+      // registered: {},
+      // selectCrtDuty: {},
+      // dutyList: {},
+      // sexList: {},
+      ruleDeptBudget: {
+        contractNo: [
+          { required: true, message: '请输入活动名称', trigger: 'blur' },
+          {
+            min: 6,
+            max: 20,
+            message: '长度在 6 到 20 个字符',
+            trigger: 'blur',
+          },
+        ],
+      },
+      selectIntendedShip: {},
+      interviewTypeList: {},
+    }
+  },
+  activated() {
+    //cg.viewBudget
+    //cg.viewSpareMoney
+    // this.getVesselData();
+    this.deptBudgetList.packingMethod = '散装'
+    this.deptBudgetList.packingMethodKey = 1
+    this.deptBudgetList.contractGoodsInfo.goodsName = '玉米'
+    this.deptBudgetList.contractGoodsInfo.goodsNameKey = 1
+    this.deptBudgetList.contractProcessInfo.grade = '未回收'
+    this.deptBudgetList.contractProcessInfo.gradeKey = 1
+    this.deptBudgetList.contractGoodsInfo.grade = '一等品'
+    this.deptBudgetList.contractGoodsInfo.gradeKey = 1
+    getstaff({ compId: sessionStorage.getItem('ws-pf_compId') })
+      .toPromise()
+      .then((response) => {
+        this.options = response
+        this.staffList = response
+      })
+    this.loaddata()
+    this.showType = this.isShow
+  },
+  methods: {
+    dataFilter(val) {
+      this.deptBudgetList.personCharge = val
+      if (val) {
+        //val存在
+        this.options = this.staffList.filter((item) => {
+          if (
+            !!~item.staffName.indexOf(val) ||
+            !!~item.staffName.toUpperCase().indexOf(val.toUpperCase())
+          ) {
+            return true
+          }
+        })
+      } else {
+        //val为空时,还原数组
+        this.options = this.staffList
+      }
+    },
+    selectstaff(e) {
+      for (var i = 0; i < this.staffList.length; i++) {
+        if (this.staffList[i].staffName == e) {
+          this.deptBudgetList.personPhone = this.staffList[i].staffMobilePhone
+          this.deptBudgetList.personChargeKey = this.staffList[i].staffId
+        }
+      }
+    },
+    // 关闭 dialog时 处理文件url 初始化upload组件
+    handleClose() {
+      this.dialogViewSpareMoney = false
+    },
+    handleChange(value) {
+      this.selectedOptions = value
+    },
+    handleChange1(value) {
+      this.selectedOptions1 = value
+    },
+    weightchange(e) {
+      this.deptBudgetList.finalTradingVolume = e
+    },
+    returnsales() {
+      this.$router.push({ path: 'buyContract' })
+    },
+    loaddata() {
+      // 包装方式
+      packList({ constId: 'CON1' })
+        .toPromise()
+        .then((response) => {
+          this.packtypeList = response
+        })
+      // 验收方式
+      this.getUnitList()
+      // 货名
+      packList({ constId: 'CON2' })
+        .toPromise()
+        .then((response) => {
+          this.goodnameList = response
+        })
+      // 品级
+      packList({ constId: 'CON3' })
+        .toPromise()
+        .then((response) => {
+          this.gradeList = response
+        })
+      // 双章
+      packList({ constId: 'CON4' })
+        .toPromise()
+        .then((response) => {
+          this.ChapterTwoList = response
+        })
+    },
+    // 上传附件
+    uploadSuccess(data, files, url) {
+      console.log(data, files, url)
+
+      // this.deptBudgetList.
+      // this.formData.append('files', files)
+      // this.feedbackObj.uploadNameAttachment = data.appendixName
+      // this.feedbackObj.pathUploadAttachment = data.appendixPath
+      // // this.newAppendixs = files
+      // this.onChangeFlag = true
+    },
+    onChange(files) {
+      this.fileNum = files
+      this.$refs.upload.handleSaveBill().then((res) => {
+        console.log(files)
+      })
+    },
+    getUnitList() {
+      xiala({
+        compId: sessionStorage.getItem('ws-pf_compId'),
+        constCode: 'TYPEYAN',
+      })
+        .toPromise()
+        .then((response) => {
+          this.unitList = response
+          let currItem
+          this.unitList.forEach((item, index, arr) => {
+            item.flag = 'delete'
+            if (this.vModel == item.constKey) {
+              currItem = item
+            }
+          })
+          //
+          if (currItem) {
+            this.selectContract(currItem.constValue)
+          }
+        })
+    },
+
+    submit() {
+      if (!this.deptBudgetList.contractNo) {
+        this.$message({
+          message: '请输入合同编号',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.contractNo.length < 6 ||
+        this.deptBudgetList.contractNo.length > 20
+      ) {
+        this.$message({
+          message: '合同编号长度不符合要求,请输入6到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.shippingType) {
+        this.$message({
+          message: '请输入运输方式!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.shippingType.length < 1 ||
+        this.deptBudgetList.shippingType.length > 20
+      ) {
+        this.$message({
+          message: '运输方式长度不符合要求,请输入1到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.buyer) {
+        this.$message({
+          message: '请输入买方名称!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.deptBudgetList.buyer.length > 30) {
+        this.$message({
+          message: '买方名称长度不符合要求,请输入30个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.seller) {
+        this.$message({
+          message: '请输入卖方名称!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.deptBudgetList.seller.length > 30) {
+        this.$message({
+          message: '卖方名称长度不符合要求,请输入30个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.buyerPhone) {
+        this.$message({
+          message: '请输入买方电话!',
+          type: 'warning',
+        })
+        return
+      }
+      if (isNaN(this.deptBudgetList.buyerPhone)) {
+        this.$message({
+          message: '输入买方电话有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.buyerPhone.length < 7 ||
+        this.deptBudgetList.buyerPhone.length > 20
+      ) {
+        this.$message({
+          message: '买方电话长度不符合要求,请输入7到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.sellerPhone) {
+        this.$message({
+          message: '请输入卖方电话!',
+          type: 'warning',
+        })
+        return
+      }
+      if (isNaN(this.deptBudgetList.sellerPhone)) {
+        this.$message({
+          message: '输入卖方电话有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.buyerPhone.length < 7 ||
+        this.deptBudgetList.buyerPhone.length > 20
+      ) {
+        this.$message({
+          message: '卖方电话长度不符合要求,请输入7到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.settlementMethod) {
+        this.$message({
+          message: '请输入结算方式!',
+          type: 'warning',
+        })
+        return
+      }
+
+      if (!this.deptBudgetList.sourceGoods) {
+        this.$message({
+          message: '请输入货源详细地址!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.placeDelivery) {
+        this.$message({
+          message: '请输入交货详细地址!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.selectedOptions.length == 0) {
+        this.$message({
+          message: '请选择货源所在地区!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.selectedOptions1.length == 0) {
+        this.$message({
+          message: '请选择交货所在地区!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.weight) {
+        this.$message({
+          message: '请输入重量!',
+          type: 'warning',
+        })
+        return
+      }
+
+      if (
+        isNaN(this.deptBudgetList.weight) ||
+        (String(this.deptBudgetList.weight).indexOf('.') != -1 &&
+          String(this.deptBudgetList.weight).length -
+            (String(this.deptBudgetList.weight).indexOf('.') + 1) >
+            3) ||
+        this.deptBudgetList.weight < 0 ||
+        this.deptBudgetList.weight > 200000
+      ) {
+        this.$message({
+          message: '输入重量有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.overShort &&
+        isNaN(this.deptBudgetList.overShort)
+      ) {
+        this.$message({
+          message: '溢短装输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.unitContractPrice &&
+        isNaN(this.deptBudgetList.unitContractPrice)
+      ) {
+        this.$message({
+          message: '合同单价输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.totalContractPrice &&
+        isNaN(this.deptBudgetList.totalContractPrice)
+      ) {
+        this.$message({
+          message: '合同总价输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.deliveryDateStart) {
+        this.$message({
+          message: '请选择交货日期(起)',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.deliveryDateEnd) {
+        this.$message({
+          message: '请选择交货日期(止)',
+          type: 'warning',
+        })
+        return
+      }
+      //时间
+      if (
+        new Date(this.deptBudgetList.deliveryDateStart).getTime() >
+        new Date(this.deptBudgetList.deliveryDateEnd).getTime()
+      ) {
+        this.$message({
+          message: '交货日期(止)选择错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.signingDate) {
+        this.$message({
+          message: '请选择签订日期',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.goodsName) {
+        this.$message({
+          message: '请选择货名',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.waterContent) {
+        this.$message({
+          message: '请选择水分',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.grade) {
+        this.$message({
+          message: '请选择品级',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.impurity ||
+        (String(this.deptBudgetList.contractGoodsInfo.impurity).indexOf('.') !=
+          -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.impurity).length -
+            (String(this.deptBudgetList.contractGoodsInfo.impurity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '杂质输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.bulkDensity ||
+        (String(this.deptBudgetList.contractGoodsInfo.bulkDensity).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.bulkDensity).length -
+            (String(this.deptBudgetList.contractGoodsInfo.bulkDensity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '容重输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.mildewGrain ||
+        (String(this.deptBudgetList.contractGoodsInfo.mildewGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.mildewGrain).length -
+            (String(this.deptBudgetList.contractGoodsInfo.mildewGrain).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '霉变粒输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.jiaorenli ||
+        (String(this.deptBudgetList.contractGoodsInfo.jiaorenli).indexOf('.') !=
+          -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.jiaorenli).length -
+            (String(this.deptBudgetList.contractGoodsInfo.jiaorenli).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '热损伤输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.imperfectGrain ||
+        (String(this.deptBudgetList.contractGoodsInfo.imperfectGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.imperfectGrain).length -
+            (String(
+              this.deptBudgetList.contractGoodsInfo.imperfectGrain
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '不完整粒输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.contractProcessInfo.goodsNameKey > 1000000000 ||
+        this.deptBudgetList.contractProcessInfo.goodsNameKey < 0 ||
+        (String(this.deptBudgetList.contractProcessInfo.goodsNameKey).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.goodsNameKey).length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.goodsNameKey
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '合同收入金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.contractProcessInfo.waterContent > 10000000 ||
+        this.deptBudgetList.contractProcessInfo.waterContent < 0 ||
+        (String(this.deptBudgetList.contractProcessInfo.waterContent).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.waterContent).length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.waterContent
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '费用金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.contractProcessInfo.goodsName > 1000000000 ||
+        this.deptBudgetList.contractProcessInfo.goodsName < 0 ||
+        (String(this.deptBudgetList.contractProcessInfo.goodsName).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.goodsName).length -
+            (String(this.deptBudgetList.contractProcessInfo.goodsName).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '已开发票金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.contractProcessInfo.impurity > 1000000000 ||
+        this.deptBudgetList.contractProcessInfo.impurity < 0 ||
+        (String(this.deptBudgetList.contractProcessInfo.impurity).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.impurity).length -
+            (String(this.deptBudgetList.contractProcessInfo.impurity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '未开发票金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.contractProcessInfo.imperfectGrain > 200000 ||
+        this.deptBudgetList.contractProcessInfo.imperfectGrain < 0 ||
+        (String(this.deptBudgetList.contractProcessInfo.imperfectGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.imperfectGrain)
+            .length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.imperfectGrain
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '已完成发运量输入错误',
+          type: 'warning',
+        })
+        return
+      }
+
+      var that = this
+      this.$refs.deptBudgetList.validate((valid) => {
+        if (valid) {
+          this.deptBudgetList.sourceProvince = CodeToText[this.selectedOptions[0]]
+          this.deptBudgetList.sourceCity = CodeToText[this.selectedOptions[1]]     
+          this.deptBudgetList.deliveryProvince = CodeToText[this.selectedOptions1[0]]
+          this.deptBudgetList.deliveryCity = CodeToText[this.selectedOptions1[1]]
+          this.deptBudgetList.compId = this.compId
+          this.deptBudgetList.contractType = 2
+            if(this.deptBudgetList.deliveryProvince =="澳门特别行政区" || this.deptBudgetList.deliveryProvince == "澳门特别行政区"){
+            this.deptBudgetList.deliveryArea = "特别行政区"
+          }else{ 
+             this.deptBudgetList.deliveryArea = CodeToText[this.selectedOptions1[2]]
+          }
+             if(this.deptBudgetList.sourceProvince =="澳门特别行政区" || this.deptBudgetList.sourceProvince == "澳门特别行政区"){
+            this.deptBudgetList.sourceArea = "特别行政区"
+          }else{
+             this.deptBudgetList.sourceArea = CodeToText[this.selectedOptions[2]]
+          }
+
+          addList(this.deptBudgetList)
+            .toPromise()
+            .then((response) => {
+              this.$message.success('添加成功')
+              this.deptBudgetList = {
+                deliverType: '1',
+                finalTradingVolume: 0,
+                contractGoodsInfo: {
+                  goodsName: '',
+                },
+                contractProcessInfo: {},
+              }
+              this.$router.push({ path: 'buyContract' })
+            })
+            .catch((req) => {
+              EventBus.$emit('error', req.message)
+            })
+        } else {
+          // for (let key in that.rules) {
+          //   EventBus.$emit('error', that.rules[key][0].message)
+          //   return false
+          // }
+          return false
+        }
+      })
+    },
+    resetForm(deptBudgetList) {
+      this.$refs[deptBudgetList].resetFields()
+    },
+    addClick() {
+      // let [flag, constValue, constKey] = ['check', '', '']
+      // let obj = { flag, constValue, constKey }
+      // let objAdd = { flag: 'add', constValue: '新增项目', constKey: '' }
+      // let result = this.unitList.filter((item, val, arr) => {
+      //   return item.id != '1'
+      // })
+      // result.push(obj)
+      // result.push(objAdd)
+      // this.unitList = result
+      this.unitList.push({
+        flag: 'add',
+        constValue: '',
+        constKey: '',
+      })
+    },
+    saveClick(item, index) {
+      console.log(item)
+
+      if (Object.is(item.id, 1)) {
+        return
+      }
+      if (Object.is(this.unitList[index].flag, 'delete')) {
+        this.$set(this.unitList, index, { flag: 'check' })
+      } else {
+        this.$set(this.unitList, index, { flag: 'delete' })
+      }
+      if (!item.constValue) {
+        this.unitList.splice(index, 1)
+        return
+      }
+      if (item.flag == 'add') {
+        item.constKey = Math.random() * 20
+        this.acceptanceCheck.compId = this.compId
+        this.acceptanceCheck.constKey = item.constKey
+        this.acceptanceCheck.constCode = 'TYPEYAN'
+        this.acceptanceCheck.constValue = item.constValue
+        this.acceptanceCheck.id = item.id
+        addxiala(this.acceptanceCheck)
+          .toPromise()
+          .then((response) => {
+            this.getUnitList()
+          })
+      } else if (item.flag == 'check') {
+        this.acceptanceCheck.compId = this.compId
+        this.acceptanceCheck.constKey = item.constKey
+        this.acceptanceCheck.constCode = 'TYPEYAN'
+        this.acceptanceCheck.constValue = item.constValue
+        this.acceptanceCheck.id = item.id
+        editxiala(this.acceptanceCheck)
+          .toPromise()
+          .then((response) => {
+            this.getUnitList()
+          })
+      }
+    },
+    // selectContract(val) {
+    //   let key = this.unitList.find((item) => item.constValue === val).constKey
+    //   this.pleaseChoose = val
+    // },
+
+    handleExamine() {},
+    approve() {},
+    // returnsales() {
+    //   this.$router.push({ path: 'purchaseContract' })
+    // },
+    selectChapterTwo(e) {
+      for (var i = 0; i < this.ChapterTwoList.length; i++) {
+        if (this.ChapterTwoList[i].constValue == e) {
+          this.deptBudgetList.gradeKey = this.ChapterTwoList[i].constKey
+        }
+      }
+    },
+    selectunitList(e) {
+      for (var i = 0; i < this.unitList.length; i++) {
+        if (this.unitList[i].constValue == e) {
+          this.deptBudgetList.acceptanceMethodKey = this.unitList[i].constKey
+        }
+      }
+    },
+    selectgrade(e) {
+      for (var i = 0; i < this.gradeList.length; i++) {
+        if (this.gradeList[i].constValue == e) {
+          this.deptBudgetList.gradeKey = this.gradeList[i].constKey
+        }
+      }
+    },
+    selectgoodsName(e) {
+      for (var i = 0; i < this.goodnameList.length; i++) {
+        if (this.goodnameList[i].constValue == e) {
+          this.deptBudgetList.goodsNameKey = this.goodnameList[i].constKey
+        }
+      }
+    },
+    selectpackingMethod(e) {
+      for (var i = 0; i < this.packtypeList.length; i++) {
+        if (this.packtypeList[i].constValue == e) {
+          this.deptBudgetList.packingMethodKey = this.packtypeList[i].constKey
+        }
+      }
+    },
+    // 编辑
+    editClick(item, index) {
+      const map = JSON.parse(JSON.stringify(item))
+      if (Object.is(item.id, 1)) {
+        return
+      }
+      if (Object.is(this.unitList[index].flag, 'delete')) {
+        map.flag = 'check'
+        this.$set(this.unitList, index, map)
+      } else {
+        map.flag = 'delete'
+        this.$set(this.unitList, index, map)
+      }
+    },
+    // 删除
+    deleteClick(item, index) {
+      if (Object.is(item.constKey, 1)) {
+        return
+      }
+      if (!item.constValue) {
+        this.unitList.splice(index, 1)
+        return
+      }
+      delxiala({ id: this.unitList[index].id })
+        .toPromise()
+        .then((response) => {
+          this.getUnitList()
+          this.pleaseChoose = ''
+        })
+    },
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+.el-form {
+  padding: 0 15%;
+}
+/deep/.ws-info-table .el-form-item {
+  border-right: 1px solid #cdd2dc;
+  border-bottom: 1px solid #cdd2dc;
+}
+.readonly {
+  position: relative;
+}
+.readonly:after {
+  content: '*';
+  color: #ff2727;
+  position: absolute;
+  right: 8px;
+  z-index: 10;
+  top: 21%;
+  font-size: 20px;
+}
+.title {
+  position: relative;
+}
+.title::before {
+  content: '';
+  display: inline-block;
+  width: 5px;
+  height: 30px;
+  background: #5473e8;
+  position: absolute;
+  left: 0;
+}
+.el-button--primary {
+  background-color: #5878e8;
+  border-color: #5878e8;
+}
+.el-col {
+  background: #f6f7fc;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__content {
+  padding: 0 25px;
+  border-left: 1px solid #cdd2dc;
+  background: #fafbfc;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__label {
+  width: 140px;
+  text-align: center;
+  background: #f0f2f6;
+  // border: 1px solid #cdd2dc;
+}
+.button-container {
+  display: flex;
+  flex-wrap: nowrap;
+  justify-content: space-between;
+  align-items: center;
+  background-color: #fff;
+  width: 100%;
+  height: 50px;
+  padding: 0 10px;
+  & > div {
+    margin-left: 10px;
+    display: flex;
+    flex-wrap: nowrap;
+    flex-direction: row;
+    & > span {
+      line-height: 50px;
+    }
+  }
+
+  /deep/.auditFlow-box {
+    position: unset;
+    margin-left: 10px;
+    &/deep/.auditFlow-icon {
+      width: auto;
+      padding-right: 30px;
+    }
+    &/deep/.auditFlow-main {
+      position: absolute;
+    }
+  }
+}
+.box-app {
+  display: inline-block;
+  float: left;
+  margin-left: 30px;
+  line-height: 50px;
+}
+/deep/.el-dialog {
+  .el-form-item {
+    margin-bottom: 0 !important;
+    .el-input--medium {
+      textarea {
+        min-height: 100px !important;
+      }
+    }
+  }
+}
+.collapse-bottom {
+  margin-bottom: 20px;
+}
+.input-main .textarea .el-textarea__inner {
+  width: 100%;
+  z-index: 1;
+}
+.bg-left {
+  padding-left: 30px;
+}
+.bg-right {
+  padding-right: 10px;
+  text-align: right;
+}
+.bg-bottom {
+  margin: 15px 0px;
+}
+.wenzi h3 {
+  display: inline-block;
+  left: 10px;
+}
+.wenzi p {
+  display: inline-block;
+}
+.center {
+  width: 70%;
+  margin: 0 auto;
+}
+.el-form-item {
+  width: 50%;
+}
+.el-form-item__label {
+  text-align: center;
+}
+.ce {
+  width: 900px;
+  margin: 0 auto;
+}
+/*.crt-main .textarea /deep/ .el-form-item__label {*/
+/*  height: 82px;*/
+/*}*/
+// 控制select为只读的时候显示样式
+
+.hide-sel {
+  .el-input__inner {
+    border: 0px;
+  }
+  .el-icon-arrow-up {
+    display: none;
+  }
+  .el-textarea__inner {
+    background-color: #fff !important;
+    border: 0;
+  }
+  .el-date-editor {
+    i {
+      display: none;
+    }
+  }
+  .is-disabled {
+    .el-input__inner:hover {
+      background-color: #fff !important;
+      border: 0;
+    }
+    color: #606266;
+    .el-input__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+    .el-textarea__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+  }
+}
+
+// 控制select为只读的时候显示样式
+/deep/.ws-class-table-col {
+  height: auto;
+  padding: 0px 2px;
+  /deep/.el-input__inner {
+    padding: 0px 2px;
+  }
+}
+/deep/.is-disabled {
+  .el-input__prefix,
+  .el-input__suffix {
+    display: none;
+  }
+  .el-input__inner {
+    background-color: #fff;
+    border-color: #fff !important;
+    color: #000 !important;
+    font-size: 14px;
+    cursor: text;
+    padding: 0 !important;
+  }
+}
+.winseaview-view {
+  padding: 0 0 20px;
+}
+.container {
+  overflow: scroll;
+  height: 93vh;
+}
+/deep/.ws-info-table[data-v-850a44a6] .el-form-item .el-form-item__label {
+  width: 130px;
+}
+.el-textarea{
+  width: 101%;
+}
+</style>

+ 1560 - 0
src/views/platformAudit/purchaseContractEdit.vue

@@ -0,0 +1,1560 @@
+<!--销售合同-->
+<!--2019年5月30日 20:25:16 by jlx-->
+<template>
+  <div class="container">
+    <el-row>
+      <el-col :span="12">
+        <h2 class="bg-left title">修改合同信息</h2>
+      </el-col>
+      <el-col :span="12" class="bg-right">
+        <el-button
+          class="bg-bottom"
+          type="primary"
+          size="small"
+          @click="returnsales()"
+          ><img
+            width="6"
+            height="10"
+            style="vertical-align: bottom; margin-right: 3px"
+            src="../../../public/img/lujing.png"
+            alt=""
+          />
+          返回</el-button
+        >
+      </el-col>
+    </el-row>
+    <ws-form
+      ref="deptBudgetList"
+      :rules="mainReportAdd"
+      :model="deptBudgetList"
+    >
+      <div class="remark">
+        <h3>基本信息</h3>
+        <p style="color: #8890b1">
+          &nbsp;&nbsp;注:基本信息和货物信息均为必填项,“*”
+          标记的条目提交后不可修改。
+        </p>
+      </div>
+      <ws-info-table>
+        <!-- 合同编号 -->
+        <ws-form-item
+          class="readonly"
+          label="合同编号"
+          span="1"
+          prop="contractNo"
+        >
+          {{ deptBudgetList.contractNo }}
+        </ws-form-item>
+
+        <!-- 运输方式 -->
+        <ws-form-item label="运输方式" span="1" prop="shippingType">
+          <ws-input
+            v-model="deptBudgetList.shippingType"
+            maxlength="100"
+            placeholder="请输入运输方式"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!-- 买方 -->
+        <ws-form-item class="readonly" label="买方" span="1" prop="buyer">
+          {{ deptBudgetList.buyer }}
+        </ws-form-item>
+        <!-- 交货方式 -->
+        <ws-form-item label="结算方式" span="1" prop="settlementMethod">
+          <ws-input
+            v-model="deptBudgetList.settlementMethod"
+            maxlength="100"
+            placeholder="请输入结算方式"
+            size="small"
+          />
+        </ws-form-item>
+        <!-- 卖方 -->
+        <ws-form-item class="readonly" label="卖方" span="1" prop="seller"
+          >{{ deptBudgetList.seller }}
+        </ws-form-item>
+
+        <ws-form-item
+          class="readonly"
+          label="交货方式"
+          span="1"
+          prop="sourceGoods"
+        >
+          {{ deptBudgetList.deliverType1 }}
+        </ws-form-item>
+        <!-- 买方电话 -->
+        <ws-form-item label="买方电话" span="1" prop="buyerPhone">
+          <ws-input
+            v-model="deptBudgetList.buyerPhone"
+            maxlength="100"
+            size="small"
+          />
+        </ws-form-item>
+        <!-- 包装方式 -->
+        <ws-form-item label="包装方式" span="1" prop="packingMethod">
+          <ws-select
+            v-model="deptBudgetList.packingMethod"
+            placeholder=""
+            class="typeselect"
+            @change="selectpackingMethod"
+          >
+            <ws-option
+              v-for="item in packtypeList"
+              :key="item.constKey"
+              :label="item.constValue"
+              :value="item.constValue"
+            />
+          </ws-select>
+        </ws-form-item>
+        <!-- 卖方电话 -->
+        <ws-form-item label="卖方电话" span="1" prop="sellerPhone">
+          <ws-input
+            v-model="deptBudgetList.sellerPhone"
+            maxlength="100"
+            size="small"
+            placeholder="请输入卖方电话"
+          />
+        </ws-form-item>
+        <!-- 验收方式 -->
+        <ws-form-item label="验收方式" span="1" prop="acceptanceMethod">
+          <el-select
+            v-model="deptBudgetList.acceptanceMethod"
+            placeholder="请选择验收方式"
+            style="width: 100%"
+            filterable
+            @change="selectunitList"
+          >
+            <el-option
+              v-for="(item, index) in unitList"
+              :key="item.constValue"
+              :label="item.constValue"
+              :value="item.constValue"
+            >
+              <span class="unit-left" style="float: left">
+                <span v-if="item.flag == 'delete'"> {{ item.constValue }}</span>
+                <!-- 新增文本框 -->
+                <div v-if="item.flag !== 'delete'" @click.stop>
+                  <ws-input
+                    v-model="item.constValue"
+                    clearable
+                    maxlength="10"
+                    style="width: 200px"
+                  ></ws-input>
+                </div>
+              </span>
+              <span style="float: right; color: #8492a6; font-size: 13px">
+                <!-- 对号 -->
+                <i
+                  class="el-icon-check"
+                  style="line-height: 29px; margin-left: 10px"
+                  v-if="item.flag !== 'delete'"
+                  @click.stop="saveClick(item, index)"
+                ></i>
+                <!-- 编辑 -->
+                <i
+                  class="el-icon-edit"
+                  style="line-height: 29px; margin-left: 10px"
+                  v-if="item.flag == 'delete'"
+                  @click.stop="editClick(item, index)"
+                ></i>
+                <!-- 删除 -->
+                <i
+                  class="el-icon-delete"
+                  style="line-height: 29px"
+                  @click.stop="deleteClick(item, index)"
+                ></i>
+              </span>
+            </el-option>
+            <!-- 新增按钮 -->
+            <el-option value="" label="">
+              <div
+                style="
+                  text-align: right;
+                  border-top: 1px solid #dcdfe6;
+                  padding: 5px;
+                "
+              >
+                <ws-button type="primary" @click.stop="addClick">{{
+                  $t('button.add')
+                }}</ws-button>
+              </div>
+            </el-option>
+          </el-select>
+        </ws-form-item>
+        <!-- 重量(吨) -->
+        <ws-form-item label="重量(吨)" span="1" prop="weight">
+          <ws-input
+            v-model="deptBudgetList.weight"
+            maxlength="100"
+            size="small"
+            placeholder="请输入重量(吨)"
+          />
+        </ws-form-item>
+        <!-- 交货日期(起) -->
+        <ws-form-item label="交货日期(起)" span="1" prop="deliveryDateStart">
+          <ws-date-picker
+            v-model="deptBudgetList.deliveryDateStart"
+            type="date"
+            placeholder="请选择交货日期(起)"
+            value-format="yyyy-MM-dd"
+          />
+        </ws-form-item>
+        <!-- 溢短装(%) -->
+        <ws-form-item label="溢短装(%)" span="1" prop="overShort">
+          <ws-input
+            v-model="deptBudgetList.overShort"
+            maxlength="100"
+            size="small"
+            placeholder="请输入溢短装比例(%)"
+          />
+        </ws-form-item>
+        <!-- 交货日期(止) -->
+        <ws-form-item label="交货日期(止)" span="1" prop="deliveryDateEnd">
+          <ws-date-picker
+            v-model="deptBudgetList.deliveryDateEnd"
+            type="date"
+            placeholder="请选择交货日期(止)"
+            value-format="yyyy-MM-dd"
+          />
+        </ws-form-item>
+        <!-- 合同单价(元/吨) -->
+        <ws-form-item
+          class="readonly"
+          label="合同单价(元/吨)"
+          span="1"
+          prop="unitContractPrice"
+        >
+          <span v-if="deptBudgetList.unitContractPrice != 'null'">{{
+            deptBudgetList.unitContractPrice
+          }}</span>
+        </ws-form-item>
+        <!-- 合同总价(元) -->
+        <ws-form-item label="合同总价(元)" span="1" prop="totalContractPrice">
+          <ws-input
+            v-model="deptBudgetList.totalContractPrice"
+            maxlength="100"
+            placeholder="请输入合同单价"
+            size="small"
+          />
+        </ws-form-item>
+        <!-- 货源所在地区 -->
+        <ws-form-item label="货源所在地区" span="1" prop="packingMethod">
+          <el-cascader
+            :options="options_"
+            v-model="selectedOptions"
+            clearable
+            size="large"
+            placeholder="请选择货源所在地区"
+            style="width: 200%"
+            @change="handleChange"
+          />
+        </ws-form-item>
+        <!-- 货源详细地址 -->
+        <ws-form-item label="货源详细地址" span="1" prop="sourceGoods">
+          <ws-input
+            v-model="deptBudgetList.sourceGoods"
+            maxlength="100"
+            placeholder="请输入货源详细地址"
+            size="small"
+          />
+        </ws-form-item>
+        <!-- 交货地所在地区 -->
+        <ws-form-item label="交货地所在地区" span="1" prop="packingMethod">
+          <el-cascader
+            :options="options_"
+            v-model="selectedOptions1"
+            clearable
+            size="large"
+            placeholder="请选择交货地所在地区"
+            style="width: 200%"
+            @change="handleChange1"
+          />
+        </ws-form-item>
+        <!-- 交货地详细地址 -->
+        <ws-form-item label="交货地详细地址" span="1" prop="placeDelivery">
+          <ws-input
+            v-model="deptBudgetList.placeDelivery"
+            maxlength="100"
+            placeholder="请输入交货地详细地址"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!-- 签订日期 -->
+        <ws-form-item label="签订日期" span="1" prop="signingDate">
+          <ws-date-picker
+            v-model="deptBudgetList.signingDate"
+            type="date"
+            placeholder="请选择合同签订日期"
+            value-format="yyyy-MM-dd"
+          />
+        </ws-form-item>
+
+        <!-- 最终实际交易量(吨) -->
+        <ws-form-item
+          label="最终实际交易量(吨)"
+          span="1"
+          prop="totalContractPrice"
+        >
+          <ws-input
+            v-model="deptBudgetList.finalTradingVolume"
+            maxlength="100"
+            placeholder="请输入最终实际交易量"
+            size="small"
+          />
+        </ws-form-item>
+
+        <!-- 临时仓库负责人 -->
+        <ws-form-item
+          label="临时仓库负责人"
+          span="1"
+          prop="packingMethod"
+          v-show="deptBudgetList.deliverType == 1"
+        >
+          <el-select
+            v-model="deptBudgetList.personCharge"
+            placeholder="请选择临时仓库负责人"
+            filterable
+            :filter-method="dataFilter"
+            @change="selectstaff"
+          >
+            <el-option
+              v-for="item in options"
+              :key="item.value"
+              :label="item.staffName"
+              :value="item.staffName"
+            />
+          </el-select>
+        </ws-form-item>
+      </ws-info-table>
+      <base-card>
+        <!--面试信息-->
+        <div class="remark">
+          <h3>货物信息</h3>
+        </div>
+        <ws-info-table>
+          <ws-form-item
+            class="readonly"
+            label="货名"
+            span="1"
+            prop="waterContent"
+          >
+            {{ deptBudgetList.contractGoodsInfo.goodsName }}
+          </ws-form-item>
+          <ws-form-item label="水分(%)<=" span="1" prop="intendedShipId">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.waterContent"
+              placeholder="请输入水分占比"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item label="品级" span="1" prop="grade">
+            <ws-select
+              v-model="deptBudgetList.contractGoodsInfo.grade"
+              placeholder=""
+              class="typeselect"
+              @change="selectgrade"
+            >
+              <ws-option
+                v-for="item in gradeList"
+                :key="item.constValue"
+                :label="item.constValue"
+                :value="item.constValue"
+              />
+            </ws-select>
+          </ws-form-item>
+          <ws-form-item label="杂质(%)<=" span="1" prop="impurity">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.impurity"
+              placeholder="请输入杂质占比(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item label="容重(克/升)<=" span="1" prop="bulkDensity">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.bulkDensity"
+              placeholder="请输入容重"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item
+            label="霉变粒(%)<="
+            span="1"
+            prop="mildewGrain"
+            class="result"
+          >
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.mildewGrain"
+              placeholder="请输入霉变粒占比(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item label="热损伤(%)<=" span="1" prop="jiaorenli">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.jiaorenli"
+              placeholder="请输入输入热损伤占比(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item
+            label="不完善粒(%)<="
+            span="1"
+            prop="imperfectGrain"
+            class="result"
+          >
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.imperfectGrain"
+              placeholder="请输入不完整粒占比(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+        </ws-info-table>
+        <div class="remark">
+          <h3>流程信息</h3>
+        </div>
+        <ws-info-table>
+          <ws-form-item label="已付款(元)" span="1" prop="mildewGrain">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.mildewGrain"
+              placeholder="请输入已付款(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item label="已开发票(元)" span="1" prop="goodsName">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.goodsName"
+              placeholder="请输入已开发票(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item label="费用支出(元)" span="1" prop="waterContent">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.waterContent"
+              placeholder="请输入费用支出(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item label="未开发票(元)" span="1" prop="impurity"
+            ><ws-input
+              v-model="deptBudgetList.contractProcessInfo.impurity"
+              placeholder="请输入未开发票(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <ws-form-item
+            label="已完成发运量(吨)"
+            span="1"
+            prop="imperfectGrain"
+            class="result"
+          >
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.imperfectGrain"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item label="双章原件回收情况" span="1" prop="grade"
+            ><ws-select
+              v-model="deptBudgetList.contractProcessInfo.grade"
+              placeholder=""
+              class="typeselect"
+              @change="selectChapterTwo"
+            >
+              <ws-option
+                v-for="item in ChapterTwoList"
+                :key="item.constValue"
+                :label="item.constValue"
+                :value="item.constValue"
+              />
+            </ws-select>
+          </ws-form-item>
+        </ws-info-table>
+        <div class="remark">
+          <h3>备注信息</h3>
+        </div>
+        <ws-input
+          v-model="deptBudgetList.remarks"
+          type="textarea"
+          row="3"
+          placeholder="请输入备注信息,不超过200字"
+          maxlength="200"
+        />
+        <ws-upload
+          ref="upload"
+          table-name="maintain_work_order"
+          oss-key="mainPlan"
+          :comp-id="compId"
+          :appendix-ids="appendixIdsAdd"
+          :vesselId="deptBudgetList.addressUrl"
+          :size-limit="size"
+          @uploadSuccess="uploadSuccess"
+          accept=".jpg, .jpeg, .png, .pdf, .doc, .zip, .rar"
+        />
+      </base-card>
+    </ws-form>
+    <div style="text-align: right; padding: 10px">
+      <el-button class="bg-bottom" type="primary" size="small" @click="submit()"
+        >提交</el-button
+      >
+    </div>
+  </div>
+</template>
+<script>
+import { regionData, CodeToText, TextToCode } from 'element-china-area-data'
+import {
+  packList,
+  addList,
+  xiala,
+  addxiala,
+  editxiala,
+  delxiala,
+  examineList,
+  editInfo,
+  getstaff,
+} from '@/model/contarct/index'
+import WsUpload from '@/components/WsUpload'
+import { EventBus, dayjs } from 'base-core-lib'
+export default {
+  name: 'viewSpareMoney',
+  watch: {
+    vesselId(val) {
+      this.getVesselData()
+    },
+    isShow(val) {
+      this.showType = val
+    },
+  },
+  components: {
+    WsUpload,
+  },
+  data() {
+    return {
+      //弹出框
+      dialogViewSpareMoney: false,
+      dialogApproveFormVisible: false,
+      // 船舶类型
+      monetaryKey: null,
+      // 表格显示数据
+      tableDate: [],
+      // 是否显示
+      showType: true,
+      // 年
+      year: '',
+      size: 10,
+      // 提交类型
+      submitType: true,
+      tableData: [{ date: 1111, name: 'qqqq', address: 'errrtt' }],
+      ruleDeptBudget: [],
+      deptBudgetList: {
+        contractProcessInfo: {},
+        contractGoodsInfo: {},
+      },
+      options_: regionData,
+      selectedOptions: [],
+      selectedOptions1: [],
+      mainReportAdd: {},
+      list: {},
+      unitList: [],
+      options: [],
+      staffList: [],
+      packtypeList: [],
+      goodnameList: [],
+      gradeList: [],
+      ChapterTwoList: [],
+      appendixIdsAdd: '',
+      pickerBeginDateBefore: {
+        disabledDate: (time) => {
+          return time.getTime() > Date.now()
+        },
+      },
+      acceptanceCheck: {},
+      compId: sessionStorage.getItem('ws-pf_compId'),
+    }
+  },
+
+  activated() {
+    getstaff({ compId: sessionStorage.getItem('ws-pf_compId') })
+      .toPromise()
+      .then((response) => {
+        this.options = response
+        this.staffList = response
+      })
+    this.loaddata()
+    this.showType = this.isShow
+  },
+  methods: {
+    dataFilter(val) {
+      this.deptBudgetList.personCharge = val
+      if (val) {
+        //val存在
+        this.options = this.staffList.filter((item) => {
+          if (
+            !!~item.staffName.indexOf(val) ||
+            !!~item.staffName.toUpperCase().indexOf(val.toUpperCase())
+          ) {
+            return true
+          }
+        })
+      } else {
+        //val为空时,还原数组
+        this.options = this.staffList
+      }
+    },
+    selectstaff(e) {
+      for (var i = 0; i < this.staffList.length; i++) {
+        if (this.staffList[i].staffName == e) {
+          this.deptBudgetList.personPhone = this.staffList[i].staffMobilePhone
+          this.deptBudgetList.personChargeKey = this.staffList[i].staffId
+        }
+      }
+    },
+    handleChange(value) {
+      this.selectedOptions = value
+    },
+    handleChange1(value) {
+      this.selectedOptions1 = value
+    },
+    loaddata() {
+      // 数据
+      examineList({ id: this.$route.query.id })
+        .toPromise()
+        .then((response) => {
+          if (response.weight) {
+            response.weight = String(response.weight)
+          }
+          if (response.overShort) {
+            response.overShort = String(response.overShort)
+          }
+          if (response.totalContractPrice) {
+            response.totalContractPrice = String(response.totalContractPrice)
+          }
+          if (response.unitContractPrice) {
+            response.unitContractPrice = String(response.unitContractPrice)
+          }
+          var tmp = []
+          tmp[0] = TextToCode[response.sourceProvince].code
+
+          tmp[1] = TextToCode[response.sourceProvince][response.sourceCity].code
+
+          if (tmp[0] == 810000 || tmp[0] == 820000) {
+            tmp[2] = null
+          } else {
+            tmp[2] =
+              TextToCode[response.sourceProvince][response.sourceCity][
+                response.sourceArea
+              ].code
+          }
+          this.selectedOptions = tmp
+          var tmp1 = []
+          tmp1[0] = TextToCode[response.deliveryProvince].code
+          tmp1[1] =
+            TextToCode[response.deliveryProvince][response.deliveryCity].code
+
+          if (tmp1[0] == 810000 || tmp1[0] == 820000) {
+            tmp1[2] = null
+          } else {
+            tmp1[2] =
+              TextToCode[response.deliveryProvince][response.deliveryCity][
+                response.deliveryArea
+              ].code
+          }
+          this.selectedOptions1 = tmp1
+          this.deptBudgetList = response
+          if (this.deptBudgetList.deliverType == 1) {
+            this.deptBudgetList.deliverType1 = '我方自提'
+          } else if (this.deptBudgetList.deliverType == 2) {
+            this.deptBudgetList.deliverType1 = '对方送货'
+          }
+        })
+      // 包装方式
+      packList({ constId: 'CON1' })
+        .toPromise()
+        .then((response) => {
+          this.packtypeList = response
+        })
+      // 验收方式
+      this.getUnitList()
+      // 货名
+      packList({ constId: 'CON2' })
+        .toPromise()
+        .then((response) => {
+          this.goodnameList = response
+        })
+      // 品级
+      packList({ constId: 'CON3' })
+        .toPromise()
+        .then((response) => {
+          this.gradeList = response
+        })
+      // 双章
+      packList({ constId: 'CON4' })
+        .toPromise()
+        .then((response) => {
+          this.ChapterTwoList = response
+        })
+    },
+    addClick() {
+      // let [flag, constValue, constKey] = ['check', '', '']
+      // let obj = { flag, constValue, constKey }
+      // let objAdd = { flag: 'add', constValue: '新增项目', constKey: '' }
+      // let result = this.unitList.filter((item, val, arr) => {
+      //   return item.id != '1'
+      // })
+      // result.push(obj)
+      // result.push(objAdd)
+      // this.unitList = result
+      this.unitList.push({
+        flag: 'add',
+        constValue: '',
+        constKey: '',
+      })
+    },
+    // 上传附件
+    uploadSuccess(data, files, url) {
+      console.log(data, files, url)
+
+      // this.deptBudgetList.
+      // this.formData.append('files', files)
+      // this.feedbackObj.uploadNameAttachment = data.appendixName
+      // this.feedbackObj.pathUploadAttachment = data.appendixPath
+      // // this.newAppendixs = files
+      // this.onChangeFlag = true
+    },
+    getUnitList() {
+      xiala({
+        compId: sessionStorage.getItem('ws-pf_compId'),
+        constCode: 'TYPEYAN',
+      })
+        .toPromise()
+        .then((response) => {
+          this.unitList = response
+          let currItem
+          this.unitList.forEach((item, index, arr) => {
+            item.flag = 'delete'
+            if (this.vModel == item.constKey) {
+              currItem = item
+            }
+          })
+          //
+          if (currItem) {
+            this.selectContract(currItem.constValue)
+          }
+        })
+    },
+    // 关闭 dialog时 处理文件url 初始化upload组件
+    handleClose() {
+      this.dialogViewSpareMoney = false
+    },
+    handleExamine() {},
+    approve() {},
+    returnsales() {
+      this.$router.push({ path: 'buyContract' })
+    },
+    selectChapterTwo(e) {
+      for (var i = 0; i < this.ChapterTwoList.length; i++) {
+        if (this.ChapterTwoList[i].constValue == e) {
+          this.deptBudgetList.gradeKey = this.ChapterTwoList[i].constKey
+        }
+      }
+    },
+    selectunitList(e) {
+      for (var i = 0; i < this.unitList.length; i++) {
+        if (this.unitList[i].constValue == e) {
+          this.deptBudgetList.packingMethodKey = this.unitList[i].constKey
+        }
+      }
+    },
+    selectgrade(e) {
+      for (var i = 0; i < this.gradeList.length; i++) {
+        if (this.gradeList[i].constValue == e) {
+          this.deptBudgetList.gradeKey = this.gradeList[i].constKey
+        }
+      }
+    },
+    selectpackingMethod(e) {
+      for (var i = 0; i < this.packtypeList.length; i++) {
+        if (this.packtypeList[i].constValue == e) {
+          this.deptBudgetList.acceptanceMethodKey =
+            this.packtypeList[i].constKey
+        }
+      }
+    },
+    saveClick(item, index) {
+      console.log(item)
+
+      if (Object.is(item.id, 1)) {
+        return
+      }
+      if (Object.is(this.unitList[index].flag, 'delete')) {
+        this.$set(this.unitList, index, { flag: 'check' })
+      } else {
+        this.$set(this.unitList, index, { flag: 'delete' })
+      }
+      if (!item.constValue) {
+        this.unitList.splice(index, 1)
+        return
+      }
+      if (item.flag == 'add') {
+        item.constKey = Math.random() * 20
+        this.acceptanceCheck.compId = this.compId
+        this.acceptanceCheck.constKey = item.constKey
+        this.acceptanceCheck.constCode = 'TYPEYAN'
+        this.acceptanceCheck.constValue = item.constValue
+        this.acceptanceCheck.id = item.id
+        addxiala(this.acceptanceCheck)
+          .toPromise()
+          .then((response) => {
+            this.getUnitList()
+          })
+      } else if (item.flag == 'check') {
+        this.acceptanceCheck.compId = this.compId
+        this.acceptanceCheck.constKey = item.constKey
+        this.acceptanceCheck.constCode = 'TYPEYAN'
+        this.acceptanceCheck.constValue = item.constValue
+        this.acceptanceCheck.id = item.id
+        editxiala(this.acceptanceCheck)
+          .toPromise()
+          .then((response) => {
+            this.getUnitList()
+          })
+      }
+    },
+    // 编辑
+    editClick(item, index) {
+      const map = JSON.parse(JSON.stringify(item))
+      if (Object.is(item.id, 1)) {
+        return
+      }
+      if (Object.is(this.unitList[index].flag, 'delete')) {
+        map.flag = 'check'
+        this.$set(this.unitList, index, map)
+      } else {
+        map.flag = 'delete'
+        this.$set(this.unitList, index, map)
+      }
+    },
+    // 删除
+    deleteClick(item, index) {
+      if (Object.is(item.constKey, 1)) {
+        return
+      }
+      if (!item.constValue) {
+        this.unitList.splice(index, 1)
+        return
+      }
+      delxiala({ id: this.unitList[index].id })
+        .toPromise()
+        .then((response) => {
+          this.getUnitList()
+          this.pleaseChoose = ''
+        })
+    },
+    submit() {
+      if (!this.deptBudgetList.contractNo) {
+        this.$message({
+          message: '请输入合同编号',
+          type: 'warning',
+        })
+        return
+      }
+      console.log(this.deptBudgetList.contractNo.length)
+      if (
+        this.deptBudgetList.contractNo.length < 6 ||
+        this.deptBudgetList.contractNo.length > 20
+      ) {
+        this.$message({
+          message: '合同编号长度不符合要求,请输入6到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.shippingType) {
+        this.$message({
+          message: '请输入运输方式!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.shippingType.length < 1 ||
+        this.deptBudgetList.shippingType.length > 20
+      ) {
+        this.$message({
+          message: '运输方式长度不符合要求,请输入1到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.buyer) {
+        this.$message({
+          message: '请输入买方名称!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.deptBudgetList.buyer.length > 30) {
+        this.$message({
+          message: '买方名称长度不符合要求,请输入30个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.seller) {
+        this.$message({
+          message: '请输入卖方名称!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.deptBudgetList.seller.length > 30) {
+        this.$message({
+          message: '卖方名称长度不符合要求,请输入30个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.buyerPhone) {
+        this.$message({
+          message: '请输入买方电话!',
+          type: 'warning',
+        })
+        return
+      }
+      if (isNaN(this.deptBudgetList.buyerPhone)) {
+        this.$message({
+          message: '输入买方电话有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.buyerPhone.length < 7 ||
+        this.deptBudgetList.buyerPhone.length > 20
+      ) {
+        this.$message({
+          message: '买方电话长度不符合要求,请输入7到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.sellerPhone) {
+        this.$message({
+          message: '请输入卖方电话!',
+          type: 'warning',
+        })
+        return
+      }
+      if (isNaN(this.deptBudgetList.sellerPhone)) {
+        this.$message({
+          message: '输入卖方电话有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.buyerPhone.length < 7 ||
+        this.deptBudgetList.buyerPhone.length > 20
+      ) {
+        this.$message({
+          message: '卖方电话长度不符合要求,请输入7到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.settlementMethod) {
+        this.$message({
+          message: '请输入结算方式!',
+          type: 'warning',
+        })
+        return
+      }
+
+      if (!this.deptBudgetList.sourceGoods) {
+        this.$message({
+          message: '请输入货源详细地址!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.placeDelivery) {
+        this.$message({
+          message: '请输入交货详细地址!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.selectedOptions.length == 0) {
+        this.$message({
+          message: '请选择货源所在地区!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.selectedOptions1.length == 0) {
+        this.$message({
+          message: '请选择交货所在地区!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.weight) {
+        this.$message({
+          message: '请输入重量!',
+          type: 'warning',
+        })
+        return
+      }
+
+      if (
+        isNaN(this.deptBudgetList.weight) ||
+        (String(this.deptBudgetList.weight).indexOf('.') != -1 &&
+          String(this.deptBudgetList.weight).length -
+            (String(this.deptBudgetList.weight).indexOf('.') + 1) >
+            3) ||
+        this.deptBudgetList.weight < 0 ||
+        this.deptBudgetList.weight > 200000
+      ) {
+        this.$message({
+          message: '输入重量有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.overShort &&
+        isNaN(this.deptBudgetList.overShort)
+      ) {
+        this.$message({
+          message: '溢短装输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.unitContractPrice &&
+        isNaN(this.deptBudgetList.unitContractPrice)
+      ) {
+        this.$message({
+          message: '合同单价输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.totalContractPrice &&
+        isNaN(this.deptBudgetList.totalContractPrice)
+      ) {
+        this.$message({
+          message: '合同总价输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.deliveryDateStart) {
+        this.$message({
+          message: '请选择交货日期(起)',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.deliveryDateEnd) {
+        this.$message({
+          message: '请选择交货日期(止)',
+          type: 'warning',
+        })
+        return
+      }
+      //时间
+      if (
+        new Date(this.deptBudgetList.deliveryDateStart).getTime() >
+        new Date(this.deptBudgetList.deliveryDateEnd).getTime()
+      ) {
+        this.$message({
+          message: '交货日期(止)选择错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.signingDate) {
+        this.$message({
+          message: '请选择签订日期',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.goodsName) {
+        this.$message({
+          message: '请选择货名',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.waterContent) {
+        this.$message({
+          message: '请选择水分',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.grade) {
+        this.$message({
+          message: '请选择品级',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.impurity ||
+        (String(this.deptBudgetList.contractGoodsInfo.impurity).indexOf('.') !=
+          -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.impurity).length -
+            (String(this.deptBudgetList.contractGoodsInfo.impurity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '杂质输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.bulkDensity ||
+        (String(this.deptBudgetList.contractGoodsInfo.bulkDensity).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.bulkDensity).length -
+            (String(this.deptBudgetList.contractGoodsInfo.bulkDensity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '容重输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.mildewGrain ||
+        (String(this.deptBudgetList.contractGoodsInfo.mildewGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.mildewGrain).length -
+            (String(this.deptBudgetList.contractGoodsInfo.mildewGrain).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '霉变粒输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.jiaorenli ||
+        (String(this.deptBudgetList.contractGoodsInfo.jiaorenli).indexOf('.') !=
+          -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.jiaorenli).length -
+            (String(this.deptBudgetList.contractGoodsInfo.jiaorenli).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '热损伤输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.imperfectGrain ||
+        (String(this.deptBudgetList.contractGoodsInfo.imperfectGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.imperfectGrain).length -
+            (String(
+              this.deptBudgetList.contractGoodsInfo.imperfectGrain
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '不完整粒输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (!this.deptBudgetList.contractProcessInfo.goodsNameKey > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.goodsNameKey < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.goodsNameKey).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.goodsNameKey).length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.goodsNameKey
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '合同收入金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.waterContent > 10000000) |
+          (this.deptBudgetList.contractProcessInfo.waterContent < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.waterContent).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.waterContent).length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.waterContent
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '费用金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.goodsName > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.goodsName < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.goodsName).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.goodsName).length -
+            (String(this.deptBudgetList.contractProcessInfo.goodsName).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '已开发票金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.impurity > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.impurity < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.impurity).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.impurity).length -
+            (String(this.deptBudgetList.contractProcessInfo.impurity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '未开发票金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.imperfectGrain > 200000) |
+          (this.deptBudgetList.contractProcessInfo.imperfectGrain < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.imperfectGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.imperfectGrain)
+            .length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.imperfectGrain
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '已完成发运量输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      this.$refs.deptBudgetList.validate((valid) => {
+        if (valid) {
+          this.deptBudgetList.sourceProvince = CodeToText[this.selectedOptions[0]]
+          this.deptBudgetList.sourceCity = CodeToText[this.selectedOptions[1]]
+         
+          this.deptBudgetList.deliveryProvince = CodeToText[this.selectedOptions1[0]]
+          this.deptBudgetList.deliveryCity = CodeToText[this.selectedOptions1[1]]
+        
+          this.deptBudgetList.compId = this.compId
+          this.deptBudgetList.contractType = 2
+           if(this.deptBudgetList.deliveryProvince =="澳门特别行政区" || this.deptBudgetList.deliveryProvince == "澳门特别行政区"){
+            this.deptBudgetList.deliveryArea = "特别行政区"
+          }else{ 
+                 this.deptBudgetList.deliveryArea =  CodeToText[this.selectedOptions1[2]]
+          }
+             if(this.deptBudgetList.sourceProvince =="澳门特别行政区" || this.deptBudgetList.sourceProvince == "澳门特别行政区"){
+            this.deptBudgetList.sourceArea = "特别行政区"
+          }else{
+               this.deptBudgetList.sourceArea = CodeToText[this.selectedOptions[2]]
+          }
+          editInfo(this.deptBudgetList)
+            .toPromise()
+            .then((response) => {
+              this.$message.success('编辑成功')
+              this.$router.push({ path: 'buyContract' })
+            })
+        } else {
+          EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
+          return false
+        }
+      })
+    },
+  },
+}
+</script>
+<style lang="scss" scoped>
+.el-form {
+  padding: 0 15%;
+}
+/deep/.ws-info-table .el-form-item {
+  border-right: 1px solid #cdd2dc;
+  border-bottom: 1px solid #cdd2dc;
+}
+.readonly {
+  position: relative;
+}
+.readonly:after {
+  content: '*';
+  color: #ff2727;
+  position: absolute;
+  right: 8px;
+  z-index: 10;
+  top: 21%;
+  font-size: 20px;
+}
+.title {
+  position: relative;
+}
+.title::before {
+  content: '';
+  display: inline-block;
+  width: 5px;
+  height: 30px;
+  background: #5473e8;
+  position: absolute;
+  left: 0;
+}
+.el-button--primary {
+  background-color: #5878e8;
+  border-color: #5878e8;
+}
+.el-col {
+  background: #f6f7fc;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__content {
+  padding: 0 25px;
+  border-left: 1px solid #cdd2dc;
+  background: #fafbfc;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__label {
+  width: 140px;
+  text-align: center;
+  background: #f0f2f6;
+  // border: 1px solid #cdd2dc;
+}
+.button-container {
+  display: flex;
+  flex-wrap: nowrap;
+  justify-content: space-between;
+  align-items: center;
+  background-color: #fff;
+  width: 100%;
+  height: 50px;
+  padding: 0 10px;
+  & > div {
+    margin-left: 10px;
+    display: flex;
+    flex-wrap: nowrap;
+    flex-direction: row;
+    & > span {
+      line-height: 50px;
+    }
+  }
+
+  /deep/.auditFlow-box {
+    position: unset;
+    margin-left: 10px;
+    &/deep/.auditFlow-icon {
+      width: auto;
+      padding-right: 30px;
+    }
+    &/deep/.auditFlow-main {
+      position: absolute;
+    }
+  }
+}
+.box-app {
+  display: inline-block;
+  float: left;
+  margin-left: 30px;
+  line-height: 50px;
+}
+/deep/.el-dialog {
+  .el-form-item {
+    margin-bottom: 0 !important;
+    .el-input--medium {
+      textarea {
+        min-height: 100px !important;
+      }
+    }
+  }
+}
+.collapse-bottom {
+  margin-bottom: 20px;
+}
+.input-main .textarea .el-textarea__inner {
+  width: 100%;
+  z-index: 1;
+}
+.bg-left {
+  padding-left: 30px;
+}
+.bg-right {
+  padding-right: 10px;
+  text-align: right;
+}
+.bg-bottom {
+  margin: 15px 0px;
+}
+.wenzi {
+  width: 900px;
+  margin: 0 auto;
+}
+.wenzi h3 {
+  display: inline-block;
+  left: 10px;
+}
+.wenzi p {
+  display: inline-block;
+}
+.center {
+  width: 900px;
+  margin: 0 auto;
+}
+.el-form-item {
+  width: 50%;
+}
+.el-form-item__label {
+  text-align: center;
+}
+.ce {
+  width: 900px;
+  margin: 0 auto;
+}
+/*.crt-main .textarea /deep/ .el-form-item__label {*/
+/*  height: 82px;*/
+/*}*/
+// 控制select为只读的时候显示样式
+
+.hide-sel {
+  .el-input__inner {
+    border: 0px;
+  }
+  .el-icon-arrow-up {
+    display: none;
+  }
+  .el-textarea__inner {
+    background-color: #fff !important;
+    border: 0;
+  }
+  .el-date-editor {
+    i {
+      display: none;
+    }
+  }
+  .is-disabled {
+    .el-input__inner:hover {
+      background-color: #fff !important;
+      border: 0;
+    }
+    color: #606266;
+    .el-input__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+    .el-textarea__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+  }
+}
+
+// 控制select为只读的时候显示样式
+/deep/.ws-class-table-col {
+  height: auto;
+  padding: 0px 2px;
+  /deep/.el-input__inner {
+    padding: 0px 2px;
+  }
+}
+/deep/.is-disabled {
+  .el-input__prefix,
+  .el-input__suffix {
+    display: none;
+  }
+  .el-input__inner {
+    background-color: #fff;
+    border-color: #fff !important;
+    color: #000 !important;
+    font-size: 14px;
+    cursor: text;
+    padding: 0 !important;
+  }
+}
+.winseaview-view {
+  padding: 0 0 20px;
+}
+.container {
+  overflow: scroll;
+  height: 93vh;
+}
+/deep/.ws-info-table[data-v-850a44a6] .el-form-item .el-form-item__label {
+  width: 130px;
+}
+.el-textarea{
+  width: 101%;
+}
+/deep/.iconclose:before {
+    display: none;
+}
+/deep/.winsea-card .card__header {
+    font-size: 14px;
+    color: #409eff;
+    padding: 0 0 20px 10px;
+    position: relative;
+    display: none;
+}
+</style>

+ 558 - 0
src/views/platformAudit/purchaseContractExamine.vue

@@ -0,0 +1,558 @@
+<!--销售合同-->
+<!--2019年5月30日 20:25:16 by jlx-->
+<template>
+  <div class="container">
+    <el-row>
+      <el-col :span="12">
+        <h2 class="bg-left title">查看合同详情</h2>
+      </el-col>
+      <el-col :span="12" class="bg-right">
+        <el-button
+          class="bg-bottom"
+          type="primary"
+          size="small"
+          @click="returnsales()"
+          ><img
+            width="6"
+            height="10"
+            style="vertical-align: bottom; margin-right: 3px"
+            src="../../../public/img/lujing.png"
+            alt=""
+          />返回</el-button
+        >
+      </el-col>
+    </el-row>
+
+    <ws-form ref="deptBudgetList" :rules="mainReportAdd" :model="deptBudgetList"
+      ><div style="margin-top: 20px; font-size: 24px">
+        采购合同<span style="font-size: 16px"
+          >【编号:{{ deptBudgetList.contractNo }}】</span
+        ><span v-if="status == '待执行'" class="status-orange">{{
+          status
+        }}</span>
+        <span v-if="status == '执行中'" class="status-bule">{{ status }}</span>
+        <span v-if="status == '已完成'" class="status-green">{{ status }}</span>
+      </div>
+      <div class="remark">
+        <h3>基本信息</h3>
+      </div>
+      <ws-info-table>
+        <ws-form-item label="合同编号" span="1" prop="contractNo">
+          {{ deptBudgetList.contractNo }}
+        </ws-form-item>
+        <ws-form-item label="运输方式" span="1" prop="shippingType">
+          {{ deptBudgetList.shippingType }}
+        </ws-form-item>
+        <ws-form-item label="买方" span="1" prop="buyer">
+          {{ deptBudgetList.buyer }}
+        </ws-form-item>
+        <ws-form-item label="结算方式" span="1" prop="settlementMethod"
+          >{{ deptBudgetList.settlementMethod }}
+        </ws-form-item>
+        <ws-form-item label="卖方" span="1" prop="seller"
+          >{{ deptBudgetList.seller }}
+        </ws-form-item>
+        <ws-form-item label="交货方式" span="1" prop="deliverType1"
+          >{{ deptBudgetList.deliverType1 }}
+        </ws-form-item>
+        <ws-form-item label="买方电话" span="1" prop="buyerPhone"
+          >{{ deptBudgetList.buyerPhone }}
+        </ws-form-item>
+        <ws-form-item label="包装方式" span="1" prop="packingMethod">
+          {{ deptBudgetList.packingMethod }}
+        </ws-form-item>
+        <ws-form-item label="卖方电话" span="1" prop="sellerPhone">
+          {{ deptBudgetList.sellerPhone }}
+        </ws-form-item>
+        <ws-form-item label="验收方式" span="1" prop="acceptanceMethod">
+          {{ deptBudgetList.acceptanceMethod }}
+        </ws-form-item>
+        <ws-form-item label="重量(吨)" span="1" prop="weight">
+          {{ deptBudgetList.weight }}
+        </ws-form-item>
+        <ws-form-item label="交货日期(起)" span="1" prop="deliveryDateStart">
+          {{ deptBudgetList.deliveryDateStart }}
+        </ws-form-item>
+        <ws-form-item label="溢短装(%)" span="1" prop="overShort">
+          {{ deptBudgetList.overShort }}
+        </ws-form-item>
+        <ws-form-item label="交货日期(止)" span="1" prop="deliveryDateEnd">
+          {{ deptBudgetList.deliveryDateEnd }}
+        </ws-form-item>
+        <ws-form-item
+          label="合同单价(元/吨)"
+          span="1"
+          prop="unitContractPrice"
+        >
+          {{ deptBudgetList.unitContractPrice }}
+        </ws-form-item>
+        <ws-form-item label="合同总价(元)" span="1" prop="totalContractPrice">
+          {{ deptBudgetList.totalContractPrice }}
+        </ws-form-item>
+        <ws-form-item label="货源所在地区" span="1">
+          {{ deptBudgetList.sourceProvince }}
+          {{ deptBudgetList.sourceCity }}
+          {{ deptBudgetList.sourceArea }}
+        </ws-form-item>
+        <ws-form-item label="货源详细地址" span="1" prop="sourceGoods">
+          {{ deptBudgetList.sourceGoods }}
+        </ws-form-item>
+        <ws-form-item label="交货地所在地区" span="1">
+          {{ deptBudgetList.deliveryProvince }}
+          {{ deptBudgetList.deliveryCity }}
+          {{ deptBudgetList.deliveryArea }}
+        </ws-form-item>
+        <ws-form-item label="交货地详细地址" span="1" prop=" placeDelivery">
+          {{ deptBudgetList.placeDelivery }}
+        </ws-form-item>
+        <ws-form-item label="签订日期" span="1" prop="signingDate">
+          {{ deptBudgetList.signingDate }}
+        </ws-form-item>
+        <ws-form-item label="最终实际交易量(吨)" span="1" prop="finalTradingVolume">
+          {{ deptBudgetList.finalTradingVolume }}
+        </ws-form-item>
+        <ws-form-item label="临时仓库负责人" span="1" prop="personCharge">
+          {{ deptBudgetList.personCharge }}
+        </ws-form-item>
+      </ws-info-table>
+      <!--面试信息-->
+      <div class="remark">
+        <h3>货物信息</h3>
+      </div>
+      <ws-info-table>
+        <ws-form-item label="货名" span="1" prop="waterContent">
+          {{ deptBudgetList.contractGoodsInfo.goodsName }}
+        </ws-form-item>
+        <ws-form-item label="水分(%)<=" span="1" prop="intendedShipId">
+          {{ deptBudgetList.contractGoodsInfo.waterContent }}
+        </ws-form-item>
+        <ws-form-item label="品级" span="1" prop="grade">
+          {{ deptBudgetList.contractGoodsInfo.grade }}
+        </ws-form-item>
+        <ws-form-item label="杂质(%)<=" span="1" prop="impurity">
+          {{ deptBudgetList.contractGoodsInfo.impurity }}
+        </ws-form-item>
+        <ws-form-item label="容重(克/升)<=" span="1" prop="bulkDensity">
+          {{ deptBudgetList.contractGoodsInfo.bulkDensity }}
+        </ws-form-item>
+        <ws-form-item
+          label="霉变粒(%)<="
+          span="1"
+          prop="mildewGrain"
+          class="result"
+        >
+          {{ deptBudgetList.contractGoodsInfo.mildewGrain }}
+        </ws-form-item>
+        <ws-form-item label="热损伤(%)<=" span="1" prop="jiaorenli">
+          {{ deptBudgetList.contractGoodsInfo.jiaorenli }}
+        </ws-form-item>
+        <ws-form-item
+          label="不完善粒(%)<="
+          span="1"
+          prop="imperfectGrain"
+          class="result"
+        >
+          {{ deptBudgetList.contractGoodsInfo.imperfectGrain }}
+        </ws-form-item>
+      </ws-info-table>
+      <div class="remark">
+        <h3>流程信息</h3>
+      </div>
+      <ws-info-table>
+         <!--已付款(元)-->
+        <ws-form-item label="已付款(元)" span="1" prop="goodsNameKey">
+          {{deptBudgetList.contractProcessInfo.goodsNameKey}}
+        </ws-form-item>
+        <ws-form-item label="已开发票(元)" span="1" prop="goodsName">
+          {{ deptBudgetList.contractProcessInfo.goodsName }}
+        </ws-form-item>
+        <ws-form-item label="费用支出(元)" span="1" prop="waterContent"
+          >{{ deptBudgetList.contractProcessInfo.waterContent }}
+        </ws-form-item>
+        <ws-form-item label="未开发票(元)" span="1" prop="impurity"
+          >{{ deptBudgetList.contractProcessInfo.impurity }}
+        </ws-form-item>
+        <ws-form-item
+          label="已完成发运量(吨)"
+          span="1"
+          prop="imperfectGrain"
+          class="result"
+          >{{ deptBudgetList.contractProcessInfo.imperfectGrain }}
+        </ws-form-item>
+        <ws-form-item label="双章原件回收情况" span="1" prop="grade"
+          >{{ deptBudgetList.contractProcessInfo.grade }}
+        </ws-form-item>
+      </ws-info-table>
+      <div class="remark">
+        <h3>备注信息</h3>
+      </div>
+      {{ deptBudgetList.remarks }}
+      <img :src="deptBudgetList.addressUrl" alt="" />
+    </ws-form>
+    <div style="text-align: right; padding: 10px">
+      <el-button
+        class="bg-bottom"
+        type="primary"
+        size="small"
+        @click="returnsales()"
+        >关闭</el-button
+      >
+    </div>
+  </div>
+</template>
+<script>
+import {
+  packList,
+  xiala,
+  examineList,
+} from '@/model/contarct/index'
+export default {
+  name: 'viewSpareMoney',
+  watch: {
+    vesselId(val) {
+      this.getVesselData()
+    },
+    isShow(val) {
+      this.showType = val
+    },
+  },
+  data() {
+    return {
+      //弹出框
+      dialogViewSpareMoney: false,
+      dialogApproveFormVisible: false,
+      // 船舶类型
+      monetaryKey: null,
+      // 表格显示数据
+      tableDate: [],
+      // 是否显示
+      showType: true,
+      // 年
+      year: '',
+      status: '',
+      // 提交类型
+      submitType: true,
+      tableData: [{ date: 1111, name: 'qqqq', address: 'errrtt' }],
+      ruleDeptBudget: [],
+      deptBudgetList: {
+        contractProcessInfo: {},
+        contractGoodsInfo: {},
+      },
+      mainReportAdd: {},
+      list: {},
+    }
+  },
+
+  activated() {
+    this.status = this.$route.query.status
+    this.loaddata()
+    this.showType = this.isShow
+  },
+  methods: {
+    loaddata() {
+      // 数据
+      examineList({ id: this.$route.query.id })
+        .toPromise()
+        .then((response) => {
+          this.deptBudgetList = response
+          if (this.deptBudgetList.deliverType == 1) {
+            this.deptBudgetList.deliverType1 = '我方自提'
+          } else if (this.deptBudgetList.deliverType == 2) {
+            this.deptBudgetList.deliverType1 = '对方送货'
+          }
+        })
+      // 包装方式
+      packList({ constId: 'CON1' })
+        .toPromise()
+        .then((response) => {
+          this.packtypeList = response
+        })
+      // 验收方式
+      this.getUnitList()
+      // 货名
+      packList({ constId: 'CON2' })
+        .toPromise()
+        .then((response) => {
+          this.goodnameList = response
+        })
+      // 品级
+      packList({ constId: 'CON3' })
+        .toPromise()
+        .then((response) => {
+          this.gradeList = response
+        })
+      // 双章
+      packList({ constId: 'CON4' })
+        .toPromise()
+        .then((response) => {
+          this.ChapterTwoList = response
+        })
+    },
+    getUnitList() {
+      xiala({
+        compId: sessionStorage.getItem('ws-pf_compId'),
+        constCode: 'TYPEYAN',
+      })
+        .toPromise()
+        .then((response) => {
+          this.unitList = response
+          let currItem
+          this.unitList.forEach((item, index, arr) => {
+            item.flag = 'delete'
+            if (this.vModel == item.constKey) {
+              currItem = item
+            }
+          })
+          //
+          if (currItem) {
+            this.selectContract(currItem.constValue)
+          }
+        })
+    },
+    // 关闭 dialog时 处理文件url 初始化upload组件
+    handleClose() {
+      this.dialogViewSpareMoney = false
+    },
+    handleExamine() {},
+    approve() {},
+    returnsales() {
+      this.$router.push({ path: 'buyContract' })
+    },
+  },
+}
+</script>
+<style lang="scss" scoped>
+.status-orange,
+.status-bule,
+.status-green {
+  border: 1px solid;
+  border-radius: 30px;
+  padding: 3px 10px;
+  font-size: 16px;
+}
+.status-orange {
+  border-color: #ff9f24;
+  color: #ff9f24;
+  background: #ffedd5;
+}
+.status-bule {
+  border-color: #5473e8;
+  color: #5473e8;
+  background: #f0f3fe;
+}
+.status-green {
+  border-color: #50cad4;
+  color: #50cad4;
+  background: #ecfeff;
+}
+.el-form {
+  padding: 0 15%;
+}
+/deep/.ws-info-table .el-form-item {
+  border-right: 1px solid #cdd2dc;
+  border-bottom: 1px solid #cdd2dc;
+}
+.readonly {
+  position: relative;
+}
+.readonly:after {
+  content: '*';
+  color: #ff2727;
+  position: absolute;
+  right: 8px;
+  z-index: 10;
+  top: 21%;
+  font-size: 20px;
+}
+.title {
+  position: relative;
+}
+.title::before {
+  content: '';
+  display: inline-block;
+  width: 5px;
+  height: 30px;
+  background: #5473e8;
+  position: absolute;
+  left: 0;
+}
+.el-button--primary {
+  background-color: #5878e8;
+  border-color: #5878e8;
+}
+.el-col {
+  background: #f6f7fc;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__content {
+  padding: 0 25px;
+  border-left: 1px solid #cdd2dc;
+  background: #fafbfc;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__label {
+  width: 140px;
+  text-align: center;
+  background: #f0f2f6;
+  // border: 1px solid #cdd2dc;
+}
+.button-container {
+  display: flex;
+  flex-wrap: nowrap;
+  justify-content: space-between;
+  align-items: center;
+  background-color: #fff;
+  width: 100%;
+  height: 50px;
+  padding: 0 10px;
+  & > div {
+    margin-left: 10px;
+    display: flex;
+    flex-wrap: nowrap;
+    flex-direction: row;
+    & > span {
+      line-height: 50px;
+    }
+  }
+
+  /deep/.auditFlow-box {
+    position: unset;
+    margin-left: 10px;
+    &/deep/.auditFlow-icon {
+      width: auto;
+      padding-right: 30px;
+    }
+    &/deep/.auditFlow-main {
+      position: absolute;
+    }
+  }
+}
+.box-app {
+  display: inline-block;
+  float: left;
+  margin-left: 30px;
+  line-height: 50px;
+}
+/deep/.el-dialog {
+  .el-form-item {
+    margin-bottom: 0 !important;
+    .el-input--medium {
+      textarea {
+        min-height: 100px !important;
+      }
+    }
+  }
+}
+.collapse-bottom {
+  margin-bottom: 20px;
+}
+.input-main .textarea .el-textarea__inner {
+  width: 100%;
+  z-index: 1;
+}
+.bg-left {
+  padding-left: 30px;
+}
+.bg-right {
+  padding-right: 10px;
+  text-align: right;
+}
+.bg-bottom {
+  margin: 15px 0px;
+}
+.wenzi {
+  width: 900px;
+  margin: 0 auto;
+}
+.wenzi h3 {
+  display: inline-block;
+  left: 10px;
+}
+.wenzi p {
+  display: inline-block;
+}
+.center {
+  width: 900px;
+  margin: 0 auto;
+}
+.el-form-item {
+  width: 50%;
+}
+.el-form-item__label {
+  text-align: center;
+}
+.ce {
+  width: 900px;
+  margin: 0 auto;
+}
+/*.crt-main .textarea /deep/ .el-form-item__label {*/
+/*  height: 82px;*/
+/*}*/
+// 控制select为只读的时候显示样式
+
+.hide-sel {
+  .el-input__inner {
+    border: 0px;
+  }
+  .el-icon-arrow-up {
+    display: none;
+  }
+  .el-textarea__inner {
+    background-color: #fff !important;
+    border: 0;
+  }
+  .el-date-editor {
+    i {
+      display: none;
+    }
+  }
+  .is-disabled {
+    .el-input__inner:hover {
+      background-color: #fff !important;
+      border: 0;
+    }
+    color: #606266;
+    .el-input__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+    .el-textarea__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+  }
+}
+
+// 控制select为只读的时候显示样式
+/deep/.ws-class-table-col {
+  height: auto;
+  padding: 0px 2px;
+  /deep/.el-input__inner {
+    padding: 0px 2px;
+  }
+}
+/deep/.is-disabled {
+  .el-input__prefix,
+  .el-input__suffix {
+    display: none;
+  }
+  .el-input__inner {
+    background-color: #fff;
+    border-color: #fff !important;
+    color: #000 !important;
+    font-size: 14px;
+    cursor: text;
+    padding: 0 !important;
+  }
+}
+.winseaview-view {
+  padding: 0 0 20px;
+}
+.container {
+  overflow: scroll;
+  height: 93vh;
+}
+/deep/.ws-info-table[data-v-850a44a6] .el-form-item .el-form-item__label {
+  width: 130px;
+}
+</style>

+ 978 - 0
src/views/platformAudit/salesContract.vue

@@ -0,0 +1,978 @@
+
+<!--销售合同-->
+<!--2019年5月30日 20:25:16 by jlx-->
+<template>
+  <div>
+    <BaseHeaderLayout :leftSpan="8">
+      <template slot="left">
+        <ws-button
+          type="primary"
+          @click="handleAdd()"
+          v-hasPermission="
+            `contractManagement.salesContract.salesContractInfo.add`
+          "
+          ><img
+            width="13"
+            height="13"
+            style="
+              vertical-align: text-top;
+              position: relative;
+              top: 2px;
+              left: -4px;
+            "
+            src="../../../public/img/header-add.png"
+            alt=""
+          />添加</ws-button
+        >
+        <ws-button
+          @click="exportlist()"
+          v-hasPermission="
+            `contractManagement.salesContract.salesContractInfo.view`
+          "
+          >导出</ws-button
+        >
+      </template>
+      <template slot="right">
+        <span style="width: 142px; display: inline-block;color: #8890B1;">状态:</span>
+        <ws-select
+          v-model="searchTypeText"
+          placeholder=""
+          class="typeselect"
+          @change="selecttaskType"
+          :value="searchType"
+        >
+          <ws-option
+            v-for="item in taskTypeList"
+            :key="item.value"
+            :label="item.value"
+            :value="item.value"
+            style="color: #8890B1;"
+          />
+        </ws-select>
+
+        <el-date-picker
+          v-model="value2"
+          type="daterange"
+          align="right"
+          unlink-panels
+          range-separator="至"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+          :picker-options="pickerOptions"
+        >
+        </el-date-picker>
+        <ws-input
+          v-model="searchKeyWord"
+          placeholder="可按照合同编号、买方名称、卖方名称进行查找"
+          clearable
+          maxlength="500"
+          type="input"
+          class="findValue"
+        ></ws-input>
+        <!-- v-hasPermission="'procurement.sparepart.directShip'" -->
+        <ws-button
+          class="find"
+          type="primary"
+          @click="find()"
+          ><img
+            width="16"
+            height="16"
+            style="
+              vertical-align: text-top;
+              position: relative;
+              top: 0px;
+              left: -8px;
+            "
+            src="../../../public/img/sousuo.png"
+            alt=""
+        /></ws-button>
+      </template>
+    </BaseHeaderLayout>
+    <el-table
+      class="wenzi"
+      :data="contractList.records"
+      style="width: 100%; margin-top: 10px"
+      height="780"
+    >
+      <el-table-column type="index" label="序号">
+        <template scope="scope">
+          <span v-if="scope.$index < 9">0{{ scope.$index + 1 }}</span>
+          <span v-else>{{ scope.$index + 1 }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="contractNo" label="合同编号" width="80">
+      </el-table-column>
+      <el-table-column prop="goodsName" label="货名" width="80">
+      </el-table-column>
+      <el-table-column prop="grade" label="品级">
+        <template slot-scope="scope">
+          <span v-if="scope.row.grade == '一等品'" class="top-grade">{{
+            scope.row.grade
+          }}</span>
+          <span v-if="scope.row.grade == '二等品'" class="second-class">{{
+            scope.row.grade
+          }}</span>
+          <span v-if="scope.row.grade == '三等品'" class="third-class">{{
+            scope.row.grade
+          }}</span>
+          <span v-if="scope.row.grade == '等外'" class="substandard">{{
+            scope.row.grade
+          }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="weight" label="重量(吨)"> </el-table-column>
+      <el-table-column prop="unitContractPrice" label="合同单价(元)">
+      </el-table-column>
+      <el-table-column prop="packingMethod" label="包装方式"> </el-table-column>
+      <el-table-column prop="buyer" label="买方"> </el-table-column>
+      <el-table-column prop="seller" label="卖方"> </el-table-column>
+      <el-table-column prop="imperfectGrain" label="已完成(吨)">
+        <template slot-scope="scope">
+          <span
+            v-if="scope.row.proportion < 90"
+            style="color: #5473e8; font-weight: 600"
+            >{{ scope.row.imperfectGrain }}</span
+          >
+          <span
+            v-if="scope.row.proportion > 90"
+            style="color: red; font-weight: 600"
+            >{{ scope.row.imperfectGrain }}</span
+          >
+        </template>
+      </el-table-column>
+      <el-table-column prop="status" label="状态">
+        <template slot-scope="scope">
+          <el-popover
+            placement="left"
+            :width="285"
+            trigger="click"
+            visible-arrow="false"
+            @show="history(scope.row)"
+          >
+            <template>
+              <span slot="reference">
+                <span
+                  v-if="scope.row.status == '待执行'"
+                  class="executory"
+                ></span>
+                <span
+                  v-if="scope.row.status == '执行中'"
+                  class="inExecution"
+                ></span>
+                <span v-if="scope.row.status == '已完成'" class="done"></span
+                >{{ scope.row.status }}
+              </span>
+            </template>
+            <div>
+              <p style="margin-top: 0; padding-left: 10px">操作历史</p>
+              <div v-for="(item, index) in historyList" class="flex">
+                <div class="vertical-text vertical-text-left">
+                  {{ item.updateDate }}
+                </div>
+                <div>
+                  <div class="vertical-circle"></div>
+                  <div
+                    v-if="index != historyList.length - 1"
+                    class="vertical-line"
+                  ></div>
+                </div>
+                <div class="vertical-text">
+                  {{ item.operateUser }}<br />{{ item.dealMsg }}
+                </div>
+              </div>
+            </div>
+          </el-popover>
+          <img
+            width="17"
+            height="18"
+            style="vertical-align: text-top; position: relative; top: -1px"
+            src="../../../public/img/edit.png"
+            @click="editClick(scope.row)"
+            alt=""
+          />
+          <!-- <i class="el-icon-edit" @click="editClick(scope.row)"></i> -->
+        </template>
+      </el-table-column>
+      <el-table-column prop="signingDate" label="签订日期"> </el-table-column>
+      <el-table-column prop="mildewGrain" label="未回款(元)">
+      </el-table-column>
+      <el-table-column prop="addressUrl" label="附件">
+        <template slot-scope="scope">
+          <img
+            width="18"
+            height="20"
+            style="vertical-align: text-top; position: relative; top: -1px"
+            src="../../../public/img/fujian.png"
+            @click="fujian(scope.row)"
+            alt=""
+          />
+          <span v-if="scope.row.addressUrlArray.length > 0">{{
+            scope.row.addressUrlArray.length
+          }}</span>
+          <!-- <i @click="fujian(scope.row)" class="el-icon-paperclip iconCss"></i> -->
+        </template>
+      </el-table-column>
+      <el-table-column prop="address" label="操作" width="200">
+        <template slot-scope="scope">
+          <img
+            width="16"
+            height="16"
+            style="vertical-align: text-top; margin: 0 6px"
+            src="../../../public/img/chakan.png"
+            @click="handleExamine(scope.row)"
+            v-hasPermission="
+            `contractManagement.salesContract.salesContractInfo.view`
+          "
+            alt=""
+          />
+          <img
+            width="17"
+            height="16"
+            style="vertical-align: text-top; margin: 0 6px"
+            src="../../../public/img/bianji.png"
+            v-hasPermission="
+            `contractManagement.salesContract.salesContractInfo.edit`
+          "
+            @click="handleEdit(scope.row)"
+            alt=""
+          />
+          <img
+            width="16"
+            height="17"
+            style="
+              vertical-align: text-top;
+              position: relative;
+              top: -1px;
+              margin: 0 6px;
+            "
+            src="../../../public/img/shanchu.png"
+            v-hasPermission="
+            `contractManagement.salesContract.salesContractInfo.delete`
+          "
+            @click="handleDelete(scope.row)"
+            alt=""
+          />
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      @size-change="handleSizeChange"
+      @current-change="handleCurrentChange"
+      :current-page="currentPage"
+      :page-size="deptCircularPage.pageSize"
+      layout="total, sizes, prev, pager, next, jumper"
+      :total="deptBudgetTotal"
+    >
+    </el-pagination>
+    <!-- 附件弹框 -->
+    <WinseaContentModal
+      v-model="accessoryTFs"
+      :title="$t('system.noticeCircular.information')"
+      @on-cancel="handleClose"
+    >
+      <p>查看附件</p>
+      <ws-upload
+        ref="upload"
+        table-name="maintain_work_order"
+        oss-key="mainPlan"
+        :comp-id="compId"
+        :appendix-ids="appendixIdsAdd"
+        :vesselId="deptBudgetList.addressUrl"
+        :size-limit="size"
+        @uploadSuccess="uploadSuccess"
+        accept=".jpg, .jpeg, .png, .pdf, .doc, .zip, .rar"
+      />
+    </WinseaContentModal>
+  </div>
+</template>
+<script>
+import {
+  getList,
+  export1,
+  editstatus,
+  billoperatehis,
+  deletecontract,
+} from '@/model/contarct/index'
+import { downloadFile } from '@/utils/batchDown'
+import Pagination from '@/components/Pagination'
+import WsUpload from '@/components/WsUpload'
+import { dayjs, fmoney, EventBus } from 'base-core-lib'
+export default {
+  name: 'viewSpareMoney',
+  components: {
+    WsUpload,
+    Pagination,
+  },
+  watch: {
+    vesselId(val) {
+      this.getList()
+    },
+    isShow(val) {
+      this.showType = val
+    },
+  },
+  data() {
+    return {
+      //弹出框
+      dialogViewSpareMoney: false,
+      dialogApproveFormVisible: false,
+      // 船舶类型
+      monetaryKey: null,
+      // 表格显示数据
+      tableDate: [],
+      size: 10,
+      // 是否显示
+      showType: true,
+      // 年
+      year: '',
+      deptBudgetTotal: 0,
+      currentPage: 1,
+      pageSize: 10,
+      appendixIdsAdd: '',
+      searchType: 1,
+      searchTypeText: '未完成',
+      searchKeyWord: '',
+      contractType: 1,
+      startDate: null,
+      endDate: null,
+      // 提交类型
+      submitType: true,
+      contractForm: {},
+      categoryIndex: 0,
+      rulesVendor: {},
+      size: 10,
+      compId: sessionStorage.getItem('ws-pf_compId'),
+      deptCircularPage: {},
+      date: {
+        year: dayjs().format('YYYY'),
+        month: dayjs().format('MM'),
+      },
+      contractList: [],
+      deptBudgetList: {},
+      historyList: [],
+      pickerBeginDateBefore: {
+        disabledDate: (time) => {
+          return time.getTime() > Date.now()
+        },
+      },
+      accessoryTFs: false,
+      taskTypeList: [
+        { value: '未完成', type: 1 },
+        { value: '已完成', type: 2 },
+        { value: '未回款', type: 3 },
+        { value: '全部合同', type: '' },
+      ],
+      pickerOptions: {
+        shortcuts: [
+          {
+            text: '本周',
+            onClick(picker) {
+              const end = new Date()
+              const start = new Date()
+              var thisDay = start.getDay()
+              var thisDate = start.getDate()
+              if (thisDay != 0) {
+                start.setDate(thisDate - thisDay)
+              }
+              picker.$emit('pick', [start, end])
+            },
+          },
+          {
+            text: '本月',
+            onClick(picker) {
+              const end = new Date()
+              const start = new Date()
+              start.setDate(1)
+              picker.$emit('pick', [start, end])
+            },
+          },
+          {
+            text: '本季度',
+            onClick(picker) {
+              var oDate = new Date()
+
+              var thisYear = oDate.getFullYear()
+              var thisMonth = oDate.getMonth() + 1
+
+              var n = Math.ceil(thisMonth / 3) // 季度
+
+              var Month = n * 3 - 1
+
+              var start = new Date(thisYear, Month - 2, 1)
+              var end = new Date()
+
+              picker.$emit('pick', [start, end])
+            },
+          },
+        ],
+      },
+      value1: '',
+      value2: '',
+    }
+  },
+  activated() {
+    //cg.viewBudget
+    //cg.viewSpareMoney
+    // this.getVesselData();
+    this.getList()
+    this.showType = this.isShow
+  },
+  methods: {
+    dateFormat(fmt, date) {
+      let ret
+      const opt = {
+        'Y+': date.getFullYear().toString(), // 年
+        'm+': (date.getMonth() + 1).toString(), // 月
+        'd+': date.getDate().toString(), // 日
+        'H+': date.getHours().toString(), // 时
+        // "M+": date.getMinutes().toString(),         // 分
+        // "S+": date.getSeconds().toString()          // 秒
+        // 有其他格式化字符需求可以继续添加,必须转化成字符串
+      }
+      for (let k in opt) {
+        ret = new RegExp('(' + k + ')').exec(fmt)
+        if (ret) {
+          fmt = fmt.replace(
+            ret[1],
+            ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0')
+          )
+        }
+      }
+      return fmt
+    },
+    handleClose() {
+      this.accessoryTFs = false
+    },
+    handleSizeChange(val) {
+      console.log(`每页 ${val} 条`)
+      this.pageSize = val
+      this.getList()
+    },
+    handleCurrentChange(val) {
+      this.currentPage = val
+      console.log(`当前页: ${val}`)
+      this.getList()
+    },
+    getList() {
+      getList({
+        compId: sessionStorage.getItem('ws-pf_compId'),
+        contractType: this.contractType,
+        currentPage: this.currentPage,
+        pageSize: this.pageSize,
+        searchType: this.searchType,
+        searchKeyWord: this.searchKeyWord,
+        startDate: this.startDate,
+        endDate: this.endDate,
+        contrPage: this.contrPage,
+      })
+        .toPromise()
+        .then((response) => {
+          for (var i = 0; i < response.records.length; i++) {
+            if (response.records[i].addressUrl != null) {
+              response.records[i].addressUrlArray =
+                response.records[i].addressUrl.split(',')
+            } else {
+              response.records[i].addressUrlArray = []
+            }
+            if (response.records[i].imperfectGrain != null) {
+              response.records[i].proportion =
+                Math.floor(
+                  (response.records[i].imperfectGrain /
+                    response.records[i].weight) *
+                    10000
+                ) / 100
+            } else {
+              response.records[i].proportion = 0
+            }
+          }
+          this.deptCircularPage.currentPage = response.current
+          this.deptCircularPage.pageSize = response.size
+          this.deptBudgetTotal = response.total
+          this.contractList = response
+        })
+    },
+    // 上传附件
+    uploadSuccess(data, files, url) {
+      console.log(data, files, url)
+
+      // this.deptBudgetList.
+      // this.formData.append('files', files)
+      // this.feedbackObj.uploadNameAttachment = data.appendixName
+      // this.feedbackObj.pathUploadAttachment = data.appendixPath
+      // // this.newAppendixs = files
+      // this.onChangeFlag = true
+    },
+    editClick(row) {
+      var status = ''
+      if (row.status == '待执行' || row.status == '已完成') {
+        status = '执行中'
+      } else if (row.status == '执行中') {
+        status = '已完成'
+      }
+      //cancelButtonClass: "btn-custom-cancel"
+      this.$confirm(`是否将状态改为${status}`, {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+        .then(() => {
+          editstatus({ id: row.id })
+            .toPromise()
+            .then((response) => {
+              this.$notify.success({
+                title: '成功',
+                message: '状态修改成功',
+              })
+              this.getList()
+            })
+            .catch((response) => {
+              // EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
+            })
+        })
+        .catch(() => {
+          return false
+        })
+    },
+    selecttaskType(e) {
+      for (var i = 0; i < this.taskTypeList.length; i++) {
+        if (this.taskTypeList[i].value == e) {
+          this.searchType = this.taskTypeList[i].type
+        }
+      }
+    },
+    // receiveAttachmentPath
+    fujian(row) {
+      if (
+        row.addressUrl === null ||
+        row.addressUrl === ''
+      ) {
+        EventBus.$emit(
+          'warning',
+          this.$t('system.noticeCircular.NoInformation')
+        )
+      } else {
+        this.accessoryTFs = true
+      }
+      this.appendixIdss = row.addressUrl
+    },
+    handleExamine(row) {
+      this.$router.push({
+        name: 'salesContractExamine',
+        query: { id: row.id },
+      })
+    },
+    handleAdd() {
+      this.$router.push({ path: 'salesContractAdd' })
+    },
+    handleEdit(row) {
+      this.$router.push({
+        name: 'salesContractEdit',
+        query: { id: row.id },
+      })
+    },
+
+    // 关闭 dialog时 处理文件url 初始化upload组件
+    handleCloe() {
+      this.dialogViewSpareMoney = false
+    },
+    history(row) {
+      console.log(row)
+      billoperatehis({ id: row.id })
+        .toPromise()
+        .then((response) => {
+          this.historyList = response
+        })
+    },
+    find() {
+      if (this.value2) {
+        this.startDate = this.dateFormat('YYYY-mm-dd', this.value2[0])
+        this.endDate = this.dateFormat('YYYY-mm-dd', this.value2[1])
+      } else {
+        this.startDate = ''
+        this.endDate = ''
+      }
+      this.currentPage = 1
+      this.getList()
+    },
+    async exportlist() {
+      const { data } = await export1(
+        {
+          compId: sessionStorage.getItem('ws-pf_compId'),
+          contractType: this.contractType,
+          currentPage: this.currentPage,
+          pageSize: this.pageSize,
+          searchType: this.searchType,
+          searchKeyWord: this.searchKeyWord,
+          startDate: this.startDate,
+          endDate: this.endDate,
+        },
+        {},
+        { responseType: 'blob' }
+      ).toPromise()
+      downloadFile({
+        res: data,
+        fileName: `${
+          this.date.year + (this.date.month ? `-${this.date.month}` : '')
+        }_销售合同`,
+        type: 'xls',
+      })
+    },
+    // deletecontract(){},
+    //删除
+
+    approve() {},
+    listQuery() {},
+    total() {},
+    clearfiltQuery() {},
+    selectCrtDuty() {},
+
+    handleDelete(row) {
+      var handleDelete = ' '
+      if (row.handleDelete == '') {
+      }
+      this.$confirm(`此操作永久删除该仓库全部信息,是否确认删除`, {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+      })
+        .then(() => {
+          deletecontract({ id: row.id })
+            .toPromise()
+            .then((response) => {
+              this.$notify.success({
+                title: '成功',
+                message: '删除成功',
+              })
+              this.getList()
+            })
+            .catch((response) => {
+              // EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
+            })
+        })
+        .catch(() => {
+          return false
+        })
+    },
+  },
+}
+</script>
+<style lang="scss" scoped>
+.vertical-text-left {
+  width: 62px;
+  text-align: right;
+}
+.flex {
+  display: flex;
+}
+.el-range-editor.el-input__inner {
+  margin-left: 10px;
+}
+/deep/.base_header_layout .grid-content.right .find.el-button--primary {
+  width: 30px;
+  margin-left: -10px;
+  border-top-left-radius: 0px;
+  border-bottom-left-radius: 0px;
+}
+.el-button--primary {
+  background-color: #5878e8;
+  border-color: #5878e8;
+}
+.el-button--default {
+  border: 1px solid #5473e8;
+  color: #5473e8;
+}
+.warning {
+  width: 100%;
+  height: 2px;
+  background: red;
+}
+.executory,
+.inExecution,
+.done {
+  width: 6px;
+  height: 6px;
+  display: inline-block;
+  border-radius: 50%;
+  position: relative;
+  top: -1px;
+}
+.executory {
+  background: #ff9f24;
+}
+.inExecution {
+  background: #5878e8;
+}
+.done {
+  background: #50cad4;
+}
+.top-grade {
+  background: linear-gradient(90deg, #5678e9, #7993f6);
+  color: #fff;
+  padding: 3px;
+  border-radius: 2px;
+}
+.second-class {
+  background: linear-gradient(90deg, #50cdd9, #82e2ea);
+  color: #fff;
+  padding: 3px;
+  border-radius: 2px;
+}
+.third-class {
+  background: linear-gradient(90deg, #ffa735, #ffbf70);
+  color: #fff;
+  padding: 3px;
+  border-radius: 2px;
+}
+.substandard {
+  background: linear-gradient(90deg, #b2b4bb, #ced0d5);
+  color: #fff;
+  padding: 3px;
+  border-radius: 2px;
+}
+.wrap {
+  width: 400px;
+  position: absolute;
+  top: 131px;
+  left: 794px;
+  transform-origin: right center;
+  z-index: 2005;
+}
+.vertical-line {
+  height: 100px;
+  border-left: 2px solid #e9ecf7;
+  margin-left: 4px;
+  padding: 0 3px;
+  // border-image: -webkit-linear-gradient(#00eba7, #08b8e6) 30 30;
+  // border-image: -moz-linear-gradient(#00eba7, #08b8e6) 30 30;
+  // border-image: linear-gradient(#00eba7, #08b8e6) 30 30;
+}
+.el-pagination {
+  padding: 10px 15px;
+  margin-bottom: 0;
+  text-align: center;
+}
+/deep/.el-pager li.active {
+  color: #5878e8;
+  cursor: default;
+}
+/deep/.el-pager li:hover {
+  color: #5878e8;
+  cursor: default;
+}
+.vertical-circle {
+  width: 10px;
+  height: 10px;
+  border: 2px solid #5878e8;
+  background-color: #ffffff;
+  -webkit-border-radius: 100px;
+}
+.vertical-circle:first-child {
+  color: red;
+}
+.vertical-text {
+  margin: 0 10px;
+  color: #8890b1;
+  font-size: 12px;
+  margin-top: -4px;
+}
+/deep/.el-table .el-table__header .cell,
+/deep/.el-table .el-table__body .cell {
+  text-align: center;
+}
+.typeselect {
+  width: 500px;
+}
+.padding-xs {
+  padding: 15px;
+  text-align: right;
+}
+.clearfix:after {
+  content: '';
+  display: block;
+  clear: both;
+}
+.el-table {
+  font-size: 16px;
+}
+.taskType {
+  width: 100%;
+  background-color: #fff;
+  margin-top: 2px;
+  margin-bottom: 10px;
+  list-style: none;
+  // padding-bottom: 20px;
+  li {
+    float: left;
+    border: 1px solid #6ea0f3;
+    border-radius: 5px;
+    max-width: 190px;
+    padding: 0 5px;
+    text-align: center;
+    margin: 10px 20px;
+    cursor: pointer;
+    font-size: 14px;
+    p {
+      margin: 8px 0px;
+      span {
+        color: #e74c3c;
+      }
+    }
+  }
+  li:hover {
+    background-color: #e4eeff;
+    color: #1d6ced;
+  }
+}
+.el-date-editor--date {
+  margin: 0 10px;
+}
+.findValue {
+  margin: 0 10px;
+}
+/deep/.findValue .el-input__inner {
+  border-top-right-radius: 0px;
+  border-bottom-right-radius: 0px;
+}
+.button-container {
+  display: flex;
+  flex-wrap: nowrap;
+  justify-content: space-between;
+  align-items: center;
+  background-color: #fff;
+  width: 100%;
+  height: 50px;
+  padding: 0 10px;
+  & > div {
+    margin-left: 10px;
+    display: flex;
+    flex-wrap: nowrap;
+    flex-direction: row;
+    & > span {
+      line-height: 50px;
+    }
+  }
+
+  /deep/.auditFlow-box {
+    position: unset;
+    margin-left: 10px;
+    &/deep/.auditFlow-icon {
+      width: auto;
+      padding-right: 30px;
+    }
+    &/deep/.auditFlow-main {
+      position: absolute;
+    }
+  }
+}
+.box-app {
+  display: inline-block;
+  float: left;
+  margin-left: 30px;
+  line-height: 50px;
+}
+/deep/.el-dialog {
+  .el-form-item {
+    margin-bottom: 0 !important;
+    .el-input--medium {
+      textarea {
+        min-height: 100px !important;
+      }
+    }
+  }
+}
+.collapse-bottom {
+  margin-bottom: 20px;
+}
+
+.input-main .textarea .el-textarea__inner {
+  width: 100%;
+  z-index: 1;
+}
+/*.crt-main .textarea /deep/ .el-form-item__label {*/
+/*  height: 82px;*/
+/*}*/
+// 控制select为只读的时候显示样式
+
+.hide-sel {
+  .el-input__inner {
+    border: 0px;
+  }
+  .el-icon-arrow-up {
+    display: none;
+  }
+  .el-textarea__inner {
+    background-color: #fff !important;
+    border: 0;
+  }
+  .el-date-editor {
+    i {
+      display: none;
+    }
+  }
+  .is-disabled {
+    .el-input__inner:hover {
+      background-color: #fff !important;
+      border: 0;
+    }
+    color: #606266;
+    .el-input__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+    .el-textarea__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+  }
+}
+// 控制select为只读的时候显示样式
+/deep/.ws-class-table-col {
+  height: auto;
+  padding: 0px 2px;
+  /deep/.el-input__inner {
+    padding: 0px 2px;
+  }
+}
+/deep/.is-disabled {
+  .el-input__prefix,
+  .el-input__suffix {
+    display: none;
+  }
+  .el-input__inner {
+    background-color: #fff;
+    border-color: #fff !important;
+    color: #000 !important;
+    font-size: 14px;
+    cursor: text;
+    padding: 0 !important;
+  }
+  .el-message-box {
+    width: 440px;
+    height: 160px;
+    background: #ffffff;
+    box-shadow: 0px 2px 31px 0px rgba(66, 75, 112, 0.23);
+    border-radius: 4px;
+  }
+  /deep/.el-message-box__message p {
+    width: 351px;
+    height: 20px;
+    font-size: 14px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #191919;
+    line-height: 20px;
+  }
+  .el-message-box__title {
+    width: 440px;
+    height: 160px;
+    background: #ffffff;
+    box-shadow: 0px 2px 31px 0px rgba(66, 75, 112, 0.23);
+    border-radius: 4px;
+  }
+}
+/deep/.typeselect .el-input__inner{
+   color: #8890B1;
+}
+</style>

+ 1653 - 0
src/views/platformAudit/salesContractAdd.vue

@@ -0,0 +1,1653 @@
+<template>
+  <div class="container">
+    <el-row>
+      <el-col :span="12">
+        <h2 class="bg-left title">创建销售合同</h2>
+      </el-col>
+      <el-col :span="12" class="bg-right">
+        <el-button
+          class="bg-bottom"
+          type="primary"
+          size="small"
+          @click="returnsales()"
+          ><img
+            width="6"
+            height="10"
+            style="vertion-align: bottom; margin-right: 3px"
+            src="../../../public/img/lujing.png"
+            alt=""
+          />返回</el-button
+        >
+      </el-col>
+    </el-row>
+
+    <div class="wenzi">
+      <h3>基本信息</h3>
+      <p>
+        &nbsp;&nbsp;注:基本信息和货物信息均为必填项,“*”
+        标记的条目提交后不可修改。
+      </p>
+    </div>
+    <div class="center">
+      <ws-form ref="deptBudgetList" :model="deptBudgetList">
+        <!--基本信息-->
+
+        <ws-info-table>
+          <!--合同编号-->
+          <ws-form-item
+            label="合同编号"
+            span="1"
+            prop="contractNo"
+            class="readonly"
+          >
+            <ws-input
+              v-model="deptBudgetList.contractNo"
+              placeholder="请输入合同编号"
+              maxlength="20"
+              size="small"
+              :rules="ruleDeptBudget"
+            />
+          </ws-form-item>
+
+          <!--运输方式-->
+          <ws-form-item label="运输方式" span="1" prop="shippingType">
+            <ws-input
+              v-model="deptBudgetList.shippingType"
+              placeholder="请输入运输方式"
+              maxlength="20"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--买方-->
+          <ws-form-item label="买方" span="1" prop="buyer" class="readonly">
+            <ws-input
+              v-model="deptBudgetList.buyer"
+              placeholder="请输入买方名称"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--结算方式-->
+          <ws-form-item label="结算方式" span="1" prop="settlementMethod">
+            <ws-input
+              v-model="deptBudgetList.settlementMethod"
+              placeholder="请输入结算方式"
+              maxlength="120"
+              size="small"
+            />
+          </ws-form-item>
+          <!--卖方-->
+          <ws-form-item label="卖方" span="1" prop="seller" class="readonly">
+            <ws-input
+              v-model="deptBudgetList.seller"
+              placeholder="请输入卖方名称"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item
+            label="交货方式"
+            span="1"
+            prop="seller"
+            class="readonly"
+          >
+            <el-radio v-model="deptBudgetList.deliverType" label="1"
+              >我方自提</el-radio
+            >
+            <el-radio v-model="deptBudgetList.deliverType" label="2"
+              >对方送货</el-radio
+            >
+          </ws-form-item>
+
+          <!--买方电话-->
+          <ws-form-item label="买方电话" span="1" prop="contractNo">
+            <ws-input
+              v-model.number="deptBudgetList.buyerPhone"
+              placeholder="请输入买方电话"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--包装方式-->
+          <ws-form-item label="包装方式" span="1" prop="packingMethod">
+            <ws-select
+              v-model="deptBudgetList.packingMethod"
+              placeholder=""
+              class="typeselect"
+              @change="selectpackingMethod"
+            >
+              <ws-option
+                v-for="item in packtypeList"
+                :key="item.constKey"
+                :label="item.constValue"
+                :value="item.constValue"
+              />
+            </ws-select>
+          </ws-form-item>
+          <!--卖方电话-->
+          <ws-form-item label="卖方电话" span="1" prop="sellerPhone">
+            <ws-input
+              v-model="deptBudgetList.sellerPhone"
+              placeholder="请输入卖方电话"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--验收方式-->
+          <ws-form-item label="验收方式" span="1" prop="acceptanceMethod">
+            <el-select
+              v-model="deptBudgetList.acceptanceMethod"
+              placeholder="请选择验收方式"
+              style="width: 100%"
+              filterable
+              @change="selectunitList"
+            >
+              <el-option
+                v-for="(item, index) in unitList"
+                :key="item.constValue"
+                :label="item.constValue"
+                :value="item.constValue"
+              >
+                <span class="unit-left" style="float: left">
+                  <span v-if="item.flag == 'delete'">
+                    {{ item.constValue }}</span
+                  >
+                  <!-- 新增文本框 -->
+                  <div
+                    style="width: 160px"
+                    v-if="item.flag !== 'delete'"
+                    @click.stop
+                  >
+                    <ws-input
+                      v-model="item.constValue"
+                      clearable
+                      maxlength="10"
+                      style="width: 100%"
+                    ></ws-input>
+                  </div>
+                </span>
+                <span style="float: right; color: #8492a6; font-size: 13px">
+                  <!-- 对号 -->
+                  <i
+                    class="el-icon-check"
+                    style="line-height: 29px; margin-left: 10px"
+                    v-if="item.flag !== 'delete'"
+                    @click.stop="saveClick(item, index)"
+                  ></i>
+                  <!-- 编辑 -->
+                  <i
+                    class="el-icon-edit"
+                    style="line-height: 29px; margin-left: 10px"
+                    v-if="item.flag == 'delete'"
+                    @click.stop="editClick(item, index)"
+                  ></i>
+                  <!-- 删除 -->
+                  <i
+                    class="el-icon-delete"
+                    style="line-height: 29px"
+                    @click.stop="deleteClick(item, index)"
+                  ></i>
+                </span>
+              </el-option>
+              <!-- 新增按钮 -->
+              <el-option value="" label="">
+                <div
+                  style="
+                    text-align: right;
+                    border-top: 1px solid #dcdfe6;
+                    padding: 5px;
+                  "
+                >
+                  <ws-button type="primary" @click.stop="addClick">{{
+                    $t('button.add')
+                  }}</ws-button>
+                </div>
+              </el-option>
+            </el-select>
+          </ws-form-item>
+
+          <!--重量(吨)-->
+          <ws-form-item label="重量(吨)" span="1" prop="weight">
+            <ws-input
+              v-model="deptBudgetList.weight"
+              placeholder="请输入重量(吨)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--交货日期(起)-->
+          <ws-form-item
+            label="交货日期(起)"
+            span="1"
+            prop="deliveryDateStart"
+          >
+            <ws-date-picker
+              v-model="deptBudgetList.deliveryDateStart"
+              type="date"
+              placeholder="请选择交货日期(起)"
+              value-format="yyyy-MM-dd"
+            />
+          </ws-form-item>
+          <!--溢短装(%)-->
+          <ws-form-item label="溢短装(%)" span="1" prop="overShort">
+            <ws-input
+              v-model="deptBudgetList.overShort"
+              placeholder="请输入溢短装比例(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--交货日期(止)-->
+          <ws-form-item label="交货日期(止)" span="1" prop="deliveryDateEnd">
+            <ws-date-picker
+              v-model="deptBudgetList.deliveryDateEnd"
+              type="date"
+              placeholder="请选择交货日期(止)"
+              value-format="yyyy-MM-dd"
+            />
+          </ws-form-item>
+
+          <!--合同单价(元/吨)-->
+          <ws-form-item
+            class="readonly"
+            label="合同单价(元/吨)"
+            span="1"
+            prop="unitContractPrice"
+          >
+            <ws-input
+              v-model="deptBudgetList.unitContractPrice"
+              placeholder="请输入合同单价"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--合同总价-->
+          <ws-form-item label="合同总价" span="1" prop="totalContractPrice">
+            <ws-input
+              v-model="deptBudgetList.totalContractPrice"
+              placeholder="请输入合同总价"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item label="货源所在地区" span="1" prop="sourceGoods">
+            <el-cascader
+              :options="options_"
+              v-model="selectedOptions"
+              clearable
+              size="large"
+              placeholder="请选择货源所在地区"
+              style="width: 200%"
+              @change="handleChange"
+            />
+          </ws-form-item>
+          <ws-form-item label="货源详细地址" span="1" prop="sourceGoods">
+            <ws-input
+              v-model="deptBudgetList.sourceGoods"
+              placeholder="请输入货源详细地址"
+              maxlength="20"
+              size="small"
+            />
+          </ws-form-item>
+          <ws-form-item label="交货所在地区" span="1" prop="sourceGoods">
+            <el-cascader
+              :options="options_"
+              v-model="selectedOptions1"
+              clearable
+              size="large"
+              placeholder="请选择交货所在地区"
+              style="width: 200%"
+              @change="handleChange1"
+            />
+          </ws-form-item>
+          <ws-form-item label="交货详细地址" span="1" prop="placeDelivery">
+            <ws-input
+              v-model="deptBudgetList.placeDelivery"
+              placeholder="请输入交货详细地址"
+              maxlength="20"
+              size="small"
+            />
+          </ws-form-item>
+          <!--签订日期-->
+          <ws-form-item label="签订日期" span="1" prop="signingDate">
+            <ws-date-picker
+              v-model="deptBudgetList.signingDate"
+              type="date"
+              placeholder="请选择合同签订日期"
+              value-format="yyyy-MM-dd"
+            />
+          </ws-form-item>
+          <ws-form-item
+            label="最终实际成交量(吨)"
+            span="1"
+            prop="finalTradingVolume"
+          >
+            <ws-input
+              v-model="deptBudgetList.finalTradingVolume"
+              placeholder="请输入最终实际成交量"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+        </ws-info-table>
+      </ws-form>
+    </div>
+    <div class="wenzi">
+      <h3>货物信息</h3>
+    </div>
+    <div class="center">
+      <ws-form
+        ref="deptBudgetList"
+        :rules="ruleDeptBudget"
+        :model="deptBudgetList"
+      >
+        <!--货物信息-->
+
+        <ws-info-table>
+          <!--货名-->
+          <ws-form-item label="货名" span="1" prop="goodsName" class="readonly">
+            <ws-select
+              v-model="deptBudgetList.contractGoodsInfo.goodsName"
+              placeholder=""
+              class="typeselect"
+              @change="selectpackingMethod"
+            >
+              <ws-option
+                v-for="item in goodnameList"
+                :key="item.constKey"
+                :label="item.constValue"
+                :value="item.constValue"
+              />
+            </ws-select>
+          </ws-form-item>
+
+          <!--水分(%)<=-->
+          <ws-form-item label="水分(%)" span="1" prop="waterContent">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.waterContent"
+              placeholder="请输入水分占比"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--品级-->
+          <ws-form-item label="品级" span="1" prop="grade" class="readonly">
+            <ws-select
+              v-model="deptBudgetList.contractGoodsInfo.grade"
+              placeholder=""
+              class="typeselect"
+              @change="selectgrade"
+            >
+              <ws-option
+                v-for="item in gradeList"
+                :key="item.constKey"
+                :label="item.constValue"
+                :value="item.constValue"
+              />
+            </ws-select>
+          </ws-form-item>
+
+          <!--杂质(%)<=-->
+          <ws-form-item label="杂质(%)" span="1" prop="impurity">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.impurity"
+              placeholder="请输入杂质占比(%)"
+              maxlength="40"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--容量(克/升)>=-->
+          <ws-form-item label="容量(克/升)" span="1" prop="bulkDensity">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.bulkDensity"
+              placeholder="请输入容重"
+              maxlength="40"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--霉变粒(%)<=-->
+          <ws-form-item label="霉变粒(%)" span="1" prop="mildewGrain">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.mildewGrain"
+              placeholder="请输入霉变粒占比(%)"
+              maxlength="40"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--热损伤(%)<=-->
+          <ws-form-item label="热损伤(%)" span="1" prop="jiaorenli">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.jiaorenli"
+              placeholder="请输入输入热损伤占比(%)"
+              maxlength="40"
+              size="small"
+            />
+          </ws-form-item>
+          <!--不完整粒(%)<=-->
+          <ws-form-item label="不完整粒(%)" span="1" prop="imperfectGrain">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.imperfectGrain"
+              placeholder="请输入不完整粒占比(%)"
+              maxlength="40"
+              size="small"
+            />
+          </ws-form-item>
+        </ws-info-table>
+      </ws-form>
+    </div>
+
+    <div class="wenzi">
+      <h3>流程信息</h3>
+    </div>
+    <div class="center">
+      <ws-form
+        ref="deptBudgetList"
+        :rules="ruleDeptBudget"
+        :model="deptBudgetList"
+      >
+        <!--流程信息-->
+
+        <ws-info-table>
+          <!--合同收入(元)-->
+          <ws-form-item label="合同收入(元)" span="1" prop="goodsNameKey">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.goodsNameKey"
+              placeholder="请输入合同收入(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--已开发票(元)-->
+          <ws-form-item label="已开发票(元)" span="1" prop="goodsName">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.goodsName"
+              placeholder="请输入已开发票(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--费用支出(元)-->
+          <ws-form-item label="费用支出(元)" span="1" prop="waterContent">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.waterContent"
+              placeholder="请输入费用支出(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--未开发票(元)-->
+          <ws-form-item label="未开发票(元)" span="1" prop="impurity">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.impurity"
+              placeholder="请输入未开发票(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--未回款(元)-->
+          <ws-form-item label="未回款(元)" span="1" prop="mildewGrain">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.mildewGrain"
+              placeholder="请输入未回款(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--已完成发货量(吨)-->
+          <ws-form-item
+            label="已完成发运量(吨)"
+            span="1"
+            prop="imperfectGrain"
+          >
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.imperfectGrain"
+              placeholder="请输入已完成发运量(吨)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--双章原件回收情况-->
+          <ws-form-item label="双章原件回收情况" span="1" prop="grade">
+            <ws-select
+              v-model="deptBudgetList.contractProcessInfo.grade"
+              placeholder=""
+              class="typeselect"
+              @change="selectpackingMethod"
+            >
+              <ws-option
+                v-for="item in ChapterTwoList"
+                :key="item.constKey"
+                :label="item.constValue"
+                :value="item.constValue"
+              />
+            </ws-select>
+          </ws-form-item>
+        </ws-info-table>
+      </ws-form>
+    </div>
+
+    <div class="wenzi">
+      <h3>备注信息</h3>
+    </div>
+    <div class="ce">
+      <ws-form
+        ref="deptBudgetList"
+        :rules="ruleDeptBudget"
+        :model="deptBudgetList"
+      >
+        <!--备注信息-->
+        <ws-input
+          v-model="deptBudgetList.remarks"
+          type="textarea"
+          row="3"
+          placeholder="请输入备注信息,不超过200字"
+          maxlength="200"
+        />
+        <ws-upload
+          ref="upload"
+          table-name="maintain_work_order"
+          oss-key="mainPlan"
+          :comp-id="compId"
+          :appendix-ids="appendixIdsAdd"
+          :vesselId="deptBudgetList.addressUrl"
+          :size-limit="size"
+          @uploadSuccess="uploadSuccess"
+          @onChange="onChange"
+          accept=".jpg, .jpeg, .png, .pdf, .doc, .zip, .rar"
+        />
+      </ws-form>
+    </div>
+    <div style="text-align: right; padding: 10px" class="center">
+      <el-button
+        class="bg-bottom"
+        type="primary"
+        size="small"
+        @click="submit(deptBudgetList)"
+        >提交</el-button
+      >
+    </div>
+  </div>
+</template>
+<script>
+//  import { getVesselOne } from '@/model/procurement/basic'
+//  import { dayjs } from 'base-core-lib'
+import {
+  packList,
+  addList,
+  xiala,
+  addxiala,
+  editxiala,
+  delxiala,
+} from '@/model/contarct/index'
+import WsUpload from '@/components/WsUpload'
+import { regionData, CodeToText, TextToCode } from 'element-china-area-data'
+
+export default {
+  name: 'viewSpareMoney',
+  components: {
+    WsUpload,
+  },
+  watch: {
+    vesselId(val) {
+      this.getVesselData()
+    },
+    isShow(val) {
+      this.showType = val
+    },
+  },
+  data() {
+    return {
+      //弹出框
+      dialogViewSpareMoney: false,
+      dialogApproveFormVisible: false,
+      // 船舶类型
+      monetaryKey: null,
+      // 表格显示数据
+      tableDate: [],
+      // 是否显示
+      showType: true,
+      // 年
+      year: '',
+      options_: regionData,
+      selectedOptions: [],
+      selectedOptions1: [],
+      // 提交类型
+      submitType: true,
+      tableData: [{ date: 1111, name: 'qqqq', address: 'errrtt' }],
+      trainingMethods: {},
+      packtypeList: [],
+      compId: sessionStorage.getItem('ws-pf_compId'),
+      mainReportAdd: {},
+      appendixIdsAdd: '',
+      size: 10,
+      // uploadSuccess: {},
+      // onChange:{},
+      unitList: [],
+      goodnameList: [],
+      gradeList: [],
+      ChapterTwoList: [],
+      deptBudgetList: {
+        deliverType: '1',
+        finalTradingVolume: 0,
+        contractGoodsInfo: {
+          goodsName: '',
+        },
+        contractProcessInfo: {},
+      },
+      pickerBeginDateBefore: {
+        disabledDate: (time) => {
+          return time.getTime() > Date.now()
+        },
+      },
+      ruleDeptBudget: {
+        contractNo: [
+          { required: true, message: '请输入活动名称', trigger: 'blur' },
+          {
+            min: 6,
+            max: 20,
+            message: '长度在 6 到 20 个字符',
+            trigger: 'blur',
+          },
+        ],
+      },
+      selectIntendedShip: {},
+      interviewTypeList: {},
+    }
+  },
+  activated() {
+    //cg.viewBudget
+    //cg.viewSpareMoney
+    // this.getVesselData();
+    this.deptBudgetList.packingMethod = '散装'
+    this.deptBudgetList.packingMethodKey = 1
+    this.deptBudgetList.contractGoodsInfo.goodsName = '玉米'
+    this.deptBudgetList.contractGoodsInfo.goodsNameKey = 1
+    this.deptBudgetList.contractProcessInfo.grade = '未回收'
+    this.deptBudgetList.contractProcessInfo.gradeKey = 1
+    this.deptBudgetList.contractGoodsInfo.grade = '一等品'
+    this.deptBudgetList.contractGoodsInfo.gradeKey = 1
+    this.loaddata()
+    this.showType = this.isShow
+  },
+  methods: {
+    // 关闭 dialog时 处理文件url 初始化upload组件
+    handleClose() {
+      this.dialogViewSpareMoney = false
+    },
+    handleChange(value) {
+      this.selectedOptions = value
+    },
+    handleChange1(value) {
+      this.selectedOptions1 = value
+    },
+    returnsales() {
+      this.$router.push({ path: 'salesContract' })
+    },
+    loaddata() {
+      // 包装方式
+      packList({ constId: 'CON1' })
+        .toPromise()
+        .then((response) => {
+          this.packtypeList = response
+        })
+      // 验收方式
+      this.getUnitList()
+      // 货名
+      packList({ constId: 'CON2' })
+        .toPromise()
+        .then((response) => {
+          this.goodnameList = response
+        })
+      // 品级
+      packList({ constId: 'CON3' })
+        .toPromise()
+        .then((response) => {
+          this.gradeList = response
+        })
+      // 双章
+      packList({ constId: 'CON4' })
+        .toPromise()
+        .then((response) => {
+          this.ChapterTwoList = response
+        })
+    },
+    // 上传附件
+    uploadSuccess(data, files, url) {
+      console.log(data, files, url)
+
+      // this.deptBudgetList.
+      // this.formData.append('files', files)
+      // this.feedbackObj.uploadNameAttachment = data.appendixName
+      // this.feedbackObj.pathUploadAttachment = data.appendixPath
+      // // this.newAppendixs = files
+      // this.onChangeFlag = true
+    },
+    onChange(files) {
+      this.fileNum = files
+      this.$refs.upload.handleSaveBill().then((res) => {
+        console.log(files)
+      })
+    },
+    getUnitList() {
+      xiala({
+        compId: sessionStorage.getItem('ws-pf_compId'),
+        constCode: 'TYPEYAN',
+      })
+        .toPromise()
+        .then((response) => {
+          this.unitList = response
+          let currItem
+          this.unitList.forEach((item, index, arr) => {
+            item.flag = 'delete'
+            if (this.vModel == item.constKey) {
+              currItem = item
+            }
+          })
+          //
+          if (currItem) {
+            this.selectContract(currItem.constValue)
+          }
+        })
+    },
+
+    submit() {
+      if (!this.deptBudgetList.contractNo) {
+        this.$message({
+          message: '请输入合同编号',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.contractNo.length < 6 ||
+        this.deptBudgetList.contractNo.length > 20
+      ) {
+        this.$message({
+          message: '合同编号长度不符合要求,请输入6到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.shippingType) {
+        this.$message({
+          message: '请输入运输方式!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.shippingType.length < 1 ||
+        this.deptBudgetList.shippingType.length > 20
+      ) {
+        this.$message({
+          message: '运输方式长度不符合要求,请输入1到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.buyer) {
+        this.$message({
+          message: '请输入买方名称!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.deptBudgetList.buyer.length > 30) {
+        this.$message({
+          message: '买方名称长度不符合要求,请输入30个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.seller) {
+        this.$message({
+          message: '请输入卖方名称!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.deptBudgetList.seller.length > 30) {
+        this.$message({
+          message: '卖方名称长度不符合要求,请输入30个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.buyerPhone) {
+        this.$message({
+          message: '请输入买方电话!',
+          type: 'warning',
+        })
+        return
+      }
+      if (isNaN(this.deptBudgetList.buyerPhone)) {
+        this.$message({
+          message: '输入买方电话有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.buyerPhone.length < 7 ||
+        this.deptBudgetList.buyerPhone.length > 20
+      ) {
+        this.$message({
+          message: '买方电话长度不符合要求,请输入7到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.sellerPhone) {
+        this.$message({
+          message: '请输入卖方电话!',
+          type: 'warning',
+        })
+        return
+      }
+      if (isNaN(this.deptBudgetList.sellerPhone)) {
+        this.$message({
+          message: '输入卖方电话有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.buyerPhone.length < 7 ||
+        this.deptBudgetList.buyerPhone.length > 20
+      ) {
+        this.$message({
+          message: '卖方电话长度不符合要求,请输入7到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.settlementMethod) {
+        this.$message({
+          message: '请输入结算方式!',
+          type: 'warning',
+        })
+        return
+      }
+
+      if (!this.deptBudgetList.sourceGoods) {
+        this.$message({
+          message: '请输入货源详细地址!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.placeDelivery) {
+        this.$message({
+          message: '请输入交货详细地址!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.selectedOptions.length == 0) {
+        this.$message({
+          message: '请选择货源所在地区!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.selectedOptions1.length == 0) {
+        this.$message({
+          message: '请选择交货所在地区!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.weight) {
+        this.$message({
+          message: '请输入重量!',
+          type: 'warning',
+        })
+        return
+      }
+
+      if (
+        isNaN(this.deptBudgetList.weight) ||
+        (String(this.deptBudgetList.weight).indexOf('.') != -1 &&
+          String(this.deptBudgetList.weight).length -
+            (String(this.deptBudgetList.weight).indexOf('.') + 1) >
+            3) ||
+        this.deptBudgetList.weight < 0 ||
+        this.deptBudgetList.weight > 200000
+      ) {
+        this.$message({
+          message: '输入重量有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.overShort &&
+        isNaN(this.deptBudgetList.overShort)
+      ) {
+        this.$message({
+          message: '溢短装输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.unitContractPrice &&
+        isNaN(this.deptBudgetList.unitContractPrice)
+      ) {
+        this.$message({
+          message: '合同单价输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.totalContractPrice &&
+        isNaN(this.deptBudgetList.totalContractPrice)
+      ) {
+        this.$message({
+          message: '合同总价输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.deliveryDateStart) {
+        this.$message({
+          message: '请选择交货日期(起)',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.deliveryDateEnd) {
+        this.$message({
+          message: '请选择交货日期(止)',
+          type: 'warning',
+        })
+        return
+      }
+      //时间
+      if (
+        new Date(this.deptBudgetList.deliveryDateStart).getTime() >
+        new Date(this.deptBudgetList.deliveryDateEnd).getTime()
+      ) {
+        this.$message({
+          message: '交货日期(止)选择错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.signingDate) {
+        this.$message({
+          message: '请选择签订日期',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.goodsName) {
+        this.$message({
+          message: '请选择货名',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.waterContent) {
+        this.$message({
+          message: '请选择水分',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.grade) {
+        this.$message({
+          message: '请选择品级',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.impurity ||
+        (String(this.deptBudgetList.contractGoodsInfo.impurity).indexOf('.') !=
+          -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.impurity).length -
+            (String(this.deptBudgetList.contractGoodsInfo.impurity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '杂质输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.bulkDensity ||
+        (String(this.deptBudgetList.contractGoodsInfo.bulkDensity).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.bulkDensity).length -
+            (String(this.deptBudgetList.contractGoodsInfo.bulkDensity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '容重输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.mildewGrain ||
+        (String(this.deptBudgetList.contractGoodsInfo.mildewGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.mildewGrain).length -
+            (String(this.deptBudgetList.contractGoodsInfo.mildewGrain).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '霉变粒输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.jiaorenli ||
+        (String(this.deptBudgetList.contractGoodsInfo.jiaorenli).indexOf('.') !=
+          -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.jiaorenli).length -
+            (String(this.deptBudgetList.contractGoodsInfo.jiaorenli).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '热损伤输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.imperfectGrain ||
+        (String(this.deptBudgetList.contractGoodsInfo.imperfectGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.imperfectGrain).length -
+            (String(
+              this.deptBudgetList.contractGoodsInfo.imperfectGrain
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '不完整粒输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (!this.deptBudgetList.contractProcessInfo.goodsNameKey > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.goodsNameKey < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.goodsNameKey).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.goodsNameKey).length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.goodsNameKey
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '合同收入金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.waterContent > 10000000) |
+          (this.deptBudgetList.contractProcessInfo.waterContent < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.waterContent).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.waterContent).length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.waterContent
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '费用金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.goodsName > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.goodsName < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.goodsName).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.goodsName).length -
+            (String(this.deptBudgetList.contractProcessInfo.goodsName).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '已开发票金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.impurity > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.impurity < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.impurity).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.impurity).length -
+            (String(this.deptBudgetList.contractProcessInfo.impurity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '未开发票金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.imperfectGrain > 200000) |
+          (this.deptBudgetList.contractProcessInfo.imperfectGrain < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.imperfectGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.imperfectGrain)
+            .length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.imperfectGrain
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '已完成发运量输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (!this.deptBudgetList.contractProcessInfo.mildewGrain > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.mildewGrain < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.mildewGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.mildewGrain).length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.mildewGrain
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '未回款金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      this.$refs.deptBudgetList.validate((valid) => {
+        if (valid) {
+          this.deptBudgetList.sourceProvince = CodeToText[this.selectedOptions[0]]
+          this.deptBudgetList.sourceCity = CodeToText[this.selectedOptions[1]]
+      
+          this.deptBudgetList.deliveryProvince = CodeToText[this.selectedOptions1[0]]
+          this.deptBudgetList.deliveryCity = CodeToText[this.selectedOptions1[1]]
+         
+          this.deptBudgetList.compId = this.compId
+          this.deptBudgetList.contractType = 1
+
+           if(this.deptBudgetList.deliveryProvince =="澳门特别行政区" || this.deptBudgetList.deliveryProvince == "澳门特别行政区"){
+            this.deptBudgetList.deliveryArea = "特别行政区"
+          }else{ 
+                
+                this.deptBudgetList.deliveryArea = CodeToText[this.selectedOptions1[2]]
+          }
+             if(this.deptBudgetList.sourceProvince =="澳门特别行政区" || this.deptBudgetList.sourceProvince == "澳门特别行政区"){
+            this.deptBudgetList.sourceArea = "特别行政区"
+          }else{
+              this.deptBudgetList.sourceArea = CodeToText[this.selectedOptions[2]]
+          }
+
+          addList(this.deptBudgetList)
+            .toPromise()
+            .then((response) => {
+              this.$message.success('添加成功')
+              this.deptBudgetList = {
+                deliverType: '1',
+                finalTradingVolume: 0,
+                contractGoodsInfo: {
+                  goodsName: '',
+                },
+                contractProcessInfo: {},
+              }
+
+              this.$router.push({ path: 'salesContract' })
+            })
+        } else {
+          EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
+          return false
+        }
+      })
+    },
+    resetForm(deptBudgetList) {
+      this.$refs[deptBudgetList].resetFields()
+    },
+    saveClick(item, index) {
+      console.log(item)
+
+      if (Object.is(item.id, 1)) {
+        return
+      }
+      if (Object.is(this.unitList[index].flag, 'delete')) {
+        this.$set(this.unitList, index, { flag: 'check' })
+      } else {
+        this.$set(this.unitList, index, { flag: 'delete' })
+      }
+      if (!item.constValue) {
+        this.unitList.splice(index, 1)
+        return
+      }
+      if (item.flag == 'add') {
+        item.constKey = Math.random() * 20
+        this.trainingMethods.compId = sessionStorage.getItem('ws-pf_compId')
+        this.trainingMethods.constKey = item.constKey
+        this.trainingMethods.constCode = 'TYPEYAN'
+        this.trainingMethods.constValue = item.constValue
+        this.trainingMethods.id = item.id
+        addxiala(this.trainingMethods)
+          .toPromise()
+          .then((response) => {
+            this.getUnitList()
+          })
+      } else if (item.flag == 'check') {
+        this.trainingMethods.compId = sessionStorage.getItem('ws-pf_compId')
+        this.trainingMethods.constKey = item.constKey
+        this.trainingMethods.constCode = 'TYPEYAN'
+        this.trainingMethods.constValue = item.constValue
+        this.trainingMethods.id = item.id
+        editxiala(this.trainingMethods)
+          .toPromise()
+          .then((response) => {
+            this.getUnitList()
+          })
+      }
+    },
+    // selectContract(val) {
+    //   let key = this.unitList.find((item) => item.constValue === val).constKey
+    //   this.pleaseChoose = val
+    // },
+
+    handleExamine() {},
+    approve() {},
+    // returnsales() {
+    //   this.$router.push({ path: 'purchaseContract' })
+    // },
+    addClick() {
+      // let [flag, constValue, constKey] = ['check', '', '']
+      // let obj = { flag, constValue, constKey }
+      // let objAdd = { flag: 'add', constValue: '新增项目', constKey: '' }
+      // let result = this.unitList.filter((item, val, arr) => {
+      //   return item.id != '1'
+      // })
+      // result.push(obj)
+      // result.push(objAdd)
+      // this.unitList = result
+      this.unitList.push({
+        flag: 'add',
+        constValue: '',
+        constKey: '',
+      })
+    },
+    selectChapterTwo(e) {
+      for (var i = 0; i < this.ChapterTwoList.length; i++) {
+        if (this.ChapterTwoList[i].constValue == e) {
+          this.deptBudgetList.gradeKey = this.ChapterTwoList[i].constKey
+        }
+      }
+    },
+    selectunitList(e) {
+      for (var i = 0; i < this.unitList.length; i++) {
+        if (this.unitList[i].constValue == e) {
+          this.deptBudgetList.packingMethodKey = this.unitList[i].constKey
+        }
+      }
+    },
+    selectgrade(e) {
+      for (var i = 0; i < this.gradeList.length; i++) {
+        if (this.gradeList[i].constValue == e) {
+          this.deptBudgetList.gradeKey = this.gradeList[i].constKey
+        }
+      }
+    },
+    selectgoodsName(e) {
+      for (var i = 0; i < this.goodnameList.length; i++) {
+        if (this.goodnameList[i].constValue == e) {
+          this.deptBudgetList.goodsNameKey = this.goodnameList[i].constKey
+        }
+      }
+    },
+    selectpackingMethod(e) {
+      for (var i = 0; i < this.packtypeList.length; i++) {
+        if (this.packtypeList[i].constValue == e) {
+          this.deptBudgetList.acceptanceMethodKey =
+            this.packtypeList[i].constKey
+        }
+      }
+    },
+    // 编辑
+    editClick(item, index) {
+      const map = JSON.parse(JSON.stringify(item))
+      if (Object.is(item.id, 1)) {
+        return
+      }
+      if (Object.is(this.unitList[index].flag, 'delete')) {
+        map.flag = 'check'
+        this.$set(this.unitList, index, map)
+      } else {
+        map.flag = 'delete'
+        this.$set(this.unitList, index, map)
+      }
+    },
+    // 删除
+    deleteClick(item, index) {
+      if (Object.is(item.constKey, 1)) {
+        return
+      }
+      if (!item.constValue) {
+        this.unitList.splice(index, 1)
+        return
+      }
+      delxiala({ id: this.unitList[index].id })
+        .toPromise()
+        .then((response) => {
+          this.getUnitList()
+          this.pleaseChoose = ''
+        })
+    },
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+/deep/.ws-info-table .el-form-item .el-form-item__content {
+  padding: 0 25px;
+}
+/deep/.ws-info-table .el-form-item {
+  border-right: 1px solid #cdd2dc;
+  border-bottom: 1px solid #cdd2dc;
+}
+.title {
+  position: relative;
+}
+.title::before {
+  content: '';
+  display: inline-block;
+  width: 5px;
+  height: 30px;
+  background: #5473e8;
+  position: absolute;
+  left: 0;
+}
+.el-button--primary {
+  background-color: #5878e8;
+  border-color: #5878e8;
+}
+.el-col {
+  background: #f6f7fc;
+}
+.readonly {
+  position: relative;
+}
+.readonly:after {
+  content: '*';
+  color: #ff2727;
+  position: absolute;
+  right: 8px;
+  z-index: 10;
+  top: 21%;
+  font-size: 20px;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__content {
+  padding: 0 25px;
+  border-left: 1px solid #cdd2dc;
+  background: #fafbfc;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__label {
+  width: 140px;
+  text-align: center;
+  background: #f0f2f6;
+  // border: 1px solid #cdd2dc;
+}
+.button-container {
+  display: flex;
+  flex-wrap: nowrap;
+  justify-content: space-between;
+  align-items: center;
+  background-color: #fff;
+  width: 100%;
+  height: 50px;
+  padding: 0 10px;
+  & > div {
+    margin-left: 10px;
+    display: flex;
+    flex-wrap: nowrap;
+    flex-direction: row;
+    & > span {
+      line-height: 50px;
+    }
+  }
+
+  /deep/.auditFlow-box {
+    position: unset;
+    margin-left: 10px;
+    &/deep/.auditFlow-icon {
+      width: auto;
+      padding-right: 30px;
+    }
+    &/deep/.auditFlow-main {
+      position: absolute;
+    }
+  }
+}
+.box-app {
+  display: inline-block;
+  float: left;
+  margin-left: 30px;
+  line-height: 50px;
+}
+/deep/.el-dialog {
+  .el-form-item {
+    margin-bottom: 0 !important;
+    .el-input--medium {
+      textarea {
+        min-height: 100px !important;
+      }
+    }
+  }
+}
+.collapse-bottom {
+  margin-bottom: 20px;
+}
+.input-main .textarea .el-textarea__inner {
+  width: 100%;
+  z-index: 1;
+}
+.bg-left {
+  padding-left: 30px;
+}
+.bg-right {
+  padding-right: 10px;
+  text-align: right;
+}
+.bg-bottom {
+  margin: 16px 0px;
+}
+.wenzi {
+  width: 70%;
+  margin: 0 auto;
+}
+.wenzi h3 {
+  display: inline-block;
+  left: 10px;
+}
+.wenzi p {
+  display: inline-block;
+}
+.center {
+  width: 70%;
+  margin: 0 auto;
+}
+.el-form-item {
+  width: 50%;
+}
+.el-form-item__label {
+  text-align: center;
+}
+.ce {
+  width: 70%;
+  margin: 0 auto;
+}
+/*.crt-main .textarea /deep/ .el-form-item__label {*/
+/*  height: 82px;*/
+/*}*/
+// 控制select为只读的时候显示样式
+
+.hide-sel {
+  .el-input__inner {
+    border: 0px;
+  }
+  .el-icon-arrow-up {
+    display: none;
+  }
+  .el-textarea__inner {
+    background-color: #fff !important;
+    border: 0;
+  }
+  .el-date-editor {
+    i {
+      display: none;
+    }
+  }
+  .is-disabled {
+    .el-input__inner:hover {
+      background-color: #fff !important;
+      border: 0;
+    }
+    color: #606266;
+    .el-input__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+    .el-textarea__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+  }
+}
+/deep/.ws-info-table .el-form-item .el-form-item__label {
+  width: 130px;
+}
+//*号
+.unchangeable {
+  position: absolute;
+  width: 9px;
+  height: 22px;
+  font-size: 16px;
+  font-family: PingFangSC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #ff2727;
+  line-height: 22px;
+  display: inline-block;
+  right: 14px;
+}
+/deep/.el-input,
+/deep/.el-date-editor {
+  font-size: 13px;
+}
+/deep/.el-textarea {
+  width: 101%;
+  margin: 0px;
+}
+/deep/el-date-editor--date {
+  width: 200px;
+}
+.unchanged {
+  position: absolute;
+  left: 37px;
+  width: 102px;
+  height: 14px;
+  font-size: 14px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #afb5cb;
+  line-height: 14px;
+}
+/deep/.el-input--small .el-input__inner {
+  height: 32px;
+  line-height: 32px;
+}
+// 控制select为只读的时候显示样式
+/deep/.ws-class-table-col {
+  height: auto;
+  padding: 0px 2px;
+  /deep/.el-input__inner {
+    padding: 0px 2px;
+  }
+}
+/deep/.is-disabled {
+  .el-input__prefix,
+  .el-input__suffix {
+    display: none;
+  }
+  .el-input__inner {
+    background-color: #fff;
+    border-color: #fff !important;
+    color: #000 !important;
+    font-size: 14px;
+    cursor: text;
+    padding: 0 !important;
+  }
+}
+.winseaview-view {
+  padding: 0 0 20px;
+}
+.container {
+  overflow: scroll;
+  height: 93vh;
+}
+</style>

+ 1602 - 0
src/views/platformAudit/salesContractEdit.vue

@@ -0,0 +1,1602 @@
+<template>
+  <div class="container">
+    <el-row>
+      <el-col :span="12">
+        <h2 class="bg-left title">修改合同信息</h2>
+      </el-col>
+      <el-col :span="12" class="bg-right">
+        <el-button
+          class="bg-bottom"
+          type="primary"
+          size="small"
+          @click="returnsales()"
+          ><img
+            width="6"
+            height="10"
+            style="vertion-align: bottom; margin-right: 3px"
+            src="../../../public/img/lujing.png"
+            alt=""
+          />返回</el-button
+        >
+      </el-col>
+    </el-row>
+
+    <div class="wenzi">
+      <h3>基本信息</h3>
+      <p>
+        &nbsp;&nbsp;注:基本信息和货物信息均为必填项,“*”
+        标记的条目提交后不可修改。
+      </p>
+    </div>
+    <div class="center">
+      <ws-form
+        ref="deptBudgetList"
+        :rules="ruleDeptBudget"
+        :model="deptBudgetList"
+      >
+        <!--基本信息-->
+        <ws-info-table>
+          <!--合同编号-->
+          <ws-form-item label="合同编号" span="1" prop="contractNo">
+            <div class="unchanged">
+              {{ deptBudgetList.contractNo }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+
+          <!--运输方式-->
+          <ws-form-item label="运输方式" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.shippingType"
+              placeholder="请输入运输方式"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--买方-->
+          <ws-form-item label="买方" span="1" prop="contractNo">
+            <div class="unchanged">
+              {{ deptBudgetList.buyer }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+
+          <!--结算方式-->
+          <ws-form-item label="结算方式" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.settlementMethod"
+              placeholder="请输入结算方式"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--卖方-->
+          <ws-form-item label="卖方" span="1" prop="contractNo">
+            <div class="unchanged">
+              {{ deptBudgetList.seller }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+
+          <!--交货方式-->
+          <ws-form-item label="交货方式" span="1" prop="contractNo">
+            <div class="unchanged">
+              {{ deptBudgetList.deliverType1 }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+
+          <!--买方电话-->
+          <ws-form-item label="买方电话" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.buyerPhone"
+              placeholder="请输入买方电话"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--包装方式-->
+          <ws-form-item label="包装方式" span="1" prop="packingMethod">
+            <ws-select
+              v-model="deptBudgetList.packingMethod"
+              placeholder=""
+              class="typeselect"
+              @change="selectpackingMethod"
+            >
+              <ws-option
+                v-for="item in packtypeList"
+                :key="item.constKey"
+                :label="item.constValue"
+                :value="item.constValue"
+              />
+            </ws-select>
+          </ws-form-item>
+          <!--卖方电话-->
+          <ws-form-item label="卖方电话" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.sellerPhone"
+              placeholder="请输入卖房电话"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--验收方式-->
+          <ws-form-item label="验收方式" span="1" prop="acceptanceMethod">
+            <el-select
+              v-model="deptBudgetList.acceptanceMethod"
+              placeholder="请选择验收方式"
+              style="width: 100%"
+              filterable
+              @change="selectunitList"
+            >
+              <el-option
+                v-for="(item, index) in unitList"
+                :key="item.constValue"
+                :label="item.constValue"
+                :value="item.constValue"
+              >
+                <span class="unit-left" style="float: left">
+                  <span v-if="item.flag == 'delete'">
+                    {{ item.constValue }}</span
+                  >
+                  <!-- 新增文本框 -->
+                  <div
+                    style="width: 160px"
+                    v-if="item.flag !== 'delete'"
+                    @click.stop
+                  >
+                    <ws-input
+                      v-model="item.constValue"
+                      clearable
+                      maxlength="10"
+                      style="width: 100%"
+                    ></ws-input>
+                  </div>
+                </span>
+                <span style="float: right; color: #8492a6; font-size: 13px">
+                  <!-- 对号 -->
+                  <i
+                    class="el-icon-check"
+                    style="line-height: 29px; margin-left: 10px"
+                    v-if="item.flag !== 'delete'"
+                    @click.stop="saveClick(item, index)"
+                  ></i>
+                  <!-- 编辑 -->
+                  <i
+                    class="el-icon-edit"
+                    style="line-height: 29px; margin-left: 10px"
+                    v-if="item.flag == 'delete'"
+                    @click.stop="editClick(item, index)"
+                  ></i>
+                  <!-- 删除 -->
+                  <i
+                    class="el-icon-delete"
+                    style="line-height: 29px"
+                    @click.stop="deleteClick(item, index)"
+                  ></i>
+                </span>
+              </el-option>
+              <!-- 新增按钮 -->
+              <el-option value="" label="">
+                <div
+                  style="
+                    text-align: right;
+                    border-top: 1px solid #dcdfe6;
+                    padding: 5px;
+                  "
+                >
+                  <ws-button type="primary" @click.stop="addClick">{{
+                    $t('button.add')
+                  }}</ws-button>
+                </div>
+              </el-option>
+            </el-select>
+          </ws-form-item>
+          <!--重量(吨)-->
+          <ws-form-item label="重量(吨)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.weight"
+              placeholder="请输入重量(吨)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--交货日期(起)-->
+          <ws-form-item
+            label="交货日期(起)"
+            span="1"
+            prop="deliveryDateStart"
+          >
+            <ws-date-picker
+              v-model="deptBudgetList.deliveryDateStart"
+              type="date"
+              placeholder="请选择交货日期(起)"
+              value-format="yyyy-MM-dd"
+            />
+          </ws-form-item>
+          <!--溢短装(%)-->
+          <ws-form-item label="溢短装(%)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.overShort"
+              placeholder="请输入溢短装(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--交货日期(止)-->
+          <ws-form-item label="交货日期(止)" span="1" prop="deliveryDateEnd">
+            <ws-date-picker
+              v-model="deptBudgetList.deliveryDateEnd"
+              type="date"
+              placeholder="请选择交货日期(止)"
+              value-format="yyyy-MM-dd"
+            />
+          </ws-form-item>
+
+          <!--合同单价(元/吨)-->
+          <ws-form-item label="合同单价(元/吨)" span="1" prop="contractNo">
+            <div class="unchanged">
+              {{ deptBudgetList.unitContractPrice }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+
+          <!--合同总价-->
+          <ws-form-item label="合同总价" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.totalContractPrice"
+              placeholder="请输入合同总价"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!-- 货源所在地区 -->
+          <ws-form-item label="货源所在地区" span="1" prop="packingMethod">
+            <el-cascader
+              :options="options_"
+              v-model="selectedOptions"
+              clearable
+              size="large"
+              placeholder="请选择货源所在地区"
+              style="width: 200%"
+              @change="handleChange"
+            />
+          </ws-form-item>
+          <!-- 货源详细地址 -->
+          <ws-form-item label="货源详细地址" span="1" prop="totalContractPrice">
+            <ws-input
+              v-model="deptBudgetList.totalContractPrice"
+              maxlength="100"
+              placeholder="请输入货源详细地址"
+              size="small"
+            />
+          </ws-form-item>
+          <!-- 交货地所在地区 -->
+          <ws-form-item label="交货地所在地区" span="1" prop="packingMethod">
+            <el-cascader
+              :options="options_"
+              v-model="selectedOptions1"
+              clearable
+              size="large"
+              placeholder="请选择交货地所在地区"
+              style="width: 200%"
+              @change="handleChange1"
+            />
+          </ws-form-item>
+          <!-- 交货地详细地址 -->
+          <ws-form-item
+            label="交货地详细地址"
+            span="1"
+            prop="totalContractPrice"
+          >
+            <ws-input
+              v-model="deptBudgetList.totalContractPrice"
+              maxlength="100"
+              placeholder="请输入交货地详细地址"
+              size="small"
+            />
+          </ws-form-item>
+          <!--签订日期-->
+          <ws-form-item label="签订日期" span="1" prop="signingDate">
+            <ws-date-picker
+              v-model="deptBudgetList.signingDate"
+              type="date"
+              placeholder="请选择合同签订日期"
+              value-format="yyyy-MM-dd"
+            />
+          </ws-form-item>
+          <!-- 最终实际交易量(吨) -->
+          <ws-form-item
+            label="最终实际交易量(吨)"
+            span="1"
+            prop="totalContractPrice"
+          >
+            <ws-input
+              v-model="deptBudgetList.finalTradingVolume"
+              maxlength="100"
+              placeholder="请输入最终实际交易量"
+              size="small"
+            />
+          </ws-form-item>
+        </ws-info-table>
+      </ws-form>
+    </div>
+    <!-- <base-card> -->
+    <div class="wenzi">
+      <h3>货物信息</h3>
+    </div>
+    <div class="center">
+      <ws-form
+        ref="deptBudgetList"
+        :rules="ruleDeptBudget"
+        :model="deptBudgetList"
+      >
+        <!--货物信息-->
+        <ws-info-table>
+          <!--货名-->
+          <ws-form-item label="货名" span="1" prop="goodsName">
+            <!-- <ws-select
+                v-model="deptBudgetList.contractGoodsInfo.goodsName"
+                placeholder=""
+                class="typeselect"
+                @change="selectpackingMethod"
+              >
+                <ws-option
+                  v-for="item in goodnameList"
+                  :key="item.constKey"
+                  :label="item.constValue"
+                  :value="item.constValue"
+                />
+              </ws-select> -->
+            <div class="unchanged">
+              {{ deptBudgetList.contractGoodsInfo.goodsName }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+
+          <!--水分(%)<=-->
+          <ws-form-item label="水分(%)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.waterContent"
+              placeholder="请输入水分(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--品级-->
+          <ws-form-item label="品级" span="1" prop="grade">
+            <ws-select
+              v-model="deptBudgetList.contractGoodsInfo.grade"
+              placeholder=""
+              class="typeselect"
+              @change="selectgrade"
+            >
+              <ws-option
+                v-for="item in gradeList"
+                :key="item.constKey"
+                :label="item.constValue"
+                :value="item.constValue"
+              />
+            </ws-select>
+          </ws-form-item>
+
+          <!--杂质(%)<=-->
+          <ws-form-item label="杂质(%)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.impurity"
+              placeholder="请输入杂质(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--容量(克/升)>=-->
+          <ws-form-item label="容量(克/升)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.bulkDensity"
+              placeholder="请输入容量(克/升)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--霉变粒(%)<=-->
+          <ws-form-item label="霉变粒(%)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.mildewGrain"
+              placeholder="请输入霉变粒(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--热损伤(%)<=-->
+          <ws-form-item label="热损伤(%)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.jiaorenli"
+              placeholder="请输入热损伤(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--不完整粒(%)<=-->
+          <ws-form-item label="不完整粒(%)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractGoodsInfo.imperfectGrain"
+              placeholder="请输入不完整粒(%)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+        </ws-info-table>
+      </ws-form>
+    </div>
+    <div class="wenzi">
+      <h3>流程信息</h3>
+    </div>
+    <div class="center">
+      <ws-form
+        ref="deptBudgetList"
+        :rules="ruleDeptBudget"
+        :model="deptBudgetList"
+      >
+        <!--流程信息-->
+
+        <ws-info-table>
+          <!--合同收入(元)-->
+          <ws-form-item label="合同收入(元)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.goodsNameKey"
+              placeholder="请输入合同收入(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--已开发票(元)-->
+          <ws-form-item label="已开发票(元)" span="1" prop="goodsName">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.goodsName"
+              placeholder="请输入已开发票(元))"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--费用支出(元)-->
+          <ws-form-item label="费用支出(元)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.waterContent"
+              placeholder="请输入费用支出(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--未开发票(元)-->
+          <ws-form-item label="未开发票(元)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.impurity"
+              placeholder="请输入未开发票(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--未回款(元)-->
+          <ws-form-item label="未回款(元)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.mildewGrain"
+              placeholder="请输入未回款(元)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+
+          <!--已完成发货量(吨)-->
+          <ws-form-item label="已完成发货量(吨)" span="1" prop="contractNo">
+            <ws-input
+              v-model="deptBudgetList.contractProcessInfo.imperfectGrain"
+              placeholder="请输入已完成发货量(吨)"
+              maxlength="100"
+              size="small"
+            />
+          </ws-form-item>
+          <!--双章原件回收情况-->
+          <ws-form-item label="双章原件回收情况" span="1" prop="grade">
+            <ws-select
+              v-model="deptBudgetList.contractProcessInfo.grade"
+              placeholder=""
+              class="typeselect"
+              @change="selectpackingMethod"
+            >
+              <ws-option
+                v-for="item in ChapterTwoList"
+                :key="item.constKey"
+                :label="item.constValue"
+                :value="item.constValue"
+              />
+            </ws-select>
+          </ws-form-item>
+        </ws-info-table>
+      </ws-form>
+    </div>
+
+    <div class="wenzi">
+      <h3>备注信息</h3>
+    </div>
+    <div class="center">
+      <ws-form
+        ref="deptBudgetList"
+        :rules="ruleDeptBudget"
+        :model="deptBudgetList"
+      >
+        <!--备注信息-->
+        <ws-input
+          v-model="deptBudgetList.remarks"
+          type="textarea"
+          row="3"
+          placeholder="请输入备注信息,不超过200字"
+          maxlength="200"
+        />
+        <ws-upload
+          ref="upload"
+          table-name="maintain_work_order"
+          oss-key="mainPlan"
+          :comp-id="compId"
+          :appendix-ids="appendixIdsAdd"
+          :vesselId="deptBudgetList.addressUrl"
+          :size-limit="size"
+          @uploadSuccess="uploadSuccess"
+          @onChange="onChange"
+          accept=".jpg, .jpeg, .png, .pdf, .doc, .zip, .rar"
+        />
+      </ws-form>
+    </div>
+    <div style="text-align: right; padding: 10px" class="center">
+      <el-button class="bg-bottom" type="primary" size="small" @click="submit()"
+        >提交</el-button
+      >
+    </div>
+  </div>
+</template>
+<script>
+// import { getVesselOne } from '@/model/procurement/basic'
+// import { dayjs } from 'base-core-lib'
+import { regionData, CodeToText, TextToCode } from 'element-china-area-data'
+import WsUpload from '@/components/WsUpload'
+import {
+  examineList,
+  editInfo,
+  packList,
+  xiala,
+  addxiala,
+  editxiala,
+  delxiala,
+} from '@/model/contarct/index'
+export default {
+  name: 'viewSpareMoney',
+  components: {
+    WsUpload,
+  },
+  watch: {
+    vesselId(val) {
+      this.loaddata()
+    },
+    isShow(val) {
+      this.showType = val
+    },
+  },
+  data() {
+    return {
+      //弹出框
+      dialogViewSpareMoney: false,
+      dialogApproveFormVisible: false,
+      // 船舶类型
+      monetaryKey: null,
+      // 表格显示数据
+      tableDate: [],
+      // 是否显示
+      showType: true,
+      // 年
+      year: '',
+      // 提交类型
+      submitType: true,
+      options_: regionData,
+      selectedOptions: [],
+      selectedOptions1: [],
+      tableData: [{ date: 1111, name: 'qqqq', address: 'errrtt' }],
+      pickerBeginDateBefore: {
+        disabledDate: (time) => {
+          return time.getTime() > Date.now()
+        },
+      },
+      // selectpackingMethod:{},
+      selectunitList: {},
+      //change:{},
+      onChange: {},
+      uploadSuccess: {},
+      selectgrade: {},
+      goodnameList: {},
+      selectpackingMethod: {},
+      unitList: {},
+      packtypeList: [],
+      compId: sessionStorage.getItem('ws-pf_compId'),
+      appendixIdsAdd: '',
+      size: 10,
+      deptBudgetList: {
+        contractGoodsInfo: {
+          goodsName: '',
+        },
+        contractProcessInfo: {},
+      },
+      // selectpackingMethod:{},
+      //  change:{},
+      ruleDeptBudget: {},
+      trainingMethods: {},
+      isEdited: false,
+      registered: {},
+      selectCrtDuty: {},
+      dutyList: {},
+      sexList: {},
+      selectDuty: {},
+      gradeList: {},
+      ChapterTwoList: {},
+      selectIntendedShip: {},
+      interviewTypeList: {},
+    }
+  },
+  activated() {
+    //cg.viewBudget
+    //cg.viewSpareMoney
+    // this.getVesselData();
+    this.loaddata()
+    this.editInfo()
+    this.showType = this.isShow
+    // console.log(this.$route.params)
+    this.showType = this.isShow
+  },
+  methods: {
+    // 关闭 dialog时 处理文件url 初始化upload组件
+    handleClose() {
+      this.dialogViewSpareMoney = false
+    },
+    returnsales() {
+      this.deptBudgetList = {}
+      this.$router.push({ path: 'salesContract' })
+    },
+    handleChange(value) {
+      this.selectedOptions = value
+    },
+    handleChange1(value) {
+      this.selectedOptions1 = value
+    },
+    loaddata() {
+      // 数据
+      examineList({ id: this.$route.query.id })
+        .toPromise()
+        .then((response) => {
+          var tmp = []
+          tmp[0] = TextToCode[response.sourceProvince].code
+          tmp[1] = TextToCode[response.sourceProvince][response.sourceCity].code
+          if (tmp[0] == 810000 || tmp[0] == 820000) {
+            tmp[2] = null
+          } else {
+            tmp[2] =
+              TextToCode[response.sourceProvince][response.sourceCity][
+                response.sourceArea
+              ].code
+          }
+          this.selectedOptions = tmp
+          var tmp1 = []
+          tmp1[0] = TextToCode[response.deliveryProvince].code
+          tmp1[1] =
+            TextToCode[response.deliveryProvince][response.deliveryCity].code
+          if (tmp1[0] == 810000 || tmp1[0] == 820000) {
+            tmp1[2] = null
+          } else {
+            tmp1[2] =
+              TextToCode[response.deliveryProvince][response.deliveryCity][
+                response.deliveryArea
+              ].code
+          }
+
+          this.selectedOptions1 = tmp1
+          this.deptBudgetList = response
+        })
+      // 包装方式
+      packList({ constId: 'CON1' })
+        .toPromise()
+        .then((response) => {
+          this.packtypeList = response
+        })
+      // 验收方式
+      this.getUnitList()
+      // 货名
+      packList({ constId: 'CON2' })
+        .toPromise()
+        .then((response) => {
+          this.goodnameList = response
+        })
+      // 品级
+      packList({ constId: 'CON3' })
+        .toPromise()
+        .then((response) => {
+          this.gradeList = response
+        })
+      // 双章
+      packList({ constId: 'CON4' })
+        .toPromise()
+        .then((response) => {
+          this.ChapterTwoList = response
+        })
+    },
+
+    getUnitList() {
+      xiala({
+        compId: sessionStorage.getItem('ws-pf_compId'),
+        constCode: 'TYPEYAN',
+      })
+        .toPromise()
+        .then((response) => {
+          if (this.deptBudgetList.deliverType == 1) {
+            this.deptBudgetList.deliverType1 = '我方自提'
+          } else if (this.deptBudgetList.deliverType == 2) {
+            this.deptBudgetList.deliverType1 = '对方送货'
+          }
+          this.unitList = response
+          let currItem
+          this.unitList.forEach((item, index, arr) => {
+            item.flag = 'delete'
+            if (this.vModel == item.constKey) {
+              currItem = item
+            }
+          })
+          //
+          if (currItem) {
+            this.selectContract(currItem.constValue)
+          }
+        })
+    },
+    // 编辑
+    editClick(item, index) {
+      const map = JSON.parse(JSON.stringify(item))
+      if (Object.is(item.id, 1)) {
+        return
+      }
+      if (Object.is(this.unitList[index].flag, 'delete')) {
+        map.flag = 'check'
+        this.$set(this.unitList, index, map)
+      } else {
+        map.flag = 'delete'
+        this.$set(this.unitList, index, map)
+      }
+    },
+    // 删除
+    deleteClick(item, index) {
+      if (Object.is(item.constKey, 1)) {
+        return
+      }
+      if (!item.constValue) {
+        this.unitList.splice(index, 1)
+        return
+      }
+      delxiala({ id: this.unitList[index].id })
+        .toPromise()
+        .then((response) => {
+          this.getUnitList()
+          this.pleaseChoose = ''
+        })
+    },
+    saveClick(item, index) {
+      //  console.log(item)
+
+      if (Object.is(item.id, 1)) {
+        return
+      }
+      if (Object.is(this.unitList[index].flag, 'delete')) {
+        this.$set(this.unitList, index, { flag: 'check' })
+      } else {
+        this.$set(this.unitList, index, { flag: 'delete' })
+      }
+      if (!item.constValue) {
+        this.unitList.splice(index, 1)
+        return
+      }
+      if (item.flag == 'add') {
+        item.constKey = Math.random() * 20
+        this.trainingMethods.compId = sessionStorage.getItem('ws-pf_compId')
+        this.trainingMethods.constKey = item.constKey
+        this.trainingMethods.constCode = 'TYPEYAN'
+        this.trainingMethods.constValue = item.constValue
+        this.trainingMethods.id = item.id
+        addxiala(this.trainingMethods)
+          .toPromise()
+          .then((response) => {
+            this.getUnitList()
+          })
+      } else if (item.flag == 'check') {
+        this.trainingMethods.compId = sessionStorage.getItem('ws-pf_compId')
+        this.trainingMethods.constKey = item.constKey
+        this.trainingMethods.constCode = 'TYPEYAN'
+        this.trainingMethods.constValue = item.constValue
+        this.trainingMethods.id = item.id
+        editxiala(this.trainingMethods)
+          .toPromise()
+          .then((response) => {
+            this.getUnitList()
+          })
+      }
+    },
+    addClick() {
+      // let [flag, constValue, constKey] = ['check', '', '']
+      // let obj = { flag, constValue, constKey }
+      // let objAdd = { flag: 'add', constValue: '新增项目', constKey: '' }
+      // let result = this.unitList.filter((item, val, arr) => {
+      //   return item.id != '1'
+      // })
+      // result.push(obj)
+      // result.push(objAdd)
+      // this.unitList = result
+      this.unitList.push({
+        flag: 'add',
+        constValue: '',
+        constKey: '',
+      })
+    },
+    submit() {
+      if (!this.deptBudgetList.contractNo) {
+        this.$message({
+          message: '请输入合同编号',
+          type: 'warning',
+        })
+        return
+      }
+      console.log(this.deptBudgetList.contractNo.length)
+      if (
+        this.deptBudgetList.contractNo.length < 6 ||
+        this.deptBudgetList.contractNo.length > 20
+      ) {
+        this.$message({
+          message: '合同编号长度不符合要求,请输入6到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.shippingType) {
+        this.$message({
+          message: '请输入运输方式!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.shippingType.length < 1 ||
+        this.deptBudgetList.shippingType.length > 20
+      ) {
+        this.$message({
+          message: '运输方式长度不符合要求,请输入1到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.buyer) {
+        this.$message({
+          message: '请输入买方名称!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.deptBudgetList.buyer.length > 30) {
+        this.$message({
+          message: '买方名称长度不符合要求,请输入30个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.seller) {
+        this.$message({
+          message: '请输入卖方名称!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.deptBudgetList.seller.length > 30) {
+        this.$message({
+          message: '卖方名称长度不符合要求,请输入30个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.buyerPhone) {
+        this.$message({
+          message: '请输入买方电话!',
+          type: 'warning',
+        })
+        return
+      }
+      if (isNaN(this.deptBudgetList.buyerPhone)) {
+        this.$message({
+          message: '输入买方电话有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.buyerPhone.length < 7 ||
+        this.deptBudgetList.buyerPhone.length > 20
+      ) {
+        this.$message({
+          message: '买方电话长度不符合要求,请输入7到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.sellerPhone) {
+        this.$message({
+          message: '请输入卖方电话!',
+          type: 'warning',
+        })
+        return
+      }
+      if (isNaN(this.deptBudgetList.sellerPhone)) {
+        this.$message({
+          message: '输入卖方电话有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        this.deptBudgetList.buyerPhone.length < 7 ||
+        this.deptBudgetList.buyerPhone.length > 20
+      ) {
+        this.$message({
+          message: '卖方电话长度不符合要求,请输入7到20个字符之内!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.settlementMethod) {
+        this.$message({
+          message: '请输入结算方式!',
+          type: 'warning',
+        })
+        return
+      }
+
+      if (!this.deptBudgetList.sourceGoods) {
+        this.$message({
+          message: '请输入货源详细地址!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.placeDelivery) {
+        this.$message({
+          message: '请输入交货详细地址!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.selectedOptions.length == 0) {
+        this.$message({
+          message: '请选择货源所在地区!',
+          type: 'warning',
+        })
+        return
+      }
+      if (this.selectedOptions1.length == 0) {
+        this.$message({
+          message: '请选择交货所在地区!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.weight) {
+        this.$message({
+          message: '请输入重量!',
+          type: 'warning',
+        })
+        return
+      }
+
+      if (
+        isNaN(this.deptBudgetList.weight) ||
+        (String(this.deptBudgetList.weight).indexOf('.') != -1 &&
+          String(this.deptBudgetList.weight).length -
+            (String(this.deptBudgetList.weight).indexOf('.') + 1) >
+            3) ||
+        this.deptBudgetList.weight < 0 ||
+        this.deptBudgetList.weight > 200000
+      ) {
+        this.$message({
+          message: '输入重量有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.overShort &&
+        isNaN(this.deptBudgetList.overShort)
+      ) {
+        this.$message({
+          message: '溢短装输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.unitContractPrice &&
+        isNaN(this.deptBudgetList.unitContractPrice)
+      ) {
+        this.$message({
+          message: '合同单价输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.totalContractPrice &&
+        isNaN(this.deptBudgetList.totalContractPrice)
+      ) {
+        this.$message({
+          message: '合同总价输入有误!',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.deliveryDateStart) {
+        this.$message({
+          message: '请选择交货日期(起)',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.deliveryDateEnd) {
+        this.$message({
+          message: '请选择交货日期(止)',
+          type: 'warning',
+        })
+        return
+      }
+      //时间
+      if (
+        new Date(this.deptBudgetList.deliveryDateStart).getTime() >
+        new Date(this.deptBudgetList.deliveryDateEnd).getTime()
+      ) {
+        this.$message({
+          message: '交货日期(止)选择错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.signingDate) {
+        this.$message({
+          message: '请选择签订日期',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.goodsName) {
+        this.$message({
+          message: '请选择货名',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.waterContent) {
+        this.$message({
+          message: '请选择水分',
+          type: 'warning',
+        })
+        return
+      }
+      if (!this.deptBudgetList.contractGoodsInfo.grade) {
+        this.$message({
+          message: '请选择品级',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.impurity ||
+        (String(this.deptBudgetList.contractGoodsInfo.impurity).indexOf('.') !=
+          -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.impurity).length -
+            (String(this.deptBudgetList.contractGoodsInfo.impurity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '杂质输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.bulkDensity ||
+        (String(this.deptBudgetList.contractGoodsInfo.bulkDensity).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.bulkDensity).length -
+            (String(this.deptBudgetList.contractGoodsInfo.bulkDensity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '容重输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.mildewGrain ||
+        (String(this.deptBudgetList.contractGoodsInfo.mildewGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.mildewGrain).length -
+            (String(this.deptBudgetList.contractGoodsInfo.mildewGrain).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '霉变粒输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.jiaorenli ||
+        (String(this.deptBudgetList.contractGoodsInfo.jiaorenli).indexOf('.') !=
+          -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.jiaorenli).length -
+            (String(this.deptBudgetList.contractGoodsInfo.jiaorenli).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '热损伤输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        !this.deptBudgetList.contractGoodsInfo.imperfectGrain ||
+        (String(this.deptBudgetList.contractGoodsInfo.imperfectGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractGoodsInfo.imperfectGrain).length -
+            (String(
+              this.deptBudgetList.contractGoodsInfo.imperfectGrain
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '不完整粒输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (!this.deptBudgetList.contractProcessInfo.goodsNameKey > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.goodsNameKey < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.goodsNameKey).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.goodsNameKey).length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.goodsNameKey
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '合同收入金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.waterContent > 10000000) |
+          (this.deptBudgetList.contractProcessInfo.waterContent < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.waterContent).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.waterContent).length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.waterContent
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '费用金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.goodsName > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.goodsName < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.goodsName).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.goodsName).length -
+            (String(this.deptBudgetList.contractProcessInfo.goodsName).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '已开发票金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.impurity > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.impurity < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.impurity).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.impurity).length -
+            (String(this.deptBudgetList.contractProcessInfo.impurity).indexOf(
+              '.'
+            ) +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '未开发票金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (this.deptBudgetList.contractProcessInfo.imperfectGrain > 200000) |
+          (this.deptBudgetList.contractProcessInfo.imperfectGrain < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.imperfectGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.imperfectGrain)
+            .length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.imperfectGrain
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '已完成发运量输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      if (
+        (!this.deptBudgetList.contractProcessInfo.mildewGrain > 1000000000) |
+          (this.deptBudgetList.contractProcessInfo.mildewGrain < 0) ||
+        (String(this.deptBudgetList.contractProcessInfo.mildewGrain).indexOf(
+          '.'
+        ) != -1 &&
+          String(this.deptBudgetList.contractProcessInfo.mildewGrain).length -
+            (String(
+              this.deptBudgetList.contractProcessInfo.mildewGrain
+            ).indexOf('.') +
+              1) >
+            2)
+      ) {
+        this.$message({
+          message: '未回款金额输入错误',
+          type: 'warning',
+        })
+        return
+      }
+      this.$refs.deptBudgetList.validate((valid) => {
+        if (valid) {
+          this.deptBudgetList.sourceProvince =
+            CodeToText[this.selectedOptions[0]]
+          this.deptBudgetList.sourceCity = CodeToText[this.selectedOptions[1]]
+
+          this.deptBudgetList.deliveryProvince =
+            CodeToText[this.selectedOptions1[0]]
+          this.deptBudgetList.deliveryCity =
+            CodeToText[this.selectedOptions1[1]]
+
+          this.deptBudgetList.compId = this.compId
+          this.deptBudgetList.contractType = 1
+
+          if (
+            this.deptBudgetList.deliveryProvince == '澳门特别行政区' ||
+            this.deptBudgetList.deliveryProvince == '澳门特别行政区'
+          ) {
+            this.deptBudgetList.deliveryArea = '特别行政区'
+          } else {
+            this.deptBudgetList.deliveryArea =
+              CodeToText[this.selectedOptions1[2]]
+          }
+          if (
+            this.deptBudgetList.sourceProvince == '澳门特别行政区' ||
+            this.deptBudgetList.sourceProvince == '澳门特别行政区'
+          ) {
+            this.deptBudgetList.sourceArea = '特别行政区'
+          } else {
+            this.deptBudgetList.sourceArea = CodeToText[this.selectedOptions[2]]
+          }
+          editInfo(this.deptBudgetList)
+            .toPromise()
+            .then((response) => {
+              this.$message.success('编辑成功')
+              this.deptBudgetList = {}
+              this.$router.push({ path: 'salesContract' })
+            })
+        } else {
+          EventBus.$emit('error', this.$t('showMessage.asteriskRequired'))
+          return false
+        }
+      })
+    },
+    editInfo() {
+      editInfo({})
+    },
+    // getList(){}
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+/deep/.ws-info-table .el-form-item .el-form-item__content {
+  padding: 0 25px;
+}
+/deep/.ws-info-table .el-form-item {
+  border-right: 1px solid #cdd2dc;
+  border-bottom: 1px solid #cdd2dc;
+}
+.title {
+  position: relative;
+}
+.title::before {
+  content: '';
+  display: inline-block;
+  width: 5px;
+  height: 30px;
+  background: #5473e8;
+  position: absolute;
+  left: 0;
+}
+.el-button--primary {
+  background-color: #5878e8;
+  border-color: #5878e8;
+}
+.el-col {
+  background: #f6f7fc;
+}
+.readonly {
+  position: relative;
+}
+.readonly:after {
+  content: '*';
+  color: #ff2727;
+  position: absolute;
+  right: 8px;
+  z-index: 10;
+  top: 21%;
+  font-size: 20px;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__content {
+  padding: 0 25px;
+  border-left: 1px solid #cdd2dc;
+  background: #fafbfc;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__label {
+  width: 140px;
+  text-align: center;
+  background: #f0f2f6;
+  // border: 1px solid #cdd2dc;
+}
+.button-container {
+  display: flex;
+  flex-wrap: nowrap;
+  justify-content: space-between;
+  align-items: center;
+  background-color: #fff;
+  width: 100%;
+  height: 50px;
+  padding: 0 10px;
+  & > div {
+    margin-left: 10px;
+    display: flex;
+    flex-wrap: nowrap;
+    flex-direction: row;
+    & > span {
+      line-height: 50px;
+    }
+  }
+
+  /deep/.auditFlow-box {
+    position: unset;
+    margin-left: 10px;
+    &/deep/.auditFlow-icon {
+      width: auto;
+      padding-right: 30px;
+    }
+    &/deep/.auditFlow-main {
+      position: absolute;
+    }
+  }
+}
+.box-app {
+  display: inline-block;
+
+  margin-left: 30px;
+  line-height: 50px;
+}
+/deep/.el-dialog {
+  .el-form-item {
+    margin-bottom: 0 !important;
+    .el-input--medium {
+      textarea {
+        min-height: 100px !important;
+      }
+    }
+  }
+}
+.collapse-bottom {
+  margin-bottom: 20px;
+}
+.input-main .textarea .el-textarea__inner {
+  width: 100%;
+  z-index: 1;
+}
+.bg-left {
+  padding-left: 30px;
+}
+.bg-right {
+  padding: 10px;
+  text-align: right;
+}
+.bg-bottom {
+  margin: 6px 0px;
+}
+.wenzi {
+  width: 70%;
+  margin: 0 auto;
+}
+.wenzi h3 {
+  display: inline-block;
+  left: 30px;
+}
+.wenzi p {
+  display: inline-block;
+}
+.center {
+  width: 70%;
+  margin: 0 auto;
+}
+.el-form-item {
+  width: 50%;
+}
+.el-form-item__label {
+  text-align: center;
+}
+/*.crt-main .textarea /deep/ .el-form-item__label {*/
+/*  height: 82px;*/
+/*}*/
+// 控制select为只读的时候显示样式
+
+.hide-sel {
+  .el-input__inner {
+    border: 0px;
+  }
+  .el-icon-arrow-up {
+    display: none;
+  }
+  .el-textarea__inner {
+    background-color: #fff !important;
+    border: 0;
+  }
+  .el-date-editor {
+    i {
+      display: none;
+    }
+  }
+  .is-disabled {
+    .el-input__inner:hover {
+      background-color: #fff !important;
+      border: 0;
+    }
+    color: #606266;
+    .el-input__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+    .el-textarea__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+  }
+}
+
+// 控制select为只读的时候显示样式
+/deep/.ws-class-table-col {
+  height: auto;
+  padding: 0px 2px;
+  /deep/.el-input__inner {
+    padding: 0px 2px;
+  }
+}
+/deep/.is-disabled {
+  .el-input__prefix,
+  .el-input__suffix {
+    display: none;
+  }
+  .el-input__inner {
+    background-color: #fff;
+    border-color: #fff !important;
+    color: #000 !important;
+    font-size: 14px;
+    cursor: text;
+    padding: 0 !important;
+  }
+}
+.winseaview-view {
+  padding: 0 0 20px;
+}
+.container {
+  overflow: scroll;
+  height: 93vh;
+}
+
+//*号
+.unchangeable {
+  position: absolute;
+  width: 9px;
+  height: 22px;
+  font-size: 16px;
+  font-family: PingFangSC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #ff2727;
+  line-height: 22px;
+  display: inline-block;
+  right: 14px;
+}
+/deep/.el-input,
+/deep/.el-date-editor {
+  font-size: 13px;
+}
+/deep/.el-textarea {
+  width: 101%;
+  margin: 0px;
+}
+/deep/el-date-editor--date {
+  width: 200px;
+}
+.unchanged {
+  position: absolute;
+  left: 37px;
+  width: 102px;
+  height: 14px;
+  font-size: 14px;
+  font-weight: 400;
+  color: #afb5cb;
+  line-height: 14px;
+}
+/deep/.el-input--small .el-input__inner {
+  height: 32px;
+  line-height: 32px;
+}
+
+</style>

+ 733 - 0
src/views/platformAudit/salesContractExamine.vue

@@ -0,0 +1,733 @@
+
+<!--销售合同-->
+<!--2019年5月30日 20:25:16 by jlx-->
+
+<template>
+  <div class="container">
+    <el-row>
+      <el-col :span="12">
+        <h2 class="bg-left title">查看合同详情</h2>
+      </el-col>
+      <el-col :span="12" class="bg-right">
+        <el-button
+          class="bg-bottom"
+          type="primary"
+          size="small"
+          @click="returnsales()"
+          ><img
+            width="6"
+            height="10"
+            style="vertion-align: bottom; margin-right: 3px"
+            src="../../../public/img/lujing.png"
+            alt=""
+          />返回</el-button
+        >
+      </el-col>
+    </el-row>
+    <div class="state">
+      <h2>销售合同</h2>
+      <p>【编号:{{ deptBudgetList.contractNo }}】</p>
+      <span class="icon">&nbsp;&nbsp;{{ deptBudgetList.status }}</span>
+    </div>
+    <div class="center">
+      <ws-form
+        ref="deptBudgetList"
+        :rules="mainReportAdd"
+        :model="deptBudgetList"
+      >
+        <div class="remark">
+          <h3>基本信息</h3>
+        </div>
+        <ws-info-table>
+          <ws-form-item label="合同编号" span="1" prop="contractNo">
+            <div class="unchanged">
+              {{ deptBudgetList.contractNo }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+          <ws-form-item label="运输方式" span="1" prop="shippingType">
+            <div class="unchanged">
+              {{ deptBudgetList.shippingType }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="买方" span="1" prop="buyer">
+            <div class="unchanged">
+              {{ deptBudgetList.buyer }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+          <ws-form-item label="结算方式" span="1" prop="settlementMethod">
+            <div class="unchanged">
+              {{ deptBudgetList.settlementMethod }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="卖方" span="1" prop="seller">
+            <div class="unchanged">
+              {{ deptBudgetList.seller }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+          <ws-form-item label="交货方式" span="1" prop="deliverType">
+            <div class="unchanged">
+              {{ deptBudgetList.deliverType1 }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="买方电话" span="1" prop="buyerPhone">
+            <div class="unchanged">
+              {{ deptBudgetList.buyerPhone }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="包装方式" span="1" prop="packingMethod">
+            <div class="unchanged">
+              {{ deptBudgetList.packingMethod }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="卖方电话" span="1" prop="sellerPhone">
+            <div class="unchanged">
+              {{ deptBudgetList.sellerPhone }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="验收方式" span="1" prop="acceptanceMethod">
+            <div class="unchanged">
+              {{ deptBudgetList.acceptanceMethod }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="重量(吨)" span="1" prop="weight">
+            <div class="unchanged">
+              {{ deptBudgetList.weight }}
+            </div>
+          </ws-form-item>
+         <ws-form-item
+            label="交货日期(起)"
+            span="1"
+            prop="deliveryDateStart"
+          >
+            <div class="unchanged">
+              {{ deptBudgetList.deliveryDateStart }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="溢短装(%)" span="1" prop="overShort">
+            <div class="unchanged">
+              {{ deptBudgetList.overShort }}
+            </div>
+          </ws-form-item>
+         <ws-form-item label="交货日期(止)" span="1" prop="deliveryDateEnd">
+            <div class="unchanged">
+              {{ deptBudgetList.deliveryDateEnd }}
+            </div>
+          </ws-form-item>
+          <ws-form-item
+            label="合同单价(元/吨)"
+            span="1"
+            prop="unitContractPrice"
+          >
+            <div class="unchanged">
+              {{ deptBudgetList.unitContractPrice }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+          
+          <ws-form-item
+            label="合同总价(元)"
+            span="1"
+            prop="totalContractPrice"
+          >
+            <div class="unchanged">
+              {{ deptBudgetList.totalContractPrice }}
+            </div>
+          </ws-form-item>
+          
+          <ws-form-item label="货源所在地区" span="1" >
+            <div class="unchanged">
+                {{deptBudgetList. sourceProvince}}
+                {{deptBudgetList. sourceCity}}
+                {{deptBudgetList. sourceArea}}
+
+            </div>
+          </ws-form-item>
+          
+          <ws-form-item label="货源详细地址" span ="1" prop = "sourceGoods">
+            <div class = "unchanged">
+                {{deptBudgetList.sourceGoods}}
+            </div>
+          </ws-form-item>
+          
+          <ws-form-item label="交货地所在地区" span="1" >
+              <div class="unchanged">
+                  {{deptBudgetList. deliveryProvince}}
+                  {{deptBudgetList.deliveryCity}}
+                  {{deptBudgetList.deliveryArea}}
+              </div>
+          </ws-form-item>
+          
+          <ws-form-item label="交货地详细地址" span="1" prop="placeDelivery">
+            <div class = "unchanged">
+                {{deptBudgetList.placeDelivery}}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="签订日期" span="1" prop="signingDate">
+            <div class="unchanged">
+              {{ deptBudgetList.signingDate }}
+            </div>
+          </ws-form-item>
+          
+          <ws-form-item label="最终实际交易量 (吨)" span="1" prop="finalTradingVolume">
+            <div class="unchanged">
+              {{deptBudgetList.finalTradingVolume}}
+            </div>
+          </ws-form-item>
+        </ws-info-table>
+
+        <!-- </base-card> -->
+
+        <!--面试信息-->
+        <div class="remark">
+          <h3>货物信息</h3>
+        </div>
+        <ws-info-table>
+          <ws-form-item label="货名" span="1" prop="waterContent">
+            <div class="unchanged">
+              {{ deptBudgetList.contractGoodsInfo.goodsName }}
+            </div>
+            <span class="unchangeable">*</span>
+          </ws-form-item>
+          <ws-form-item label="水分(%)<=" span="1" prop="intendedShipId">
+            <div class="unchanged">
+              {{ deptBudgetList.contractGoodsInfo.waterContent }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="品级" span="1" prop="grade">
+            <div class="unchanged">
+              {{ deptBudgetList.contractGoodsInfo.grade }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="杂质(%)<=" span="1" prop="impurity">
+            <div class="unchanged">
+              {{ deptBudgetList.contractGoodsInfo.impurity }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="容重(克/升)<=" span="1" prop="bulkDensity">
+            <div class="unchanged">
+              {{ deptBudgetList.contractGoodsInfo.bulkDensity }}
+            </div>
+          </ws-form-item>
+          <ws-form-item
+            label="霉变粒(%)<="
+            span="1"
+            prop="mildewGrain"
+            class="result"
+          >
+            <div class="unchanged">
+              {{ deptBudgetList.contractGoodsInfo.mildewGrain }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="热损伤(%)<=" span="1" prop="jiaorenli">
+            <div class="unchanged">
+              {{ deptBudgetList.contractGoodsInfo.jiaorenli }}
+            </div>
+          </ws-form-item>
+          <ws-form-item
+            label="不完善粒(%)<="
+            span="1"
+            prop="imperfectGrain"
+            class="result"
+          >
+            <div class="unchanged">
+              {{ deptBudgetList.contractGoodsInfo.imperfectGrain }}
+            </div>
+          </ws-form-item>
+        </ws-info-table>
+        <div class="remark">
+          <h3>流程信息</h3>
+        </div>
+        <ws-info-table>
+          <ws-form-item label="合同收入(元)" span="1" prop="goodsNameKey">
+            <div class="unchanged">
+              {{ deptBudgetList.contractProcessInfo.goodsNameKey }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="已开发票(元)" span="1" prop="goodsName">
+            <div class="unchanged">
+              {{ deptBudgetList.contractProcessInfo.goodsName }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="费用支出(元)" span="1" prop="waterContent">
+            <div class="unchanged">
+              {{ deptBudgetList.contractProcessInfo.waterContent }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="未开发票(元)" span="1" prop="impurity">
+            <div class="unchanged">
+              {{ deptBudgetList.contractProcessInfo.impurity }}
+            </div>
+          </ws-form-item>
+          <ws-form-item label="未回款(元)" span="1" prop="mildewGrain">
+            <div class="unchanged">
+              {{ deptBudgetList.contractProcessInfo.mildewGrain }}
+            </div>
+          </ws-form-item>
+          <ws-form-item
+            label="已完成发运量(吨)"
+            span="1"
+            prop="imperfectGrain"
+            class="result"
+          >
+            <div class="unchanged">
+              {{ deptBudgetList.contractProcessInfo.imperfectGrain }}
+            </div>
+          </ws-form-item>
+          <!-- <ws-form-item label="双章原件回收情况" span="1" prop="grade">
+          <div class="unchanged">
+            {{ deptBudgetList.contractProcessInfo.grade }}
+          </div>
+
+          >{{ deptBudgetList.contractProcessInfo.imperfectGrain }}
+        </ws-form-item> -->
+          <ws-form-item label="双章原件回收情况" span="1" prop="grade">
+            <div class="unchanged">
+              {{ deptBudgetList.contractProcessInfo.grade }}
+            </div>
+          </ws-form-item>
+        </ws-info-table>
+        <div class="remark">
+          <h3>备注信息</h3>
+          <div class=" beizhu">
+          {{ deptBudgetList.remarks }}
+        </div>
+
+        </div>
+
+        
+        <img :src="deptBudgetList.addressUrl" alt="" />
+
+        <!-- </base-card> -->
+      </ws-form>
+      <div style="text-align: right; padding: 10px">
+        <el-button
+          class="bg-bottom"
+          type="primary"
+          size="small"
+          @click="returnsales()"
+          >关闭</el-button
+        >
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import {
+  packList,
+  xiala,
+  examineList,
+} from '@/model/contarct/index'
+import { dayjs } from 'base-core-lib'
+import WsUpload from '@/components/WsUpload'
+export default {
+  name: 'viewSpareMoney',
+  components: {
+    WsUpload,
+  },
+  watch: {
+    vesselId(val) {
+      this.getVesselData()
+    },
+    isShow(val) {
+      this.showType = val
+    },
+  },
+  data() {
+    return {
+      //弹出框
+      dialogViewSpareMoney: false,
+      dialogApproveFormVisible: false,
+      // 船舶类型
+      monetaryKey: null,
+      // 表格显示数据
+      tableDate: [],
+      // 是否显示
+      showType: true,
+      // 年
+      year: '',
+      // 提交类型
+      submitType: true,
+      tableData: [],
+      ruleDeptBudget: [],
+      deptBudgetList: {
+        contractProcessInfo: {},
+        contractGoodsInfo: {},
+      },
+      mainReportAdd: {},
+      list: {},
+      
+    }
+  },
+
+  activated() {
+    this.status = this.$route.query.status
+    this.loaddata()
+    this.showType = this.isShow
+    // this.examineList()
+  },
+  methods: {
+    loaddata() {
+      // 数据
+      examineList({ id: this.$route.query.id })
+        .toPromise()
+        .then((response) => {
+          this.deptBudgetList = response
+          if(this.deptBudgetList.deliverType == 1){
+            this.deptBudgetList.deliverType1 = "我方自提"
+          }else if(this.deptBudgetList.deliverType == 2){
+            this.deptBudgetList.deliverType1 = "对方送货" 
+          }
+        })
+      // 包装方式
+      packList({ constId: 'CON1' })
+        .toPromise()
+        .then((response) => {
+          this.packtypeList = response
+        })
+      // 验收方式
+      this.getUnitList()
+      // 货名
+      packList({ constId: 'CON2' })
+        .toPromise()
+        .then((response) => {
+          this.goodnameList = response
+        })
+      // 品级
+      packList({ constId: 'CON3' })
+        .toPromise()
+        .then((response) => {
+          this.gradeList = response
+        })
+      // 双章
+      packList({ constId: 'CON4' })
+        .toPromise()
+        .then((response) => {
+          this.ChapterTwoList = response
+        })
+    },
+    getUnitList() {
+      xiala({
+        compId: sessionStorage.getItem('ws-pf_compId'),
+        constCode: 'TYPEYAN',
+      })
+        .toPromise()
+        .then((response) => {
+          this.unitList = response
+          let currItem
+          this.unitList.forEach((item, index, arr) => {
+            item.flag = 'delete'
+            if (this.vModel == item.constKey) {
+              currItem = item
+            }
+          })
+          //
+          if (currItem) {
+            this.selectContract(currItem.constValue)
+          }
+        })
+    },
+    // 关闭 dialog时 处理文件url 初始化upload组件
+    handleClose() {
+      this.dialogViewSpareMoney = false
+    },
+    handleExamine() {},
+    approve() {},
+    returnsales() {
+      this.$router.push({ path: 'salesContract' })
+    },
+  },
+}
+</script>
+<style lang="scss" scoped>
+/deep/.ws-info-table .el-form-item .el-form-item__content {
+  padding: 0 25px;
+}
+/deep/.ws-info-table .el-form-item {
+  border-right: 1px solid #cdd2dc;
+  border-bottom: 1px solid #cdd2dc;
+}
+.title {
+  position: relative;
+}
+.title::before {
+  content: '';
+  display: inline-block;
+  width: 5px;
+  height: 30px;
+  background: #5473e8;
+  position: absolute;
+  left: 0;
+}
+.el-button--primary {
+  background-color: #5878e8;
+  border-color: #5878e8;
+}
+.el-col {
+  background: #f6f7fc;
+}
+.readonly {
+  position: relative;
+}
+.readonly:after {
+  content: '*';
+  color: #ff2727;
+  position: absolute;
+  right: 8px;
+  z-index: 10;
+  top: 21%;
+  font-size: 20px;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__content {
+  padding: 0 25px;
+  border-left: 1px solid #cdd2dc;
+  background: #fafbfc;
+}
+/deep/.ws-info-table .el-form-item .el-form-item__label {
+  width: 140px;
+  text-align: center;
+  background: #f0f2f6;
+  // border: 1px solid #cdd2dc;
+}
+.button-container {
+  display: flex;
+  flex-wrap: nowrap;
+  justify-content: space-between;
+  align-items: center;
+  background-color: #fff;
+  width: 100%;
+  height: 50px;
+  padding: 0 10px;
+  & > div {
+    margin-left: 10px;
+    display: flex;
+    flex-wrap: nowrap;
+    flex-direction: row;
+    & > span {
+      line-height: 50px;
+    }
+  }
+
+  /deep/.auditFlow-box {
+    position: unset;
+    margin-left: 10px;
+    &/deep/.auditFlow-icon {
+      width: auto;
+      padding-right: 30px;
+    }
+    &/deep/.auditFlow-main {
+      position: absolute;
+    }
+  }
+}
+.box-app {
+  display: inline-block;
+
+  margin-left: 30px;
+  line-height: 50px;
+}
+/deep/.el-dialog {
+  .el-form-item {
+    margin-bottom: 0 !important;
+    .el-input--medium {
+      textarea {
+        min-height: 100px !important;
+      }
+    }
+  }
+}
+.collapse-bottom {
+  margin-bottom: 20px;
+}
+.input-main .textarea .el-textarea__inner {
+  width: 100%;
+  z-index: 1;
+}
+.bg-left {
+  padding-left: 30px;
+}
+.bg-right {
+  padding: 10px;
+  text-align: right;
+}
+.bg-bottom {
+  margin: 6px 0px;
+}
+.wenzi {
+  width: 900px;
+  margin: 0 auto;
+}
+.wenzi h3 {
+  display: inline-block;
+  left: 30px;
+}
+.wenzi p {
+  display: inline-block;
+}
+.center {
+  width: 900px;
+  margin: 0 auto;
+}
+.el-form-item {
+  width: 50%;
+}
+.el-form-item__label {
+  text-align: center;
+}
+/*.crt-main .textarea /deep/ .el-form-item__label {*/
+/*  height: 82px;*/
+/*}*/
+// 控制select为只读的时候显示样式
+
+.hide-sel {
+  .el-input__inner {
+    border: 0px;
+  }
+  .el-icon-arrow-up {
+    display: none;
+  }
+  .el-textarea__inner {
+    background-color: #fff !important;
+    border: 0;
+  }
+  .el-date-editor {
+    i {
+      display: none;
+    }
+  }
+  .is-disabled {
+    .el-input__inner:hover {
+      background-color: #fff !important;
+      border: 0;
+    }
+    color: #606266;
+    .el-input__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+    .el-textarea__inner {
+      background-color: #fff !important;
+      border: 0;
+      color: #606266;
+    }
+  }
+}
+
+// 控制select为只读的时候显示样式
+/deep/.ws-class-table-col {
+  height: auto;
+  padding: 0px 2px;
+  /deep/.el-input__inner {
+    padding: 0px 2px;
+  }
+}
+/deep/.is-disabled {
+  .el-input__prefix,
+  .el-input__suffix {
+    display: none;
+  }
+  .el-input__inner {
+    background-color: #fff;
+    border-color: #fff !important;
+    color: #000 !important;
+    font-size: 14px;
+    cursor: text;
+    padding: 0 !important;
+  }
+}
+.winseaview-view {
+  padding: 10px 0 20px;
+}
+.container {
+  overflow: scroll;
+  height: 93vh;
+}
+.state {
+  width: 900px;
+  margin: 0 auto;
+}
+.state h2,
+.state p {
+  display: inline-block;
+}
+.state p {
+  display: inline-block;
+  margin-left: 10px;
+  width: 170px;
+  height: 20px;
+  font-size: 14px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #000000;
+  line-height: 20px;
+}
+.icon {
+  display: inline-block;
+  width: 60px;
+  height: 24px;
+  background: #ecfeff;
+  border-radius: 12px;
+  border: 1px solid #50cad4;
+  position: relative;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-size: 14px;
+  color: #50cad4;
+  line-height: 24px;
+}
+
+//*号
+.unchangeable {
+  position: absolute;
+  width: 9px;
+  height: 22px;
+  font-size: 16px;
+  font-family: PingFangSC-Medium, PingFang SC;
+  font-weight: 500;
+  color: #ff2727;
+  line-height: 22px;
+  display: inline-block;
+  right: 14px;
+}
+/deep/.el-input,
+/deep/.el-date-editor {
+  font-size: 13px;
+  width: 232px;
+  left: 21px;
+}
+/deep/.el-textarea {
+  width: 900px;
+  margin: 0px;
+}
+/deep/el-date-editor--date {
+  width: 200px;
+}
+/deep/.beizhu {
+  margin: 0 auto;
+  font-size: 14px;
+  color: #afb5cb;
+  margin-left: 20px;
+}
+.unchanged {
+  position: absolute;
+  left: 37px;
+  width: 900px;
+  height: 14px;
+  font-size: 14px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  font-weight: 400;
+  color: #afb5cb;
+  line-height: 14px;
+}
+/deep/.ws-info-table[data-v-850a44a6] .el-form-item .el-form-item__label {
+  width: 130px;
+}
+/deep/.el-input--small .el-input__inner {
+  height: 32px;
+  line-height: 32px;
+  width: 232px;
+}
+</style>