888 lines
39 KiB
Plaintext
888 lines
39 KiB
Plaintext
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="BJDPLTJ.aspx.cs" Inherits="GThinking.N_XLXSBJ.BJDPLTJ" %>
|
||
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
|
||
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head id="Head1" runat="server">
|
||
<meta charset="UTF-8">
|
||
<title>批量调价</title>
|
||
<link rel="stylesheet" href="images/elmentindex.css">
|
||
<script src="images/vue@3.js"></script>
|
||
<script src="images/element-plus.js"></script>
|
||
<script src="images/icons-vue.js"></script>
|
||
<style type="text/css">
|
||
body {
|
||
margin: 0;
|
||
padding: 0;
|
||
height: 100vh;
|
||
font-family: Arial;
|
||
background: #f5f7fa;
|
||
overflow: hidden;
|
||
}
|
||
#app {
|
||
height: 100vh;
|
||
display: flex;
|
||
flex-direction: column;
|
||
padding: 20px 10px;
|
||
box-sizing: border-box;
|
||
background: #fff;
|
||
opacity: 0;
|
||
pointer-events: none;
|
||
}
|
||
.button-container {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
gap: 10px;
|
||
margin: 0 10px 20px;
|
||
}
|
||
|
||
.left-buttons {
|
||
display: flex;
|
||
gap: 10px;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.left-buttons > * {
|
||
margin: 0 !important;
|
||
}
|
||
.grid-content {
|
||
border-radius: 4px;
|
||
min-height: 36px;
|
||
display: flex;
|
||
flex-direction: column;
|
||
justify-content: center;
|
||
align-items: left;
|
||
}
|
||
.cxtj-span {
|
||
color: #000;
|
||
font-size: 12px;
|
||
margin-bottom: 5px;
|
||
}
|
||
.non-compliant-cell {
|
||
background: #ffffcc !important;
|
||
}
|
||
|
||
.table-container {
|
||
width: 100%;
|
||
height: 100%;
|
||
box-sizing: border-box;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.el-table-v2__header-cell {
|
||
display: flex !important;
|
||
align-items: center !important;
|
||
justify-content: center !important;
|
||
width: 100%;
|
||
height: 100%;
|
||
text-align: center !important;
|
||
position: relative;
|
||
background: #f5f7fa !important;
|
||
font-weight: bold;
|
||
border-left: 1px solid #ebeef5;
|
||
border-right: 1px solid #ebeef5;
|
||
}
|
||
.el-table-v2__row-cell {
|
||
border: 1px solid #ebeef5;
|
||
padding: 0px;
|
||
user-select: none;
|
||
}
|
||
.el-table-v2__row-cell:first-child,
|
||
.el-table-v2__header-cell:first-child {
|
||
display: flex !important;
|
||
align-items: center !important;
|
||
justify-content: center !important;
|
||
}
|
||
.el-table-v2__row-cell:first-child > div,
|
||
.el-table-v2__header-cell:first-child > div {
|
||
display: flex !important;
|
||
align-items: center !important;
|
||
justify-content: center !important;
|
||
height: 100% !important;
|
||
width: 100% !important;
|
||
}
|
||
/* 确保固定列在左侧 - 只固定第一列(勾选框列) */
|
||
.el-table-v2 [data-fixed-left] {
|
||
position: sticky !important;
|
||
left: 0 !important;
|
||
z-index: 3 !important;
|
||
background: #fff !important;
|
||
}
|
||
.el-table-v2__header [data-fixed-left] {
|
||
position: sticky !important;
|
||
left: 0 !important;
|
||
z-index: 4 !important;
|
||
background: #f5f7fa !important;
|
||
}
|
||
.el-table-v2__row-cell:nth-child(1),
|
||
.el-table-v2__header-cell:nth-child(1) {
|
||
position: sticky !important;
|
||
left: 0 !important;
|
||
z-index: 3 !important;
|
||
background: #fff !important;
|
||
}
|
||
.el-table-v2__header-cell:nth-child(1) {
|
||
z-index: 4 !important;
|
||
background: #f5f7fa !important;
|
||
}
|
||
.left-padding-8 .el-table-v2__row-cell {
|
||
margin-left: 8px !important;
|
||
}
|
||
.el-table-v2__header {
|
||
position: sticky;
|
||
top: 0;
|
||
z-index: 2;
|
||
}
|
||
.el-table-v2__body {
|
||
position: relative;
|
||
z-index: 1;
|
||
}
|
||
.el-table-v2__header-row {
|
||
border-bottom: none !important;
|
||
}
|
||
.el-table-v2__row {
|
||
border-bottom: none !important;
|
||
}
|
||
.el-table-v2__cell {
|
||
padding: 0 12px !important;
|
||
display: flex !important;
|
||
}
|
||
.el-table-v2__row.row--selected {
|
||
background-color: transparent !important;
|
||
}
|
||
.el-table-v2__row:hover {
|
||
background-color: transparent !important;
|
||
}
|
||
/* 仅对实际单元格添加悬停背景,避免空白列出现背景色 */
|
||
.el-table-v2__row:hover .el-table-v2__row-cell {
|
||
background-color: #f5f7fa !important;
|
||
}
|
||
|
||
.operation-cell {
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
height: 100%;
|
||
width: 100%;
|
||
background-color: #fff;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.el-icon-edit {
|
||
transition: color 0.3s;
|
||
}
|
||
|
||
.el-icon-edit:hover {
|
||
color: #409EFF !important;
|
||
}
|
||
|
||
.el-table-v2__header-cell .filter-trigger {
|
||
display: inline-flex !important;
|
||
opacity: 1 !important;
|
||
}
|
||
.filter-trigger:hover {
|
||
color: #409EFF !important;
|
||
transform: scale(1.1);
|
||
}
|
||
.el-popper {
|
||
z-index: 9999 !important;
|
||
margin-top: 2px !important;
|
||
}
|
||
.el-checkbox-group {
|
||
padding: 8px 12px;
|
||
}
|
||
|
||
.el-checkbox {
|
||
display: block;
|
||
margin: 4px 0;
|
||
}
|
||
|
||
/* 筛选弹层防止勾选项覆盖底部操作 */
|
||
/* 筛选弹层:不增加高度,只让列表区域滚动 */
|
||
.filter-popover .filter-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
overflow: hidden;
|
||
}
|
||
.filter-popover .filter-scroll {
|
||
height: 200px; /* 固定可视高度,避免弹层变高 */
|
||
overflow: hidden;
|
||
}
|
||
.filter-popover .filter-scroll .el-scrollbar__wrap {
|
||
max-height: 200px !important;
|
||
overflow: auto !important;
|
||
}
|
||
.filter-popover .filter-footer {
|
||
position: relative; /* 让按钮区在同一层级,遮盖滚动区溢出内容 */
|
||
z-index: 2;
|
||
background: #fff;
|
||
}
|
||
|
||
/* 调整滚动区域高度 */
|
||
.el-scrollbar__wrap {
|
||
max-height: 200px;
|
||
}
|
||
|
||
/* 按钮容器底部固定 */
|
||
.filter-footer {
|
||
position: sticky;
|
||
bottom: 0;
|
||
background: white;
|
||
padding: 8px;
|
||
border-top: 1px solid #ebeef5;
|
||
z-index: 1;
|
||
}
|
||
|
||
.selectable-cell {
|
||
user-select: none;
|
||
width: 100%;
|
||
height: 100%;
|
||
padding: 8px;
|
||
}
|
||
|
||
.selected-cell {
|
||
background-color: #b3d8ff !important;
|
||
border: 1px solid #409EFF !important;
|
||
}
|
||
|
||
/* 替换按钮样式 */
|
||
.replace-button {
|
||
box-shadow: 0 2px 12px rgba(0,0,0,.1);
|
||
background: #409EFF;
|
||
color: white;
|
||
border: none;
|
||
}
|
||
|
||
/* 覆盖默认按钮hover样式 */
|
||
.replace-button:hover {
|
||
background: #66b1ff !important;
|
||
}
|
||
|
||
.dialog-footer {
|
||
display: flex;
|
||
justify-content: flex-end;
|
||
gap: 12px;
|
||
}
|
||
|
||
.resizer {
|
||
position: absolute;
|
||
right: -2px;
|
||
top: 0;
|
||
bottom: 0;
|
||
width: 8px;
|
||
background-color: transparent;
|
||
cursor: col-resize;
|
||
z-index: 10;
|
||
transform: translateX(100%);
|
||
}
|
||
|
||
.el-table-v2__header-cell {
|
||
position: relative;
|
||
}
|
||
|
||
.save-as-btn {
|
||
top: 10px;
|
||
height: 24px;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
background-color: transparent;
|
||
border: 1px solid #409eff;
|
||
color: #409eff;
|
||
padding: 0 10px;
|
||
border-radius: 4px;
|
||
font-size: 14px;
|
||
cursor: pointer;
|
||
outline: none;
|
||
transition: all 0.3s;
|
||
z-index: 1;
|
||
}
|
||
|
||
.save-as-btn:hover {
|
||
background-color: #409eff;
|
||
color: white;
|
||
border-color: #3a8ee6;
|
||
box-shadow: 0 2px 4px rgba(64, 158, 255, 0.3);
|
||
transform: translateY(-1px);
|
||
}
|
||
|
||
/* 因子按钮组样式 - 使按钮和下拉箭头无缝连接 */
|
||
.yz-button-group {
|
||
display: inline-flex;
|
||
position: relative;
|
||
}
|
||
|
||
.yz-button-group .yz-main-btn {
|
||
border-top-right-radius: 0;
|
||
border-bottom-right-radius: 0;
|
||
border-right: none;
|
||
}
|
||
|
||
.yz-button-group .yz-dropdown {
|
||
margin-left: 0;
|
||
}
|
||
|
||
.yz-button-group .yz-arrow-btn {
|
||
border-top-left-radius: 0;
|
||
border-bottom-left-radius: 0;
|
||
border-left: 1px solid #409eff;
|
||
padding: 0 8px;
|
||
}
|
||
|
||
.yz-button-group .yz-arrow-btn .el-icon-arrow-down {
|
||
font-size: 12px;
|
||
display: inline-block;
|
||
}
|
||
|
||
.yz-button-group:hover .yz-main-btn,
|
||
.yz-button-group:hover .yz-arrow-btn {
|
||
border-color: #3a8ee6;
|
||
}
|
||
|
||
.yz-button-group .yz-main-btn:hover,
|
||
.yz-button-group .yz-arrow-btn:hover {
|
||
border-color: #3a8ee6;
|
||
}
|
||
|
||
.overlay {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background-color: rgba(0, 0, 0, 0.7);
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
z-index: 9999;
|
||
}
|
||
|
||
.loading-content {
|
||
background-color: white;
|
||
padding: 40px;
|
||
border-radius: 4px;
|
||
text-align: center;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
}
|
||
|
||
.loading-content p {
|
||
font-size: 16px;
|
||
}
|
||
|
||
.loading-content .progress-text {
|
||
font-size: 16px;
|
||
color: #409EFF;
|
||
font-weight: 600;
|
||
}
|
||
|
||
.loading-spinner {
|
||
border: 4px solid #f3f3f3;
|
||
border-top: 4px solid #0094ff;
|
||
border-radius: 50%;
|
||
width: 30px;
|
||
height: 30px;
|
||
animation: spin 1s linear infinite;
|
||
margin: 0 auto 10px;
|
||
}
|
||
|
||
/* 定义渐隐动画 */
|
||
@keyframes fadeOut {
|
||
from {
|
||
opacity: 1;
|
||
}
|
||
|
||
to {
|
||
opacity: 0;
|
||
}
|
||
}
|
||
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<form id="form1" runat="server">
|
||
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" />
|
||
<gtc:gtTextBox ID="txtBJDID" runat="server" Width="120px" style="display: none"></gtc:gtTextBox>
|
||
<div id="app">
|
||
<div class="button-container">
|
||
<div class="left-buttons">
|
||
<div v-if="buttonVisibility.BJSD" class="yz-button-group">
|
||
<el-button class="save-as-btn yz-main-btn" size="small" @click="handleLockCommand('BJSD-SD')">
|
||
报价锁定
|
||
</el-button>
|
||
<el-dropdown @command="handleLockCommand" trigger="hover" size="small" class="yz-dropdown">
|
||
<el-button class="save-as-btn yz-arrow-btn" size="small">
|
||
<span style="font-size: 12px;">▼</span>
|
||
</el-button>
|
||
<template #dropdown>
|
||
<el-dropdown-menu>
|
||
<el-dropdown-item command="BJSD-SD">锁定</el-dropdown-item>
|
||
<el-dropdown-item command="BJSD-JS">解锁</el-dropdown-item>
|
||
</el-dropdown-menu>
|
||
</template>
|
||
</el-dropdown>
|
||
</div>
|
||
<el-button class="save-as-btn" size="small" @click="handlePriceUp" v-if="buttonVisibility.BJSF">报价上浮%</el-button>
|
||
<el-button class="save-as-btn" size="small" @click="handlePriceDown" v-if="buttonVisibility.BJXF">报价下浮%</el-button>
|
||
<el-button class="save-as-btn" size="small" @click="handleJMBGS" v-if="buttonVisibility.JMBGS">{{ jmbgsButtonText }}</el-button>
|
||
<el-button class="save-as-btn" size="small" @click="handleMaterialPrice" v-if="buttonVisibility.LJJCLLX">料价价差率%</el-button>
|
||
<el-button class="save-as-btn" size="small" @click="handleBJXJ" v-if="buttonVisibility.BJXJ">产品报价限价</el-button>
|
||
<el-button class="save-as-btn" size="small" @click="handleCLYLBL" v-if="buttonVisibility.CLYLBL">材料用量比例</el-button>
|
||
<template v-for="yzItem in dynamicYZButtons" :key="yzItem.YZID">
|
||
<div v-if="buttonVisibility['YZ_' + yzItem.YZID] && yzItem.Options && yzItem.Options.length > 0" class="yz-button-group">
|
||
<el-button class="save-as-btn yz-main-btn" size="small" @click="handleYZButton(yzItem)">
|
||
{{ yzItem.Text }}
|
||
</el-button>
|
||
<el-dropdown @command="(cmd) => handleYZCommand(cmd, yzItem)" trigger="hover" size="small" class="yz-dropdown">
|
||
<el-button class="save-as-btn yz-arrow-btn" size="small">
|
||
<span style="font-size: 12px;">▼</span>
|
||
</el-button>
|
||
<template #dropdown>
|
||
<el-dropdown-menu>
|
||
<el-dropdown-item v-for="option in yzItem.Options" :key="option.value" :command="option.value">{{ option.label }}</el-dropdown-item>
|
||
</el-dropdown-menu>
|
||
</template>
|
||
</el-dropdown>
|
||
</div>
|
||
<el-button v-else-if="buttonVisibility['YZ_' + yzItem.YZID]" class="save-as-btn" size="small" @click="handleYZButton(yzItem)">{{ yzItem.Text }}</el-button>
|
||
</template>
|
||
<el-button class="save-as-btn" size="small" @click="openQueryDrawer">查询条件</el-button>
|
||
</div>
|
||
<div style="display: flex; align-items: center; gap: 10px;">
|
||
<span style="color: #606266; font-size: 14px;">共{{ filteredItems.length }}条数据</span>
|
||
<el-button class="save-as-btn" size="small" @click="closePanel">关闭</el-button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="table-container" ref="tableContainer">
|
||
<el-table-v2
|
||
:key="tableVersion"
|
||
:columns="columns"
|
||
:data="filteredItems"
|
||
:width="tableWidth"
|
||
:height="tableHeight"
|
||
row-key="XH"
|
||
fixed
|
||
/>
|
||
</div>
|
||
|
||
<!-- 报价上浮对话框 -->
|
||
<el-dialog
|
||
title="报价上浮%"
|
||
v-model="priceUpDialogVisible"
|
||
width="500px"
|
||
:close-on-click-modal="false"
|
||
>
|
||
<el-form :model="priceUpForm" label-width="180px">
|
||
<el-form-item label="调价范围:">
|
||
<el-select v-model="priceUpForm.range" style="width: 188px;">
|
||
<el-option v-if="priceUpForm.rangeOptions && priceUpForm.rangeOptions.includes('N')" label="勾选记录" value="N"></el-option>
|
||
<el-option label="整单记录" value="Y"></el-option>
|
||
<el-option label="所查记录" value="C"></el-option>
|
||
<el-option v-if="priceUpForm.rangeOptions && priceUpForm.rangeOptions.includes('D')" label="当前记录" value="D"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<template #label>
|
||
<span style="white-space: nowrap;">{{ priceUpForm.formulaLabel || '新报价=原报价/(1-' }}</span>
|
||
</template>
|
||
<el-input-number
|
||
v-model="priceUpForm.value"
|
||
:precision="2"
|
||
:step="0.01"
|
||
:min="0"
|
||
:max="100"
|
||
controls-position="right"
|
||
style="width: 130px; display: inline-block;"
|
||
></el-input-number>
|
||
<span style="margin-left: 10px;">%)</span>
|
||
</el-form-item>
|
||
</el-form>
|
||
<template #footer>
|
||
<div class="dialog-footer">
|
||
<el-button @click="closePriceUpDialog">取消</el-button>
|
||
<el-button type="primary" @click="confirmPriceUp">确定</el-button>
|
||
</div>
|
||
</template>
|
||
</el-dialog>
|
||
|
||
<!-- 报价下浮对话框 -->
|
||
<el-dialog
|
||
title="报价下浮%"
|
||
v-model="priceDownDialogVisible"
|
||
width="500px"
|
||
:close-on-click-modal="false"
|
||
>
|
||
<el-form :model="priceDownForm" label-width="180px">
|
||
<el-form-item label="调价范围:">
|
||
<el-select v-model="priceDownForm.range" style="width: 188px;">
|
||
<el-option v-if="priceDownForm.rangeOptions && priceDownForm.rangeOptions.includes('N')" label="勾选记录" value="N"></el-option>
|
||
<el-option label="整单记录" value="Y"></el-option>
|
||
<el-option label="所查记录" value="C"></el-option>
|
||
<el-option v-if="priceDownForm.rangeOptions && priceDownForm.rangeOptions.includes('D')" label="当前记录" value="D"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<template #label>
|
||
<span style="white-space: nowrap;">{{ priceDownForm.formulaLabel || '新报价=原报价*(1-' }}</span>
|
||
</template>
|
||
<el-input-number
|
||
v-model="priceDownForm.value"
|
||
:precision="2"
|
||
:step="0.01"
|
||
:min="0"
|
||
:max="100"
|
||
controls-position="right"
|
||
style="width: 130px; display: inline-block;"
|
||
></el-input-number>
|
||
<span style="margin-left: 10px;">%)</span>
|
||
</el-form-item>
|
||
</el-form>
|
||
<template #footer>
|
||
<div class="dialog-footer">
|
||
<el-button @click="closePriceDownDialog">取消</el-button>
|
||
<el-button type="primary" @click="confirmPriceDown">确定</el-button>
|
||
</div>
|
||
</template>
|
||
</el-dialog>
|
||
|
||
<!-- 批量调价对话框 -->
|
||
<el-dialog
|
||
title="批量调价"
|
||
v-model="batchPriceDialogVisible"
|
||
width="600px"
|
||
:close-on-click-modal="false"
|
||
>
|
||
<el-form :model="batchPriceForm" label-width="120px">
|
||
<el-form-item label="调价类型:">
|
||
<el-radio-group v-model="batchPriceForm.adjustType">
|
||
<el-radio label="up">上浮</el-radio>
|
||
<el-radio label="down">下浮</el-radio>
|
||
<el-radio label="material">料价价差率</el-radio>
|
||
</el-radio-group>
|
||
</el-form-item>
|
||
<el-form-item label="调价范围:">
|
||
<el-select v-model="batchPriceForm.range" style="width: 100%">
|
||
<el-option v-if="batchPriceForm.rangeOptions && batchPriceForm.rangeOptions.includes('N')" label="勾选记录" value="N"></el-option>
|
||
<el-option label="整单记录" value="Y"></el-option>
|
||
<el-option label="所查记录" value="C"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item v-if="batchPriceForm.adjustType !== 'material'" label="调价比例:">
|
||
<el-input-number
|
||
v-model="batchPriceForm.value"
|
||
:precision="2"
|
||
:step="0.01"
|
||
:min="0"
|
||
:max="100"
|
||
controls-position="right"
|
||
style="width: 100%"></el-input-number>
|
||
<span style="margin-left: 10px;">%</span>
|
||
</el-form-item>
|
||
<el-form-item v-if="batchPriceForm.adjustType === 'material'" label="材料成本类型:">
|
||
<el-select v-model="batchPriceForm.materialType" style="width: 100%">
|
||
<el-option label="相对值" value="relative"></el-option>
|
||
<el-option label="固定值" value="fixed"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item v-if="batchPriceForm.adjustType === 'material'" label="材料成本值:">
|
||
<el-input-number
|
||
v-model="batchPriceForm.materialValue"
|
||
:precision="5"
|
||
:step="0.00001"
|
||
controls-position="right"
|
||
style="width: 100%"></el-input-number>
|
||
</el-form-item>
|
||
</el-form>
|
||
<template #footer>
|
||
<div class="dialog-footer">
|
||
<el-button @click="closeBatchPriceDialog">取消</el-button>
|
||
<el-button type="primary" @click="confirmBatchPriceAdjust">确定</el-button>
|
||
</div>
|
||
</template>
|
||
</el-dialog>
|
||
|
||
<!-- 料价价差率对话框 -->
|
||
<el-dialog
|
||
title="料价价差率%"
|
||
v-model="materialPriceDialogVisible"
|
||
width="500px"
|
||
:close-on-click-modal="false"
|
||
>
|
||
<el-form :model="materialPriceForm" label-width="120px">
|
||
<el-form-item label="调价范围:">
|
||
<el-select v-model="materialPriceForm.range" style="width: 188px;">
|
||
<el-option v-if="materialPriceForm.rangeOptions && materialPriceForm.rangeOptions.includes('N')" label="勾选记录" value="N"></el-option>
|
||
<el-option label="整单记录" value="Y"></el-option>
|
||
<el-option label="所查记录" value="C"></el-option>
|
||
<el-option v-if="materialPriceForm.rangeOptions && materialPriceForm.rangeOptions.includes('D')" label="当前记录" value="D"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="调整比率:">
|
||
<el-input
|
||
v-model="materialPriceForm.adjustRatio"
|
||
style="width: 130px; display: inline-block;"
|
||
@input="handlePriceInput('materialPriceForm', $event, 'adjustRatio')">
|
||
</el-input>
|
||
<span style="margin-left: 10px;">%</span>
|
||
<el-select v-model="materialPriceForm.materialType" style="width: 100px; margin-left: 10px;">
|
||
<el-option label="相对值" value="XDZ"></el-option>
|
||
<el-option label="固定值" value="GDZ"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-checkbox v-model="materialPriceForm.hasNoTablePrice">无{{ JGBBJBMValue || '表价' }}</el-checkbox>
|
||
<el-checkbox v-model="materialPriceForm.isNonPurchased" :disabled="!materialPriceForm.canEditNonPurchased" style="margin-left: 20px;">非外购</el-checkbox>
|
||
</el-form-item>
|
||
</el-form>
|
||
<template #footer>
|
||
<div class="dialog-footer">
|
||
<el-button @click="closeMaterialPriceDialog">取消</el-button>
|
||
<el-button type="primary" @click="confirmMaterialPrice">确定</el-button>
|
||
</div>
|
||
</template>
|
||
</el-dialog>
|
||
|
||
<!-- 产品报价限价对话框 -->
|
||
<el-dialog
|
||
title="报价限价"
|
||
v-model="bjxjDialogVisible"
|
||
width="500px"
|
||
:close-on-click-modal="false"
|
||
>
|
||
<el-form :model="bjxjForm" label-width="120px">
|
||
<el-form-item label="调价范围:">
|
||
<el-select v-model="bjxjForm.range" style="width: 188px;">
|
||
<el-option v-if="bjxjForm.rangeOptions && bjxjForm.rangeOptions.includes('N')" label="勾选记录" value="N"></el-option>
|
||
<el-option label="整单记录" value="Y"></el-option>
|
||
<el-option label="所查记录" value="C"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="公式:">
|
||
<span style="color: #606266; font-size: 14px;">新报价=限价*(1-</span>
|
||
<el-input
|
||
v-model="bjxjForm.kdValue"
|
||
style="width: 80px; display: inline-block; margin: 0 5px;"
|
||
@input="handlePriceInput('bjxjForm', $event, 'kdValue')">
|
||
</el-input>
|
||
<span style="color: #606266; font-size: 14px;">%)+</span>
|
||
<el-input
|
||
v-model="bjxjForm.jjValue"
|
||
style="width: 80px; display: inline-block; margin: 0 5px;"
|
||
@input="handlePriceInput('bjxjForm', $event, 'jjValue')">
|
||
</el-input>
|
||
</el-form-item>
|
||
<el-form-item>
|
||
<el-checkbox v-model="bjxjForm.onlyNegative">仅调整差额为负</el-checkbox>
|
||
</el-form-item>
|
||
</el-form>
|
||
<template #footer>
|
||
<div class="dialog-footer">
|
||
<el-button @click="closeBJXJDialog">取消</el-button>
|
||
<el-button type="primary" @click="confirmBJXJ">确定</el-button>
|
||
</div>
|
||
</template>
|
||
</el-dialog>
|
||
|
||
<!-- 因子对话框(用于截面比公式和动态因子按钮) -->
|
||
<el-dialog
|
||
:title="yzForm.dialogTitle"
|
||
v-model="yzDialogVisible"
|
||
width="420px"
|
||
:close-on-click-modal="false"
|
||
>
|
||
<el-form :model="yzForm" label-width="100px">
|
||
<el-form-item label="调价范围:" required>
|
||
<el-select v-model="yzForm.range" style="width: 188px;">
|
||
<el-option v-if="yzForm.rangeOptions && yzForm.rangeOptions.includes('N')" label="勾选记录" value="N"></el-option>
|
||
<el-option label="整单记录" value="Y"></el-option>
|
||
<el-option label="所查记录" value="C"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item :label="yzForm.factorLabel">
|
||
<el-input-number
|
||
v-model="yzForm.factorValue"
|
||
:precision="yzForm.JJFS === 'MX' || yzForm.JJFS === 'DX' ? 4 : 2"
|
||
:min="yzForm.MinYZZ ? parseFloat(yzForm.MinYZZ) : undefined"
|
||
:max="yzForm.MaxYZZ ? parseFloat(yzForm.MaxYZZ) : undefined"
|
||
style="width: 130px;"
|
||
controls-position="right">
|
||
</el-input-number>
|
||
<span style="margin-left: 10px;">{{ yzForm.factorUnit }}</span>
|
||
</el-form-item>
|
||
<el-form-item v-if="yzForm.showOnlyNegative && yzForm.BCYTJ === 'Y'">
|
||
<el-checkbox v-model="yzForm.onlyNegative">仅调整差额为负</el-checkbox>
|
||
</el-form-item>
|
||
<el-form-item v-if="yzForm.showHasTablePrice">
|
||
<el-checkbox v-model="yzForm.hasTablePrice">有{{ yzForm.JGBBJBM || '表价' }}</el-checkbox>
|
||
</el-form-item>
|
||
<el-form-item v-if="yzForm.showPurchased">
|
||
<el-checkbox v-model="yzForm.isPurchased">外购</el-checkbox>
|
||
<el-checkbox v-model="yzForm.isNonPurchased" style="margin-left: 20px;">非外购</el-checkbox>
|
||
</el-form-item>
|
||
</el-form>
|
||
<template #footer>
|
||
<div class="dialog-footer">
|
||
<el-button @click="closeYZDialog">取消</el-button>
|
||
<el-button type="primary" @click="confirmYZ">确定</el-button>
|
||
</div>
|
||
</template>
|
||
</el-dialog>
|
||
|
||
<!-- 数据加载中提示 -->
|
||
<div v-show="showLoading" class="overlay" >
|
||
<div class="loading-content">
|
||
<el-progress
|
||
v-if="showLoading"
|
||
type="circle"
|
||
:percentage="loadingProgress || 0"
|
||
:width="120"
|
||
:stroke-width="8"
|
||
>
|
||
<template #default="{ percentage }">
|
||
<span class="progress-text">{{ (percentage !== undefined && percentage !== null) ? percentage : 0 }}%</span>
|
||
</template>
|
||
</el-progress>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 查询条件抽屉 -->
|
||
<el-drawer
|
||
v-model="queryDrawerVisible"
|
||
:with-header="false"
|
||
direction="rtl"
|
||
size="500px"
|
||
>
|
||
<div style="padding: 20px; padding-bottom: 80px;">
|
||
<el-row :gutter="24" style="margin-bottom: 15px;">
|
||
<el-col :span="24">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">芯线结构:</span>
|
||
<el-input size="small" v-model="queryConditions.XLJGID" clearable placeholder="请输入芯线结构"></el-input>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24" style="margin-bottom: 15px;">
|
||
<el-col :span="24">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">线缆规格:</span>
|
||
<el-input size="small" v-model="queryConditions.XLGGID" clearable placeholder="请输入线缆规格"></el-input>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24" style="margin-bottom: 15px;" v-if="showJMBGS">
|
||
<el-col :span="24">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">截面比公式:</span>
|
||
<el-input size="small" v-model="queryConditions.JMBGS" clearable placeholder="请输入截面比公式"></el-input>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24" style="margin-bottom: 15px;">
|
||
<el-col :span="12">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">主芯截面范围始>=:</span>
|
||
<el-input size="small" v-model="queryConditions.ZJMS" clearable placeholder="请输入数字"></el-input>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">主芯截面范围止<=:</span>
|
||
<el-input size="small" v-model="queryConditions.ZJMZ" clearable placeholder="请输入数字"></el-input>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24" style="margin-bottom: 15px;">
|
||
<el-col :span="12">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">报价数量始:</span>
|
||
<div style="display: flex; align-items: center;">
|
||
<el-input size="small" v-model="queryConditions.BJSLS" clearable placeholder="请输入数字" style="flex: 1;"></el-input>
|
||
<span style="margin-left: 5px; white-space: nowrap;">{{ bjslUnit }}</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">报价数量止:</span>
|
||
<div style="display: flex; align-items: center;">
|
||
<el-input size="small" v-model="queryConditions.BJSLZ" clearable placeholder="请输入数字" style="flex: 1;"></el-input>
|
||
<span style="margin-left: 5px; white-space: nowrap;">{{ bjslUnit }}</span>
|
||
</div>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24" style="margin-bottom: 15px;">
|
||
<el-col :span="12">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">报价金额始:</span>
|
||
<el-input size="small" v-model="queryConditions.BJJES" clearable placeholder="请输入数字"></el-input>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">报价金额止:</span>
|
||
<el-input size="small" v-model="queryConditions.BJJEZ" clearable placeholder="请输入数字"></el-input>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24" style="margin-bottom: 15px;" v-if="showLSBJ">
|
||
<el-col :span="12">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">临时表价始:</span>
|
||
<el-input size="small" v-model="queryConditions.DJS" clearable placeholder="请输入数字"></el-input>
|
||
</div>
|
||
</el-col>
|
||
<el-col :span="12">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">临时表价止:</span>
|
||
<el-input size="small" v-model="queryConditions.DJZ" clearable placeholder="请输入数字"></el-input>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24" style="margin-bottom: 15px;" v-if="showBH">
|
||
<el-col :span="24">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">包号:</span>
|
||
<el-select size="small" v-model="queryConditions.BH" multiple filterable clearable placeholder="请选择包号" style="width: 100%">
|
||
<el-option v-for="item in bhOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
||
</el-select>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24" style="margin-bottom: 15px;">
|
||
<el-col :span="24">
|
||
<div class="grid-content">
|
||
<span class="cxtj-span" style="margin-bottom: 10px">{{ useCPML ? '产品目录:' : '产品用途:' }}</span>
|
||
<el-select size="small" v-model="queryConditions.CPYT" multiple filterable clearable :placeholder="useCPML ? '请选择产品目录' : '请选择产品用途'" style="width: 100%">
|
||
<el-option v-for="item in cpytOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
||
</el-select>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row :gutter="24" style="margin-bottom: 15px;" v-if="showXJBJ">
|
||
<el-col :span="24">
|
||
<div class="grid-content">
|
||
<el-checkbox v-model="queryConditions.XJBJCEWF">仅显示限价与报价差额为负</el-checkbox>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
<div style="position: fixed; bottom: 0; right: 0; width: 500px; background: #fff; border-top: 1px solid #e4e7ed; padding: 15px 20px; text-align: right; z-index: 2001;">
|
||
<el-button size="small" @click="handleResetFilter" plain>重 置</el-button>
|
||
<el-button type="primary" size="small" @click="confirmQueryDrawer">确 定</el-button>
|
||
</div>
|
||
</el-drawer>
|
||
</div>
|
||
</form>
|
||
|
||
<script src='images/BJDPLTJ.js?ver=<%=GThinking.N_MISPROAS.Web.ResFile.GetVer("Q_YCGL8") %>'></script>
|
||
<script>
|
||
|
||
</script>
|
||
</body>
|
||
</html>
|