Переглянути джерело

增加了审核界面和通过与驳回

mushencc 3 роки тому
батько
коміт
4ba110b513

+ 30 - 3
src/routerMap/index.js

@@ -1104,13 +1104,40 @@ const routerMap = [{
         component: (resolve) => require(['@/views/BidSystem/Approval'], resolve),
     },
     {
-        path: '/cms/BidSystem/ContractList/approvalDetail',
-        name: 'approvalDetail', // 审批→工装审批
+        path: '/cms/BidSystem/ContractList/requisitionDetail',
+        name: 'requisitionDetail', // 审批→请购详情
         meta: {
             index: 3
         },
         component: (resolve) =>
-            require(['@/views/BidSystem/ContractList/approvalDetail'], resolve),
+            require(['@/views/BidSystem/ContractList/requisitionDetail'], resolve),
+    },
+    {
+        path: '/cms/BidSystem/ContractList/purchaseDetail',
+        name: 'purchaseDetail', // 审批→采购详情
+        meta: {
+            index: 3
+        },
+        component: (resolve) =>
+            require(['@/views/BidSystem/ContractList/purchaseDetail'], resolve),
+    },
+    {
+        path: '/cms/BidSystem/ContractList/arrivalDetail',
+        name: 'arrivalDetail', // 审批→到货详情
+        meta: {
+            index: 3
+        },
+        component: (resolve) =>
+            require(['@/views/BidSystem/ContractList/arrivalDetail'], resolve),
+    },
+    {
+        path: '/cms/BidSystem/ContractList/qualitytestingDetail',
+        name: 'qualitytestingDetail', // 审批→质检详情
+        meta: {
+            index: 3
+        },
+        component: (resolve) =>
+            require(['@/views/BidSystem/ContractList/qualitytestingDetail'], resolve),
     },
     {
         path: '/cms/BidSystem/DeepeningOrder/approvalDetail',

+ 38 - 16
src/views/Approval/list.vue

@@ -27,13 +27,13 @@
         <div>
           <a v-if='persimissionData["订单详情"]||persimissionData.all'
              @click="goPage(row)"
-             style="margin:0 5px">订单详情</a>
-          <a v-if='persimissionData["审批详情"]||persimissionData.all'
+             style="margin:0 5px">详情</a>
+          <!-- <a v-if='persimissionData["审批详情"]||persimissionData.all'
              @click="goDetails(row)"
-             style="margin:0 5px">审批详情</a>
-          <a @click="singleApproved(0,row)"
+             style="margin:0 5px">审批详情</a> -->
+          <a @click="singleApproved(2,row)"
              style="margin:0 5px;color:red"
-             v-if="row.state == 1">驳回</a>
+             v-if="row.state == 0">驳回</a>
           <a @click="singleApproved(1,row)"
              style="margin:0 5px;color:green"
              v-if="row.state == 0 ">通过</a>
@@ -86,7 +86,7 @@ export default {
         {
           title: '审批类型', align: 'center', minWidth: 100,
           render (h, params) {
-            return h('span', {}, params.row.type == 1 ? '测量' : '生产')
+            return h('span', {}, params.row.type == 1 ? '请购' : params.row.type == 2 ? '采购': params.row.type == 3 ? '到货': '质检')
           }
         },
         { title: '提交人', align: 'center', key: 'nickname', minWidth: 100 },
@@ -128,7 +128,7 @@ export default {
     }
   },
   created () {
-    this.currency_type = this.$route.query.id
+    this.currency_type = this.$route.query.id;
   },
   computed: {
     ...mapState(['persimissionData'])
@@ -155,6 +155,7 @@ export default {
         this.loading = false;
         this.tableData = res.data.data;
         this.total = res.data.total;
+        console.log(res);
       })
     },
     changePage (e) {
@@ -163,22 +164,41 @@ export default {
       this.getData(this.proxyObj);
     },
     goPage (row) {
-      row.order_type == 1 ? this.$router.push({
+      row.type == 1 ? this.$router.push({
         // /cms/ordermannage/businessorderlist/details
         // path:'/cms/ordermannage/businessorderlist/decorationlist',
-        path: '/cms/ordermannage/businessorderlist/details',
+        path: '/cms/BidSystem/ContractList/requistionDetail',
         query: {
           oa_order_no: row.oa_order_no,
           order_no: row.order_no,
-          type: 'oa',
-          currency_type: this.currency_type,
+          type: row.type,
+          state: row.state,
         }
-      }) : this.$router.push({
-        path: '/cms/approval/details',
+      }) :row.type == 2 ? this.$router.push({
+        path: '/cms/BidSystem/ContractList/purchaseDetail',
         query: {
-          id: row.id
+          oa_order_no: row.oa_order_no,
+          order_no: row.order_no,
+          type: row.type,
+          state: row.state,
         }
-      })
+      }) : row.type == 3 ? this.$router.push({
+        path: '/cms/BidSystem/ContractList/arrivalDetail',
+        query: {
+           oa_order_no: row.oa_order_no,
+          order_no: row.order_no,
+          type: row.type,
+          state: row.state,
+        }
+         }) :  this.$router.push({
+        path: '/cms/BidSystem/ContractList/qualitytestingDetail',
+        query: {
+          oa_order_no: row.oa_order_no,
+          order_no: row.order_no,
+          type: row.type,
+          state: row.state,
+        }
+        })
     },
     goDetails (row) {
       this.$router.push({
@@ -202,12 +222,14 @@ export default {
         title: n == 1 ? '审批通过' : '驳回审批',
         type: n == 1 ? 'primary' : 'error',
         then: () => {
+          
           this.select_post(n, this.selectIds)
         },
         cancel: () => { }
       })
     },
     singleApproved (n, row) {
+      console.log(row)
       this.selectIds = [row.oa_order_no]
       this.approved(n)
     },
@@ -218,7 +240,7 @@ export default {
     select_post (state, arr) {//state(1:通过|2:驳回)
       let params = { oa_order_no: arr.join(','), state: state }
       state == 2 ? params.remark = this.remark : '';
-      this.axios.post('/api/order_oa_approve', params).then(res => {
+      this.axios.post('/api/order_oa_check', params).then(res => {
         if (res.code == 200) {
           this.$Message.success(res.msg || '无提示')
           this.getData(this.proxyObj)

+ 0 - 315
src/views/BidSystem/ContractList/approvalDetail.vue

@@ -1,315 +0,0 @@
-<template>
-  <div>
-    <Toptitle title="工装单审批详情">
-      <slot name="titleButton">
-        <Button @click="approval(1)"
-                type="success"
-                style="margin-right:10px;">通过</Button>
-        <Button @click="approval(2)"
-                type="error"
-                style="margin-right:10px;">驳回</Button>
-        <Button @click="goback()"
-                type="primary"
-                style="margin-right:10px;">返回</Button>
-      </slot>
-    </Toptitle>
-    <div class="body">
-      <div class="header">
-        <Steps :current="1">
-          <Step title="开始审批"></Step>
-          <Step title="1级审批"></Step>
-          <Step title="2级审批"></Step>
-          <Step title="审批完成"></Step>
-        </Steps>
-      </div>
-      <div class="info_wrapper">
-        <div class="info">
-          <div class="info_item"><span>订单号:</span><span>{{orderInfo.order_no}}</span></div>
-          <div class="info_item"><span>小区名称:</span><span>{{orderInfo.residential_name}}</span></div>
-          <div class="info_item"><span>客户姓名:</span><span>{{orderInfo.client_name}}</span></div>
-          <div class="info_item"><span>紧急程度:</span><span v-for="_item in warningList"
-                  :key="_item.id"
-                  v-show="_item.id==orderInfo.warning_state">{{_item.title}}</span></div>
-          <div class="info_item"><span>收款:</span><span>{{orderInfo.state}}</span></div>
-          <div class="info_item"><span>详细地址:</span><span>{{orderInfo.address}}</span></div>
-          <div class="info_item"><span>手机号:</span><span>{{orderInfo.mobile}}</span></div>
-          <div class="info_item"><span>开始日期:</span><span>{{func.replaceDate(orderInfo.start_time)}}</span></div>
-          <div class="info_item"><span>交付日期:</span><span>{{func.replaceDate(orderInfo.end_time)}}</span></div>
-          <div class="info_item"><span>业务员:</span><span>{{orderInfo.nickname}}</span></div>
-          <div class="info_item"><span>备注:</span><span>{{orderInfo.remark}}</span></div>
-        </div>
-        <div class="info_fixed">
-          <Steps :current="99"
-                 size="small"
-                 direction="vertical">
-            <Step v-for="item in oaInfo"
-                  :key="item.level">
-              <div slot="title">
-                {{func.replaceDate(item.upd_time)}}
-                审批人:{{item.nickname}}
-              </div>
-            </Step>
-          </Steps>
-        </div>
-      </div>
-      <div class="content">
-        <div class="content_header">
-          <Button @click="handleShowMore()"
-                  type="primary"
-                  :loading="btnLoading"
-                  style="margin-right:10px;">{{isOpen?'收起':'展开更多'}}</Button>
-        </div>
-        <div class="addArea"
-             v-for="(areaItem,areaIndex) in areaList"
-             :key="areaItem.areaIndex">
-          <div class="addAreaForm">
-            <Form :label-width="100"
-                  :model="areaItem"
-                  style="width:60%">
-              <FormItem label="区域编码:">
-                {{areaItem.num}}
-              </FormItem>
-              <FormItem label="区域名称:">
-                {{areaItem.title}}
-              </FormItem>
-              <FormItem label="单位:">
-                {{areaItem.unit}}
-              </FormItem>
-              <FormItem label="工程量:">
-                {{areaItem.quantity}}
-              </FormItem>
-              <FormItem label="户型:">
-                {{areaItem.house_type}}
-              </FormItem>
-              <!-- <FormItem v-for="item in areaItem.special"
-                        :key="item.id"
-                        :label="item.key+':'">
-                <Input type="text"
-                       size="small"
-                       v-model="item.value"
-                       placeholder="请输入"
-                       style="width: 120px" />
-              </FormItem> -->
-              <FormItem label="备注:">
-                {{areaItem.remark}}
-              </FormItem>
-            </Form>
-          </div>
-          <div class="addAreaTable">
-            <Table :columns="tableColumns"
-                   :data="areaItem.product"
-                   max-height="600"
-                   border>
-              <template slot="Set"
-                        slot-scope="{row,index}">
-                <a style="margin:0 5px"
-                   v-show="$route.query.type!=3"
-                   @click="handleSet(row,index,3,areaItem.product,areaIndex)">详情</a>
-              </template>
-            </Table>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script>
-// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
-// 例如:import 《组件名称》 from '《组件路径》';
-
-export default {
-  name: '',
-  components: {
-
-  },
-  props: {},
-  // import引入的组件需要注入到对象中才能使用
-  data () {
-    // 这里存放数据
-    return {
-      setpContent: [],
-      orderInfo: {},
-      oaInfo: [],
-      areaList: [],
-      type: null,
-      tableColumns: [
-        { title: '序号', type: 'index', key: '', align: 'center', minWidth: 80 },
-        { title: '产品名称', key: 'title', align: 'center', tooltip: true, minWidth: 100 },
-        { title: '数量', key: 'num', align: 'center', minWidth: 80 },
-        { title: '价格', key: 'price', align: 'center', minWidth: 80 },
-        { title: '规格', key: 'measure', align: 'center', tooltip: true, minWidth: 140 },
-        { title: '工艺属性', key: 'process_property', align: 'center', tooltip: true, minWidth: 120 },
-        {
-          title: '图纸', align: 'center', key: 'url', minWidth: 100,
-          render: (h, params) => {
-            const { row } = params
-            let url = row.url ? row.url : []
-            return h('img', {
-              attrs: {
-                src: this.$store.state.ip + url[0],
-                style: 'max-width:50px;max-height:50px;position:relative;top:3px;'
-              },
-              on: {
-                click: (e) => {
-                  // this.axios('/api/orders_img', { params: { id: row.id, type: 1 } }).then(res => {
-                  // row.imgs = res.data
-                  let list = []
-                  url.length > 0 && url.forEach(el => {
-                    list.push({ img_url: el })
-                  });
-                  this.$previewImg({
-                    list,
-                    baseUrl: this.$store.state.ip,
-                    baseImgField: 'img_url',
-                    baseTitleField: ''
-                  })
-                  // })
-                }
-              }
-            })
-          }
-        },
-        { title: '左右式', key: '', align: 'center', tooltip: true, minWidth: 80 },
-        { title: '图号', key: 'url_number', align: 'center', tooltip: true, minWidth: 80 },
-        { title: '备注', key: 'remark', align: 'center', minWidth: 80 },
-        // { title: '操作', key: 'remark', align: 'center', slot: 'Set', minWidth: 120 },
-      ],
-      isOpen: false,
-      btnLoading: false,
-      fullAreaList: [],
-      singleAreaList: [],
-      warningList: [],
-    }
-  },
-  // 生命周期 - 创建完成(可以访问当前this实例)
-  created () {
-    let id = this.$route.query.currency_type
-    this.type = id == 78 ? 3 : id == 74 ? 1 : id == 82 ? 2 : ''
-    // 获取紧急程度
-    this.axios.get('/api/warning_list').then(res => { this.warningList = res.data.data })
-  },
-  // 生命周期 - 挂载完成(可以访问DOM元素)
-  mounted () {
-    this.axios({
-      method: 'get',
-      url: '/api/order_price_oa_deep_detail',
-      params: {
-        oa_order_no: this.$route.query.oa_order_no
-      }
-    }).then((res) => {
-      this.orderInfo = res.data.detail
-      this.oaInfo = res.data.oa
-      this.areaList = [res.data.area]
-      this.singleAreaList = JSON.parse(JSON.stringify([res.data.area]))
-    }).catch((err) => { });
-  },
-  methods: {
-    handleSet () { },
-    approval (status) {
-      let params = {
-        status,
-        type: this.type,
-        oa_order_no: this.$route.query.oa_order_no
-      }
-      this.axios.post('/api/order_price_oa_pull', params).then(res => {
-        if (res.code == 200) {
-          this.$Message.success(res.msg || '无提示')
-          // this.goback()
-        }
-      })
-    },
-    goback () { this.$router.go(-1) },
-    handleShowMore () {
-      if (this.fullAreaList.length > 0) {
-        this.areaList = this.isOpen ? JSON.parse(JSON.stringify(this.singleAreaList)) : JSON.parse(JSON.stringify(this.fullAreaList))
-        this.isOpen = !this.isOpen
-      } else {
-        this.btnLoading = true
-        this.axios({
-          method: 'get',
-          url: '/api/order_price_oa_deep_area_detail',
-          params: {
-            oa_order_no: this.$route.query.oa_order_no
-          }
-        }).then((res) => {
-          this.isOpen = !this.isOpen
-          this.fullAreaList = JSON.parse(JSON.stringify(res.data))
-          this.areaList = res.data
-          this.btnLoading = false
-        }).catch((err) => { });
-      }
-    },
-
-  },
-  // 监听属性 类似于data概念
-  computed: {},
-  // 监控data中的数据变化
-  watch: {},
-  beforeCreate () { }, // 生命周期 - 创建之前
-  beforeMount () { }, // 生命周期 - 挂载之前
-  beforeUpdate () { }, // 生命周期 - 更新之前
-  updated () { }, // 生命周期 - 更新之后
-  beforeDestroy () { }, // 生命周期 - 销毁之前
-  destroyed () { }, // 生命周期 - 销毁完成
-  activated () { }, // 如果页面有keep-alive缓存功能,这个函数会触发
-}
-</script>
-
-<style lang='scss' scoped>
-.body {
-  margin-top: 10px;
-  .header {
-    margin: 20px 10px;
-  }
-  .info_wrapper {
-    display: flex;
-    justify-content: space-around;
-    .info {
-      display: flex;
-      justify-content: flex-start;
-      flex-wrap: wrap;
-      .info_item {
-        width: 180px;
-        padding: 0 10px 10px 10px;
-      }
-    }
-    .info_fixed {
-      width: 100%;
-      max-height: 150px;
-      padding-top: 20px;
-      padding-left: 5px;
-      border: 1px solid #ffffbb;
-      overflow: hidden;
-      overflow-y: auto;
-      background-color: #ffffbb;
-      text-align: center;
-      /deep/.ivu-steps-head-inner {
-        margin: 0;
-      }
-      /deep/.ivu-steps-title,
-      /deep/.ivu-steps-head {
-        background: transparent;
-      }
-    }
-  }
-  .content {
-    .content_header {
-      margin: 20px 0;
-      display: flex;
-      justify-content: flex-end;
-    }
-    .addArea {
-      position: relative;
-      padding: 15px;
-      margin-bottom: 30px;
-      border-radius: 5px;
-      box-shadow: 1px 1px 5px 1px #999;
-      /deep/ .ivu-form-item {
-        display: inline-block;
-        width: 220px;
-      }
-    }
-  }
-}
-</style>

+ 287 - 0
src/views/BidSystem/ContractList/arrivalDetail.vue

@@ -0,0 +1,287 @@
+<template>
+  <div>
+    <Toptitle title="工装单审批详情">
+      <slot name="titleButton">
+        <Button @click="approval(1)"
+                type="success"
+                style="margin-right:10px;">通过</Button>
+        <Button @click="approval(2)"
+                type="error"
+                style="margin-right:10px;">驳回</Button>
+        <Button @click="goback()"
+                type="primary"
+                style="margin-right:10px;">返回</Button>
+      </slot>
+    </Toptitle>
+    <div class="body">
+      <div class="header">
+        <Steps :current="2">
+          <Step title="开始审批"></Step>
+          <Step title="1级审批"></Step>
+          <Step title="2级审批"></Step>
+          <Step title="审批完成"></Step>
+        </Steps>
+      </div>
+      <div class="info_wrapper">
+        <div class="info">
+           <div class="info_item"><span>制单人:</span><span>{{orderInfo.nickname}}</span></div> 
+           <div class="info_item"><span>单据号:</span><span>{{orderInfo.order_no}}</span></div>
+          <div class="info_item"><span>项目名称:</span><span>{{orderInfo.client_name}}</span></div>
+          <div class="info_item"><span>制单日期:</span><span>{{func.replaceDate(orderInfo.crt_time)}}</span></div>
+          <div class="info_item"><span>供应商名称:</span><span>{{orderInfo.supply_title}}</span></div>
+         <div class="info_item"><span>预计到货日期:</span><span>{{func.replaceDate(orderInfo.arrive_time)}}</span></div>
+          <div class="info_item"><span>备注:</span><span>采购需要快点,生产部等着要</span></div>
+        </div>
+        <div class="info_fixed">
+          <Steps :current="99"
+                 size="small"
+                 direction="vertical">
+            <Step v-for="item in oaInfo"
+                  :key="item.level">
+              <div slot="title">
+                {{func.replaceDate(item.upd_time)}}
+                审批人:{{item.nickname}}
+              </div>
+            </Step>
+          </Steps>
+        </div>
+      </div>
+      <div class="tableContent">
+        <div class="table_title">请购清单</div>
+        <Table :columns=" arrivalColums" :data="arrivalData">
+           <template slot="materiel_specs" slot-scope="{ row }">
+            <div>
+              {{ row.long ? row.long : 0 }}*{{ row.width ? row.width : 0 }}*{{
+                row.high ? row.high : 0
+              }}
+        </div>
+           </template>
+            <template slot="untaxed_price" slot-scope="{ row }">
+            <div>
+              {{row.price-row.price*row.fax}}
+        </div>
+           </template>
+             <template slot="untaxed_price_total" slot-scope="{ row }">
+            <div>
+              {{(row.price-row.price*row.fax)*row.num}}
+        </div>
+           </template>
+            <template slot="tax_amount" slot-scope="{ row }">
+            <div>
+              {{row.price*row.fax}}
+        </div>
+           </template>
+            <template slot="price_total" slot-scope="{ row }">
+            <div>
+              {{row.price*row.num}}
+        </div>
+           </template>
+        </Table>
+      </div>
+        </div>
+      </div>
+</template>
+
+<script>
+// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+// 例如:import 《组件名称》 from '《组件路径》';
+
+export default {
+  name: '',
+  components: {
+
+  },
+  props: {},
+  // import引入的组件需要注入到对象中才能使用
+  data () {
+    // 这里存放数据
+    return {
+      setpContent: [],
+      orderInfo: {},
+      oaInfo: [],
+      type: null,
+     
+      arrivalColums:[
+        { title: '物料分类', key: 'type_title', align: 'center', minWidth: 80 },
+        { title: '物料名称', key: 'title', align: 'center', minWidth: 80 },
+        { title: '物料规格', key: '', align: 'center', minWidth: 80 , slot: "materiel_specs"},
+        { title: '计量单位', key: 'unit', align: 'center', minWidth: 80 },
+        { title: '到货数量', key: 'num', align: 'center', minWidth: 80 },
+        { title: '无税单价', key: '', align: 'center', minWidth: 80 ,slot:'untaxed_price'},
+        { title: '税率', key: 'fax', align: 'center', minWidth: 80 },
+        { title: '含税单价', key: 'price', align: 'center', minWidth: 80 },
+        { title: '无税金额', key: '', align: 'center', minWidth: 80 ,slot:'untaxed_price_total'},
+        { title: '税额', key: '', align: 'center', minWidth: 80 ,slot:'tax_amount'},
+        { title: '价格合计', key: '', align: 'center', minWidth: 80 ,slot:'price_total'},
+      ],
+      arrivalData:[],
+      // tableColumns: [
+      //   { title: '序号', type: 'index', key: '', align: 'center', minWidth: 80 },
+      //   { title: '产品名称', key: 'title', align: 'center', tooltip: true, minWidth: 100 },
+      //   { title: '数量', key: 'num', align: 'center', minWidth: 80 },
+      //   { title: '价格', key: 'price', align: 'center', minWidth: 80 },
+      //   { title: '规格', key: 'measure', align: 'center', tooltip: true, minWidth: 140 },
+      //   { title: '工艺属性', key: 'process_property', align: 'center', tooltip: true, minWidth: 120 },
+      //   {
+      //     title: '图纸', align: 'center', key: 'url', minWidth: 100,
+      //     render: (h, params) => {
+      //       const { row } = params
+      //       let url = row.url ? row.url : []
+      //       return h('img', {
+      //         attrs: {
+      //           src: this.$store.state.ip + url[0],
+      //           style: 'max-width:50px;max-height:50px;position:relative;top:3px;'
+      //         },
+      //         on: {
+      //           click: (e) => {
+      //             // this.axios('/api/orders_img', { params: { id: row.id, type: 1 } }).then(res => {
+      //             // row.imgs = res.data
+      //             let list = []
+      //             url.length > 0 && url.forEach(el => {
+      //               list.push({ img_url: el })
+      //             });
+      //             this.$previewImg({
+      //               list,
+      //               baseUrl: this.$store.state.ip,
+      //               baseImgField: 'img_url',
+      //               baseTitleField: ''
+      //             })
+      //             // })
+      //           }
+      //         }
+      //       })
+      //     }
+      //   },
+      //   { title: '左右式', key: '', align: 'center', tooltip: true, minWidth: 80 },
+      //   { title: '图号', key: 'url_number', align: 'center', tooltip: true, minWidth: 80 },
+      //   { title: '备注', key: 'remark', align: 'center', minWidth: 80 },
+      //   // { title: '操作', key: 'remark', align: 'center', slot: 'Set', minWidth: 120 },
+      // ],
+      isOpen: false,
+      btnLoading: false,
+      fullAreaList: [],
+      singleAreaList: [],
+      warningList: [],
+    }
+  },
+  // 生命周期 - 创建完成(可以访问当前this实例)
+  created () {
+  },
+  // 生命周期 - 挂载完成(可以访问DOM元素)
+  mounted () {
+    this.axios({
+      method: 'get',
+      url: '/api/order_oa_detail',
+      params: {
+         order_no: this.$route.query.order_no,
+         type: this.$route.query.type
+      }
+    }).then((res) => {
+      this.orderInfo = res.data
+      // this.oaInfo = res.data.oa
+      // this.areaList = [res.data.area]
+      // this.singleAreaList = JSON.parse(JSON.stringify([res.data.area]))
+      this.arrivalData = res.data.list
+      console.log(res)
+    }).catch((err) => { });
+  },
+  methods: {
+    handleSet () { },
+    approval (status) {
+      let params = {
+        status,
+        type: this.type,
+        oa_order_no: this.$route.query.oa_order_no
+      }
+      this.axios.post('/api/order_price_oa_pull', params).then(res => {
+        if (res.code == 200) {
+          this.$Message.success(res.msg || '无提示')
+          // this.goback()
+        }
+      })
+    },
+    goback () { this.$router.go(-1) },
+    handleShowMore () {
+      if (this.fullAreaList.length > 0) {
+        this.areaList = this.isOpen ? JSON.parse(JSON.stringify(this.singleAreaList)) : JSON.parse(JSON.stringify(this.fullAreaList))
+        this.isOpen = !this.isOpen
+      } else {
+        this.btnLoading = true
+        this.axios({
+          method: 'get',
+          url: '/api/order_price_oa_deep_area_detail',
+          params: {
+            oa_order_no: this.$route.query.oa_order_no
+          }
+        }).then((res) => {
+          this.isOpen = !this.isOpen
+          this.fullAreaList = JSON.parse(JSON.stringify(res.data))
+          this.areaList = res.data
+          this.btnLoading = false
+        }).catch((err) => { });
+      }
+    },
+
+  },
+  // 监听属性 类似于data概念
+  computed: {},
+  // 监控data中的数据变化
+  watch: {},
+  beforeCreate () { }, // 生命周期 - 创建之前
+  beforeMount () { }, // 生命周期 - 挂载之前
+  beforeUpdate () { }, // 生命周期 - 更新之前
+  updated () { }, // 生命周期 - 更新之后
+  beforeDestroy () { }, // 生命周期 - 销毁之前
+  destroyed () { }, // 生命周期 - 销毁完成
+  activated () { }, // 如果页面有keep-alive缓存功能,这个函数会触发
+}
+</script>
+
+<style lang='scss' scoped>
+.body {
+  margin-top: 10px;
+   .tableContent{
+      .table_title{
+        line-height: 30px;
+        height: 36px;
+        border-top: 1px solid #F4F4F4;
+        font-size: 18px;
+        font-weight: bold;
+      }
+    }
+  .header {
+    margin: 20px 10px;
+  }
+  .info_wrapper {
+    display: flex;
+    justify-content: space-around;
+    .info {
+      display: flex;
+      justify-content: flex-start;
+      flex-wrap: wrap;
+      .info_item {
+        width: 180px;
+        padding: 0 10px 10px 10px;
+      }
+    }
+    .info_fixed {
+      width: 100%;
+      max-height: 150px;
+      padding-top: 20px;
+      padding-left: 5px;
+      border: 1px solid #ffffbb;
+      overflow: hidden;
+      overflow-y: auto;
+      background-color: #ffffbb;
+      text-align: center;
+      /deep/.ivu-steps-head-inner {
+        margin: 0;
+      }
+      /deep/.ivu-steps-title,
+      /deep/.ivu-steps-head {
+        background: transparent;
+      }
+    }
+  }
+}
+</style>

+ 288 - 0
src/views/BidSystem/ContractList/purchaseDetail.vue

@@ -0,0 +1,288 @@
+<template>
+  <div>
+    <Toptitle title="工装单审批详情">
+      <slot name="titleButton">
+        <Button @click="approval(1)"
+                type="success"
+                style="margin-right:10px;">通过</Button>
+        <Button @click="approval(2)"
+                type="error"
+                style="margin-right:10px;">驳回</Button>
+        <Button @click="goback()"
+                type="primary"
+                style="margin-right:10px;">返回</Button>
+      </slot>
+    </Toptitle>
+    <div class="body">
+      <div class="header">
+        <Steps :current="2">
+          <Step title="开始审批"></Step>
+          <Step title="1级审批"></Step>
+          <Step title="2级审批"></Step>
+          <Step title="审批完成"></Step>
+        </Steps>
+      </div>
+      <div class="info_wrapper">
+        <div class="info">
+          <div class="info_item"><span>制单人:</span><span>{{orderInfo.nickname}}</span></div>
+          <div class="info_item"><span>采购类型:</span><span>{{orderInfo.type_title}}</span></div>
+          <div class="info_item"><span>项目名称:</span><span>{{orderInfo.client_name}}</span></div>
+          <div class="info_item"><span>单据号:</span><span>{{orderInfo.order_no}}</span></div>
+          <div class="info_item"><span>制单日期:</span><span>{{func.replaceDate(orderInfo.crt_time)}}</span></div>
+         <div class="info_item"><span>预计到货日期:</span><span>{{func.replaceDate(orderInfo.arrive_time)}}</span></div>
+          <div class="info_item"><span>备注:</span><span>采购需要快点,生产部等着要</span></div>
+        </div>
+        <div class="info_fixed">
+          <Steps :current="99"
+                 size="small"
+                 direction="vertical">
+            <Step v-for="item in oaInfo"
+                  :key="item.level">
+              <div slot="title">
+                {{func.replaceDate(item.upd_time)}}
+                审批人:{{item.nickname}}
+              </div>
+            </Step>
+          </Steps>
+        </div>
+      </div>
+      <div class="tableContent">
+        <div class="table_title">请购清单</div>
+        <Table :columns="purchaseColumus" :data="purchaseData">
+           <template slot="materiel_specs" slot-scope="{ row }">
+            <div>
+              {{ row.long ? row.long : 0 }}*{{ row.width ? row.width : 0 }}*{{
+                row.high ? row.high : 0
+              }}
+        </div>
+           </template>
+            <template slot="untaxed_price" slot-scope="{ row }">
+            <div>
+              {{row.price-row.price*row.fax}}
+        </div>
+           </template>
+             <template slot="untaxed_price_total" slot-scope="{ row }">
+            <div>
+              {{(row.price-row.price*row.fax)*row.num}}
+        </div>
+           </template>
+            <template slot="tax_amount" slot-scope="{ row }">
+            <div>
+              {{row.price*row.fax}}
+        </div>
+           </template>
+            <template slot="price_total" slot-scope="{ row }">
+            <div>
+              {{row.price*row.num}}
+        </div>
+           </template>
+        </Table>
+      </div>
+        </div>
+      </div>
+</template>
+
+<script>
+// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+// 例如:import 《组件名称》 from '《组件路径》';
+
+export default {
+  name: '',
+  components: {
+
+  },
+  props: {},
+  // import引入的组件需要注入到对象中才能使用
+  data () {
+    // 这里存放数据
+    return {
+      setpContent: [],
+      orderInfo: {},
+      oaInfo: [],
+      type: null,
+      purchaseColumus:[
+        { title: '项目名称', key: '', align: 'center', minWidth: 92 },
+        { title: '物料分类', key: 'type_title', align: 'center', minWidth: 92 },
+        { title: '物料名称', key: 'title', align: 'center', minWidth: 92 },
+        { title: '物料规格', key: '', align: 'center', minWidth: 92, slot: "materiel_specs"},
+        { title: '计量单位', key: 'unit', align: 'center', minWidth: 92 },
+        { title: '采购数量', key: 'num', align: 'center', minWidth: 92 },
+        { title: '无税单价', key: '', align: 'center', minWidth: 92 ,slot:'untaxed_price'},
+        { title: '税率', key: 'fax', align: 'center', minWidth: 70 },
+        { title: '含税单价', key: 'price', align: 'center', minWidth: 92 },
+        { title: '无税金额', key: '', align: 'center', minWidth: 92 ,slot:'untaxed_price_total'},
+        { title: '税额', key: '', align: 'center', minWidth: 70 ,slot:'tax_amount'},
+        { title: '价格合计', key: '', align: 'center', minWidth: 92 ,slot:'price_total'},
+      ],
+      purchaseData:[],
+      // tableColumns: [
+      //   { title: '序号', type: 'index', key: '', align: 'center', minWidth: 80 },
+      //   { title: '产品名称', key: 'title', align: 'center', tooltip: true, minWidth: 100 },
+      //   { title: '数量', key: 'num', align: 'center', minWidth: 80 },
+      //   { title: '价格', key: 'price', align: 'center', minWidth: 80 },
+      //   { title: '规格', key: 'measure', align: 'center', tooltip: true, minWidth: 140 },
+      //   { title: '工艺属性', key: 'process_property', align: 'center', tooltip: true, minWidth: 120 },
+      //   {
+      //     title: '图纸', align: 'center', key: 'url', minWidth: 100,
+      //     render: (h, params) => {
+      //       const { row } = params
+      //       let url = row.url ? row.url : []
+      //       return h('img', {
+      //         attrs: {
+      //           src: this.$store.state.ip + url[0],
+      //           style: 'max-width:50px;max-height:50px;position:relative;top:3px;'
+      //         },
+      //         on: {
+      //           click: (e) => {
+      //             // this.axios('/api/orders_img', { params: { id: row.id, type: 1 } }).then(res => {
+      //             // row.imgs = res.data
+      //             let list = []
+      //             url.length > 0 && url.forEach(el => {
+      //               list.push({ img_url: el })
+      //             });
+      //             this.$previewImg({
+      //               list,
+      //               baseUrl: this.$store.state.ip,
+      //               baseImgField: 'img_url',
+      //               baseTitleField: ''
+      //             })
+      //             // })
+      //           }
+      //         }
+      //       })
+      //     }
+      //   },
+      //   { title: '左右式', key: '', align: 'center', tooltip: true, minWidth: 80 },
+      //   { title: '图号', key: 'url_number', align: 'center', tooltip: true, minWidth: 80 },
+      //   { title: '备注', key: 'remark', align: 'center', minWidth: 80 },
+      //   // { title: '操作', key: 'remark', align: 'center', slot: 'Set', minWidth: 120 },
+      // ],
+      isOpen: false,
+      btnLoading: false,
+      fullAreaList: [],
+      singleAreaList: [],
+      warningList: [],
+    }
+  },
+  // 生命周期 - 创建完成(可以访问当前this实例)
+  created () {
+    this.axios({
+      method: 'get',
+      url: '/api/order_oa_detail',
+      params: {
+        order_no: this.$route.query.order_no,
+      type: this.$route.query.type
+      }
+    }).then((res) => {
+      this.orderInfo = res.data
+      // this.oaInfo = res.data.__ob__
+      // this.areaList = [res.data.area]
+      // this.singleAreaList = JSON.parse(JSON.stringify([res.data.area]))
+      this.purchaseData = res.data.list;
+      console.log(res)
+    }).catch((err) => { });
+  },
+  // 生命周期 - 挂载完成(可以访问DOM元素)
+  mounted () {
+
+  },
+    methods: {
+    handleSet () { },
+    approval (status) {
+      let params = {
+        status,
+        type: this.type,
+        oa_order_no: this.$route.query.oa_order_no
+      }
+      this.axios.post('/api/order_price_oa_pull', params).then(res => {
+        if (res.code == 200) {
+          this.$Message.success(res.msg || '无提示')
+          // this.goback()
+        }
+      })
+    },
+    goback () { this.$router.go(-1) },
+    handleShowMore () {
+      if (this.fullAreaList.length > 0) {
+        this.areaList = this.isOpen ? JSON.parse(JSON.stringify(this.singleAreaList)) : JSON.parse(JSON.stringify(this.fullAreaList))
+        this.isOpen = !this.isOpen
+      } else {
+        this.btnLoading = true
+        this.axios({
+          method: 'get',
+          url: '/api/order_price_oa_deep_area_detail',
+          params: {
+            oa_order_no: this.$route.query.oa_order_no
+          }
+        }).then((res) => {
+          this.isOpen = !this.isOpen
+          this.fullAreaList = JSON.parse(JSON.stringify(res.data))
+          this.areaList = res.data
+          this.btnLoading = false
+        }).catch((err) => { });
+      }
+    },
+
+  },
+  // 监听属性 类似于data概念
+  computed: {},
+  // 监控data中的数据变化
+  watch: {},
+  beforeCreate () { }, // 生命周期 - 创建之前
+  beforeMount () { }, // 生命周期 - 挂载之前
+  beforeUpdate () { }, // 生命周期 - 更新之前
+  updated () { }, // 生命周期 - 更新之后
+  beforeDestroy () { }, // 生命周期 - 销毁之前
+  destroyed () { }, // 生命周期 - 销毁完成
+  activated () { }, // 如果页面有keep-alive缓存功能,这个函数会触发
+}
+</script>
+
+<style lang='scss' scoped>
+.body {
+  margin-top: 10px;
+   .tableContent{
+      .table_title{
+        line-height: 30px;
+        height: 36px;
+        border-top: 1px solid #F4F4F4;
+        font-size: 18px;
+        font-weight: bold;
+      }
+    }
+  .header {
+    margin: 20px 10px;
+  }
+  .info_wrapper {
+    display: flex;
+    justify-content: space-around;
+    .info {
+      display: flex;
+      justify-content: flex-start;
+      flex-wrap: wrap;
+      .info_item {
+        width: 180px;
+        padding: 0 10px 10px 10px;
+      }
+    }
+    .info_fixed {
+      width: 100%;
+      max-height: 150px;
+      padding-top: 20px;
+      padding-left: 5px;
+      border: 1px solid #ffffbb;
+      overflow: hidden;
+      overflow-y: auto;
+      background-color: #ffffbb;
+      text-align: center;
+      /deep/.ivu-steps-head-inner {
+        margin: 0;
+      }
+      /deep/.ivu-steps-title,
+      /deep/.ivu-steps-head {
+        background: transparent;
+      }
+    }
+  }
+}
+</style>

+ 258 - 0
src/views/BidSystem/ContractList/qualitytestingDetail.vue

@@ -0,0 +1,258 @@
+<template>
+  <div>
+    <Toptitle title="详情">
+      <slot name="titleButton">
+        <Button @click="approval(1)"
+                type="success"
+                style="margin-right:10px;">通过</Button>
+        <Button @click="approval(2)"
+                type="error"
+                style="margin-right:10px;">驳回</Button>
+        <Button @click="goback()"
+                type="primary"
+                style="margin-right:10px;">返回</Button>
+      </slot>
+    </Toptitle>
+    <div class="body">
+      <div class="header">
+        <Steps :current="2">
+          <Step title="开始审批"></Step>
+          <Step title="1级审批"></Step>
+          <Step title="2级审批"></Step>
+          <Step title="审批完成"></Step>
+        </Steps>
+      </div>
+      <div class="info_wrapper">
+        <div class="info">
+           <div class="info_item"><span>制单人:</span><span>{{orderInfo.nickname}}</span></div>
+          <div class="info_item"><span>单据号:</span><span>{{orderInfo.type_title}}</span></div>
+          <div class="info_item"><span>项目名称:</span><span>{{orderInfo.client_name}}</span></div>
+          <div class="info_item"><span>制单日期:</span><span>{{func.replaceDate(orderInfo.crt_time)}}</span></div>
+          <div class="info_item"><span>供应商名称:</span><span>{{orderInfo.supply_title}}</span></div>
+          <div class="info_item"><span>备注:</span><span>采购需要快点,生产部等着要</span></div>
+        </div>
+        <div class="info_fixed">
+          <Steps :current="99"
+                 size="small"
+                 direction="vertical">
+            <Step v-for="item in oaInfo"
+                  :key="item.level">
+              <div slot="title">
+                {{func.replaceDate(item.upd_time)}}
+                审批人:{{item.nickname}}
+              </div>
+            </Step>
+          </Steps>
+        </div>
+      </div>
+      <div class="tableContent">
+        <div class="table_title">请购清单</div>
+        <Table :columns=" qualitytestingColums" :data="qualitytestingData">
+           <template slot="materiel_specs" slot-scope="{ row }">
+            <div>
+              {{ row.long ? row.long : 0 }}*{{ row.width ? row.width : 0 }}*{{
+                row.high ? row.high : 0
+              }}
+        </div>
+           </template>
+        </Table>
+      </div>
+        </div>
+      </div>
+</template>
+
+<script>
+// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+// 例如:import 《组件名称》 from '《组件路径》';
+
+export default {
+  name: '',
+  components: {
+
+  },
+  props: {},
+  // import引入的组件需要注入到对象中才能使用
+  data () {
+    // 这里存放数据
+    return {
+      setpContent: [],
+      orderInfo: {},
+      oaInfo: [],
+      type: null,
+      qualitytestingColums:[
+        { title: '物料分类', key: 'type_title', align: 'center', minWidth: 80 },
+        { title: '物料名称', key: 'title', align: 'center', minWidth: 80 },
+        { title: '物料规格', key: '', align: 'center', minWidth: 80 ,slot: "materiel_specs"},
+        { title: '计量单位', key: 'unit', align: 'center', minWidth: 80 },
+        { title: '质检数量', key: 'num', align: 'center', minWidth: 80 },
+      ],
+       qualitytestingData:[],
+      // tableColumns: [
+      //   { title: '序号', type: 'index', key: '', align: 'center', minWidth: 80 },
+      //   { title: '产品名称', key: 'title', align: 'center', tooltip: true, minWidth: 100 },
+      //   { title: '数量', key: 'num', align: 'center', minWidth: 80 },
+      //   { title: '价格', key: 'price', align: 'center', minWidth: 80 },
+      //   { title: '规格', key: 'measure', align: 'center', tooltip: true, minWidth: 140 },
+      //   { title: '工艺属性', key: 'process_property', align: 'center', tooltip: true, minWidth: 120 },
+      //   {
+      //     title: '图纸', align: 'center', key: 'url', minWidth: 100,
+      //     render: (h, params) => {
+      //       const { row } = params
+      //       let url = row.url ? row.url : []
+      //       return h('img', {
+      //         attrs: {
+      //           src: this.$store.state.ip + url[0],
+      //           style: 'max-width:50px;max-height:50px;position:relative;top:3px;'
+      //         },
+      //         on: {
+      //           click: (e) => {
+      //             // this.axios('/api/orders_img', { params: { id: row.id, type: 1 } }).then(res => {
+      //             // row.imgs = res.data
+      //             let list = []
+      //             url.length > 0 && url.forEach(el => {
+      //               list.push({ img_url: el })
+      //             });
+      //             this.$previewImg({
+      //               list,
+      //               baseUrl: this.$store.state.ip,
+      //               baseImgField: 'img_url',
+      //               baseTitleField: ''
+      //             })
+      //             // })
+      //           }
+      //         }
+      //       })
+      //     }
+      //   },
+      //   { title: '左右式', key: '', align: 'center', tooltip: true, minWidth: 80 },
+      //   { title: '图号', key: 'url_number', align: 'center', tooltip: true, minWidth: 80 },
+      //   { title: '备注', key: 'remark', align: 'center', minWidth: 80 },
+      //   // { title: '操作', key: 'remark', align: 'center', slot: 'Set', minWidth: 120 },
+      // ],
+      isOpen: false,
+      btnLoading: false,
+      fullAreaList: [],
+      singleAreaList: [],
+      warningList: [],
+    }
+  },
+  // 生命周期 - 创建完成(可以访问当前this实例)
+  created () {
+  },
+  // 生命周期 - 挂载完成(可以访问DOM元素)
+  mounted () {
+    this.axios({
+      method: 'get',
+      url: '/api/order_oa_detail',
+      params: {
+      order_no: this.$route.query.order_no,
+      type: this.$route.query.type
+      }
+    }).then((res) => {
+      this.orderInfo = res.data
+      // this.oaInfo = res.data.oa
+      // this.areaList = [res.data.area]
+      // this.singleAreaList = JSON.parse(JSON.stringify([res.data.area]))
+      this.qualitytestingData = res.data.list
+    }).catch((err) => { });
+  },
+  methods: {
+    handleSet () { },
+    approval (status) {
+      let params = {
+        status,
+        type: this.type,
+        oa_order_no: this.$route.query.oa_order_no
+      }
+      this.axios.post('/api/order_price_oa_pull', params).then(res => {
+        if (res.code == 200) {
+          this.$Message.success(res.msg || '无提示')
+          // this.goback()
+        }
+      })
+    },
+    goback () { this.$router.go(-1) },
+    handleShowMore () {
+      if (this.fullAreaList.length > 0) {
+        this.areaList = this.isOpen ? JSON.parse(JSON.stringify(this.singleAreaList)) : JSON.parse(JSON.stringify(this.fullAreaList))
+        this.isOpen = !this.isOpen
+      } else {
+        this.btnLoading = true
+        this.axios({
+          method: 'get',
+          url: '/api/order_price_oa_deep_area_detail',
+          params: {
+            oa_order_no: this.$route.query.oa_order_no
+          }
+        }).then((res) => {
+          this.isOpen = !this.isOpen
+          this.fullAreaList = JSON.parse(JSON.stringify(res.data))
+          this.areaList = res.data
+          this.btnLoading = false
+        }).catch((err) => { });
+      }
+    },
+
+  },
+  // 监听属性 类似于data概念
+  computed: {},
+  // 监控data中的数据变化
+  watch: {},
+  beforeCreate () { }, // 生命周期 - 创建之前
+  beforeMount () { }, // 生命周期 - 挂载之前
+  beforeUpdate () { }, // 生命周期 - 更新之前
+  updated () { }, // 生命周期 - 更新之后
+  beforeDestroy () { }, // 生命周期 - 销毁之前
+  destroyed () { }, // 生命周期 - 销毁完成
+  activated () { }, // 如果页面有keep-alive缓存功能,这个函数会触发
+}
+</script>
+
+<style lang='scss' scoped>
+.body {
+  margin-top: 10px;
+   .tableContent{
+      .table_title{
+        line-height: 30px;
+        height: 36px;
+        border-top: 1px solid #F4F4F4;
+        font-size: 18px;
+        font-weight: bold;
+      }
+    }
+  .header {
+    margin: 20px 10px;
+  }
+  .info_wrapper {
+    display: flex;
+    justify-content: space-around;
+    .info {
+      display: flex;
+      justify-content: flex-start;
+      flex-wrap: wrap;
+      .info_item {
+        width: 180px;
+        padding: 0 10px 10px 10px;
+      }
+    }
+    .info_fixed {
+      width: 100%;
+      max-height: 150px;
+      padding-top: 20px;
+      padding-left: 5px;
+      border: 1px solid #ffffbb;
+      overflow: hidden;
+      overflow-y: auto;
+      background-color: #ffffbb;
+      text-align: center;
+      /deep/.ivu-steps-head-inner {
+        margin: 0;
+      }
+      /deep/.ivu-steps-title,
+      /deep/.ivu-steps-head {
+        background: transparent;
+      }
+    }
+  }
+}
+</style>

+ 268 - 0
src/views/BidSystem/ContractList/requisitionDetail.vue

@@ -0,0 +1,268 @@
+<template>
+  <div>
+    <Toptitle title="详情">
+      <slot name="titleButton">
+        <Button @click="approval(1)"
+                type="success"
+                style="margin-right:10px;">通过</Button>
+        <Button @click="approval(2)"
+                type="error"
+                style="margin-right:10px;">驳回</Button>
+        <Button @click="goback()"
+                type="primary"
+                style="margin-right:10px;">返回</Button>
+      </slot>
+    </Toptitle>
+    <div class="body">
+      <div class="header">
+        <Steps :current="2">
+          <Step title="开始审批"></Step>
+          <Step title="1级审批"></Step>
+          <Step title="2级审批"></Step>
+          <Step title="审批完成"></Step>
+        </Steps>
+      </div>
+      <div class="info_wrapper">
+        <div class="info">
+          <div class="info_item"><span>制单人:</span><span>{{orderInfo.nickname}}</span></div>
+          <div class="info_item"><span>请购类型:</span><span>{{orderInfo.type_title}}</span></div>
+          <div class="info_item"><span>项目名称:</span><span>{{orderInfo.client_name}}</span></div>
+          <div class="info_item"><span>单据号:</span><span>{{orderInfo.purchase_order_apply_no}}</span></div>
+          <div class="info_item"><span>制单日期:</span><span>{{func.replaceDate(orderInfo.crt_time)}}</span></div>
+          <div class="info_item"><span>备注:</span><span>采购需要快点,生产部等着要</span></div>
+          <!-- <div class="info_item"><span>开始日期:</span><span>{{func.replaceDate(orderInfo.start_time)}}</span></div> -->
+        </div>
+        <div class="info_fixed">
+          <Steps :current="99"
+                 size="small"
+                 direction="vertical">
+            <Step v-for="item in oaInfo"
+                  :key="item.level">
+              <div slot="title">
+                {{func.replaceDate(item.upd_time)}}
+                审批人:{{item.nickname}}
+              </div>
+            </Step>
+          </Steps>
+        </div>
+      </div>
+      <div class="tableContent">
+        <div class="table_title">请购清单</div>
+        <Table :columns=" requisitionColumus" :data="requisitionData">
+           <template slot="materiel_specs" slot-scope="{ row }">
+            <div>
+              {{ row.long ? row.long : 0 }}*{{ row.width ? row.width : 0 }}*{{
+                row.high ? row.high : 0
+              }}
+        </div>
+           </template>
+        <template slot="arrive_timeSet" slot-scope="{ index }">
+            <span>{{
+              func.replaceDate(requisitionData[index].arrive_time)
+            }}</span>
+        </template>
+        </Table>
+      </div>
+        </div>
+      </div>
+</template>
+
+<script>
+// 这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+// 例如:import 《组件名称》 from '《组件路径》';
+
+export default {
+  name: '',
+  components: {
+
+  },
+  props: {},
+  // import引入的组件需要注入到对象中才能使用
+  data () {
+    // 这里存放数据
+    return {
+      setpContent: [],
+      orderInfo: {},
+      oaInfo: [],
+      type: null,
+      requisitionColumus:[
+        { title: '物料分类', key: 'type_title', align: 'center', minWidth: 80 },
+        { title: '物料名称', key: 'title', align: 'center', minWidth: 80 },
+        { title: '物料规格', key: 'medal', align: 'center', minWidth: 80 , slot: "materiel_specs"},
+        { title: '计量单位', key: 'unit', align: 'center', minWidth: 80 },
+        { title: '数量', key: 'num', align: 'center', minWidth: 80 },
+        { title: '到货时间', key: 'time', align: 'center', minWidth: 80 , slot:"arrive_timeSet"},
+        { title: '建议供应商', key: 'supply_title', align: 'center', minWidth: 80 },
+      ],
+      requisitionData:[],
+      // tableColumns: [
+      //   { title: '序号', type: 'index', key: '', align: 'center', minWidth: 80 },
+      //   { title: '产品名称', key: 'title', align: 'center', tooltip: true, minWidth: 100 },
+      //   { title: '数量', key: 'num', align: 'center', minWidth: 80 },
+      //   { title: '价格', key: 'price', align: 'center', minWidth: 80 },
+      //   { title: '规格', key: 'measure', align: 'center', tooltip: true, minWidth: 140 },
+      //   { title: '工艺属性', key: 'process_property', align: 'center', tooltip: true, minWidth: 120 },
+      //   {
+      //     title: '图纸', align: 'center', key: 'url', minWidth: 100,
+      //     render: (h, params) => {
+      //       const { row } = params
+      //       let url = row.url ? row.url : []
+      //       return h('img', {
+      //         attrs: {
+      //           src: this.$store.state.ip + url[0],
+      //           style: 'max-width:50px;max-height:50px;position:relative;top:3px;'
+      //         },
+      //         on: {
+      //           click: (e) => {
+      //             // this.axios('/api/orders_img', { params: { id: row.id, type: 1 } }).then(res => {
+      //             // row.imgs = res.data
+      //             let list = []
+      //             url.length > 0 && url.forEach(el => {
+      //               list.push({ img_url: el })
+      //             });
+      //             this.$previewImg({
+      //               list,
+      //               baseUrl: this.$store.state.ip,
+      //               baseImgField: 'img_url',
+      //               baseTitleField: ''
+      //             })
+      //             // })
+      //           }
+      //         }
+      //       })
+      //     }
+      //   },
+      //   { title: '左右式', key: '', align: 'center', tooltip: true, minWidth: 80 },
+      //   { title: '图号', key: 'url_number', align: 'center', tooltip: true, minWidth: 80 },
+      //   { title: '备注', key: 'remark', align: 'center', minWidth: 80 },
+      //   // { title: '操作', key: 'remark', align: 'center', slot: 'Set', minWidth: 120 },
+      // ],
+      isOpen: false,
+      btnLoading: false,
+      fullAreaList: [],
+      singleAreaList: [],
+      warningList: [],
+    }
+  },
+  // 生命周期 - 创建完成(可以访问当前this实例)
+  created () {
+    this.axios({
+      method: 'get',
+      url: '/api/order_oa_detail',
+      params: {
+        order_no: this.$route.query.order_no,
+      type: this.$route.query.type
+      }
+    }).then((res) => {
+      this.orderInfo = res.data
+      // this.oaInfo = res.data.__ob__
+      // this.areaList = [res.data.area]
+      // this.singleAreaList = JSON.parse(JSON.stringify([res.data.area]))
+      this.requisitionData = res.data.list;
+      console.log(res)
+    }).catch((err) => { });
+  },
+  // 生命周期 - 挂载完成(可以访问DOM元素)
+  mounted () {
+   
+  },
+  methods: {
+    handleSet () { },
+    approval (status) {
+      let params = {
+        status,
+        type: this.type,
+        oa_order_no: this.$route.query.oa_order_no
+      }
+      this.axios.post('/api/order_price_oa_pull', params).then(res => {
+        if (res.code == 200) {
+          this.$Message.success(res.msg || '无提示')
+          // this.goback()
+        }
+      })
+    },
+    goback () { this.$router.go(-1) },
+    handleShowMore () {
+      if (this.fullAreaList.length > 0) {
+        this.areaList = this.isOpen ? JSON.parse(JSON.stringify(this.singleAreaList)) : JSON.parse(JSON.stringify(this.fullAreaList))
+        this.isOpen = !this.isOpen
+      } else {
+        this.btnLoading = true
+        this.axios({
+          method: 'get',
+          url: '/api/order_price_oa_deep_area_detail',
+          params: {
+            oa_order_no: this.$route.query.oa_order_no
+          }
+        }).then((res) => {
+          this.isOpen = !this.isOpen
+          this.fullAreaList = JSON.parse(JSON.stringify(res.data))
+          this.areaList = res.data
+          this.btnLoading = false
+        }).catch((err) => { });
+      }
+    },
+
+  },
+  // 监听属性 类似于data概念
+  computed: {},
+  // 监控data中的数据变化
+  watch: {},
+  beforeCreate () { }, // 生命周期 - 创建之前
+  beforeMount () { }, // 生命周期 - 挂载之前
+  beforeUpdate () { }, // 生命周期 - 更新之前
+  updated () { }, // 生命周期 - 更新之后
+  beforeDestroy () { }, // 生命周期 - 销毁之前
+  destroyed () { }, // 生命周期 - 销毁完成
+  activated () { }, // 如果页面有keep-alive缓存功能,这个函数会触发
+}
+</script>
+
+<style lang='scss' scoped>
+.body {
+  margin-top: 10px;
+   .tableContent{
+      .table_title{
+        line-height: 30px;
+        height: 36px;
+        border-top: 1px solid #F4F4F4;
+        font-size: 18px;
+        font-weight: bold;
+      }
+    }
+  .header {
+    margin: 20px 10px;
+  }
+  .info_wrapper {
+    display: flex;
+    justify-content: space-around;
+    .info {
+      display: flex;
+      justify-content: flex-start;
+      flex-wrap: wrap;
+      .info_item {
+        width: 180px;
+        padding: 0 30px 40px 20px;
+      }
+    }
+    .info_fixed {
+      width: 100%;
+      max-height: 150px;
+      padding-top: 20px;
+      padding-left: 5px;
+      border: 1px solid #ffffbb;
+      overflow: hidden;
+      overflow-y: auto;
+      background-color: #ffffbb;
+      text-align: center;
+      /deep/.ivu-steps-head-inner {
+        margin: 0;
+      }
+      /deep/.ivu-steps-title,
+      /deep/.ivu-steps-head {
+        background: transparent;
+      }
+    }
+  }
+}
+</style>