2 次代碼提交 890e3a47d0 ... 01ffacc49f

作者 SHA1 備註 提交日期
  xian 01ffacc49f Merge remote-tracking branch 'origin/master' 1 年之前
  xian 26b215e48b 登录配置功能部分代码 1 年之前

+ 54 - 0
src/api/supplier/loginPagePopularizeModuleConfig.js

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+// 创建登录页面推广模块配置
+export function createLoginPagePopularizeModuleConfig(data) {
+  return request({
+    url: '/supplier/login-page-popularize-module-config/create',
+    method: 'post',
+    data: data
+  })
+}
+
+// 更新登录页面推广模块配置
+export function updateLoginPagePopularizeModuleConfig(data) {
+  return request({
+    url: '/supplier/login-page-popularize-module-config/update',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除登录页面推广模块配置
+export function deleteLoginPagePopularizeModuleConfig(id) {
+  return request({
+    url: '/supplier/login-page-popularize-module-config/delete?id=' + id,
+    method: 'delete'
+  })
+}
+
+// 获得登录页面推广模块配置
+export function getLoginPagePopularizeModuleConfig(id) {
+  return request({
+    url: '/supplier/login-page-popularize-module-config/get?id=' + id,
+    method: 'get'
+  })
+}
+
+// 获得登录页面推广模块配置分页
+export function getLoginPagePopularizeModuleConfigPage(query) {
+  return request({
+    url: '/supplier/login-page-popularize-module-config/page',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出登录页面推广模块配置 Excel
+export function exportLoginPagePopularizeModuleConfigExcel(query) {
+  return request({
+    url: '/supplier/login-page-popularize-module-config/export-excel',
+    method: 'get',
+    params: query,
+    responseType: 'blob'
+  })
+}

二進制
src/assets/images/new_text_log.png


+ 3 - 3
src/assets/styles/login.scss

@@ -16,7 +16,7 @@ $logoWidth: 417px;
 $logoHeight: 64px;
 // $logoImage: '../assets/logo/login-logo_bak.png';
 // container-content
-$contentWidth: round($W / $H * 90) * 1vw;
+$contentWidth: round($W / $H * 80) * 1vw;
 $contentHeight: round($picH / $W * 110) / 100 * ($contentWidth / 1.05);
 // $contentWidth: round($W / $H * 100) * 1vw;
 // $contentHeight: round($picH / $W * 100) / 100 * ($contentWidth / 1);
@@ -54,9 +54,9 @@ $buttonHeight: $buttonH * 1px;
   width: inherit;
   height: inherit;
   min-width: 1080px;
-  min-height: 620px;
+  min-height: 920px;
   background-color: $containerBgColor;
-  background-image: url($containerBgImage);
+  //background-image: url($containerBgImage);
   background-size: cover;
   // 定位
   position: relative;

文件差異過大導致無法顯示
+ 460 - 382
src/views/login.vue


+ 400 - 0
src/views/supplier/loginPagePopularizeModuleConfig/index.vue

@@ -0,0 +1,400 @@
+<template>
+  <div class="app-container">
+    <div>
+      <div style="font-size: 30px;margin-bottom: 10px;background: #1c84c6;padding: 10px;color: #ffffff">
+        顶部菜单栏配置
+      </div>
+      <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd(0)">添 加 项 目</el-button>
+      <div v-for="menu in loginMenuData" style="margin: 10px">
+        <div style="font-size: 22px;margin-bottom: 10px">
+          {{ menu.name }}
+        </div>
+        <!-- 操作工具栏 -->
+        <el-row :gutter="10" class="mb8">
+          <el-col :span="1.5">
+            <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd(1)">新增</el-button>
+          </el-col>
+          <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+        </el-row>
+        <!-- 列表 -->
+        <el-table v-loading="loading" :data="menu.data">
+          <el-table-column label="序号" align="center" prop="id"/>
+          <el-table-column label="名称" align="center" prop="name"/>
+          <!--        <el-table-column label="链接" align="center" prop="link"/>-->
+          <el-table-column label="排序" align="center" prop="sort"/>
+          <el-table-column label="状态" align="center" prop="status">
+            <template v-slot="scope">
+              <!--              <dict-tag :type="DICT_TYPE.COMMON_STATUS" :value="scope.row.status"/>-->
+              <el-switch
+                  v-model="scope.row.status===1"
+              >
+              </el-switch>
+            </template>
+          </el-table-column>
+          <!--          <el-table-column label="父级ID" align="center" prop="parentId"/>-->
+          <el-table-column label="创建时间" align="center" prop="createTime">
+            <template v-slot="scope">
+              <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+            </template>
+          </el-table-column>
+          <!--        <el-table-column label="类型" align="center" prop="type"/>-->
+          <!--          <el-table-column label="图片" align="center" prop="imgUrls"/>-->
+          <!--          <el-table-column label="模块摘要" align="center" prop="digest"/>-->
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+            <template v-slot="scope">
+              <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+                         v-hasPermi="['supplier:login-page-popularize-module-config:update']"
+              >编辑
+              </el-button>
+              <el-button size="mini" type="text" icon="el-icon-view"
+              >预览
+              </el-button>
+              <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+                         v-hasPermi="['supplier:login-page-popularize-module-config:delete']"
+              >删除
+              </el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+
+      <!-- 分页组件 -->
+      <!--      <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"-->
+      <!--                  @pagination="getList"-->
+      <!--      />-->
+    </div>
+
+    <div>
+      <div style="font-size: 30px;margin-bottom: 10px;background: #1c84c6;padding: 10px;color: #ffffff">
+        中部模块配置
+      </div>
+      <!-- 操作工具栏 -->
+      <el-row :gutter="10" class="mb8">
+        <el-col :span="1.5">
+          <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd(3)">新增模块</el-button>
+        </el-col>
+        <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      </el-row>
+      <!-- 列表 -->
+      <el-table v-loading="loading" :data="moduleList">
+        <el-table-column label="序号" align="center" prop="id"/>
+        <el-table-column label="模块名称" align="center" prop="name"/>
+        <el-table-column label="排序" align="center" prop="sort"/>
+        <el-table-column label="状态" align="center" prop="status">
+          <template v-slot="scope">
+            <el-switch v-model="scope.row.status===1">
+            </el-switch>
+          </template>
+        </el-table-column>
+        <el-table-column label="创建时间" align="center" prop="createTime">
+          <template v-slot="scope">
+            <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+          </template>
+        </el-table-column>
+
+        <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+          <template v-slot="scope">
+            <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row,scope.row.type)"
+            >编辑
+            </el-button>
+            <el-button size="mini" type="text" icon="el-icon-edit"
+            >预览
+            </el-button>
+            <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+            >删除
+            </el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <div style="padding: 0 15%" ref="sortableContainer">
+        <div shadow="hover" v-for="item in vModules" :key="item"
+             class="module-item"
+             :style="{height: vModuleHeight +'px'}"
+        >
+          {{ item }}
+          <div style="position: relative;text-align: center;z-index: 99999"
+               :style="{top: vModuleHeight - 80 +'px'}"
+          >
+            <el-popover placement="top" width="400" trigger="click">
+              <el-button v-for="item in moduleList">{{ item.name }}</el-button>
+              <el-button slot="reference" type="primary">选择模板</el-button>
+            </el-popover>
+          </div>
+        </div>
+      </div>
+    </div>
+    <!-- 对话框(添加 / 修改) -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="模块名称" prop="name">
+          <el-input v-model="form.name" placeholder="请输入模块名称"/>
+        </el-form-item>
+        <el-form-item label="链接" prop="link">
+          <el-input v-model="form.link" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+        <el-form-item label="排序" prop="sort">
+          <el-input v-model="form.sort" placeholder="请输入排序"/>
+        </el-form-item>
+        <el-form-item label="状态" prop="status">
+          <el-radio-group v-model="form.status">
+            <el-radio v-for="dict in this.getDictDatas(DICT_TYPE.COMMON_STATUS)"
+                      :key="dict.value" :label="dict.value"
+            >{{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="图片" prop="imgUrls">
+          <el-input v-model="form.imgUrls" placeholder="请输入图片"/>
+        </el-form-item>
+        <el-form-item label="模块摘要" prop="digest">
+          <el-input v-model="form.digest" placeholder="请输入模块摘要"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  createLoginPagePopularizeModuleConfig,
+  updateLoginPagePopularizeModuleConfig,
+  deleteLoginPagePopularizeModuleConfig,
+  getLoginPagePopularizeModuleConfig,
+  getLoginPagePopularizeModuleConfigPage,
+  exportLoginPagePopularizeModuleConfigExcel
+} from '@/api/supplier/loginPagePopularizeModuleConfig'
+import { getConfigKey } from '@/api/infra/config'
+import Sortable from 'sortablejs'
+
+export default {
+  name: 'LoginPagePopularizeModuleConfig',
+  components: {},
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 登录页面推广模块配置列表
+      list: [],
+      moduleList: [],
+      // 弹出层标题
+      title: '',
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize: 10,
+        createTime: [],
+        name: null,
+        link: null,
+        sort: null,
+        parentId: null,
+        type: null,
+        status: null,
+        imgUrls: null,
+        digest: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {},
+      loginMenuData: [],
+      sortableInstance: null,
+      vModules: [1, 2, 3, 4, 5, 6],
+      vModuleHeight: window.innerHeight * 0.35
+    }
+  },
+  watch: {},
+  mounted() {
+    //监听窗口大小变化
+    window.addEventListener('resize', this.adVModuleHeightHeight)
+    //模块拖动初始化
+    const list = this.$refs.sortableContainer
+    this.sortableInstance = new Sortable(list, {
+      group: 'shared', // 分组名称,相同组内的元素可以互相拖放
+      animation: 150, // 动画持续时间(毫秒)
+      ghostClass: 'my-sortable-ghost', // 拖动时克隆元素的附加类名
+      chosenClass: 'sortable-chosen', // 被拖动元素的附加类名
+      swap: true, // 允许元素交换位置而非直接插入
+      scroll: true, // 启用自动滚动(跟随鼠标移动滚动容器)
+      scrollSensitivity: 30, // 触发滚动的距离(像素)
+      scrollSpeed: 10, // 滚动速度(像素/秒)
+      onSort: this.handleSort // 拖放排序后的回调函数
+    })
+  },
+  beforeDestroy() {
+    if (this.sortableInstance) {
+      this.sortableInstance.destroy()
+    }
+  },
+  created() {
+    this.getList(5, 2, this.moduleList)
+    getConfigKey('login_menu').then(res => {
+      this.loginMenuData = JSON.parse(res.data)
+      this.loginMenuData.forEach(item => {
+        item.data = []
+        this.getList(item.parentId, 1, item.data)
+      })
+    })
+  },
+  methods: {
+    adVModuleHeightHeight() {
+      this.vModuleHeight = window.innerHeight * 0.35
+    },
+    // 回调函数示例
+    handleSort(event) {
+      const oldIndex = event.oldIndex
+      const newIndex = event.newIndex
+      const movedItem = this.vModules.splice(oldIndex, 1)[0] // 移除旧位置的项
+      this.vModules.splice(newIndex, 0, movedItem) // 在新位置插入项
+      this.$forceUpdate()
+      console.log(this.vModules)
+    },
+    /** 查询列表 */
+    getList(parentId, type, data) {
+      this.queryParams.parentId = parentId
+      this.queryParams.type = type
+      this.loading = true
+      // 执行查询
+      getLoginPagePopularizeModuleConfigPage(this.queryParams).then(response => {
+        response.data.list.forEach(item => {
+          data.push(item)
+        })
+        this.loading = false
+      })
+    },
+    /** 取消按钮 */
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    /** 表单重置 */
+    reset() {
+      this.form = {
+        id: undefined,
+        name: undefined,
+        link: undefined,
+        sort: undefined,
+        parentId: undefined,
+        type: undefined,
+        status: undefined,
+        imgUrls: undefined,
+        digest: undefined
+      }
+      this.resetForm('form')
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1
+      this.getList()
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm('queryForm')
+      this.handleQuery()
+    },
+    /** 新增按钮操作 */
+    handleAdd(type) {
+      this.reset()
+      this.open = true
+      this.title = '添加登录页面推广模块配置'
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row, type) {
+      this.reset()
+      const id = row.id
+      getLoginPagePopularizeModuleConfig(id).then(response => {
+        this.form = response.data
+        this.open = true
+        this.title = '修改登录页面推广模块配置'
+      })
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs['form'].validate(valid => {
+        if (!valid) {
+          return
+        }
+        // 修改的提交
+        if (this.form.id != null) {
+          updateLoginPagePopularizeModuleConfig(this.form).then(response => {
+            this.$modal.msgSuccess('修改成功')
+            this.open = false
+            this.getList()
+          })
+          return
+        }
+        // 添加的提交
+        createLoginPagePopularizeModuleConfig(this.form).then(response => {
+          this.$modal.msgSuccess('新增成功')
+          this.open = false
+          this.getList()
+        })
+      })
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const id = row.id
+      this.$modal.confirm('是否确认删除登录页面推广模块配置编号为"' + id + '"的数据项?').then(function() {
+        return deleteLoginPagePopularizeModuleConfig(id)
+      }).then(() => {
+        this.getList()
+        this.$modal.msgSuccess('删除成功')
+      }).catch(() => {
+      })
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      // 处理查询参数
+      let params = { ...this.queryParams }
+      params.pageNo = undefined
+      params.pageSize = undefined
+      this.$modal.confirm('是否确认导出所有登录页面推广模块配置数据项?').then(() => {
+        this.exportLoading = true
+        return exportLoginPagePopularizeModuleConfigExcel(params)
+      }).then(response => {
+        this.$download.excel(response, '登录页面推广模块配置.xls')
+        this.exportLoading = false
+      }).catch(() => {
+      })
+    }
+  }
+}
+</script>
+
+
+<style scoped>
+
+.sortable-chosen {
+  background: #a5dbfc;
+}
+
+.my-sortable-ghost {
+
+  background: #a5dbfc;
+
+}
+
+.module-item {
+  display: inline-block;
+  width: 30%;
+  border: 1px solid #e3e3e3;
+  border-radius: 10px;
+  margin: 10px 1.5%
+}
+
+.module-item:hover {
+  box-shadow: 0 0 5px #b6aeae;
+}
+
+</style>

+ 428 - 67
src/views/supplier/saleOrder/index.vue

@@ -1,50 +1,76 @@
 <template>
   <div class="app-container">
-
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="创建时间" prop="createTime">
-        <el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss"
-                        type="daterange"
-                        range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
-                        :default-time="['00:00:00', '23:59:59']"
-        />
-      </el-form-item>
+      <!--      <el-form-item label="客户联系方式" prop="clientelePhone">-->
+      <!--        <el-input v-model="queryParams.clientelePhone" placeholder="请输入客户联系方式" clearable-->
+      <!--                  @keyup.enter.native="handleQuery"-->
+      <!--        />-->
+      <!--      </el-form-item>-->
+      <!--      <el-form-item label="客户类型" prop="clienteleType">-->
+      <!--        <el-select v-model="queryParams.clienteleType" placeholder="请选择客户类型" clearable size="small">-->
+      <!--          <el-option label="请选择字典生成" value=""/>-->
+      <!--        </el-select>-->
+      <!--      </el-form-item>-->
+      <!--      <el-form-item label="收货地址" prop="cneeAddress">-->
+      <!--        <el-input v-model="queryParams.cneeAddress" placeholder="请输入收货地址" clearable @keyup.enter.native="handleQuery"/>-->
+      <!--      </el-form-item>-->
+      <!--      <el-form-item label="售后状态" prop="afterSale">-->
+      <!--        <el-input v-model="queryParams.afterSale" placeholder="请输入售后状态" clearable @keyup.enter.native="handleQuery"/>-->
+      <!--      </el-form-item>-->
       <el-form-item label="订单编号" prop="orderNo">
         <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery"/>
       </el-form-item>
-      <el-form-item label="订单类型" prop="orderType">
-        <el-select v-model="queryParams.orderType" placeholder="请选择订单类型" clearable size="small">
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SALE_ORDER_TYPE)"
-                     :key="dict.value" :label="dict.label" :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
       <el-form-item label="客户名称" prop="clienteleName">
         <el-input v-model="queryParams.clienteleName" placeholder="请输入客户名称" clearable
                   @keyup.enter.native="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="客户联系方式" prop="clientelePhone">
-        <el-input v-model="queryParams.clientelePhone" placeholder="请输入客户联系方式" clearable
-                  @keyup.enter.native="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="客户类型" prop="clienteleType">
-        <el-select v-model="queryParams.clienteleType" placeholder="请选择客户类型" clearable size="small">
-          <el-option label="请选择字典生成" value=""/>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="收货地址" prop="cneeAddress">
-        <el-input v-model="queryParams.cneeAddress" placeholder="请输入收货地址" clearable @keyup.enter.native="handleQuery"/>
-      </el-form-item>
       <el-form-item label="订单状态" prop="orderStatus">
         <el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable size="small">
           <el-option label="请选择字典生成" value=""/>
         </el-select>
       </el-form-item>
-      <el-form-item label="售后状态" prop="afterSale">
-        <el-input v-model="queryParams.afterSale" placeholder="请输入售后状态" clearable @keyup.enter.native="handleQuery"/>
+      <el-form-item>
+        <el-popover
+            placement="bottom"
+            width="400"
+            trigger="click"
+        >
+          <el-form-item label="订单编号" prop="orderNo">
+            <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery"/>
+          </el-form-item>
+
+          <el-form-item label="订单类型" prop="orderType">
+            <el-select v-model="queryParams.orderType" placeholder="请选择订单类型">
+              <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SALE_ORDER_TYPE)"
+                         :key="dict.value" :label="dict.label" :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="订单状态" prop="orderStatus">
+            <el-select v-model="queryParams.orderStatus" placeholder="请选择订单状态" clearable size="small">
+              <el-option label="请选择字典生成" value=""/>
+            </el-select>
+          </el-form-item>
+
+          <el-form-item label="客户名称" prop="clienteleName">
+            <el-input v-model="queryParams.clienteleName" placeholder="请输入客户名称" clearable
+                      @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+
+          <el-form-item label="客户类型" prop="clienteleType">
+            <el-select v-model="form.clienteleType" placeholder="请选择客户类型">
+              <el-option label="请选择字典生成" value=""/>
+            </el-select>
+          </el-form-item>
+
+          <el-button slot="reference">复合查询</el-button>
+
+          <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+        </el-popover>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
@@ -71,50 +97,191 @@
     </el-row>
 
     <!-- 列表 -->
-    <el-table v-loading="loading" :data="list">
+    <el-table v-loading="loading" :data="list" border
+              @expand-change="toggleExpand"
+    >
       <!--      <el-table-column label="主键id" align="center" prop="id" />-->
       <el-table-column type="expand">
         <template slot-scope="props">
-          商品信息
+          <el-table :data="props.row.goodslist" border style="margin-left: 50px">
+            <el-table-column label="商品信息" align="center" width="300">
+              <template slot-scope="scope">
+                <el-descriptions :column="1" :contentStyle="{width:'40%'}">
+                  <el-descriptions-item>
+                    <template slot="label">
+                      商品编号
+                    </template>
+                    {{ scope.row.goodsInfo.code }}
+                  </el-descriptions-item>
+                  <el-descriptions-item>
+                    <template slot="label">
+                      商品名称
+                    </template>
+                    {{ scope.row.goodsInfo.name }}
+                  </el-descriptions-item>
+                  <el-descriptions-item>
+                    <template slot="label">
+                      商品品牌
+                    </template>
+                    {{ scope.row.goodsInfo.brand }}
+                  </el-descriptions-item>
+                  <el-descriptions-item>
+                    <template slot="label">
+                      商品型号
+                    </template>
+                    {{ scope.row.goodsInfo.category }}
+                  </el-descriptions-item>
+                  <el-descriptions-item>
+                    <template slot="label">
+                      商品单价
+                    </template>
+                    {{ scope.row.goodsInfo.price }}
+                  </el-descriptions-item>
+                  <el-descriptions-item>
+                    <template slot="label">
+                      商品单位
+                    </template>
+                    {{ scope.row.goodsInfo.unit }}
+                  </el-descriptions-item>
+                </el-descriptions>
+              </template>
+            </el-table-column>
+            <!-- 商品数量 -->
+            <el-table-column label="商品数量" width="100"></el-table-column>
+
+            <!-- 成交单价 -->
+            <el-table-column label="成交单价" width="120"></el-table-column>
+
+            <!-- 成交价格 -->
+            <el-table-column label="成交价格" width="120"></el-table-column>
+
+            <!-- 收款方式 -->
+            <el-table-column label="收款方式" width="150"></el-table-column>
+
+            <!-- 收款状态 -->
+            <el-table-column label="收款状态" width="100"></el-table-column>
+
+            <!-- 发货状态 -->
+            <el-table-column label="发货状态" width="100"></el-table-column>
+
+            <!-- 发货地址 -->
+            <el-table-column label="发货地址" width="200"></el-table-column>
+
+            <!-- 发货时间 -->
+            <el-table-column label="发货时间" width="180"></el-table-column>
+
+            <!-- 发货人 -->
+            <el-table-column label="发货人" width="100"></el-table-column>
+
+          </el-table>
+        </template>
+      </el-table-column>
+      <el-table-column label="序号" align="center" width="50">
+        <template v-slot="scope">
+          <span>{{ scope.$index + 1 }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="创建时间" align="center" prop="createTime"/>
-      <el-table-column label="订单编号" align="center" prop="orderNo"/>
-      <el-table-column label="订单类型" align="center" prop="orderType">
+      <el-table-column label="订单信息" align="center">
         <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.SALE_ORDER_TYPE" :value="scope.row.orderType"/>
+          <el-descriptions :column="1" :contentStyle="{width:'40%'}">
+            <el-descriptions-item>
+              <template slot="label">
+                订单编号
+              </template>
+              {{ scope.row.orderNo }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">
+                订单类型
+              </template>
+              <dict-tag :type="DICT_TYPE.SALE_ORDER_TYPE" :value="scope.row.orderType"/>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">
+                订单状态
+              </template>
+              <dict-tag :type="DICT_TYPE.SALE_ORDER_STATUS" :value="scope.row.orderStatus"/>
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">
+                订单总金额
+              </template>
+              {{ scope.row.orderNo }}
+            </el-descriptions-item>
+          </el-descriptions>
         </template>
       </el-table-column>
       <!--      <el-table-column label="客户ID" align="center" prop="clienteleId" />-->
-      <el-table-column label="客户名称" align="center" prop="clienteleName"/>
-      <el-table-column label="客户联系方式" align="center" prop="clientelePhone"/>
-      <el-table-column label="客户类型" align="center" prop="clienteleType"/>
+      <el-table-column label="客户信息" align="center">
+        <template v-slot="scope">
+          <el-descriptions :column="1" :contentStyle="{width:'40%'}">
+            <el-descriptions-item>
+              <template slot="label">
+                <i class="el-icon-user"></i>
+                客户名称
+              </template>
+              {{ scope.row.clienteleName }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">
+                <i class="el-icon-mobile-phone"></i>
+                客户联系方式
+              </template>
+              {{ scope.row.clientelePhone }}
+            </el-descriptions-item>
+            <el-descriptions-item>
+              <template slot="label">
+                <i class="el-icon-share"></i>
+                客户类型
+              </template>
+              {{ scope.row.clienteleType }}
+            </el-descriptions-item>
+          </el-descriptions>
+        </template>
+      </el-table-column>
       <el-table-column label="收货地址" align="center" prop="cneeAddress"/>
-      <el-table-column label="订单状态" align="center" prop="orderStatus"/>
-      <el-table-column label="预计发货时间" align="center" prop="predictShipmentsTime"/>
+      <!--      <el-table-column label="订单状态" align="center" prop="orderStatus"></el-table-column>-->
+      <el-table-column label="预计发货时间" align="center" prop="predictShipmentsTime">
+        <template v-slot="scope">
+          {{ parseTime(scope.row.predictShipmentsTime, '{y}-{m}-{d}') }}
+        </template>
+      </el-table-column>
       <el-table-column label="售后状态" align="center" prop="afterSale"/>
+      <el-table-column label="订单生成时间" align="center" prop="createTime">
+        <template v-slot="scope">
+          {{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}
+        </template>
+      </el-table-column>
       <!--      <el-table-column label="商品ID" align="center" prop="goodsId" />-->
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200">
         <template v-slot="scope">
-          <el-button size="mini" type="text"
-          >操作记录
-          </el-button>
-          <el-button size="mini" type="text"
-          >售后处理
-          </el-button>
-          <el-button size="mini" type="text"
-          >评论处理
-          </el-button>
-
-          <el-button size="mini" type="text" @click="consignment(scope.row)"
-          >发货
-          </el-button>
-
-          <el-button size="mini" type="text" icon="el-icon-tickets"
-                     v-hasPermi="['supplier:sale-order:update']"
-                     @click="handleUpdate(scope.row)"
-          >详情
-          </el-button>
+          <div>
+            <el-button size="mini" type="text"
+            >操作记录
+            </el-button>
+          </div>
+          <div>
+            <el-button size="mini" type="text" @click="afterSaleTreatment(scope.row)"
+            >售后处理
+            </el-button>
+          </div>
+          <div>
+            <el-button size="mini" type="text"
+            >评论处理
+            </el-button>
+          </div>
+          <div>
+            <el-button size="mini" type="text" @click="consignment(scope.row)"
+            >发货
+            </el-button>
+          </div>
+          <div>
+            <el-button size="mini" type="text" icon="el-icon-tickets"
+                       v-hasPermi="['supplier:sale-order:update']"
+                       @click="handleUpdate(scope.row)"
+            >详情
+            </el-button>
+          </div>
           <!--          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"-->
           <!--                     v-hasPermi="['supplier:sale-order:delete']">删除</el-button>-->
         </template>
@@ -244,16 +411,171 @@
                   <el-step title="派件"></el-step>
                 </el-steps>
               </div>
-
             </el-form-item>
           </el-form>
         </div>
       </div>
-      <div>
-        <div style="font-size: 20px;color: #454545;margin-bottom: 10px;font-weight: bold">
-          售后信息
-        </div>
+      <!--      <div>-->
+      <!--        <div style="font-size: 20px;color: #454545;margin-bottom: 10px;font-weight: bold">-->
+      <!--          售后信息-->
+      <!--        </div>-->
+      <!--      </div>-->
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+    <!-- 对话框(售后工单) -->
+    <el-dialog title="售后工单" :visible.sync="isOpenAfterSale" width="700px" v-dialogDrag append-to-body>
+      <el-row :gutter="10">
+        <el-form ref="form" :model="formDetail" label-width="105px">
+          <el-col :span="11">
+            <el-form-item label="订单编号" prop="orderNo">
+              <el-input v-model="formDetail.orderNo" disabled/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="1">
+            <el-button size="mini" type="text" icon="el-icon-copy-document"></el-button>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="客户名称" prop="orderCode">
+              <el-input v-model="formDetail.clienteleName" disabled/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="售后类型" prop="category">
+              <el-select v-model="formDetail.category" disabled>
+                <el-option v-for="dict in this.getDictDatas(DICT_TYPE.AFTERSALE_CATEGORY)" :key="parseInt(dict.value)"
+                           :label="dict.label" :value="parseInt(dict.value)"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="期望处理方式" prop="state">
+              <el-select v-model="formDetail.state" disabled>
+                <el-option v-for="dict in this.getDictDatas(DICT_TYPE.AFTERSALE_STATE)" :key="parseInt(dict.value)"
+                           :label="dict.label" :value="parseInt(dict.value)"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="问题描述" prop="questionDescriptive">
+              <el-input type="textarea" v-model="formDetail.questionDescriptive" disabled/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="问题照片" prop="questionPicture">
+              <el-input v-model="formDetail.questionPicture" disabled/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="处理建议" prop="processRecommendation">
+              <el-input type="textarea" v-model="formDetail.processRecommendation"/>
+            </el-form-item>
+          </el-col>
+        </el-form>
+      </el-row>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
       </div>
+    </el-dialog>
+    <!-- 对话框(发货) -->
+    <el-dialog title="发货提交" :visible.sync="isOpenShipments" width="850px" v-dialogDrag append-to-body>
+      <el-form ref="form" :model="formDetail2" :rules="rules" label-width="120px">
+        <el-row>
+          <!-- 发货单号 -->
+          <el-col :span="12">
+            <el-form-item label="发货单号" prop="shipmentsNo">
+              <el-input v-model="formDetail2.shipmentsNo" placeholder="请输入发货单号"/>
+            </el-form-item>
+          </el-col>
+
+          <!-- 订单编号 -->
+          <el-col :span="12">
+            <el-form-item label="订单编号" prop="orderNo">
+              <el-input v-model="formDetail2.orderNo" placeholder="请输入订单编号" disabled/>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="客户名称" prop="clienteleName">
+              <el-input v-model="formDetail2.clienteleName" disabled/>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="客户联系方式" prop="clientelePhone">
+              <el-input v-model="formDetail2.clientelePhone" disabled/>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="承运单位" prop="sellerInfo">
+              <el-input v-model="formDetail2.sellerInfo" placeholder="请输入卖家信息"/>
+            </el-form-item>
+          </el-col>
+
+          <!-- 物流订单号 -->
+          <el-col :span="12">
+            <el-form-item label="运单编号" prop="logisticsOrderNo">
+              <el-input v-model="formDetail2.logisticsOrderNo" placeholder="请输入物流订单号"/>
+            </el-form-item>
+          </el-col>
+
+          <!-- 发货状态 -->
+          <el-col :span="12">
+            <el-form-item label="发货状态" prop="shipmentsStatus">
+              <el-select v-model="formDetail2.shipmentsStatus" placeholder="请选择发货状态">
+                <el-option
+                    v-for="dict in this.getDictDatas(DICT_TYPE.SHIPMENTS_STATUS)"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+
+          <!-- 发货地址 -->
+          <el-col :span="24">
+            <el-form-item label="发货地址" prop="cneeAddress">
+              <el-input v-model="formDetail2.shipmentsStore" placeholder="请输入收货地址" type="textarea"/>
+            </el-form-item>
+          </el-col>
+
+          <!-- 客户地址 -->
+          <el-col :span="24">
+            <el-form-item label="客户地址" prop="cneeAddress">
+              <el-input v-model="formDetail2.cneeAddress" placeholder="请输入客户地址" type="textarea"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <div style="margin-bottom: 20px;margin-left: 50px">
+          <el-table v-loading="loading" :data="list">
+            <el-table-column label="商品编号" align="center" prop="code"/>
+            <el-table-column label="商品名称" align="center" prop="name"/>
+            <el-table-column label="商品品牌" align="center" prop="brand"/>
+            <el-table-column label="商品型号" align="center" prop="model"/>
+            <el-table-column label="单位" align="center" prop="unit"/>
+            <el-table-column label="成交单价" align="center" prop="marketPrice"/>
+            <el-table-column label="应发数量" align="center" prop="num"/>
+            <el-table-column label="实发数量" align="center" prop="num"/>
+            <el-table-column label="操作" align="center">
+              <template v-slot="scope">
+                <el-button size="mini" type="text"
+                >删除
+                </el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="formDetail2.remark" placeholder="请输入备注" type="textarea"/>
+        </el-form-item>
+      </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
         <el-button @click="cancel">取 消</el-button>
@@ -263,6 +585,10 @@
 </template>
 
 <script>
+import {
+  getGoods
+} from '@/api/supplier/goods'
+
 import {
   createSaleOrder,
   updateSaleOrder,
@@ -289,10 +615,13 @@ export default {
       total: 0,
       // 已售订单列表
       list: [],
+      goodsMap: new Map(),
       // 弹出层标题
       title: '',
       // 是否显示弹出层
       open: false,
+      isOpenAfterSale: false,
+      isOpenShipments: false,
       // 查询参数
       queryParams: {
         pageNo: 1,
@@ -312,23 +641,51 @@ export default {
       },
       // 表单参数
       form: {},
+      formDetail: {},
+      formDetail2: {},
       // 表单校验
       rules: {}
     }
   },
+  watch: {
+    // 'list': {
+    //   handler: function(newValue) {
+    //     console.log(newValue)
+    //   },
+    //   deep: true
+    // }
+  },
   created() {
     this.getList()
   },
   methods: {
+
+    toggleExpand(row, expandedRows) {
+      getGoods(row.goodsId).then(res => {
+        row.goodslist.splice(0, 1, {
+          goodsInfo: res.data,
+          id: 'update'
+        })
+      })
+    },
+    afterSaleTreatment(row) {
+      this.isOpenAfterSale = true
+      this.formDetail = row
+    },
     //发货
     consignment(row) {
-
+      this.isOpenShipments = true
+      this.formDetail2 = row
     },
     /** 查询列表 */
     getList() {
       this.loading = true
       // 执行查询
       getSaleOrderPage(this.queryParams).then(response => {
+        response.data.list.forEach(item => {
+          item.goodslist = []
+          item.goodslist.push({})
+        })
         this.list = response.data.list
         this.total = response.data.total
         this.loading = false
@@ -337,6 +694,8 @@ export default {
     /** 取消按钮 */
     cancel() {
       this.open = false
+      this.isOpenShipments = false
+      this.isOpenAfterSale = false
       this.reset()
     },
     /** 表单重置 */
@@ -355,6 +714,8 @@ export default {
         afterSale: undefined,
         goodsId: undefined
       }
+      this.formDetail = {}
+      this.formDetail2 = {}
       this.resetForm('form')
     },
     /** 搜索按钮操作 */

+ 97 - 8
src/views/supplier/seek/seekOrder.vue

@@ -1,5 +1,65 @@
 <template>
+
   <div style="padding: 20px">
+
+    <div>
+      <!-- 搜索工作栏 -->
+      <el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
+        <el-form-item label="标题" prop="title">
+          <el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter.native="handleQuery"/>
+        </el-form-item>
+        <el-form-item label="收货地址" prop="cneeAddress">
+          <el-input v-model="queryParams.cneeAddress" placeholder="请输入收货地址" clearable
+                    @keyup.enter.native="handleQuery"
+          />
+        </el-form-item>
+        <el-form-item label="客户名称" prop="clienteleName">
+          <el-input v-model="queryParams.clienteleName" placeholder="请输入采购数量" clearable
+                    @keyup.enter.native="handleQuery"
+          />
+        </el-form-item>
+        <el-form-item>
+          <el-popover
+              placement="bottom"
+              width="400"
+              trigger="click"
+          >
+            <el-form-item label="标题" prop="title">
+              <el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter.native="handleQuery"/>
+            </el-form-item>
+            <el-form-item label="收货地址" prop="cneeAddress">
+              <el-input v-model="queryParams.cneeAddress" placeholder="请输入收货地址" clearable
+                        @keyup.enter.native="handleQuery"
+              />
+            </el-form-item>
+            <el-form-item label="客户名称" prop="clienteleName">
+              <el-input v-model="queryParams.clienteleName" placeholder="请输入采购数量" clearable
+                        @keyup.enter.native="handleQuery"
+              />
+            </el-form-item>
+            <el-form-item label="期望到货时间" prop="expectationReceiptOfGoodsTime">
+              <el-date-picker v-model="queryParams.expectationReceiptOfGoodsTime" style="width: 240px"
+                              value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
+                              range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
+                              :default-time="['00:00:00', '23:59:59']"
+              />
+            </el-form-item>
+            <el-form-item label="报价剩余天数" prop="quoteRemainDays">
+              <el-input v-model="queryParams.quoteRemainDays" placeholder="请输入剩余天数" clearable
+                        @keyup.enter.native="handleQuery"
+              />
+            </el-form-item>
+            <el-button slot="reference">复合查询</el-button>
+
+            <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+          </el-popover>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+          <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
     <div v-for="item in list"
          style="display: inline-block;width: 385px;padding: 10px;position: relative"
     >
@@ -29,7 +89,7 @@
           </el-row>
           <el-row :gutter="10">
             <el-col :span="12">
-              期望到货时间:{{ parseTime(item.expectationReceiptOfGoodsTime, '{y}-{m}-{d}')}}
+              期望到货时间:{{ parseTime(item.expectationReceiptOfGoodsTime, '{y}-{m}-{d}') }}
             </el-col>
             <el-col :span="12">
               报价剩余天数:{{ item.quoteRemainDays }}天
@@ -57,11 +117,22 @@
 
     </el-dialog>
 
-    <el-dialog title="提交报价" :visible.sync="showTow" width="650px" v-dialogDrag append-to-body>
-      <el-form ref="form" :model="form" label-width="80px">
+    <el-dialog title="采购报价" :visible.sync="showTow" width="850px" v-dialogDrag append-to-body>
+      <el-form ref="form" :model="form">
         <el-form-item label="采购标题" prop="shipmentsAddress">
-          <el-input v-model="title" type="textarea" placeholder="请输入内容" dis/>
+          <el-input v-model="title" type="textarea" placeholder="请输入内容" disabled/>
         </el-form-item>
+        <div style="margin-bottom: 20px">
+          <el-table  border >
+            <el-table-column label="采购信息" align="center" prop="code"/>
+            <el-table-column label="采购单位信息" align="center" prop="name"/>
+            <el-table-column label="其他备注" align="center" prop="brand"/>
+            <el-table-column label="图片" align="center" prop="model"/>
+            <el-table-column label="报价单价(元)" align="center" prop="unit"/>
+            <el-table-column label="报价总金额" align="center" prop="marketPrice"/>
+            <el-table-column label="报价备注" align="center" prop="num"/>
+          </el-table>
+        </div>
         <el-form-item label="供应周期" prop="provisionPeriod">
           <el-select v-model="form.provisionPeriod" placeholder="请选择供应周期">
             <el-option v-for="dict in this.getDictDatas(DICT_TYPE.PROVISION_PERIOD)"
@@ -82,9 +153,9 @@
                           placeholder="选择预计送达时间"
           />
         </el-form-item>
-<!--        <el-form-item label="采购商品ID" prop="purchaseGoodsId">-->
-<!--          <el-input v-model="form.purchaseGoodsId" placeholder="请输入采购商品ID"/>-->
-<!--        </el-form-item>-->
+        <!--        <el-form-item label="采购商品ID" prop="purchaseGoodsId">-->
+        <!--          <el-input v-model="form.purchaseGoodsId" placeholder="请输入采购商品ID"/>-->
+        <!--        </el-form-item>-->
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -109,7 +180,15 @@ export default {
       title: '',
       queryParams: {
         pageNo: 1,
-        pageSize: 100
+        pageSize: 100,
+        title: null,
+        browseNum: null,
+        quoteNum: null,
+        quoteRemainDays: null,
+        cneeAddress: null,
+        purchaseNum: null,
+        purchaseUnit: null,
+        expectationReceiptOfGoodsTime: []
       }
     }
   },
@@ -127,6 +206,16 @@ export default {
         this.loading = false
       })
     },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1
+      this.getList()
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm('queryForm')
+      this.handleQuery()
+    },
     demandDetails(row) {
       this.showOne = true
     },

+ 266 - 165
src/views/supplier/shipmentsManage/index.vue

@@ -3,51 +3,52 @@
 
     <!-- 搜索工作栏 -->
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="创建时间" prop="createTime">
-        <el-date-picker v-model="queryParams.createTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
-                        range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" />
-      </el-form-item>
       <el-form-item label="发货单号" prop="shipmentsNo">
         <el-input v-model="queryParams.shipmentsNo" placeholder="请输入发货单号" clearable @keyup.enter.native="handleQuery"/>
       </el-form-item>
       <el-form-item label="订单编号" prop="orderNo">
         <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery"/>
       </el-form-item>
-      <el-form-item label="订单ID" prop="orderId">
-        <el-input v-model="queryParams.orderId" placeholder="请输入订单ID" clearable @keyup.enter.native="handleQuery"/>
-      </el-form-item>
-      <el-form-item label="发货状态" prop="shipmentsStatus">
-        <el-select v-model="queryParams.shipmentsStatus" placeholder="请选择发货状态" clearable size="small">
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SHIPMENTS_STATUS)"
-                       :key="dict.value" :label="dict.label" :value="dict.value"/>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="收货地址" prop="cneeAddress">
-        <el-input v-model="queryParams.cneeAddress" placeholder="请输入收货地址" clearable @keyup.enter.native="handleQuery"/>
-      </el-form-item>
-      <el-form-item label="卖家ID" prop="sellerId">
-        <el-input v-model="queryParams.sellerId" placeholder="请输入卖家ID" clearable @keyup.enter.native="handleQuery"/>
-      </el-form-item>
       <el-form-item label="卖家信息" prop="sellerInfo">
         <el-input v-model="queryParams.sellerInfo" placeholder="请输入卖家信息" clearable @keyup.enter.native="handleQuery"/>
       </el-form-item>
-      <el-form-item label="发货店铺" prop="shipmentsStore">
-        <el-input v-model="queryParams.shipmentsStore" placeholder="请输入发货店铺" clearable @keyup.enter.native="handleQuery"/>
-      </el-form-item>
-      <el-form-item label="配送方式" prop="deliveryMode">
-        <el-select v-model="queryParams.deliveryMode" placeholder="请选择配送方式" clearable size="small">
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.DELIVERY_MODE)"
-                       :key="dict.value" :label="dict.label" :value="dict.value"/>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="物流状态" prop="logisticsStutas">
-        <el-select v-model="queryParams.logisticsStutas" placeholder="请选择物流状态" clearable size="small">
-          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.LOGISTICS_STUTAS)"
-                       :key="dict.value" :label="dict.label" :value="dict.value"/>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="物流订单号" prop="logisticsOrderNo">
-        <el-input v-model="queryParams.logisticsOrderNo" placeholder="请输入物流订单号" clearable @keyup.enter.native="handleQuery"/>
+      <el-form-item>
+        <el-popover
+            placement="bottom"
+            width="400"
+            trigger="click"
+        >
+          <el-form-item label="发货单号" prop="shipmentsNo">
+            <el-input v-model="queryParams.shipmentsNo" placeholder="请输入发货单号" clearable
+                      @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="订单编号" prop="orderNo">
+            <el-input v-model="queryParams.orderNo" placeholder="请输入订单编号" clearable @keyup.enter.native="handleQuery"/>
+          </el-form-item>
+          <el-form-item label="卖家信息" prop="sellerInfo">
+            <el-input v-model="queryParams.sellerInfo" placeholder="请输入卖家信息" clearable
+                      @keyup.enter.native="handleQuery"
+            />
+          </el-form-item>
+          <el-form-item label="发货状态" prop="shipmentsStatus">
+            <el-select v-model="queryParams.shipmentsStatus" placeholder="请选择发货状态" clearable size="small">
+              <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SHIPMENTS_STATUS)"
+                         :key="dict.value" :label="dict.label" :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="物流状态" prop="logisticsStutas">
+            <el-select v-model="queryParams.logisticsStutas" placeholder="请选择物流状态" clearable size="small">
+              <el-option v-for="dict in this.getDictDatas(DICT_TYPE.LOGISTICS_STUTAS)"
+                         :key="dict.value" :label="dict.label" :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+          <el-button slot="reference">复合查询</el-button>
+
+          <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
+        </el-popover>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
@@ -59,103 +60,175 @@
     <el-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
-                   v-hasPermi="['supplier:shipments-manage:create']">新增</el-button>
+                   v-hasPermi="['supplier:shipments-manage:create']"
+        >新增
+        </el-button>
       </el-col>
       <el-col :span="1.5">
-        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
-                   v-hasPermi="['supplier:shipments-manage:export']">导出</el-button>
+        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
+                   :loading="exportLoading"
+                   v-hasPermi="['supplier:shipments-manage:export']"
+        >导出
+        </el-button>
       </el-col>
       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <!-- 列表 -->
-    <el-table v-loading="loading" :data="list">
-      <el-table-column label="主键id" align="center" prop="id" />
-      <el-table-column label="创建时间" align="center" prop="createTime" />
-      <el-table-column label="发货单号" align="center" prop="shipmentsNo" />
-      <el-table-column label="订单编号" align="center" prop="orderNo" />
-      <el-table-column label="订单ID" align="center" prop="orderId" />
+    <el-table v-loading="loading" :data="list" border
+              @expand-change="toggleExpand"
+    >
+      <!--      <el-table-column label="主键id" align="center" prop="id"/>-->
+      <!--      <el-table-column label="创建时间" align="center" prop="createTime"/>-->
+      <el-table-column type="expand">
+        <template slot-scope="props">
+          <el-table :data="props.row.goodslist" border style="margin-left: 50px">
+            <el-table-column label="商品编号" align="center" prop="code"/>
+            <el-table-column label="商品名称" align="center" prop="name"/>
+            <el-table-column label="商品品牌" align="center" prop="brand"/>
+            <el-table-column label="商品型号" align="center" prop="model"/>
+            <el-table-column label="单位" align="center" prop="unit"/>
+            <el-table-column label="成交单价" align="center" prop="marketPrice"/>
+            <el-table-column label="发货数量" align="center" prop="num"/>
+          </el-table>
+        </template>
+      </el-table-column>
+      <el-table-column label="发货单号" align="center" prop="shipmentsNo"/>
+      <el-table-column label="订单编号" align="center" prop="orderNo"/>
+      <!--      <el-table-column label="订单ID" align="center" prop="orderId"/>-->
       <el-table-column label="发货状态" align="center" prop="shipmentsStatus">
         <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.SHIPMENTS_STATUS" :value="scope.row.shipmentsStatus" />
+          <dict-tag :type="DICT_TYPE.SHIPMENTS_STATUS" :value="scope.row.shipmentsStatus"/>
         </template>
       </el-table-column>
-      <el-table-column label="收货地址" align="center" prop="cneeAddress" />
-      <el-table-column label="卖家ID" align="center" prop="sellerId" />
-      <el-table-column label="卖家信息" align="center" prop="sellerInfo" />
-      <el-table-column label="发货店铺" align="center" prop="shipmentsStore" />
+      <el-table-column label="收货地址" align="center" prop="cneeAddress"/>
+      <!--      <el-table-column label="卖家ID" align="center" prop="sellerId"/>-->
+      <el-table-column label="卖家信息" align="center" prop="sellerInfo"/>
+      <el-table-column label="发货店铺" align="center" prop="shipmentsStore"/>
       <el-table-column label="配送方式" align="center" prop="deliveryMode">
         <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.DELIVERY_MODE" :value="scope.row.deliveryMode" />
+          <dict-tag :type="DICT_TYPE.DELIVERY_MODE" :value="scope.row.deliveryMode"/>
         </template>
       </el-table-column>
       <el-table-column label="物流状态" align="center" prop="logisticsStutas">
         <template v-slot="scope">
-          <dict-tag :type="DICT_TYPE.LOGISTICS_STUTAS" :value="scope.row.logisticsStutas" />
+          <dict-tag :type="DICT_TYPE.LOGISTICS_STUTAS" :value="scope.row.logisticsStutas"/>
         </template>
       </el-table-column>
-      <el-table-column label="物流信息" align="center" prop="logisticsInfo" />
-      <el-table-column label="物流订单号" align="center" prop="logisticsOrderNo" />
+
+      <el-table-column label="操作员" align="center" prop="creator"/>
+      <!--      <el-table-column label="物流信息" align="center" prop="logisticsInfo"/>-->
+      <!--      <el-table-column label="物流订单号" align="center" prop="logisticsOrderNo"/>-->
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template v-slot="scope">
           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
-                     v-hasPermi="['supplier:shipments-manage:update']">修改</el-button>
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
-                     v-hasPermi="['supplier:shipments-manage:delete']">删除</el-button>
+                     v-hasPermi="['supplier:shipments-manage:update']"
+          >详情
+          </el-button>
+          <!--          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"-->
+          <!--                     v-hasPermi="['supplier:shipments-manage:delete']"-->
+          <!--          >删除-->
+          <!--          </el-button>-->
         </template>
       </el-table-column>
     </el-table>
     <!-- 分页组件 -->
     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
-                @pagination="getList"/>
+                @pagination="getList"
+    />
 
     <!-- 对话框(添加 / 修改) -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="发货单号" prop="shipmentsNo">
-          <el-input v-model="form.shipmentsNo" placeholder="请输入发货单号" />
-        </el-form-item>
-        <el-form-item label="订单编号" prop="orderNo">
-          <el-input v-model="form.orderNo" placeholder="请输入订单编号" />
-        </el-form-item>
-        <el-form-item label="订单ID" prop="orderId">
-          <el-input v-model="form.orderId" placeholder="请输入订单ID" />
-        </el-form-item>
-        <el-form-item label="发货状态" prop="shipmentsStatus">
-          <el-select v-model="form.shipmentsStatus" placeholder="请选择发货状态">
-            <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SHIPMENTS_STATUS)"
-                       :key="dict.value" :label="dict.label" :value="dict.value" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="收货地址" prop="cneeAddress">
-          <el-input v-model="form.cneeAddress" placeholder="请输入收货地址" />
-        </el-form-item>
-        <el-form-item label="卖家ID" prop="sellerId">
-          <el-input v-model="form.sellerId" placeholder="请输入卖家ID" />
-        </el-form-item>
-        <el-form-item label="卖家信息" prop="sellerInfo">
-          <el-input v-model="form.sellerInfo" placeholder="请输入卖家信息" />
-        </el-form-item>
-        <el-form-item label="发货店铺" prop="shipmentsStore">
-          <el-input v-model="form.shipmentsStore" placeholder="请输入发货店铺" />
-        </el-form-item>
-        <el-form-item label="配送方式" prop="deliveryMode">
-          <el-select v-model="form.deliveryMode" placeholder="请选择配送方式">
-            <el-option v-for="dict in this.getDictDatas(DICT_TYPE.DELIVERY_MODE)"
-                       :key="dict.value" :label="dict.label" :value="dict.value" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="物流状态" prop="logisticsStutas">
-          <el-select v-model="form.logisticsStutas" placeholder="请选择物流状态">
-            <el-option v-for="dict in this.getDictDatas(DICT_TYPE.LOGISTICS_STUTAS)"
-                       :key="dict.value" :label="dict.label" :value="dict.value" />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="物流信息" prop="logisticsInfo">
-          <el-input v-model="form.logisticsInfo" type="textarea" placeholder="请输入内容" />
-        </el-form-item>
-        <el-form-item label="物流订单号" prop="logisticsOrderNo">
-          <el-input v-model="form.logisticsOrderNo" placeholder="请输入物流订单号" />
+    <el-dialog :title="title" :visible.sync="open" width="850px" v-dialogDrag append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+        <el-row>
+          <!-- 发货单号 -->
+          <el-col :span="12">
+            <el-form-item label="发货单号" prop="shipmentsNo">
+              <el-input v-model="form.shipmentsNo" placeholder="请输入发货单号"/>
+            </el-form-item>
+          </el-col>
+
+          <!-- 订单编号 -->
+          <el-col :span="12">
+            <el-form-item label="订单编号" prop="orderNo">
+              <el-input v-model="form.orderNo" placeholder="请输入订单编号" disabled/>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="客户名称" prop="clienteleName">
+              <el-input v-model="form.clienteleName" disabled/>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="客户联系方式" prop="clientelePhone">
+              <el-input v-model="form.clientelePhone" disabled/>
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="12">
+            <el-form-item label="承运单位" prop="sellerInfo">
+              <el-input v-model="form.sellerInfo" placeholder="请输入卖家信息"/>
+            </el-form-item>
+          </el-col>
+
+          <!-- 物流订单号 -->
+          <el-col :span="12">
+            <el-form-item label="运单编号" prop="logisticsOrderNo">
+              <el-input v-model="form.logisticsOrderNo" placeholder="请输入物流订单号"/>
+            </el-form-item>
+          </el-col>
+
+          <!-- 发货状态 -->
+          <el-col :span="12">
+            <el-form-item label="发货状态" prop="shipmentsStatus">
+              <el-select v-model="form.shipmentsStatus" placeholder="请选择发货状态">
+                <el-option
+                    v-for="dict in this.getDictDatas(DICT_TYPE.SHIPMENTS_STATUS)"
+                    :key="dict.value"
+                    :label="dict.label"
+                    :value="dict.value"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+
+          <!-- 发货地址 -->
+          <el-col :span="24">
+            <el-form-item label="发货地址" prop="cneeAddress">
+              <el-input v-model="form.shipmentsStore" placeholder="请输入收货地址" type="textarea"/>
+            </el-form-item>
+          </el-col>
+
+          <!-- 客户地址 -->
+          <el-col :span="24">
+            <el-form-item label="客户地址" prop="cneeAddress">
+              <el-input v-model="form.cneeAddress" placeholder="请输入客户地址" type="textarea"/>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <div style="margin-bottom: 20px;margin-left: 50px">
+          <el-table v-loading="loading" :data="goodslist">
+            <el-table-column label="商品编号" align="center" prop="code"/>
+            <el-table-column label="商品名称" align="center" prop="name"/>
+            <el-table-column label="商品品牌" align="center" prop="brand"/>
+            <el-table-column label="商品型号" align="center" prop="model"/>
+            <el-table-column label="单位" align="center" prop="unit"/>
+            <el-table-column label="成交单价" align="center" prop="marketPrice"/>
+            <el-table-column label="应发数量" align="center" prop="num"/>
+            <el-table-column label="实发数量" align="center" prop="num"/>
+            <el-table-column label="操作" align="center">
+              <template v-slot="scope">
+                <el-button size="mini" type="text"
+                >删除
+                </el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" placeholder="请输入备注" type="textarea"/>
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -167,12 +240,22 @@
 </template>
 
 <script>
-import { createShipmentsManage, updateShipmentsManage, deleteShipmentsManage, getShipmentsManage, getShipmentsManagePage, exportShipmentsManageExcel } from "@/api/supplier/shipmentsManage";
+import {
+  createShipmentsManage,
+  updateShipmentsManage,
+  deleteShipmentsManage,
+  getShipmentsManage,
+  getShipmentsManagePage,
+  exportShipmentsManageExcel
+} from '@/api/supplier/shipmentsManage'
+import {
+  getSaleOrder
+} from '@/api/supplier/saleOrder'
+import { getGoods } from '@/api/supplier/goods'
 
 export default {
-  name: "ShipmentsManage",
-  components: {
-  },
+  name: 'ShipmentsManage',
+  components: {},
   data() {
     return {
       // 遮罩层
@@ -185,8 +268,9 @@ export default {
       total: 0,
       // 发货信息管理列表
       list: [],
+      goodslist: [],
       // 弹出层标题
-      title: "",
+      title: '',
       // 是否显示弹出层
       open: false,
       // 查询参数
@@ -205,33 +289,43 @@ export default {
         deliveryMode: null,
         logisticsStutas: null,
         logisticsInfo: null,
-        logisticsOrderNo: null,
+        logisticsOrderNo: null
       },
       // 表单参数
       form: {},
       // 表单校验
-      rules: {
-      }
-    };
+      rules: {}
+    }
   },
   created() {
-    this.getList();
+    this.getList()
   },
   methods: {
+    toggleExpand(row, expandedRows) {
+      getSaleOrder(row.orderId).then(res => {
+        getGoods(res.data.goodsId).then(res => {
+          row.goodslist.splice(0, 1, res.data)
+        })
+      })
+    },
     /** 查询列表 */
     getList() {
-      this.loading = true;
+      this.loading = true
       // 执行查询
       getShipmentsManagePage(this.queryParams).then(response => {
-        this.list = response.data.list;
-        this.total = response.data.total;
-        this.loading = false;
-      });
+        response.data.list.forEach(item => {
+          item.goodslist = []
+          item.goodslist.push({})
+        })
+        this.list = response.data.list
+        this.total = response.data.total
+        this.loading = false
+      })
     },
     /** 取消按钮 */
     cancel() {
-      this.open = false;
-      this.reset();
+      this.open = false
+      this.reset()
     },
     /** 表单重置 */
     reset() {
@@ -248,83 +342,90 @@ export default {
         deliveryMode: undefined,
         logisticsStutas: undefined,
         logisticsInfo: undefined,
-        logisticsOrderNo: undefined,
-      };
-      this.resetForm("form");
+        logisticsOrderNo: undefined
+      }
+      this.resetForm('form')
     },
     /** 搜索按钮操作 */
     handleQuery() {
-      this.queryParams.pageNo = 1;
-      this.getList();
+      this.queryParams.pageNo = 1
+      this.getList()
     },
     /** 重置按钮操作 */
     resetQuery() {
-      this.resetForm("queryForm");
-      this.handleQuery();
+      this.resetForm('queryForm')
+      this.handleQuery()
     },
     /** 新增按钮操作 */
     handleAdd() {
-      this.reset();
-      this.open = true;
-      this.title = "添加发货信息管理";
+      this.reset()
+      this.open = true
+      this.title = '添加发货信息管理'
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
-      this.reset();
-      const id = row.id;
+      this.reset()
+      const id = row.id
+      getSaleOrder(row.orderId).then(res => {
+        getGoods(res.data.goodsId).then(res => {
+          this.goodslist.splice(0, 1, res.data)
+        })
+      })
       getShipmentsManage(id).then(response => {
-        this.form = response.data;
-        this.open = true;
-        this.title = "修改发货信息管理";
-      });
+        this.form = response.data
+        this.open = true
+        this.title = '修改发货信息管理'
+      })
     },
     /** 提交按钮 */
     submitForm() {
-      this.$refs["form"].validate(valid => {
+      this.$refs['form'].validate(valid => {
         if (!valid) {
-          return;
+          return
         }
         // 修改的提交
         if (this.form.id != null) {
           updateShipmentsManage(this.form).then(response => {
-            this.$modal.msgSuccess("修改成功");
-            this.open = false;
-            this.getList();
-          });
-          return;
+            this.$modal.msgSuccess('修改成功')
+            this.open = false
+            this.getList()
+          })
+          return
         }
         // 添加的提交
         createShipmentsManage(this.form).then(response => {
-          this.$modal.msgSuccess("新增成功");
-          this.open = false;
-          this.getList();
-        });
-      });
+          this.$modal.msgSuccess('新增成功')
+          this.open = false
+          this.getList()
+        })
+      })
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const id = row.id;
+      const id = row.id
       this.$modal.confirm('是否确认删除发货信息管理编号为"' + id + '"的数据项?').then(function() {
-          return deleteShipmentsManage(id);
-        }).then(() => {
-          this.getList();
-          this.$modal.msgSuccess("删除成功");
-        }).catch(() => {});
+        return deleteShipmentsManage(id)
+      }).then(() => {
+        this.getList()
+        this.$modal.msgSuccess('删除成功')
+      }).catch(() => {
+      })
     },
     /** 导出按钮操作 */
     handleExport() {
       // 处理查询参数
-      let params = {...this.queryParams};
-      params.pageNo = undefined;
-      params.pageSize = undefined;
+      let params = { ...this.queryParams }
+      params.pageNo = undefined
+      params.pageSize = undefined
       this.$modal.confirm('是否确认导出所有发货信息管理数据项?').then(() => {
-          this.exportLoading = true;
-          return exportShipmentsManageExcel(params);
-        }).then(response => {
-          this.$download.excel(response, '发货信息管理.xls');
-          this.exportLoading = false;
-        }).catch(() => {});
+        this.exportLoading = true
+        return exportShipmentsManageExcel(params)
+      }).then(response => {
+        this.$download.excel(response, '发货信息管理.xls')
+        this.exportLoading = false
+      }).catch(() => {
+      })
     }
   }
-};
+}
 </script>

部分文件因文件數量過多而無法顯示