Browse Source

Submit My supplier module code

xian 1 năm trước cách đây
mục cha
commit
c0d9e443f7

+ 1 - 1
src/api/supplier/portalConfig.js

@@ -35,7 +35,7 @@ export function getPortalConfig(id) {
 }
 
 // 获得门户配置
-export function getThisConfig() {
+export function getThisConfig(id) {
   return request({
     url: '/supplier/portal-config/getThisConfig',
     method: 'get'

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

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+// 创建门户管理
+export function createPortalManage(data) {
+  return request({
+    url: '/supplier/portal-manage/create',
+    method: 'post',
+    data: data
+  })
+}
+
+// 更新门户管理
+export function updatePortalManage(data) {
+  return request({
+    url: '/supplier/portal-manage/update',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除门户管理
+export function deletePortalManage(id) {
+  return request({
+    url: '/supplier/portal-manage/delete?id=' + id,
+    method: 'delete'
+  })
+}
+
+// 获得门户管理
+export function getPortalManage(id) {
+  return request({
+    url: '/supplier/portal-manage/get?id=' + id,
+    method: 'get'
+  })
+}
+
+// 获得门户管理分页
+export function getPortalManagePage(query) {
+  return request({
+    url: '/supplier/portal-manage/page',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出门户管理 Excel
+export function exportPortalManageExcel(query) {
+  return request({
+    url: '/supplier/portal-manage/export-excel',
+    method: 'get',
+    params: query,
+    responseType: 'blob'
+  })
+}

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

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+// 创建采购信息
+export function createPurchaseInfo(data) {
+  return request({
+    url: '/supplier/purchase-info/create',
+    method: 'post',
+    data: data
+  })
+}
+
+// 更新采购信息
+export function updatePurchaseInfo(data) {
+  return request({
+    url: '/supplier/purchase-info/update',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除采购信息
+export function deletePurchaseInfo(id) {
+  return request({
+    url: '/supplier/purchase-info/delete?id=' + id,
+    method: 'delete'
+  })
+}
+
+// 获得采购信息
+export function getPurchaseInfo(id) {
+  return request({
+    url: '/supplier/purchase-info/get?id=' + id,
+    method: 'get'
+  })
+}
+
+// 获得采购信息分页
+export function getPurchaseInfoPage(query) {
+  return request({
+    url: '/supplier/purchase-info/page',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出采购信息 Excel
+export function exportPurchaseInfoExcel(query) {
+  return request({
+    url: '/supplier/purchase-info/export-excel',
+    method: 'get',
+    params: query,
+    responseType: 'blob'
+  })
+}

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

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+// 创建报价信息
+export function createQuoteInfo(data) {
+  return request({
+    url: '/supplier/quote-info/create',
+    method: 'post',
+    data: data
+  })
+}
+
+// 更新报价信息
+export function updateQuoteInfo(data) {
+  return request({
+    url: '/supplier/quote-info/update',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除报价信息
+export function deleteQuoteInfo(id) {
+  return request({
+    url: '/supplier/quote-info/delete?id=' + id,
+    method: 'delete'
+  })
+}
+
+// 获得报价信息
+export function getQuoteInfo(id) {
+  return request({
+    url: '/supplier/quote-info/get?id=' + id,
+    method: 'get'
+  })
+}
+
+// 获得报价信息分页
+export function getQuoteInfoPage(query) {
+  return request({
+    url: '/supplier/quote-info/page',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出报价信息 Excel
+export function exportQuoteInfoExcel(query) {
+  return request({
+    url: '/supplier/quote-info/export-excel',
+    method: 'get',
+    params: query,
+    responseType: 'blob'
+  })
+}

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

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+// 创建已售订单
+export function createSaleOrder(data) {
+  return request({
+    url: '/supplier/sale-order/create',
+    method: 'post',
+    data: data
+  })
+}
+
+// 更新已售订单
+export function updateSaleOrder(data) {
+  return request({
+    url: '/supplier/sale-order/update',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除已售订单
+export function deleteSaleOrder(id) {
+  return request({
+    url: '/supplier/sale-order/delete?id=' + id,
+    method: 'delete'
+  })
+}
+
+// 获得已售订单
+export function getSaleOrder(id) {
+  return request({
+    url: '/supplier/sale-order/get?id=' + id,
+    method: 'get'
+  })
+}
+
+// 获得已售订单分页
+export function getSaleOrderPage(query) {
+  return request({
+    url: '/supplier/sale-order/page',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出已售订单 Excel
+export function exportSaleOrderExcel(query) {
+  return request({
+    url: '/supplier/sale-order/export-excel',
+    method: 'get',
+    params: query,
+    responseType: 'blob'
+  })
+}

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

@@ -0,0 +1,54 @@
+import request from '@/utils/request'
+
+// 创建发货信息管理
+export function createShipmentsManage(data) {
+  return request({
+    url: '/supplier/shipments-manage/create',
+    method: 'post',
+    data: data
+  })
+}
+
+// 更新发货信息管理
+export function updateShipmentsManage(data) {
+  return request({
+    url: '/supplier/shipments-manage/update',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除发货信息管理
+export function deleteShipmentsManage(id) {
+  return request({
+    url: '/supplier/shipments-manage/delete?id=' + id,
+    method: 'delete'
+  })
+}
+
+// 获得发货信息管理
+export function getShipmentsManage(id) {
+  return request({
+    url: '/supplier/shipments-manage/get?id=' + id,
+    method: 'get'
+  })
+}
+
+// 获得发货信息管理分页
+export function getShipmentsManagePage(query) {
+  return request({
+    url: '/supplier/shipments-manage/page',
+    method: 'get',
+    params: query
+  })
+}
+
+// 导出发货信息管理 Excel
+export function exportShipmentsManageExcel(query) {
+  return request({
+    url: '/supplier/shipments-manage/export-excel',
+    method: 'get',
+    params: query,
+    responseType: 'blob'
+  })
+}

+ 102 - 93
src/utils/dict.js

@@ -112,174 +112,183 @@ export const DICT_TYPE = {
 
   TRAVEL_MODE: 'travel_mode',//出行方式
 
-  SALARY_STATUS: "salary_status",
+  SALARY_STATUS: 'salary_status',
 
-  CLOCK_IN_TYPE: "clock_in_type",
+  CLOCK_IN_TYPE: 'clock_in_type',
 
   ATTENDANCE_STATUS: 'attendance_status',
 
-  CLOCK_IN_STAGE: "clock_in_stage",
+  CLOCK_IN_STAGE: 'clock_in_stage',
 
-  CODE_INFILL: "code_infill",
+  CODE_INFILL: 'code_infill',
 
-  SERIAL_NUM: "serial_num",
+  SERIAL_NUM: 'serial_num',
 
-  REIMBURSED_TYPE: "reimbursed_type",
+  REIMBURSED_TYPE: 'reimbursed_type',
 
-  SUPPLIER_TYPE: "supplier_type",
+  SUPPLIER_TYPE: 'supplier_type',
 
-  SUPPLIER_LABEL: "supplier_label",
+  SUPPLIER_LABEL: 'supplier_label',
 
-  FILE_TYPE: "file_type",
+  FILE_TYPE: 'file_type',
 
-  FILE_STATE: "file_state",
+  FILE_STATE: 'file_state',
 
-  CUSTOMER_CATEGORY: "customer_category",
+  CUSTOMER_CATEGORY: 'customer_category',
 
-  CUSTOMER_LABEL: "customer_label",
+  CUSTOMER_LABEL: 'customer_label',
 
-  POST_TYPE: "post_type",
+  POST_TYPE: 'post_type',
 
-  DEPT_NAME: "dept_name",
+  DEPT_NAME: 'dept_name',
 
-  NOTICE_TYPE: "notice_type",
+  NOTICE_TYPE: 'notice_type',
 
-  EDUCATION_LEVEL: "education_level",//学历水平
+  EDUCATION_LEVEL: 'education_level',//学历水平
 
-  EMP_GRADE: "emp_grade",
+  EMP_GRADE: 'emp_grade',
 
-  EMP_STATUS: "emp_status",//员工状态
-  EMP_STATUS_LEAVE: "emp_status_leave",//员工状态(离职/退休)
-  EMP_STATUS_NOT_LEAVE: "emp_status_not_leave",//员工状态(除离职退休)
-  EMP_STATUS_FOR_THIRD: "emp_status_for_third",//员工状态(第三方)
+  EMP_STATUS: 'emp_status',//员工状态
+  EMP_STATUS_LEAVE: 'emp_status_leave',//员工状态(离职/退休)
+  EMP_STATUS_NOT_LEAVE: 'emp_status_not_leave',//员工状态(除离职退休)
+  EMP_STATUS_FOR_THIRD: 'emp_status_for_third',//员工状态(第三方)
 
-  POST_LEVEL: "post_level",
+  POST_LEVEL: 'post_level',
 
-  POST_STATE: "post_state",
+  POST_STATE: 'post_state',
 
-  WAREHOUSE_STATE: "warehouse_state",
+  WAREHOUSE_STATE: 'warehouse_state',
 
-  WAREHOUSE_TYPE: "warehouse_type",
+  WAREHOUSE_TYPE: 'warehouse_type',
 
-  WAREHOUSE_IN_SOURCE: "warehouse_in_source",
+  WAREHOUSE_IN_SOURCE: 'warehouse_in_source',
 
-  MATERIAL_CATEGORY: "material_category",
+  MATERIAL_CATEGORY: 'material_category',
 
-  MATERIAL_STATE: "material_state",
+  MATERIAL_STATE: 'material_state',
 
-  UNIT: "unit",
+  UNIT: 'unit',
 
-  WAREHOUSE_OUT_USE: "warehouse_out_use",
+  WAREHOUSE_OUT_USE: 'warehouse_out_use',
 
-  PROJECT_STATUS: "project_status",
+  PROJECT_STATUS: 'project_status',
 
-  MENU_GROUP: "menu_group",
+  MENU_GROUP: 'menu_group',
 
-  MENU_GROUPS: "menu_groups",
+  MENU_GROUPS: 'menu_groups',
 
-  ISSYNC: "issync",
+  ISSYNC: 'issync',
 
-  POLITICAL_APPEARANCE: "political_appearance",
+  POLITICAL_APPEARANCE: 'political_appearance',
 
-  BORROW_TYPE: "borrow_type",
+  BORROW_TYPE: 'borrow_type',
 
-  INVOICE_TYPE: "invoice_type",
+  INVOICE_TYPE: 'invoice_type',
 
-  REPAYMENT_METHOD: "repayment_method",
+  REPAYMENT_METHOD: 'repayment_method',
 
-  POST_RANK_LEVEL: "post_rank_level",
+  POST_RANK_LEVEL: 'post_rank_level',
 
-  PROFESSIONAL_SKILL: "professional_skill",//专业技能
+  PROFESSIONAL_SKILL: 'professional_skill',//专业技能
 
-  INTERVIEW_METHOD: "interview_method",//面试形式
+  INTERVIEW_METHOD: 'interview_method',//面试形式
 
-  RECRUIT_METHOD: "recruit_method", //招聘方式
+  RECRUIT_METHOD: 'recruit_method', //招聘方式
 
-  SEAL_TYPE: "seal_type", //用章类别
+  SEAL_TYPE: 'seal_type', //用章类别
 
-  SEAL_USE_METHOD: "seal_use_method",//用章方式
+  SEAL_USE_METHOD: 'seal_use_method',//用章方式
 
-  WELFARE_STATUS: "welfare_status",
+  WELFARE_STATUS: 'welfare_status',
 
-  CONDOLE_TYPE: "condoleType",
+  CONDOLE_TYPE: 'condoleType',
 
-  CHECK_EXCEPTION_STATE: "check_exception_state",//盘点异常状态
+  CHECK_EXCEPTION_STATE: 'check_exception_state',//盘点异常状态
 
-  CHECK_TEST: "check_test",//盘点检验
+  CHECK_TEST: 'check_test',//盘点检验
 
-  CHECK_RESULT: "check_result",//检验结果
+  CHECK_RESULT: 'check_result',//检验结果
 
-  CHECK_CATEGORY: "check_category",
+  CHECK_CATEGORY: 'check_category',
 
-  SITE_TYPE: "site_type",
+  SITE_TYPE: 'site_type',
 
-  SEPARATION_REASON: "separation_reason",//离职原因
+  SEPARATION_REASON: 'separation_reason',//离职原因
 
   //积分模块
-  INTEGRAL_CHANGE_TYPE: "integral_change_type",
-  INTEGRAL_MODE: "integral_mode",
+  INTEGRAL_CHANGE_TYPE: 'integral_change_type',
+  INTEGRAL_MODE: 'integral_mode',
 
   //消息推送模块
-  MESSAGE_TYPE: "message_type",
+  MESSAGE_TYPE: 'message_type',
 
-  PURCHASE_STATE: "purchase_state",//采购状态
+  PURCHASE_STATE: 'purchase_state',//采购状态
 
-  THING_CATEGORY: "thing_category",//物品类型
+  THING_CATEGORY: 'thing_category',//物品类型
 
-  RECEIVE_CATEGORY: "receive_category",//领用类型
+  RECEIVE_CATEGORY: 'receive_category',//领用类型
 
-  PRUCHASE_CATEGORY: "purchase_category",//采购类型
+  PRUCHASE_CATEGORY: 'purchase_category',//采购类型
 
-  PHONE_APPLY_REASON: "phone_apply_reason",//手机号申请原因
+  PHONE_APPLY_REASON: 'phone_apply_reason',//手机号申请原因
 
-  LETTER_DISPOSE_RESULT: "letter_dispose_result",//信访件处理结果
+  LETTER_DISPOSE_RESULT: 'letter_dispose_result',//信访件处理结果
 
-  REPAIR_URGENCY_LEVEL: "repair_urgency_level",//报修紧急程度
+  REPAIR_URGENCY_LEVEL: 'repair_urgency_level',//报修紧急程度
 
-  REPAIR_SUBMIT_CATEGORY: "repair_submit_category",//报修提交类型
+  REPAIR_SUBMIT_CATEGORY: 'repair_submit_category',//报修提交类型
 
-  PROJECT_GRADE: "project_grade",
+  PROJECT_GRADE: 'project_grade',
 
-  URGENCY: "urgency",
+  URGENCY: 'urgency',
 
-  PROJECT_TYPE: "projectType",
+  PROJECT_TYPE: 'projectType',
 
-  TASK_PRIORITY: "task_priority",
+  TASK_PRIORITY: 'task_priority',
 
-  TASK_TYPE: "task_type",
+  TASK_TYPE: 'task_type',
 
-  TASK_STATUS: "task_status",
+  TASK_STATUS: 'task_status',
 
-  TASK_GRADE: "task_grade",
+  TASK_GRADE: 'task_grade',
 
-  TASK_URGENCY: "urgency",
+  TASK_URGENCY: 'urgency',
 
-  ISUPLOAD: "is_upload",
+  ISUPLOAD: 'is_upload',
 
-  PROFILE_FILE_TYPE: "profile_file_type",
+  PROFILE_FILE_TYPE: 'profile_file_type',
 
-  TASK_DEGREE: "task_degree",//任务进度
+  TASK_DEGREE: 'task_degree',//任务进度
 
-  WAREHOUSE_INVENTORY_STATE: "warehouse_inventory_state",//库存状态
+  WAREHOUSE_INVENTORY_STATE: 'warehouse_inventory_state',//库存状态
 
-  ERP_RECEIVE_URGENCY: "erp_receive_urgency",//物资领用紧急状态
+  ERP_RECEIVE_URGENCY: 'erp_receive_urgency',//物资领用紧急状态
 
-  SEAL_USE_PLACE: "seal_use_place",//用印地点
+  SEAL_USE_PLACE: 'seal_use_place',//用印地点
 
-  CONTRACT_TEMPLATE_CATEGORY: "contract_template_category",//合同模板类型
+  CONTRACT_TEMPLATE_CATEGORY: 'contract_template_category',//合同模板类型
 
-  WELFARE_APPLY_ADDR: "welfare_apply_addr",//福利领用地点
+  WELFARE_APPLY_ADDR: 'welfare_apply_addr',//福利领用地点
 
-  GXGA_RSSH_APPLICATION_TYPE: "gxga_rssh_application_type",//关心关爱-人身伤害申请
+  GXGA_RSSH_APPLICATION_TYPE: 'gxga_rssh_application_type',//关心关爱-人身伤害申请
 
-  DISHES_TYPE: "dishes_type",//关心关爱-人身伤害申请
+  DISHES_TYPE: 'dishes_type',//关心关爱-人身伤害申请
 
-  PRINT_STATUS: "print_status",//打印模板状态
+  PRINT_STATUS: 'print_status',//打印模板状态
 
-  MESSAGE_TIME_TYPE: "message_time_type",//定时任务消息类型
+  MESSAGE_TIME_TYPE: 'message_time_type',//定时任务消息类型
 
-  PLATFORM_MESSAGE_TYPE: "platform_message_type",//平台消息类型
+  PLATFORM_MESSAGE_TYPE: 'platform_message_type',//平台消息类型
 
+  SALE_ORDER_TYPE: 'sale_order_type',
+
+  PROVISION_PERIOD: 'provision_period',
+
+  LOGISTICS_STUTAS: 'shipments_status',
+
+  DELIVERY_MODE: 'delivery_mode',
+
+  SHIPMENTS_STATUS: 'logistics_stutas'
 }
 
 /**
@@ -301,21 +310,21 @@ export function getDictDatas(dictType) {
  */
 export function getDictDatas2(dictType, values) {
   if (values === undefined) {
-    return [];
+    return []
   }
   // 如果是单个元素,则转换成数组
   if (!Array.isArray(values)) {
-    values = [this.value];
+    values = [this.value]
   }
   // 获得字典数据
-  const results = [];
+  const results = []
   for (const value of values) {
-    const dict = getDictData(dictType, value);
+    const dict = getDictData(dictType, value)
     if (dict) {
-      results.push(dict);
+      results.push(dict)
     }
   }
-  return results;
+  return results
 }
 
 export function getDictData(dictType, value) {
@@ -328,13 +337,13 @@ export function getDictData(dictType, value) {
   value = value + '' // 强制转换成字符串,因为 DictData 小类数值,是字符串
   for (const dictData of dictDatas) {
     if (dictData.value === value) {
-      return dictData;
+      return dictData
     }
   }
   return undefined
 }
 
 export function getDictDataLabel(dictType, value) {
-  const dict = getDictData(dictType, value);
-  return dict ? dict.label : '';
+  const dict = getDictData(dictType, value)
+  return dict ? dict.label : ''
 }

+ 10 - 3
src/views/supplier/portalConfig/index.vue

@@ -8,7 +8,7 @@
         <div style="font-size: 15px;color: #727272;">
           轮播图区域
         </div>
-        <PortalSlideshowConfig></PortalSlideshowConfig>
+        <PortalSlideshowConfig ref="psc" :id="id"></PortalSlideshowConfig>
       </el-card>
     </div>
     <div style="margin-top: 10px">
@@ -39,12 +39,15 @@
 </template>
 
 <script>
-import { createPortalConfig, getThisConfig } from '@/api/supplier/portalConfig'
+import { createPortalConfig, getPortalConfig } from '@/api/supplier/portalConfig'
 import ImageUpload from '@/components/ImageUpload'
 import PortalSlideshowConfig from '@/views/supplier/portalSlideshowConfig'
 
 export default {
   name: 'PortalConfig',
+  props: {
+    id: null
+  },
   components: {
     ImageUpload,
     PortalSlideshowConfig
@@ -74,13 +77,17 @@ export default {
   methods: {
     getConfig() {
       // console.log('getConfig!!')
-      getThisConfig().then(res => {
+      getPortalConfig(this.id).then(res => {
         if (res.code === 0) {
           this.form = res.data
         }
       })
+      this.$refs.psc.getList()
     },
     update(data) {
+      if(!data){
+        return
+      }
       createPortalConfig(data).then(res => {
         if (res.code === 0) {
           this.$modal.msgSuccess('更新成功')

+ 270 - 0
src/views/supplier/portalManage/index.vue

@@ -0,0 +1,270 @@
+<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="isEnable">
+        <el-select v-model="queryParams.isEnable" placeholder="请选择是否启用" clearable size="small">
+          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+                     :key="dict.value" :label="dict.label" :value="dict.value"
+          />
+        </el-select>
+      </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>
+
+    <!-- 操作工具栏 -->
+    <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:portal-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:portal-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="创建时间" align="center" prop="createTime"/>
+      <el-table-column label="配置ID" align="center" prop="configId"/>
+      <el-table-column label="是否启用" align="center" prop="isEnable">
+        <template v-slot="scope">
+          <dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="scope.row.isEnable"/>
+        </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-check" @click="updateEnable(scope.row)"
+          >启用
+          </el-button>
+          <el-button size="mini" type="text" icon="el-icon-search" @click="updateConfig(scope.row)"
+          >配置
+          </el-button>
+          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
+                     v-hasPermi="['supplier:portal-manage:update']"
+          >修改
+          </el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+                     v-hasPermi="['supplier:portal-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"
+    />
+
+    <!-- 对话框(添加 / 修改) -->
+    <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="配置ID" prop="configId">
+          <el-input v-model="form.configId" placeholder="请输入配置ID"/>
+        </el-form-item>
+        <el-form-item label="是否启用" prop="isEnable">
+          <el-radio-group v-model="form.isEnable">
+            <el-radio v-for="dict in this.getDictDatas(DICT_TYPE.INFRA_BOOLEAN_STRING)"
+                      :key="dict.value" :label="dict.value"
+            >{{ dict.label }}
+            </el-radio>
+          </el-radio-group>
+        </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>
+    <el-dialog title="配置" :visible.sync="showOne" width="1250px" v-dialogDrag append-to-body>
+      <portalConfig ref="pc" :id="configId"></portalConfig>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+
+import portalConfig from '@/views/supplier/portalConfig'
+import {
+  createPortalManage,
+  updatePortalManage,
+  deletePortalManage,
+  getPortalManage,
+  getPortalManagePage,
+  exportPortalManageExcel
+} from '@/api/supplier/portalManage'
+
+export default {
+  name: 'PortalManage',
+  components: {
+    portalConfig
+  },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      showOne: false,
+      // 导出遮罩层
+      exportLoading: false,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      configId: 0,
+      // 门户管理列表
+      list: [],
+      // 弹出层标题
+      title: '',
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize: 10,
+        createTime: [],
+        configId: null,
+        isEnable: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {}
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true
+      // 执行查询
+      getPortalManagePage(this.queryParams).then(response => {
+        this.list = response.data.list
+        this.total = response.data.total
+        this.loading = false
+      })
+    },
+    /** 取消按钮 */
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    /** 表单重置 */
+    reset() {
+      this.form = {
+        id: undefined,
+        configId: undefined,
+        isEnable: undefined
+      }
+      this.resetForm('form')
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1
+      this.getList()
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm('queryForm')
+      this.handleQuery()
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset()
+      this.open = true
+      this.title = '添加门户管理'
+    },
+    /** 修改按钮操作 */
+    updateEnable(row) {
+      row.isEnable = 'true'
+      updatePortalManage(row).then(response => {
+        this.$modal.msgSuccess('启用成功')
+        this.open = false
+        this.getList()
+      })
+    },
+    updateConfig(row) {
+      this.showOne = true
+      this.configId = row.configId
+      this.$refs.pc.getConfig()
+    },
+    handleUpdate(row) {
+      this.reset()
+      const id = row.id
+      getPortalManage(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) {
+          updatePortalManage(this.form).then(response => {
+            this.$modal.msgSuccess('修改成功')
+            this.open = false
+            this.getList()
+          })
+          return
+        }
+        // 添加的提交
+        createPortalManage(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 deletePortalManage(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 exportPortalManageExcel(params)
+      }).then(response => {
+        this.$download.excel(response, '门户管理.xls')
+        this.exportLoading = false
+      }).catch(() => {
+      })
+    }
+  }
+}
+</script>

+ 4 - 0
src/views/supplier/portalSlideshowConfig/index.vue

@@ -106,6 +106,9 @@ import Templates from '@/demo/templates'
 
 export default {
   name: 'PortalSlideshowConfig',
+  props: {
+    id: null
+  },
   components: {
     Templates,
     ImageUpload
@@ -148,6 +151,7 @@ export default {
     /** 查询列表 */
     getList() {
       this.loading = true
+      this.queryParams.configId = this.id
       // 执行查询
       getPortalSlideshowConfigPage(this.queryParams).then(response => {
         this.list = response.data.list

+ 278 - 0
src/views/supplier/purchaseInfo/index.vue

@@ -0,0 +1,278 @@
+<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="title">
+        <el-input v-model="queryParams.title" placeholder="请输入标题" clearable @keyup.enter.native="handleQuery"/>
+      </el-form-item>
+      <el-form-item label="浏览次数" prop="browseNum">
+        <el-input v-model="queryParams.browseNum" placeholder="请输入浏览次数" clearable @keyup.enter.native="handleQuery"/>
+      </el-form-item>
+      <el-form-item label="报价次数" prop="quoteNum">
+        <el-input v-model="queryParams.quoteNum" placeholder="请输入报价次数" clearable @keyup.enter.native="handleQuery"/>
+      </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-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="purchaseNum">
+        <el-input v-model="queryParams.purchaseNum" placeholder="请输入采购数量" clearable @keyup.enter.native="handleQuery"/>
+      </el-form-item>
+      <el-form-item label="物品单位" prop="purchaseUnit">
+        <el-select v-model="queryParams.purchaseUnit" placeholder="请选择物品单位" clearable size="small">
+          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.UNIT)"
+                       :key="dict.value" :label="dict.label" :value="dict.value"/>
+        </el-select>
+      </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>
+        <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>
+
+    <!-- 操作工具栏 -->
+    <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:purchase-info: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:purchase-info: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="title" />
+      <el-table-column label="浏览次数" align="center" prop="browseNum" />
+      <el-table-column label="报价次数" align="center" prop="quoteNum" />
+      <el-table-column label="剩余天数" align="center" prop="quoteRemainDays" />
+      <el-table-column label="收货地址" align="center" prop="cneeAddress" />
+      <el-table-column label="采购数量" align="center" prop="purchaseNum" />
+      <el-table-column label="物品单位" align="center" prop="purchaseUnit">
+        <template v-slot="scope">
+          <dict-tag :type="DICT_TYPE.UNIT" :value="scope.row.purchaseUnit" />
+        </template>
+      </el-table-column>
+      <el-table-column label="期望到货时间" align="center" prop="expectationReceiptOfGoodsTime" />
+      <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:purchase-info:update']">修改</el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+                     v-hasPermi="['supplier:purchase-info: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"/>
+
+    <!-- 对话框(添加 / 修改) -->
+    <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="title">
+          <el-input v-model="form.title" placeholder="请输入标题" />
+        </el-form-item>
+        <el-form-item label="浏览次数" prop="browseNum">
+          <el-input v-model="form.browseNum" placeholder="请输入浏览次数" />
+        </el-form-item>
+        <el-form-item label="报价次数" prop="quoteNum">
+          <el-input v-model="form.quoteNum" placeholder="请输入报价次数" />
+        </el-form-item>
+        <el-form-item label="剩余天数" prop="quoteRemainDays">
+          <el-input v-model="form.quoteRemainDays" placeholder="请输入剩余天数" />
+        </el-form-item>
+        <el-form-item label="收货地址" prop="cneeAddress">
+          <el-input v-model="form.cneeAddress" placeholder="请输入收货地址" />
+        </el-form-item>
+        <el-form-item label="采购数量" prop="purchaseNum">
+          <el-input v-model="form.purchaseNum" placeholder="请输入采购数量" />
+        </el-form-item>
+        <el-form-item label="物品单位" prop="purchaseUnit">
+          <el-select v-model="form.purchaseUnit" placeholder="请选择物品单位">
+            <el-option v-for="dict in this.getDictDatas(DICT_TYPE.UNIT)"
+                       :key="dict.value" :label="dict.label" :value="dict.value" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="期望到货时间" prop="expectationReceiptOfGoodsTime">
+          <el-date-picker clearable v-model="form.expectationReceiptOfGoodsTime" type="date" value-format="timestamp" 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 { createPurchaseInfo, updatePurchaseInfo, deletePurchaseInfo, getPurchaseInfo, getPurchaseInfoPage, exportPurchaseInfoExcel } from "@/api/supplier/purchaseInfo";
+
+export default {
+  name: "PurchaseInfo",
+  components: {
+  },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 采购信息列表
+      list: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize: 10,
+        createTime: [],
+        title: null,
+        browseNum: null,
+        quoteNum: null,
+        quoteRemainDays: null,
+        cneeAddress: null,
+        purchaseNum: null,
+        purchaseUnit: null,
+        expectationReceiptOfGoodsTime: [],
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      // 执行查询
+      getPurchaseInfoPage(this.queryParams).then(response => {
+        this.list = response.data.list;
+        this.total = response.data.total;
+        this.loading = false;
+      });
+    },
+    /** 取消按钮 */
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    /** 表单重置 */
+    reset() {
+      this.form = {
+        id: undefined,
+        title: undefined,
+        browseNum: undefined,
+        quoteNum: undefined,
+        quoteRemainDays: undefined,
+        cneeAddress: undefined,
+        purchaseNum: undefined,
+        purchaseUnit: undefined,
+        expectationReceiptOfGoodsTime: undefined,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加采购信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id;
+      getPurchaseInfo(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) {
+          updatePurchaseInfo(this.form).then(response => {
+            this.$modal.msgSuccess("修改成功");
+            this.open = false;
+            this.getList();
+          });
+          return;
+        }
+        // 添加的提交
+        createPurchaseInfo(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 deletePurchaseInfo(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 exportPurchaseInfoExcel(params);
+        }).then(response => {
+          this.$download.excel(response, '采购信息.xls');
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>

+ 257 - 0
src/views/supplier/quoteInfo/index.vue

@@ -0,0 +1,257 @@
+<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="provisionPeriod">
+        <el-select v-model="queryParams.provisionPeriod" placeholder="请选择供应周期" clearable size="small">
+          <el-option v-for="dict in this.getDictDatas(DICT_TYPE.PROVISION_PERIOD)"
+                       :key="dict.value" :label="dict.label" :value="dict.value"/>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="供应时长" prop="provisionDuration">
+        <el-date-picker clearable v-model="queryParams.provisionDuration" type="date" value-format="yyyy-MM-dd" placeholder="选择供应时长" />
+      </el-form-item>
+      <el-form-item label="预计送达时间" prop="predictDeliveryTime">
+        <el-date-picker v-model="queryParams.predictDeliveryTime" 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="采购信息ID" prop="purchaseInfoId">
+        <el-input v-model="queryParams.purchaseInfoId" placeholder="请输入采购信息ID" clearable @keyup.enter.native="handleQuery"/>
+      </el-form-item>
+      <el-form-item label="采购商品ID" prop="purchaseGoodsId">
+        <el-input v-model="queryParams.purchaseGoodsId" placeholder="请输入采购商品ID" clearable @keyup.enter.native="handleQuery"/>
+      </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>
+
+    <!-- 操作工具栏 -->
+    <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:quote-info: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:quote-info: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="provisionPeriod">
+        <template v-slot="scope">
+          <dict-tag :type="DICT_TYPE.PROVISION_PERIOD" :value="scope.row.provisionPeriod" />
+        </template>
+      </el-table-column>
+      <el-table-column label="供应时长" align="center" prop="provisionDuration" />
+      <el-table-column label="发货地址" align="center" prop="shipmentsAddress" />
+      <el-table-column label="预计送达时间" align="center" prop="predictDeliveryTime" />
+      <el-table-column label="采购信息ID" align="center" prop="purchaseInfoId" />
+      <el-table-column label="采购商品ID" align="center" prop="purchaseGoodsId" />
+      <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:quote-info:update']">修改</el-button>
+          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
+                     v-hasPermi="['supplier:quote-info: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"/>
+
+    <!-- 对话框(添加 / 修改) -->
+    <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="provisionPeriod">
+          <el-select v-model="form.provisionPeriod" placeholder="请选择供应周期">
+            <el-option v-for="dict in this.getDictDatas(DICT_TYPE.PROVISION_PERIOD)"
+                       :key="dict.value" :label="dict.label" :value="dict.value" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="供应时长" prop="provisionDuration">
+          <el-date-picker clearable v-model="form.provisionDuration" type="date" value-format="timestamp" placeholder="选择供应时长" />
+        </el-form-item>
+        <el-form-item label="发货地址" prop="shipmentsAddress">
+          <el-input v-model="form.shipmentsAddress" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="预计送达时间" prop="predictDeliveryTime">
+          <el-date-picker clearable v-model="form.predictDeliveryTime" type="date" value-format="timestamp" placeholder="选择预计送达时间" />
+        </el-form-item>
+        <el-form-item label="采购信息ID" prop="purchaseInfoId">
+          <el-input v-model="form.purchaseInfoId" 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>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { createQuoteInfo, updateQuoteInfo, deleteQuoteInfo, getQuoteInfo, getQuoteInfoPage, exportQuoteInfoExcel } from "@/api/supplier/quoteInfo";
+
+export default {
+  name: "QuoteInfo",
+  components: {
+  },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 报价信息列表
+      list: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize: 10,
+        createTime: [],
+        provisionPeriod: null,
+        provisionDuration: null,
+        shipmentsAddress: null,
+        predictDeliveryTime: [],
+        purchaseInfoId: null,
+        purchaseGoodsId: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      // 执行查询
+      getQuoteInfoPage(this.queryParams).then(response => {
+        this.list = response.data.list;
+        this.total = response.data.total;
+        this.loading = false;
+      });
+    },
+    /** 取消按钮 */
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    /** 表单重置 */
+    reset() {
+      this.form = {
+        id: undefined,
+        provisionPeriod: undefined,
+        provisionDuration: undefined,
+        shipmentsAddress: undefined,
+        predictDeliveryTime: undefined,
+        purchaseInfoId: undefined,
+        purchaseGoodsId: undefined,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加报价信息";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id;
+      getQuoteInfo(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) {
+          updateQuoteInfo(this.form).then(response => {
+            this.$modal.msgSuccess("修改成功");
+            this.open = false;
+            this.getList();
+          });
+          return;
+        }
+        // 添加的提交
+        createQuoteInfo(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 deleteQuoteInfo(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 exportQuoteInfoExcel(params);
+        }).then(response => {
+          this.$download.excel(response, '报价信息.xls');
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>

+ 437 - 0
src/views/supplier/saleOrder/index.vue

@@ -0,0 +1,437 @@
+<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="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-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>
+
+    <!-- 操作工具栏 -->
+    <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:sale-order: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:sale-order: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 type="expand">
+        <template slot-scope="props">
+          商品信息
+        </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">
+        <template v-slot="scope">
+          <dict-tag :type="DICT_TYPE.SALE_ORDER_TYPE" :value="scope.row.orderType"/>
+        </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" 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="afterSale"/>
+      <!--      <el-table-column label="商品ID" align="center" prop="goodsId" />-->
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <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>
+          <!--          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"-->
+          <!--                     v-hasPermi="['supplier:sale-order: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"
+    />
+
+    <!-- 对话框(添加 / 修改) -->
+    <el-dialog :title="title" :visible.sync="open" width="650px" v-dialogDrag append-to-body>
+      <div>
+        <div style="font-size: 20px;color: #454545;margin-bottom: 10px;font-weight: bold">
+          订单信息
+        </div>
+        <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+          <el-row :gutter="10">
+            <el-col :span="12">
+              <el-form-item label="订单编号" prop="orderNo">
+                <el-input v-model="form.orderNo" placeholder="请输入订单编号"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="订单类型" prop="orderType">
+                <el-select v-model="form.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-col>
+          </el-row>
+
+          <el-row :gutter="10">
+            <el-col :span="12">
+              <el-form-item label="客户名称" prop="clienteleName">
+                <el-input v-model="form.clienteleName" placeholder="请输入客户名称"/>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="客户联系方式" prop="clientelePhone">
+                <el-input v-model="form.clientelePhone" placeholder="请输入客户联系方式"/>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="10">
+            <el-col :span="12">
+              <el-form-item label="客户类型" prop="clienteleType">
+                <el-select v-model="form.clienteleType" placeholder="请选择客户类型">
+                  <el-option label="请选择字典生成" value=""/>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="订单状态" prop="orderStatus">
+                <el-radio-group v-model="form.orderStatus">
+                  <el-radio label="1">请选择字典生成</el-radio>
+                </el-radio-group>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-form-item label="收货地址" prop="cneeAddress">
+            <el-input v-model="form.cneeAddress" placeholder="请输入收货地址" type="textarea" :rows="3"/>
+          </el-form-item>
+          <!--        <el-form-item label="客户ID" prop="clienteleId">-->
+          <!--          <el-input v-model="form.clienteleId" placeholder="请输入客户ID" />-->
+          <!--        </el-form-item>-->
+          <el-row :gutter="10">
+            <el-col :span="12">
+              <el-form-item label="预计发货时间" prop="predictShipmentsTime">
+                <el-date-picker clearable v-model="form.predictShipmentsTime" type="date" value-format="timestamp"
+                                placeholder="选择预计发货时间"
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="售后状态" prop="afterSale">
+                <el-select v-model="form.afterSale +''" placeholder="请选择售后状态">
+                  <el-option label="请选择字典生成" value=""/>
+                </el-select>
+              </el-form-item>
+
+            </el-col>
+          </el-row>
+
+          <!--        <el-form-item label="商品ID" prop="goodsId">-->
+          <!--          <el-input v-model="form.goodsId" placeholder="请输入商品ID" />-->
+          <!--        </el-form-item>-->
+        </el-form>
+      </div>
+      <div>
+        <div style="font-size: 20px;color: #454545;margin-bottom: 10px;font-weight: bold">
+          物流信息
+        </div>
+        <div>
+          <el-form label-width="100px">
+            <el-row :gutter="10">
+              <el-col :span="12">
+                <el-form-item label="运输单位">
+                  <el-input placeholder="请输入运输单位"/>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="物流编号">
+                  <el-input placeholder="请输入物流编号"/>
+                </el-form-item>
+              </el-col>
+            </el-row>
+            <el-row :gutter="10">
+              <el-col :span="12">
+                <el-form-item label="物流状态">
+                  <el-select placeholder="请选择物流状态">
+                    <el-option label="请选择字典生成" value=""/>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+
+              </el-col>
+            </el-row>
+            <el-form-item label="物流信息">
+              <div style="background: #e0f2ff;padding: 10px;border-radius: 10px">
+                <el-steps direction="vertical" :active="1" :space="50">
+                  <el-step title="2024-03-04 10:00:00  承运单位揽件"></el-step>
+                  <el-step title="XXXXXX"></el-step>
+                  <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 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 {
+  createSaleOrder,
+  updateSaleOrder,
+  deleteSaleOrder,
+  getSaleOrder,
+  getSaleOrderPage,
+  exportSaleOrderExcel
+} from '@/api/supplier/saleOrder'
+
+// import PortalSlideshowConfig from '@/views/supplier/portalSlideshowConfig'
+
+export default {
+  name: 'SaleOrder',
+  components: {},
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 已售订单列表
+      list: [],
+      // 弹出层标题
+      title: '',
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize: 10,
+        createTime: [],
+        orderNo: null,
+        orderType: null,
+        clienteleId: null,
+        clienteleName: null,
+        clientelePhone: null,
+        clienteleType: null,
+        cneeAddress: null,
+        orderStatus: null,
+        predictShipmentsTime: [],
+        afterSale: null,
+        goodsId: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {}
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    //发货
+    consignment(row) {
+
+    },
+    /** 查询列表 */
+    getList() {
+      this.loading = true
+      // 执行查询
+      getSaleOrderPage(this.queryParams).then(response => {
+        this.list = response.data.list
+        this.total = response.data.total
+        this.loading = false
+      })
+    },
+    /** 取消按钮 */
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    /** 表单重置 */
+    reset() {
+      this.form = {
+        id: undefined,
+        orderNo: undefined,
+        orderType: undefined,
+        clienteleId: undefined,
+        clienteleName: undefined,
+        clientelePhone: undefined,
+        clienteleType: undefined,
+        cneeAddress: undefined,
+        orderStatus: undefined,
+        predictShipmentsTime: undefined,
+        afterSale: undefined,
+        goodsId: undefined
+      }
+      this.resetForm('form')
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1
+      this.getList()
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm('queryForm')
+      this.handleQuery()
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset()
+      this.open = true
+      this.title = '添加已售订单'
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset()
+      const id = row.id
+      getSaleOrder(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) {
+          updateSaleOrder(this.form).then(response => {
+            this.$modal.msgSuccess('修改成功')
+            this.open = false
+            this.getList()
+          })
+          return
+        }
+        // 添加的提交
+        createSaleOrder(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 deleteSaleOrder(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 exportSaleOrderExcel(params)
+      }).then(response => {
+        this.$download.excel(response, '已售订单.xls')
+        this.exportLoading = false
+      }).catch(() => {
+      })
+    }
+  }
+}
+</script>

+ 166 - 0
src/views/supplier/seek/seekOrder.vue

@@ -0,0 +1,166 @@
+<template>
+  <div style="padding: 20px">
+    <div v-for="item in list"
+         style="display: inline-block;width: 385px;padding: 10px;position: relative"
+    >
+      <div style="font-size: 20px;font-weight:bold;color: red;position: absolute;top: 0;right:0" class="rotated-text">
+        New
+      </div>
+      <div style="border: 1px #c4c4c4 solid;border-radius: 10px;padding: 10px">
+        <div style="font-size: 25px;font-weight: bold">
+          {{ item.title }}
+        </div>
+        <div>
+          <el-row :gutter="10">
+            <el-col :span="12">
+              采购总量:{{ item.purchaseNum }}1000吨
+            </el-col>
+            <el-col :span="12">
+              浏览次数:{{ item.browseNum }} 次
+            </el-col>
+          </el-row>
+          <el-row :gutter="10">
+            <el-col :span="12">
+              收货地址:{{ item.cneeAddress }}
+            </el-col>
+            <el-col :span="12">
+              报价次数:{{ item.quoteNum }}次
+            </el-col>
+          </el-row>
+          <el-row :gutter="10">
+            <el-col :span="12">
+              期望到货时间:{{ parseTime(item.expectationReceiptOfGoodsTime, '{y}-{m}-{d}')}}
+            </el-col>
+            <el-col :span="12">
+              报价剩余天数:{{ item.quoteRemainDays }}天
+            </el-col>
+          </el-row>
+          <el-row :gutter="10" align="bottom" type="flex" style="margin-top: 5px">
+            <el-col :span="12">
+              {{ parseTime(item.createTime, '{y}-{m}-{d}') }}
+            </el-col>
+            <el-col :span="12">
+              <el-row :gutter="10">
+                <el-col :span="12">
+                  <el-button size="mini" type="primary" @click="demandDetails(item)">查看需求</el-button>
+                </el-col>
+                <el-col :span="12">
+                  <el-button size="mini" @click="quotedPrice(item)">报 价</el-button>
+                </el-col>
+              </el-row>
+            </el-col>
+          </el-row>
+        </div>
+      </div>
+    </div>
+    <el-dialog title="需求详情" :visible.sync="showOne" width="650px" v-dialogDrag append-to-body>
+
+    </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-form-item label="采购标题" prop="shipmentsAddress">
+          <el-input v-model="title" type="textarea" placeholder="请输入内容" dis/>
+        </el-form-item>
+        <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)"
+                       :key="dict.value" :label="dict.label" :value="dict.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="供应时长" prop="provisionDuration">
+          <el-date-picker clearable v-model="form.provisionDuration" type="date" value-format="timestamp"
+                          placeholder="选择供应时长"
+          />
+        </el-form-item>
+        <el-form-item label="发货地址" prop="shipmentsAddress">
+          <el-input v-model="form.shipmentsAddress" type="textarea" placeholder="请输入内容"/>
+        </el-form-item>
+        <el-form-item label="预计送达时间" prop="predictDeliveryTime">
+          <el-date-picker clearable v-model="form.predictDeliveryTime" type="date" value-format="timestamp"
+                          placeholder="选择预计送达时间"
+          />
+        </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>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getPurchaseInfoPage } from '@/api/supplier/purchaseInfo'
+import { createQuoteInfo } from '@/api/supplier/quoteInfo'
+
+export default {
+  name: 'seekOrder',
+  data() {
+    return {
+      showOne: false,
+      showTow: false,
+      list: [],
+      form: {},
+      title: '',
+      queryParams: {
+        pageNo: 1,
+        pageSize: 100
+      }
+    }
+  },
+  created() {
+    this.getList()
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true
+      // 执行查询
+      getPurchaseInfoPage(this.queryParams).then(response => {
+        this.list = response.data.list
+        this.total = response.data.total
+        this.loading = false
+      })
+    },
+    demandDetails(row) {
+      this.showOne = true
+    },
+    quotedPrice(row) {
+      this.showTow = true
+      this.form.purchaseInfoId = row.id
+      this.title = row.title
+    },
+    /** 取消按钮 */
+    cancel() {
+      this.showOne = false
+      this.showTow = false
+      // this.reset()
+    },
+    /** 提交按钮 */
+    submitForm() {
+      // 添加的提交
+      createQuoteInfo(this.form).then(response => {
+        this.$modal.msgSuccess('新增成功')
+        this.open = false
+        this.getList()
+      })
+    }
+  }
+}
+</script>
+
+<style scoped>
+.rotated-text {
+  /* 旋转45度 */
+  transform: rotate(45deg);
+  /* 确保旋转中心为文字的中心 */
+  transform-origin: center;
+  /* 为了看到文字的旋转效果,可以设置一个阴影 */
+  text-shadow: 1px 1px 2px #000;
+}
+</style>

+ 330 - 0
src/views/supplier/shipmentsManage/index.vue

@@ -0,0 +1,330 @@
+<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="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-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>
+
+    <!-- 操作工具栏 -->
+    <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>
+      </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-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-column label="发货状态" align="center" prop="shipmentsStatus">
+        <template v-slot="scope">
+          <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="deliveryMode">
+        <template v-slot="scope">
+          <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" />
+        </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" 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>
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 分页组件 -->
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
+                @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-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 { createShipmentsManage, updateShipmentsManage, deleteShipmentsManage, getShipmentsManage, getShipmentsManagePage, exportShipmentsManageExcel } from "@/api/supplier/shipmentsManage";
+
+export default {
+  name: "ShipmentsManage",
+  components: {
+  },
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 导出遮罩层
+      exportLoading: false,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 发货信息管理列表
+      list: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNo: 1,
+        pageSize: 10,
+        createTime: [],
+        shipmentsNo: null,
+        orderNo: null,
+        orderId: null,
+        shipmentsStatus: null,
+        cneeAddress: null,
+        sellerId: null,
+        sellerInfo: null,
+        shipmentsStore: null,
+        deliveryMode: null,
+        logisticsStutas: null,
+        logisticsInfo: null,
+        logisticsOrderNo: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询列表 */
+    getList() {
+      this.loading = true;
+      // 执行查询
+      getShipmentsManagePage(this.queryParams).then(response => {
+        this.list = response.data.list;
+        this.total = response.data.total;
+        this.loading = false;
+      });
+    },
+    /** 取消按钮 */
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    /** 表单重置 */
+    reset() {
+      this.form = {
+        id: undefined,
+        shipmentsNo: undefined,
+        orderNo: undefined,
+        orderId: undefined,
+        shipmentsStatus: undefined,
+        cneeAddress: undefined,
+        sellerId: undefined,
+        sellerInfo: undefined,
+        shipmentsStore: undefined,
+        deliveryMode: undefined,
+        logisticsStutas: undefined,
+        logisticsInfo: undefined,
+        logisticsOrderNo: undefined,
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNo = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加发货信息管理";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id;
+      getShipmentsManage(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) {
+          updateShipmentsManage(this.form).then(response => {
+            this.$modal.msgSuccess("修改成功");
+            this.open = false;
+            this.getList();
+          });
+          return;
+        }
+        // 添加的提交
+        createShipmentsManage(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 deleteShipmentsManage(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 exportShipmentsManageExcel(params);
+        }).then(response => {
+          this.$download.excel(response, '发货信息管理.xls');
+          this.exportLoading = false;
+        }).catch(() => {});
+    }
+  }
+};
+</script>