3 Commits 54d6a659dc ... 1871276fbf

Autore SHA1 Messaggio Data
  Jehu 1871276fbf 产品追溯列表,权限控制 3 anni fa
  Jehu 96c4c870f7 产品记录查看 3 anni fa
  Jehu 44b4ba6c29 订单追溯展示页 3 anni fa

+ 23 - 5
src/api/trace.js

@@ -1,17 +1,35 @@
 import request from '@/utils/httpRequest'
 
 // 根据订单编码追溯
-export function getOrderByCode (orderCode) {
+export function getOrderByCode (params) {
   return request({
-    url: request.adornUrl(`/trace/infoOrderCode/${orderCode}`),
-    method: 'get'
+    url: request.adornUrl(`/biz-service/trace/orderList`),
+    method: 'get',
+    params: params
   })
 }
 
 // 根据产品编号追溯
-export function getProductById (productId) {
+export function getProductByCode (params) {
+  return request({
+    url: request.adornUrl(`/biz-service/trace/productionList`),
+    method: 'get',
+    params: params
+  })
+}
+
+// 根据订单 Id 获取订单详情
+export function getOrderDetailById (orderId) {
+  return request({
+    url: request.adornUrl(`/biz-service/trace/infoOrderCode/${orderId}`),
+    method: 'get'
+  })
+}
+
+// 根据产品 Id 获取产品详情
+export function getProdInfoById (productionId) {
   return request({
-    url: request.adornUrl(`/trace/infoProdCode/${productId}`),
+    url: request.adornUrl(`/biz-service/trace/infoProdProductionId/${productionId}`),
     method: 'get'
   })
 }

+ 68 - 39
src/views/modules/trace/order-detail.vue

@@ -5,8 +5,8 @@
     :close-on-click-modal="false"
     :visible.sync="visible"> -->
   <div>
-    <div class="my-title">查看</div>
-    <div style="margin-left: 20px;margin-right: 20px">
+    <div class="my-title" v-if="!prodVisible">查看</div>
+    <div v-if="!prodVisible" style="margin-left: 20px;margin-right: 20px">
       <!-- 工作流 -->
       <div v-show="dataForm.workFlowBusinessExt">
         <el-steps :active="dataForm.workFlowBusinessExt&&dataForm.workFlowBusinessExt.workFlowProcessStepList?dataForm.workFlowBusinessExt.workFlowProcessStepList.length + 2:0" align-center style="margin-bottom: 20px">
@@ -34,13 +34,12 @@
         <e-desc-item label="客户名称">{{dataForm.customerName}}</e-desc-item>
 
         <e-desc-item label="业务员">{{dataForm.salesmanName}}</e-desc-item>
-        <e-desc-item label="合同交期" span="2">{{dataForm.contactDate?dataForm.contactDate.substring(0,10):''}}</e-desc-item>
+        <e-desc-item label="合同编号">{{dataForm.contractCode}}</e-desc-item>
+        <e-desc-item label="交货日期">{{dataForm.deliveryDate ? dataForm.deliveryDate.substring(0,10) : ''}}</e-desc-item>
 
         <e-desc-item label="备注说明" span="3">{{dataForm.notes}}</e-desc-item>
       </e-desc>
-      <e-desc title="合同扫描件">
-        <upload-component :display="true" :display-title="false" :accept="'*'" :file-obj-list="fileList"/>
-      </e-desc>
+      
       <e-desc title="订单产品明细">
         <el-table
           :data="productDetails"
@@ -61,59 +60,56 @@
             label="产品名称">
           </el-table-column>
           <el-table-column
-            prop="cnt"
-            header-align="center"
-            align="center"
-            width="80"
-            label="数量">
-          </el-table-column>
-          <el-table-column
-            prop="productNumber"
+            prop="prodCode"
             header-align="center"
             align="center"
             min-width="120"
             :show-tooltip-when-overflow="true"
-            label="订单编号">
+            label="产品编号">
           </el-table-column>
           <el-table-column
-            prop="price"
+            prop="state"
             header-align="center"
             align="center"
-            label="含税单价">
+            :formatter="formatState"
+            :show-tooltip-when-overflow="true"
+            label="状态">
           </el-table-column>
           <el-table-column
-            prop="amount"
+            prop="startTime"
             header-align="center"
             align="center"
-            width="80"
-            label="含税总价">
-            <template slot-scope="scope">
-              <span>{{ (scope.row.cnt*scope.row.price).toFixed(2) }}</span>
-            </template>
+            :show-tooltip-when-overflow="true"
+            label="开始时间">
           </el-table-column>
           <el-table-column
-            prop="rate"
+            prop="endTime"
             header-align="center"
             align="center"
-            label="税率">
-            <template slot-scope="scope">
-              <span>{{scope.row.rate?(Number(scope.row.rate * 100)).toFixed(0):''}}</span>%
-            </template>
+            :show-tooltip-when-overflow="true"
+            label="完成时间">
           </el-table-column>
           <el-table-column
-            prop="notes"
+            fixed="right"
             header-align="center"
             align="center"
             width="120"
-            :show-overflow-tooltip="true"
-            label="备注">
-          </el-table-column>
+            label="操作">
+            <template slot-scope="scope">
+              <el-button type="text" v-if="isAuth('trace:search:prod:detail')" size="small" @click="prodDetailHandle(scope.row.id, scope.row.prodCode)">查看记录</el-button>
+  <!--            <el-button v-if="isAuth('order:ctl:deliver') && Number(scope.row.orderState) === 3" type="text" size="small" @click="deliverHandle(scope.row.orderId)">发货</el-button>-->
+  <!--            <el-button v-if="isAuth('order:ctl:arrived') && Number(scope.row.orderState) === 4 " type="text" size="small" @click="arrivedHandle(scope.row)">送达</el-button>-->
+            </template>
+        </el-table-column>
         </el-table>
       </e-desc>
     </div>
-    <span slot="footer" class="dialog-footer">
+    <span class="dialog-footer">
       <el-button @click="onChose">返回</el-button>
     </span>
+
+    <!-- 弹窗, 新增 / 修改 -->
+    <product-detail v-if="prodVisible" ref="detail" @onChose="onChildClose"/>
   </div>
   <!-- </el-dialog> -->
 </template>
@@ -122,30 +118,50 @@
   import EDesc from '../common/e-desc'
   import EDescItem from '../common/e-desc-item'
   import { dealStepData, dealStepLogs } from '@/api/util'
-  import { getOrderDetail } from '@/api/sale'
+  import { getOrderDetailById } from '@/api/trace'
   import uploadComponent from '../common/upload-component'
   import ApproveComponent from '../common/approve-component'
+  import ProductDetail from './product-detail'
   export default {
     name: 'order-detail',
     components: {
-      EDesc, EDescItem, uploadComponent, ApproveComponent
+      EDesc, EDescItem, uploadComponent, ApproveComponent, ProductDetail
     },
     data () {
       return {
         visible: false,
         isFlow: false,
+        prodVisible: false,
         id: 0,
         dataForm: {},
         productDetails: [],
         stepList: [],
         logList: [],
-        fileList: []
+        fileList: [],
+        // 状态:1:待排产,2:生产中,3:生产完成
+        optionsState: [
+          {
+            code: '1',
+            value: '待排产'
+          },
+          {
+            code: '2',
+            value: '生产中'
+          },
+          {
+            code: '3',
+            value: '生产完成'
+          }
+        ]
       }
     },
     methods: {
       onChose () {
         this.$emit('onChose')
       },
+      onChildClose () {
+        this.prodVisible = false
+      },
       async init (id, businessType) {
         this.visible = true
         this.isFlow = !!(businessType && businessType !== '')
@@ -160,7 +176,7 @@
         this.getDetails(businessType)
       },
       getDetails (businessType) {
-        getOrderDetail(this.id).then(({data}) => {
+        getOrderDetailById(this.id).then(({data}) => {
           if (data && data.code === '200') {
             this.dataForm = data.data
             // 流程图展示
@@ -177,8 +193,8 @@
               })
             }
             // 订单产品明细
-            if (data.data.saleROrderProductList) {
-              this.productDetails = data.data.saleROrderProductList
+            if (data.data.prodProductionList) {
+              this.productDetails = data.data.prodProductionList
             }
             // 初始化审批Form
             this.showApproveForm(businessType, this.id)
@@ -197,6 +213,19 @@
       approveFinished () {
         this.onChose()
         this.$emit('approveFinished')
+      },
+      // 格式化产品状态
+      formatState (row) {
+        if (!row.state) return ''
+        const item1 = this.optionsState.find((item) => item.code === row.state.toString())
+        return item1 ? item1.value : ''
+      },
+      // 查看产品记录
+      prodDetailHandle (productdId, prodCode) {
+        this.prodVisible = true
+        this.$nextTick(() => {
+          this.$refs.detail.init(productdId, prodCode)
+        })
       }
     }
   }

+ 234 - 0
src/views/modules/trace/order-list.vue

@@ -0,0 +1,234 @@
+<!-- 订单 -->
+<template>
+  <div class="order-list" >
+    <div class="my-title" v-if="!detailVisible">订单追溯</div>
+    <div v-show="!detailVisible">
+      <template>
+      <el-table
+        :data="dataList"
+        border
+        v-loading="dataListLoading"
+        @selection-change="selectionChangeHandle"
+        style="width: 100%;">
+        <el-table-column
+          label="序号"
+          type="index"
+          width="50"
+          align="center">
+        </el-table-column>
+        <el-table-column
+          prop="orderCode"
+          header-align="center"
+          align="center"
+          min-width="180"
+          :show-tooltip-when-overflow="true"
+          label="订单编码">
+        </el-table-column>
+        <el-table-column
+          prop="customerName"
+          header-align="center"
+          align="center"
+          min-width="180"
+          :show-overflow-tooltip="true"
+          label="客户名称">
+        </el-table-column>
+        <el-table-column
+          prop="cusOrderCode"
+          header-align="center"
+          align="center"
+          min-width="120"
+          :show-tooltip-when-overflow="true"
+          label="客户订单编号">
+        </el-table-column>
+        <el-table-column
+          prop="createTime"
+          header-align="center"
+          align="center"
+          min-width="160"
+          label="下单时间">
+        </el-table-column>
+        <el-table-column
+          prop="contactDate"
+          header-align="center"
+          align="center"
+          min-width="160"
+          label="合同交期">
+        </el-table-column>
+        <!-- <el-table-column
+          prop="-"
+          header-align="center"
+          align="center"
+          :formatter="formatState"
+          label="审批状态">
+        </el-table-column> -->
+        <el-table-column
+          prop="-"
+          header-align="center"
+          align="center"
+          :formatter="formatOrderState"
+          label="当前状态">
+        </el-table-column>
+        <el-table-column
+          prop="notes"
+          header-align="center"
+          align="center"
+          min-width="180"
+          :show-overflow-tooltip="true"
+          label="备注">
+        </el-table-column>
+        <el-table-column
+          fixed="right"
+          header-align="center"
+          align="center"
+          width="120"
+          label="操作">
+          <template slot-scope="scope">
+            <el-button type="text" v-if="isAuth('trace:search:order:detail')" size="small" @click="detailHandle(scope.row.orderId)">查看</el-button>
+<!--            <el-button v-if="isAuth('order:ctl:deliver') && Number(scope.row.orderState) === 3" type="text" size="small" @click="deliverHandle(scope.row.orderId)">发货</el-button>-->
+<!--            <el-button v-if="isAuth('order:ctl:arrived') && Number(scope.row.orderState) === 4 " type="text" size="small" @click="arrivedHandle(scope.row)">送达</el-button>-->
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        @size-change="sizeChangeHandle"
+        @current-change="currentChangeHandle"
+        :current-page="pageIndex"
+        :page-sizes="[10, 20, 50, 100]"
+        :page-size="pageSize"
+        :total="totalPage"
+        layout="total, sizes, prev, pager, next, jumper">
+      </el-pagination>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="onChose">返回</el-button>
+      </span>
+    </template>
+    </div>
+    
+    <!-- 弹窗, 新增 / 修改 -->
+    <detail v-if="detailVisible" ref="detail" @onChose="onChildClose"/>
+  </div>
+</template>
+
+<script>
+  import Detail from './order-detail'
+  import { getOrderByCode } from '@/api/trace'
+  export default {
+    name: 'order-list',
+    components: {
+      Detail
+    },
+    props: {
+      // 默认第一页的数据
+      defaultList: {
+        type: Array,
+        default: []
+      },
+      // 订单编码
+      orderCode: {
+        type: String,
+        default: ''
+      },
+      defaultTotalPage: {
+        type: [Number, String],
+        default: 0
+      }
+    },
+    created () {
+    },
+    data () {
+      return {
+        detailVisible: false,
+        arrivedVisible: false,
+        dataList: this.defaultList,
+        pageIndex: 1,
+        pageSize: 10,
+        totalPage: Number(this.defaultTotalPage),
+        dataListLoading: false,
+        dataListSelections: [],
+        optionsOrderState: [
+          {
+            code: '1', value: '未开始'
+          },
+          {
+            code: '2', value: '进行中'
+          },
+          {
+            code: '3', value: '已完成'
+          },
+          {
+            code: '4', value: '已发货'
+          },
+          {
+            code: '5', value: '已送达'
+          }
+        ],
+        optionsCustomer: []
+      }
+    },
+    methods: {
+      onChose () {
+        this.$emit('onChose')
+      },
+      onChildClose () {
+        this.detailVisible = false
+      },
+      // 查询
+      queryData () {
+        this.pageIndex = 1
+        this.getDataList()
+      },
+      // 获取数据列表
+      getDataList () {
+        this.dataListLoading = true
+        let params = {
+          'current': this.pageIndex,
+          'size': this.pageSize,
+          'orderCode': this.orderCode
+        }
+        console.log(params)
+        getOrderByCode(params).then(({data}) => {
+          if (data && data.code === '200') {
+            this.dataList = data.data.records
+            this.totalPage = Number(data.data.total)
+          } else {
+            this.dataList = []
+            this.totalPage = 0
+          }
+          this.dataListLoading = false
+        })
+      },
+      // 每页数
+      sizeChangeHandle (val) {
+        this.pageSize = val
+        this.pageIndex = 1
+        this.getDataList()
+      },
+      // 当前页
+      currentChangeHandle (val) {
+        this.pageIndex = val
+        this.getDataList()
+      },
+      // 多选
+      selectionChangeHandle (val) {
+        this.dataListSelections = val
+      },
+      // 转换属性“订单状态”
+      formatOrderState (row) {
+        if (!row.orderState) return ''
+        const item1 = this.optionsOrderState.find((item) => item.code === row.orderState.toString())
+        return item1 ? item1.value : ''
+      },
+      // 详情
+      detailHandle (id) {
+        this.detailVisible = true
+        this.$nextTick(() => {
+          this.$refs.detail.init(id)
+        })
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 121 - 0
src/views/modules/trace/product-detail.vue

@@ -0,0 +1,121 @@
+<template>
+  <div class="production">
+    <!-- <el-dialog
+      title="生产监控详情"
+      width="70%"
+      :close-on-click-modal="false"
+      :visible.sync="visible"
+      @close="handleClose"
+    > -->
+      <div class="my-title">生产详情</div>
+      <el-form
+        :model="dataForm"
+        :rules="dataRule"
+        ref="dataForm"
+        label-width="auto"
+      >
+        <el-row class="my-row">
+          <el-col :span="8">
+            <el-form-item label="产品编号:">
+              <el-input v-model="dataForm.prodCode" disabled></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row
+          class="my-row"
+          style="height: 350px; background-color: #efefef;"
+        >
+          <work-flow
+            ref="workFlow"
+            :nodeData="workFlowData"
+            :selectOperator="true"
+            :disabled="true"
+          ></work-flow>
+        </el-row>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="onChose">返回</el-button>
+      </span>
+    <!-- </el-dialog> -->
+  </div>
+</template>
+
+<script>
+import { getProdInfoById } from '@/api/trace'
+import WorkFlow from '@/components/work-flow/home'
+export default {
+  name: 'product-detail',
+  components: {
+    WorkFlow
+  },
+  data () {
+    return {
+      mouldId: '',
+      visible: false,
+      dataForm: {},
+      operatorList: [],
+      operatorIds: [],
+      productList: [],
+      display: false,
+      workFlowData: {
+        nodeList: [],
+        lineList: []
+      },
+      // 是否点击了流程图保存按钮
+      clickFlowSave: false,
+      datas: {},
+      dataRule: {
+        mouldName: [
+          { required: true, message: '请输入模板名称', trigger: 'blur' }
+        ]
+      },
+      dataRule1: {
+        operatorIds: [
+          { required: true, message: '操作人员不能为空', trigger: 'change' }
+        ]
+      }
+    }
+  },
+  mounted () {
+    this.visible = true
+  },
+  methods: {
+    onChose () {
+      this.$emit('onChose')
+    },
+    // 初始化表单
+    async init (id, prodCode, disable) {
+      console.log(prodCode)
+      this.visible = true
+      this.display = disable
+      this.nodeList = []
+      this.linkList = []
+      this.mouldId = id
+      this.dataForm.prodCode = prodCode
+
+      await getProdInfoById(id).then(async ({ data }) => {
+        if (data && data.code === '200') {
+          this.dataForm = {
+            ...this.dataForm
+          }
+          // 流程图展示
+          this.workFlowData = {
+            nodeList: data.data.nodeList,
+            lineList: data.data.lineList
+          }
+        }
+      })
+    },
+    handleClose () {
+      this.$emit('close')
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+/deep/ .my-row .super-flow__node {
+  width: 180px;
+  height: 80px;
+}
+</style>

+ 206 - 0
src/views/modules/trace/product-list.vue

@@ -0,0 +1,206 @@
+<!-- 产品追溯列表 -->
+<template>
+  <div class="product-list">
+    <div class="my-title" v-if="!detailsVisible">产品追溯</div>
+    <template v-if="!detailsVisible">
+      <el-table
+        :data="dataList"
+        border
+        v-loading="dataListLoading"
+        style="width: 100%;">
+        <el-table-column
+          label="序号"
+          type="index"
+          width="50"
+          align="center">
+        </el-table-column>
+        <el-table-column
+          prop="productName"
+          header-align="center"
+          align="center"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="产品名称">
+        </el-table-column>
+        <el-table-column
+          prop="prodCode"
+          header-align="center"
+          align="center"
+          min-width="100"
+          :show-tooltip-when-overflow="true"
+          label="产品编号">
+        </el-table-column>
+        <el-table-column
+          prop="orderCode"
+          header-align="center"
+          align="center"
+          min-width="140"
+          :show-tooltip-when-overflow="true"
+          label="订单编号">
+        </el-table-column>
+        <el-table-column
+          prop="customerName"
+          header-align="center"
+          align="center"
+          min-width="160"
+          :show-tooltip-when-overflow="true"
+          label="客户名称">
+        </el-table-column>
+        <el-table-column
+          prop="state"
+          header-align="center"
+          align="center"
+          label="状态">
+          <template slot-scope="scope">
+            <span>{{scope.row.state?optionsState[Number(scope.row.state) - 3].value:''}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          fixed="right"
+          header-align="center"
+          align="center"
+          width="150"
+          label="操作">
+          <template slot-scope="scope">
+            <el-button v-if="isAuth('trace:search:prod:detail')" type="text" size="small" @click="detail(scope.row.id, scope.row.prodCode, true)">查看</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        @size-change="sizeChangeHandle"
+        @current-change="currentChangeHandle"
+        :current-page="pageIndex"
+        :page-sizes="[10, 20, 50, 100]"
+        :page-size="pageSize"
+        :total="totalPage"
+        layout="total, sizes, prev, pager, next, jumper">
+      </el-pagination>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="onChose">返回</el-button>
+      </span>
+    </template>
+    <!-- 弹窗, 查看 -->
+    <detail v-if="detailsVisible" ref="details" @onChose="onChildClose"/>
+  </div>
+</template>
+
+<script>
+  import Detail from './product-detail'
+  import { getProductByCode } from '@/api/trace'
+  export default {
+    name: 'product-list',
+    components: {Detail},
+    props: {
+      // 默认第一页的数据
+      defaultList: {
+        type: Array,
+        default: []
+      },
+      // 订单编码
+      productCode: {
+        type: String,
+        default: ''
+      },
+      defaultTotalPage: {
+        type: [Number, String],
+        default: 0
+      }
+    },
+    data () {
+      return {
+        detailsVisible: false,
+        dataForm: {},
+        dataList: this.defaultList,
+        pageIndex: 1,
+        pageSize: 10,
+        totalPage: Number(this.defaultTotalPage),
+        dataListLoading: false,
+        dataListSelections: [],
+        // 状态:1:待排产,2:生产中,3:生产完成
+        optionsState: [
+          {
+            code: '1',
+            value: '待排产'
+          },
+          {
+            code: '2',
+            value: '生产中'
+          },
+          {
+            code: '3',
+            value: '生产完成'
+          }
+        ]
+      }
+    },
+    created () {
+    },
+    methods: {
+      onChose () {
+        this.$emit('onChose')
+      },
+      onChildClose () {
+        this.detailsVisible = false
+      },
+      // 查询
+      queryPage () {
+        this.pageIndex = 1
+        this.getDataList()
+      },
+      // 获取数据列表
+      getDataList () {
+        this.dataListLoading = true
+        let params = {
+          'current': this.pageIndex,
+          'size': this.pageSize,
+          'prodCode': this.productCode
+        }
+        getProductByCode(params).then(({data}) => {
+          if (data && data.code === '200') {
+            this.dataList = data.data.records
+            this.totalPage = Number(data.data.total)
+          } else {
+            this.dataList = []
+            this.totalPage = 0
+          }
+          console.log('monitor')
+          this.dataListLoading = false
+        })
+      },
+      // 每页数
+      sizeChangeHandle (val) {
+        this.pageSize = val
+        this.pageIndex = 1
+        this.getDataList()
+      },
+      // 当前页
+      currentChangeHandle (val) {
+        this.pageIndex = val
+        this.getDataList()
+      },
+      // 多选
+      selectionChangeHandle (val) {
+        this.dataListSelections = val
+      },
+      // 新增 / 修改
+      detail (id, prodCode, disable) {
+        this.detailsVisible = true
+        this.$nextTick(() => {
+          this.$refs.details.init(id, prodCode, disable)
+        })
+      },
+      // 创建新产品
+      createNewProduct () {
+        this.$message.warning('功能暂未开放')
+      },
+      closeDialogEvent () {
+        this.detailsVisible = false
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>
+

+ 60 - 22
src/views/modules/trace/search.vue

@@ -1,56 +1,94 @@
 <!-- 追溯中心 -->
 <template>
   <div class="trace">
-    <div style="margin-top: 15px;">
-      <el-input :placeholder="codePlaceHoler" v-model="code" class="input-with-select">
-        <el-select v-model="type" slot="prepend" placeholder="请选择">
-          <el-option label="订单" value="1"></el-option>
-          <el-option label="产品" value="2"></el-option>
-        </el-select>
-        <el-button slot="append" type="primary" @click="search()">追溯</el-button>
-      </el-input>
-    </div>
+    <template v-if="!orderListVisible && !productListVisible">
+      <div style="margin-top: 15px;">
+        <el-input :placeholder="codePlaceHoler" v-model.trim="code" class="input-with-select">
+          <el-select v-model="type" slot="prepend" placeholder="请选择">
+            <el-option label="订单" value="1"></el-option>
+            <el-option label="产品" value="2"></el-option>
+          </el-select>
+          <el-button slot="append" type="primary" ref="searchBtn" :loading="searchloading" @click="search()">追溯</el-button>
+        </el-input>
+      </div>
+    </template>
     <!-- 弹窗, 新增 / 修改 -->
-    <detail v-if="detailVisible" ref="detail" @onChose="onChose"/>      
+    <order-list v-if="orderListVisible" :defaultList="defaultOrderList" :orderCode="code" :defaultTotalPage="defaultOrderTotal" ref="orderList" @onChose="onChose"/>      
+    <product-list v-if="productListVisible" :defaultList="defaultProductList" :productCode="code" :defaultTotalPage="defaultProductTotal" ref="productList" @onChose="onChose"></product-list>
   </div>
   
 </template>
 
 
 <script>
-import Detail from './order-detail'
-import { getOrderByCode, getProductById } from '@/api/trace'
+import orderList from './order-list'
+import ProductList from './product-list'
+import { getOrderByCode, getProductByCode } from '@/api/trace'
 export default {
   name: 'trace-search',
   components: {
-    Detail
+    orderList,
+    ProductList
   },
   data () {
     return {
       type: '1',
       code: '',
-      detailVisible: false
+      orderListVisible: false,
+      productListVisible: false,
+      searchloading: false,
+      defaultOrderList: [],
+      defaultOrderTotal: 0
     }
   },
   created () {
   },
   methods: {
     onChose () {
-      this.detailVisible = false
+      this.orderListVisible = false
+      this.productListVisible = false
     },
     search () {
+      if (this.code === '') {
+        this.$message.error('请输入订单/产品编码')
+        return
+      }
+      this.searchloading = true
+      let that = this
+      // 订单追溯
       if (this.type === '1') {
-        getOrderByCode(this.code).then(({data}) => {
-          console.log(data)
-          if (data && data.code === '200') {
+        let params = {orderCode: this.code}
+        getOrderByCode(params).then(({data}) => {
+          if (data && data.code === '200' && data.data) {
             console.log(data)
+            this.defaultOrderList = data.data.records
+            this.defaultOrderTotal = data.data.total
+            this.orderListVisible = true
+          } else {
+            that.$message.error(data.msg)
           }
+        }).catch(function (error) {
+          console.log(error.response.data)
+          that.$message.error('服务器异常')
+        }).then(() => {
+          this.searchloading = false
         })
-      } else if (this.type === '2') {
-        getProductById(this.code).then(({data}) => {
-          if (data && data.code === '200') {
-            console.log(data)
+      } else if (this.type === '2') { // 产品追溯
+        let params = {
+          'prodCode': this.code
+        }
+        console.log(params)
+        getProductByCode(params).then(({data}) => {
+          console.log(data)
+          if (data && data.code === '200' && data.data) {
+            this.defaultProductList = data.data.records
+            this.defaultProductTotal = data.data.total
+            this.productListVisible = true
+          } else {
+            that.$message.error(data.msg)
           }
+        }).then(() => {
+          this.searchloading = false
         })
       }
     },