fix:供应商确认功能调整、售后查询页面调整

dev_1.0.2
jiangpeng 2026-04-16 19:17:12 +08:00
parent feb99bb10e
commit 778f855ee9
7 changed files with 258 additions and 223 deletions

View File

@ -100,6 +100,11 @@
<span>{{ form.ownerName }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="采购日期" prop="purchaseDate">
<span>{{ form.purchaseDate }}</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="remark">
<span>{{ form.remark }}</span>

View File

@ -211,6 +211,34 @@
</template>
</ApproveLayout>
</el-drawer>
<el-dialog
title="确认采购信息"
:visible.sync="purchaseDateDialogVisible"
width="420px"
append-to-body
>
<el-form
ref="purchaseDateForm"
:model="purchaseDateForm"
:rules="purchaseDateRules"
label-width="100px"
>
<el-form-item label="采购日期" prop="pruchaseDate">
<el-date-picker
v-model="purchaseDateForm.pruchaseDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择采购日期"
style="width: 100%;"
/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="purchaseDateDialogVisible = false"> </el-button>
<el-button type="primary" @click="submitVendorConfirmWithDate"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -273,6 +301,14 @@ export default {
showHistoryDetailDrawer: false,
//
historyDetailOrderData: null,
//
purchaseDateDialogVisible: false,
purchaseDateForm: {
pruchaseDate: ''
},
purchaseDateRules: {
pruchaseDate: [{ required: true, message: '请选择采购日期', trigger: 'change' }]
},
//
queryParams: {
pageNum: 1,
@ -344,17 +380,39 @@ export default {
},
vendorConfirm(type) {
if (type === '1') {
this.purchaseDateForm.pruchaseDate = ''
this.purchaseDateDialogVisible = true;
this.$nextTick(() => {
this.$refs.purchaseDateForm && this.$refs.purchaseDateForm.clearValidate();
});
return;
}
//
this.confirmVendor(type, null);
},
confirmVendor(type, pruchaseDate) {
//
let data = {
id: this.detailOrderData.id,
confirmStatus: type // 1 ()
confirmStatus: type, //
pruchaseDate
};
vendorConfirmStatus(data).then(() => {
this.showDetailDrawer=false;
this.purchaseDateDialogVisible = false;
this.getList();
this.$modal.msgSuccess("操作成功");
});
},
submitVendorConfirmWithDate() {
this.$refs.purchaseDateForm.validate(valid => {
if (!valid) {
return;
}
this.confirmVendor('1', this.purchaseDateForm.pruchaseDate);
});
},
//
/** 搜索按钮操作 */
handleQuery() {

View File

@ -88,7 +88,7 @@ export default {
watch: {
visible(val) {
if (val) {
this.queryParams.type = this.productType; // Update productType when dialog opens
this.initQueryParams();
this.getList();
}
},
@ -106,6 +106,18 @@ export default {
}
},
methods: {
/** 初始化查询条件 */
initQueryParams() {
this.queryParams.pageNum = 1;
this.queryParams.pageSize = 10;
this.queryParams.productCode = null;
this.queryParams.model = null;
this.queryParams.type = this.productType;
this.queryParams.vendorCode = this.vendorCode || null;
if (this.$refs.queryForm) {
this.$refs.queryForm.resetFields();
}
},
/** 查询产品列表 */
getList() {
this.loading = true;

View File

@ -1,286 +1,229 @@
<template>
<div class="vendor-query-container">
<div class="content-wrapper">
<div class="topBox">
<div class="title">UNISSENSE云终端</div>
<div class="vendor-query-page">
<header class="vendor-topbar">汇智OMS订单管理系统</header>
<main class="vendor-main">
<div class="brand-block">
<img :src="logoSrc" alt="紫光汇智" class="brand-logo" />
</div>
<!-- 注释掉的查询功能如需使用可取消注释
<div class="container">
<div class="form-group">
<label for="partnerCode">代理商代码</label>
<el-input
v-model="partnerCode"
placeholder="请输入代理商代码"
clearable
/>
</div>
<el-button type="primary" @click="getData"></el-button>
</div>
-->
<section class="vendor-section-title">
<h1>UNISSENSE云终端</h1>
<p>售后联系方式</p>
</section>
<div class="subtitle-wrapper">
<blockquote class="subtitle-blockquote">
<span class="desktop-title">UNISSENSE云终端售后联系方式</span>
<span class="mobile-title">UNISSENSE云终端<br>售后联系方式</span>
</blockquote>
</div>
<div class="table-wrapper">
<el-table
:data="vendorData"
class="vendor-table"
:header-cell-style="{ background: '#f5f5f5', padding: '10px' }"
:cell-style="{ padding: '10px' }"
<section
v-for="(item, index) in vendorData"
:key="index"
class="vendor-contact-card"
>
<el-table-column
prop="manufacturerName"
label="制造商名称"
align="center"
/>
<el-table-column
prop="product"
label="产品"
align="center"
/>
<el-table-column
prop="phone"
label="售后电话"
align="center"
>
<template slot-scope="scope">
<a :href="'tel:' + scope.row.phoneNumber" class="phone-link">
{{ scope.row.phone }}
</a>
</template>
</el-table-column>
</el-table>
<!-- 移动端显示 -->
<div class="mobile-table">
<div class="mobile-row" v-for="(item, index) in vendorData" :key="index">
<div class="mobile-cell">
<span class="mobile-label">制造商名称</span>
<span class="mobile-value">{{ item.manufacturerName }}</span>
</div>
<div class="mobile-cell">
<span class="mobile-label">产品</span>
<span class="mobile-value">{{ item.product }}</span>
</div>
<div class="mobile-cell">
<span class="mobile-label">售后电话</span>
<span class="mobile-value">
<a :href="'tel:' + item.phoneNumber" class="phone-link">{{ item.phone }}</a>
<div class="contact-row">
<span class="contact-icon">
<i class="el-icon-office-building" />
</span>
<div class="contact-content">
<div class="contact-label">制造商名字</div>
<div class="contact-value">{{ item.manufacturerName }}</div>
</div>
</div>
<div class="contact-row">
<span class="contact-icon">
<i class="el-icon-monitor" />
</span>
<div class="contact-content">
<div class="contact-label">产品</div>
<div class="contact-value">{{ item.product }}</div>
</div>
</div>
<div class="contact-divider" />
<div class="contact-row">
<span class="contact-icon">
<i class="el-icon-phone-outline" />
</span>
<div class="contact-content">
<div class="contact-label">售后电话</div>
<a :href="'tel:' + item.phoneNumber" class="contact-phone">{{ item.phone }}</a>
</div>
</div>
</section>
</main>
</div>
</template>
<script>
import logoImage from '@/assets/images/companyLogoHD.png'
export default {
name: "VendorQuery",
name: 'VendorQuery',
data() {
return {
//
partnerCode: '',
//
logoSrc: logoImage,
vendorData: [
{
manufacturerName: '紫光汇智信息技术有限公司',
product: 'UNISSENSE云终端',
phone: '400-688-6363转25*8小时',
phoneNumber: '400-688-6363转2'
phone: '400-688-6363 "2"号键转售后',
phoneNumber: '4006886363'
}
]
};
},
created() {
//
},
methods: {
/** 查询数据(备用功能)*/
getData() {
// TODO:
// : /system/vendor/query?partnerCode=${this.partnerCode}
console.log('查询代理商代码:', this.partnerCode);
}
}
};
}
</script>
<style scoped>
.vendor-query-container {
width: 100%;
margin: 0;
padding: 0;
background-color: #f9f9f9;
.vendor-query-page {
min-height: 100vh;
background: #f6f7fb;
color: #1f2a37;
}
.content-wrapper {
padding: 20px;
box-sizing: border-box;
}
.container {
margin: 0;
padding: 10px 0;
background-color: white;
border-radius: 8px;
.vendor-topbar {
height: 56px;
background: #ffffff;
display: flex;
flex-direction: row;
gap: 30px;
align-items: center;
justify-content: center;
align-items: center;
font-size: 18px;
font-weight: 700;
box-shadow: 0 1px 0 rgba(20, 28, 43, 0.06);
}
.topBox {
display: flex;
flex-direction: row;
gap: 20px;
margin: 30px 0 10px;
align-items: center;
.vendor-main {
max-width: 720px;
margin: 0 auto;
padding: 24px 16px 28px;
}
.topBox .title {
font-size: 24px;
font-weight: 600;
color: #333;
text-align: center;
width: 100%;
.brand-block {
margin-bottom: 24px;
}
.form-group {
margin-bottom: 15px;
display: flex;
flex-direction: row;
align-items: center;
gap: 10px;
}
.form-group label {
margin-bottom: 0;
width: 100px;
font-weight: 600;
}
.subtitle-wrapper {
font-size: 16px;
text-align: left;
font-weight: 600;
margin-bottom: 10px;
}
.subtitle-blockquote {
border-left: 5px solid #1c84c6;
margin-left: 0;
padding-left: 10px;
line-height: 1.5;
margin: 10px 0;
}
.mobile-title {
display: none;
}
.desktop-title {
display: inline-block;
}
.table-wrapper {
width: 100%;
background-color: white;
border-radius: 8px;
padding: 15px;
}
.vendor-table {
width: 100%;
}
.phone-link {
color: #1c84c6;
text-decoration: none;
}
.phone-link:hover {
text-decoration: underline;
}
.mobile-table {
display: none;
}
/* 移动端样式 */
@media (max-width: 768px) {
.content-wrapper {
padding: 10px;
}
.container {
display: none;
}
.topBox {
margin: 10px 0;
}
.topBox .title {
font-size: 20px;
}
.desktop-title {
display: none;
}
.mobile-title {
display: inline-block;
}
.vendor-table {
display: none;
}
.mobile-table {
.brand-logo {
width: 152px;
height: auto;
display: block;
}
.mobile-row {
display: flex;
flex-direction: column;
border-bottom: 1px solid #ddd;
margin-bottom: 10px;
background-color: #fff;
border-radius: 5px;
padding: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
.vendor-section-title {
border-left: 5px solid #7f4a95;
padding-left: 12px;
margin-bottom: 20px;
}
.mobile-cell {
.vendor-section-title h1 {
margin: 0;
font-size: 34px;
line-height: 1.2;
font-weight: 700;
color: #202d3a;
}
.vendor-section-title p {
margin: 8px 0 0;
font-size: 24px;
line-height: 1.3;
color: #495366;
}
.vendor-contact-card {
background: #ffffff;
border-radius: 10px;
padding: 18px 14px;
box-shadow: 0 14px 40px rgba(24, 39, 75, 0.08);
}
.contact-row {
display: flex;
justify-content: flex-start;
align-items: center;
padding: 15px 10px;
border-bottom: 1px solid #eee;
gap: 12px;
}
.mobile-row .mobile-cell:last-child {
border-bottom: none;
.contact-row + .contact-row {
margin-top: 14px;
}
.mobile-label {
font-weight: bold;
color: #333;
width: 90px;
.contact-icon {
width: 46px;
height: 46px;
border-radius: 10px;
background: #f1f3f8;
display: inline-flex;
align-items: center;
justify-content: center;
color: #586086;
font-size: 23px;
flex-shrink: 0;
}
.mobile-value {
flex: 1;
word-break: break-all;
.contact-content {
min-width: 0;
}
.contact-label {
font-size: 13px;
color: #7d8799;
margin-bottom: 5px;
}
.contact-value {
font-size: 19px;
line-height: 1.4;
font-weight: 700;
color: #1f2a37;
word-break: break-word;
}
.contact-divider {
margin: 16px 0 14px;
border-top: 1px solid #e9edf5;
}
.contact-phone {
display: inline-block;
font-size: 22px;
line-height: 1.35;
font-weight: 700;
color: #1f2a37;
text-decoration: none;
}
@media (max-width: 768px) {
.vendor-topbar {
height: 52px;
font-size: 16px;
}
.vendor-main {
padding: 16px 12px 22px;
}
.brand-block {
margin-bottom: 18px;
}
.brand-logo {
width: 132px;
}
.vendor-section-title h1 {
font-size: 22px;
}
.vendor-section-title p {
font-size: 16px;
line-height: 1.3;
}
.contact-value {
font-size: 14px;
}
.contact-phone {
font-size: 19px;
}
}
</style>

View File

@ -4,6 +4,8 @@ import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
@ -114,6 +116,11 @@ public class OmsPurchaseOrder extends BaseEntity
/** 确认状态(待审批、已确认、或空) */
private String confirmStatus;
/** 采购日期 */
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@JsonAlias({"pruchaseDate"})
private Date purchaseDate;
/** 流程类型online线上 offline线下 */
@Excel(name = "流程类型", readConverterExp = "online=线上,offline=线下")
private String flowType;

View File

@ -448,6 +448,9 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService, To
@Override
public int vendorConfirmStatus(OmsPurchaseOrder omsPurchaseOrder) {
omsPurchaseOrder.setUpdateTime(DateUtils.getNowDate());
if (OmsPurchaseOrder.ConfirmStatusEnum.REJECT.getCode().equals(omsPurchaseOrder.getConfirmStatus())) {
omsPurchaseOrder.setApproveStatus(ApproveStatusEnum.APPROVE_REJECT.getCode());
}
int i = omsPurchaseOrderMapper.updateOmsPurchaseOrder(omsPurchaseOrder);
//发送邮件

View File

@ -26,6 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="approveTime" column="approve_time" />
<result property="approveNode" column="approve_node" />
<result property="confirmStatus" column="confirm_status" />
<result property="purchaseDate" column="purchase_date" />
<result property="createTime" column="create_time" />
<result property="updateTime" column="update_time" />
<result property="delFlag" column="del_flag" />
@ -47,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectOmsPurchaseOrderVo">
select t1.id, t1.purchase_no, t1.buyer_name, t1.buyer_address, t1.vendor_id, t1.currency, t1.purchaser_id, t1.purchaser_name
, t1.purchaser_mobile, t1.purchaser_email, t1.warehouse_id, t1.pay_method, t1.owner_id, t1.owner_name, t1.remark, t1.total_amount
, t1.status, t1.approve_status, t1.approve_time, t1.approve_node, t1.confirm_status, t1.create_time, t1.update_time, t1.del_flag,t1.version,t1.flow_type
, t1.status, t1.approve_status, t1.approve_time, t1.approve_node, t1.confirm_status, t1.purchase_date, t1.create_time, t1.update_time, t1.del_flag,t1.version,t1.flow_type
, t1.file_id
from oms_purchase_order t1
</sql>
@ -70,7 +71,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectOmsPurchaseOrderRelationVo">
select t1.id, t1.purchase_no, t1.buyer_name, t1.buyer_address, t1.vendor_id, t1.currency, t1.purchaser_id, t1.purchaser_name
, t1.purchaser_mobile, t1.purchaser_email, t1.warehouse_id, t1.pay_method, t1.owner_id, t1.owner_name, t1.remark, t1.total_amount,t1.flow_type
, t1.status, t1.approve_status, t1.approve_time, t1.approve_node, t1.confirm_status, t1.create_time, t1.update_time, t1.del_flag,t1.version
, t1.status, t1.approve_status, t1.approve_time, t1.approve_node, t1.confirm_status, t1.purchase_date, t1.create_time, t1.update_time, t1.del_flag,t1.version
, t1.file_id
,t2.vendor_address,t2.vendor_name,t2.vendor_user,t2.vendor_code,t2.vendor_phone,t2.vendor_email,t3.warehouse_name,t1.remark,
(select max(tax_rate) from oms_purchase_order_item as it where it.purchase_id = t1.id) as tax_rate
@ -118,7 +119,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="listApprove" resultType="com.ruoyi.sip.domain.OmsPurchaseOrder">
select t1.id, t1.purchase_no, t1.buyer_name, t1.buyer_address, t1.vendor_id, t1.currency, t1.purchaser_id, t1.purchaser_name
, t1.purchaser_mobile, t1.purchaser_email, t1.warehouse_id, t1.pay_method, t1.owner_id, t1.owner_name, t1.remark, t1.total_amount,t1.flow_type
, t1.status, t1.approve_status, t1.approve_time, t1.approve_node, t1.confirm_status, t1.create_time, t1.update_time, t1.del_flag,t1.version
, t1.status, t1.approve_status, t1.approve_time, t1.approve_node, t1.confirm_status, t1.purchase_date, t1.create_time, t1.update_time, t1.del_flag,t1.version
, t1.file_id
,t2.vendor_name,t2.vendor_user,t2.vendor_phone
@ -300,6 +301,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="approveTime != null">approve_time,</if>
<if test="approveNode != null">approve_node,</if>
<if test="confirmStatus != null">confirm_status,</if>
<if test="purchaseDate != null">purchase_date,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="delFlag != null">del_flag,</if>
@ -328,6 +330,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="approveTime != null">#{approveTime},</if>
<if test="approveNode != null">#{approveNode},</if>
<if test="confirmStatus != null">#{confirmStatus},</if>
<if test="purchaseDate != null">#{purchaseDate},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="delFlag != null">#{delFlag},</if>
@ -360,6 +363,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="approveTime != null">approve_time = #{approveTime},</if>
<if test="approveNode != null">approve_node = #{approveNode},</if>
<if test="confirmStatus != null">confirm_status = #{confirmStatus},</if>
<if test="purchaseDate != null">purchase_date = #{purchaseDate},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
@ -392,6 +396,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="approveTime != null">approve_time = #{approveTime},</if>
<if test="approveNode != null">approve_node = #{approveNode},</if>
<if test="confirmStatus != null">confirm_status = #{confirmStatus},</if>
<if test="purchaseDate != null">purchase_date = #{purchaseDate},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
@ -424,6 +429,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="approveTime != null">approve_time = #{approveTime},</if>
<if test="approveNode != null">approve_node = #{approveNode},</if>
<if test="confirmStatus != null">confirm_status = #{confirmStatus},</if>
<if test="purchaseDate != null">purchase_date = #{purchaseDate},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
@ -475,6 +481,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
set approve_status = #{approveStatus},
approve_time = null,
confirm_status = null,
purchase_date = null,
update_time = #{updateTime},
version = version + 1
where purchase_no = #{purchaseNo}