jiaxing.zhou

Merge remote-tracking branch 'origin/master'

......@@ -1080,6 +1080,47 @@ Authorization: Bearer <JWT_TOKEN>
}
```
### 7.9 获取所有产品
**接口路径:** `GET /api/product/all`
**功能描述:** 获取所有启用的产品信息,用于下拉选择
**权限要求:**
**请求参数:**
**响应示例:**
```json
{
"code": 200,
"message": "操作成功",
"data": [
{
"productId": 1,
"productCode": "APL-IP15-128G-BK",
"productName": "iPhone 15|A2848|iPhone|黑色"
},
{
"productId": 2,
"productCode": "APL-IP15-256G-BK",
"productName": "iPhone 15|A2848|iPhone|黑色"
},
{
"productId": 3,
"productCode": "APL-IP15-128G-WH",
"productName": "iPhone 15|A2848|iPhone|白色"
}
]
}
```
**响应字段说明:**
- 只返回未删除且销售状态为在售的产品
- 按产品编码升序排列
- 产品名称格式:`产品名称|产品型号|产品类别|产品颜色`
- 主要用于订单管理等模块的下拉选择
## 8. 经销商管理 (DealerInfoController)
### 8.1 分页查询经销商列表
......@@ -1411,6 +1452,81 @@ Authorization: Bearer <JWT_TOKEN>
}
```
### 8.9 获取所有经销商
**接口路径:** `GET /api/dealer/all`
**功能描述:** 获取所有启用的经销商信息,用于下拉选择
**权限要求:**
**请求参数:**
**响应示例:**
```json
{
"code": 200,
"message": "操作成功",
"data": [
{
"dealerId": 1,
"dealerCode": "DL001",
"dealerName": "北京经销商",
"creditCode": "91110000123456789X",
"dealerLevel": 1,
"region": "北京",
"contactPerson": "张三",
"contactPhone": "13800138000",
"cooperateStartDate": "2024-01-01",
"cooperateStatus": 1,
"businessLicenseUrl": "https://example.com/license.jpg",
"cooperationAgreementUrl": "https://example.com/agreement.pdf",
"qualificationAuditStatus": 2,
"auditOpinion": "审核通过",
"totalRebateAmount": 10000.00,
"usedRebateAmount": 5000.00,
"pendingRebateAmount": 5000.00,
"lastRebateUpdateTime": "2024-01-01 10:00:00",
"createBy": "admin",
"createTime": "2024-01-01 10:00:00",
"updateBy": "admin",
"updateTime": "2024-01-01 10:00:00",
"delFlag": "0"
},
{
"dealerId": 2,
"dealerCode": "DL002",
"dealerName": "上海经销商",
"creditCode": "91310000123456789Y",
"dealerLevel": 2,
"region": "上海",
"contactPerson": "李四",
"contactPhone": "13900139000",
"cooperateStartDate": "2024-02-01",
"cooperateStatus": 1,
"businessLicenseUrl": "https://example.com/license2.jpg",
"cooperationAgreementUrl": "https://example.com/agreement2.pdf",
"qualificationAuditStatus": 2,
"auditOpinion": "审核通过",
"totalRebateAmount": 15000.00,
"usedRebateAmount": 8000.00,
"pendingRebateAmount": 7000.00,
"lastRebateUpdateTime": "2024-02-01 10:00:00",
"createBy": "admin",
"createTime": "2024-02-01 10:00:00",
"updateBy": "admin",
"updateTime": "2024-02-01 10:00:00",
"delFlag": "0"
}
]
}
```
**响应字段说明:**
- 只返回未删除且合作状态为正常的经销商
- 按经销商编码升序排列
- 主要用于订单管理等模块的下拉选择
## 数据字典
### 销售状态(saleStatus)
......
......@@ -33,6 +33,13 @@ public class DealerInfoController {
return ApiRes.success(page);
}
@Operation(summary = "获取所有经销商", description = "获取所有启用的经销商信息,用于下拉选择")
@GetMapping("/all")
public ApiRes<List<DealerInfo>> getAllDealers() {
List<DealerInfo> dealers = dealerInfoService.getAllDealers();
return ApiRes.success(dealers);
}
@Operation(summary = "获取经销商详情", description = "根据经销商ID获取经销商详细信息")
@GetMapping("/{dealerId}")
@PreAuthorize("hasAuthority('dealer:detail')")
......
......@@ -3,6 +3,7 @@ package com.apple.erp.controller;
import com.apple.erp.dto.ProductAddReq;
import com.apple.erp.dto.ProductQueryReq;
import com.apple.erp.dto.ProductUpdateReq;
import com.apple.erp.dto.ProductSimpleRes;
import com.apple.erp.entity.ProductInfo;
import com.apple.erp.service.ProductInfoService;
import com.apple.erp.dto.response.ApiRes;
......@@ -174,4 +175,15 @@ public class ProductInfoController {
return ApiRes.error("修改返利标识失败:" + e.getMessage());
}
}
@Operation(summary = "获取所有产品", description = "获取所有启用的产品信息,用于下拉选择")
@GetMapping("/all")
public ApiRes<List<ProductSimpleRes>> getAllProducts() {
try {
List<ProductSimpleRes> products = productInfoService.getAllProducts();
return ApiRes.success(products);
} catch (Exception e) {
return ApiRes.error("获取产品列表失败:" + e.getMessage());
}
}
}
......
package com.apple.erp.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* 产品简单信息响应DTO
* 用于下拉选择等场景
*
* @author Apple ERP Team
* @since 2025-01-27
*/
@Data
@Schema(description = "产品简单信息")
public class ProductSimpleRes {
@Schema(description = "产品ID")
private Long productId;
@Schema(description = "产品编码")
private String productCode;
@Schema(description = "产品名称")
private String productName;
}
......@@ -69,4 +69,10 @@ public interface DealerInfoService extends IService<DealerInfo> {
* @return 是否成功
*/
boolean updateDealerAuditStatus(Long dealerId, Integer qualificationAuditStatus, String auditOpinion);
/**
* 获取所有启用的经销商
* @return 经销商列表
*/
List<DealerInfo> getAllDealers();
}
......
......@@ -3,6 +3,7 @@ package com.apple.erp.service;
import com.apple.erp.dto.ProductAddReq;
import com.apple.erp.dto.ProductQueryReq;
import com.apple.erp.dto.ProductUpdateReq;
import com.apple.erp.dto.ProductSimpleRes;
import com.apple.erp.entity.ProductInfo;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -91,4 +92,11 @@ public interface ProductInfoService extends IService<ProductInfo> {
* @return 是否存在
*/
boolean checkProductCodeExists(String productCode, Long productId);
/**
* 获取所有启用的产品简单信息
*
* @return 产品简单信息列表
*/
List<ProductSimpleRes> getAllProducts();
}
......
......@@ -234,4 +234,13 @@ public class DealerInfoServiceImpl extends ServiceImpl<DealerInfoMapper, DealerI
}
return count(queryWrapper) > 0;
}
@Override
public List<DealerInfo> getAllDealers() {
LambdaQueryWrapper<DealerInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DealerInfo::getDelFlag, "0") // 未删除
.eq(DealerInfo::getCooperateStatus, 1) // 正常合作状态
.orderByAsc(DealerInfo::getDealerCode); // 按经销商编码排序
return list(queryWrapper);
}
}
......
......@@ -25,7 +25,7 @@ import java.util.stream.Collectors;
/**
* 出库主表Service实现类
*
*
* @author Apple ERP System
* @since 2025-01-01
*/
......
......@@ -3,6 +3,7 @@ package com.apple.erp.service.impl;
import com.apple.erp.dto.ProductAddReq;
import com.apple.erp.dto.ProductQueryReq;
import com.apple.erp.dto.ProductUpdateReq;
import com.apple.erp.dto.ProductSimpleRes;
import com.apple.erp.entity.ProductInfo;
import com.apple.erp.mapper.ProductInfoMapper;
import com.apple.erp.service.ProductInfoService;
......@@ -192,4 +193,40 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
return queryWrapper;
}
@Override
public List<ProductSimpleRes> getAllProducts() {
LambdaQueryWrapper<ProductInfo> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ProductInfo::getDelFlag, "0") // 未删除
.eq(ProductInfo::getSaleStatus, 1) // 在售状态
.orderByAsc(ProductInfo::getProductCode); // 按产品编码排序
List<ProductInfo> products = list(queryWrapper);
return products.stream()
.map(product -> {
ProductSimpleRes res = new ProductSimpleRes();
res.setProductId(product.getProductId());
res.setProductCode(product.getProductCode());
// 拼接产品名称:产品名称|产品型号|产品类别|产品颜色
StringBuilder productNameBuilder = new StringBuilder();
productNameBuilder.append(product.getProductName() != null ? product.getProductName() : "");
if (product.getProductModel() != null && !product.getProductModel().trim().isEmpty()) {
productNameBuilder.append("|").append(product.getProductModel());
}
if (product.getProductType() != null && !product.getProductType().trim().isEmpty()) {
productNameBuilder.append("|").append(product.getProductType());
}
if (product.getColor() != null && !product.getColor().trim().isEmpty()) {
productNameBuilder.append("|").append(product.getColor());
}
res.setProductName(productNameBuilder.toString());
return res;
})
.collect(java.util.stream.Collectors.toList());
}
}
......
......@@ -17,8 +17,8 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/apple_erp?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
username: apple_erp_app
password: StrongPassw0rd!
username: root
password: MySQL@123
druid:
# 初始连接数
initial-size: 5
......@@ -70,7 +70,7 @@ spring:
redis:
host: localhost
port: 6379
password: 123456
password:
database: 0
timeout: 10000ms
lettuce:
......
......@@ -8,32 +8,19 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
ElDialog: typeof import('element-plus/es')['ElDialog']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElInput: typeof import('element-plus/es')['ElInput']
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTag: typeof import('element-plus/es')['ElTag']
ElText: typeof import('element-plus/es')['ElText']
Header: typeof import('./src/components/layout/Header.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
Sidebar: typeof import('./src/components/layout/Sidebar.vue')['default']
SidebarItem: typeof import('./src/components/layout/SidebarItem.vue')['default']
}
export interface ComponentCustomProperties {
vLoading: typeof import('element-plus/es')['ElLoadingDirective']
}
}
......
......@@ -162,5 +162,10 @@ export const dealerApi = {
return api.post<ApiResponse>(`/dealer/${dealerId}/auditStatus`, null, {
params: { qualificationAuditStatus, auditOpinion }
})
},
// 获取所有经销商(用于下拉选择)
getAllDealers: () => {
return api.get<ApiResponse<DealerInfo[]>>('/dealer/all')
}
}
......
......@@ -55,6 +55,13 @@ export interface ProductInfo {
updateTime: string
}
// 产品简单信息接口(用于下拉选择)
export interface ProductSimpleRes {
productId: number
productCode: string
productName: string
}
// 产品查询请求参数
export interface ProductQueryReq {
productCode?: string
......@@ -157,5 +164,10 @@ export const productApi = {
// 修改返利标识
updateRebateFlag: (productId: number, rebateFlag: number) => {
return api.post(`/product/${productId}/rebate`, null, { params: { rebateFlag } })
},
// 获取所有产品(用于下拉选择)
getAllProducts: () => {
return api.get<ApiResponse<ProductSimpleRes[]>>('/product/all')
}
}
......
......@@ -4,11 +4,11 @@
<div class="search-section">
<div class="search-row">
<div class="search-item">
<label>单编号:</label>
<label>出库单编号:</label>
<input
v-model="searchParams.orderNo"
v-model="searchParams.deliveryNo"
class="search-input"
placeholder="请输入单编号"
placeholder="请输入出库单编号"
/>
</div>
<div class="search-item">
......@@ -38,17 +38,17 @@
</div>
<div class="search-row">
<div class="search-item">
<label>开始日期:</label>
<label>出库开始日期:</label>
<input
v-model="searchParams.startDate"
v-model="searchParams.deliveryStartDate"
class="search-input"
type="date"
/>
</div>
<div class="search-item">
<label>结束日期:</label>
<label>出库结束日期:</label>
<input
v-model="searchParams.endDate"
v-model="searchParams.deliveryEndDate"
class="search-input"
type="date"
/>
......@@ -113,6 +113,7 @@
<td>{{ formatTime(delivery.createTime || '') }}</td>
<td class="action-col">
<button @click="handleView(delivery)" class="view-btn">👁️ 查看</button>
<button @click="handleEdit(delivery)" class="edit-btn">✏️ 编辑</button>
<button @click="handleDelete(delivery)" class="delete-btn">🗑️ 删除</button>
</td>
</tr>
......@@ -230,13 +231,13 @@
</div>
</div>
<div class="detail-section" v-if="deliveryDetail?.deliveryItems && deliveryDetail.deliveryItems.length > 0">
<div class="detail-section" v-if="deliveryDetail.deliveryItems && deliveryDetail.deliveryItems.length > 0">
<h4>出库明细</h4>
<table class="detail-table">
<thead>
<tr>
<th>产品编码</th>
<th>产品名称</th>
<th>产品编码</th>
<th>出库数量</th>
<th>出库单价</th>
<th>出库金额</th>
......@@ -244,8 +245,8 @@
</thead>
<tbody>
<tr v-for="item in deliveryDetail.deliveryItems" :key="item.itemId || item.deliveryId">
<td>{{ item.productCode }}</td>
<td>{{ item.productName }}</td>
<td>{{ item.productCode }}</td>
<td>{{ item.deliveryQty }}</td>
<td>{{ formatCurrency(item.deliveryPrice) }}</td>
<td>{{ formatCurrency(item.deliveryAmount) }}</td>
......@@ -258,15 +259,15 @@
</div>
</div>
<!-- 新增出库对话框 -->
<div v-if="showAddDialog" class="dialog-overlay" @click="closeAddDialog">
<!-- 编辑出库对话框 -->
<div v-if="showEditDialog" class="dialog-overlay" @click="closeEditDialog">
<div class="dialog-content large-dialog" @click.stop>
<div class="dialog-header">
<h3>新增出库</h3>
<button @click="closeAddDialog" class="close-btn">×</button>
<h3>编辑出库</h3>
<button @click="closeEditDialog" class="close-btn">×</button>
</div>
<div class="dialog-body">
<form @submit.prevent="handleSubmitAdd">
<form @submit.prevent="handleSubmitEdit">
<!-- 出库基本信息 -->
<div class="form-section">
<h4>出库基本信息</h4>
......@@ -274,33 +275,215 @@
<div class="form-item">
<label class="required">出库单编号:</label>
<input
v-model="addFormData.deliveryNo"
v-model="editFormData.deliveryNo"
class="form-input"
placeholder="请输入出库单编号"
required
/>
</div>
<div class="form-item">
<label class="required">经销商编码:</label>
<label class="required">经销商名称:</label>
<select
v-model="editFormData.dealerName"
class="form-input"
@change="handleEditDealerChange"
required
>
<option value="">请选择经销商</option>
<option
v-for="dealer in dealerList"
:key="dealer.dealerId"
:value="dealer.dealerName"
>
{{ dealer.dealerName }}
</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label class="required">关联订单编号:</label>
<input
v-model="editFormData.orderNo"
class="form-input"
placeholder="请输入关联订单编号"
required
/>
</div>
<div class="form-item">
<label class="required">出库日期:</label>
<input
v-model="addFormData.dealerCode"
v-model="editFormData.deliveryDate"
class="form-input"
placeholder="请输入经销商编码"
type="datetime-local"
step="1"
required
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label class="required">经销商名称:</label>
<label>仓库编码:</label>
<input
v-model="addFormData.dealerName"
v-model="editFormData.warehouseCode"
class="form-input"
placeholder="请输入仓库编码"
/>
</div>
<div class="form-item">
<label>仓库名称:</label>
<input
v-model="editFormData.warehouseName"
class="form-input"
placeholder="请输入仓库名称"
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>数据来源:</label>
<input
v-model="editFormData.dataSource"
class="form-input"
placeholder="请输入数据来源"
/>
</div>
<!-- 经销商编码字段隐藏,通过选择经销商名称自动填充 -->
<input
v-model="editFormData.dealerCode"
type="hidden"
/>
</div>
</div>
<!-- 出库明细 -->
<div class="form-section">
<h4>出库明细</h4>
<div class="order-items-header">
<button type="button" @click="addEditDeliveryItem" class="add-item-btn">+ 添加明细</button>
</div>
<div class="order-items-container">
<div v-for="(item, index) in editFormData.deliveryItems" :key="index" class="order-item">
<div class="item-row-single">
<div class="form-item">
<label class="required">产品名称:</label>
<select
v-model="item.productName"
class="form-input"
@change="handleEditProductChange(index)"
required
>
<option value="">请选择产品</option>
<option
v-for="product in productList"
:key="product.productId"
:value="product.productName"
>
{{ product.productName }}
</option>
</select>
</div>
<div class="form-item">
<label class="required">产品编码:</label>
<input
v-model="item.productCode"
class="form-input readonly"
placeholder="自动填充"
readonly
required
/>
</div>
<div class="form-item">
<label class="required">出库数量:</label>
<input
v-model.number="item.deliveryQty"
class="form-input"
type="number"
placeholder="请输入出库数量"
@input="calculateEditDeliveryItemTotal(index)"
required
/>
</div>
<div class="form-item">
<label class="required">出库单价:</label>
<input
v-model.number="item.deliveryPrice"
class="form-input"
type="number"
step="0.01"
placeholder="请输入出库单价"
@input="calculateEditDeliveryItemTotal(index)"
required
/>
</div>
<div class="form-item">
<label>出库金额:</label>
<input
v-model.number="item.deliveryAmount"
class="form-input"
type="number"
step="0.01"
readonly
/>
</div>
<button type="button" @click="removeEditDeliveryItem(index)" class="remove-item-btn">删除</button>
</div>
</div>
</div>
</div>
<div class="form-actions">
<button type="button" @click="closeEditDialog" class="cancel-btn">取消</button>
<button type="submit" class="submit-btn">确定</button>
</div>
</form>
</div>
</div>
</div>
<!-- 新增出库对话框 -->
<div v-if="showAddDialog" class="dialog-overlay" @click="closeAddDialog">
<div class="dialog-content large-dialog" @click.stop>
<div class="dialog-header">
<h3>新增出库</h3>
<button @click="closeAddDialog" class="close-btn">×</button>
</div>
<div class="dialog-body">
<form @submit.prevent="handleSubmitAdd">
<!-- 出库基本信息 -->
<div class="form-section">
<h4>出库基本信息</h4>
<div class="form-row">
<div class="form-item">
<label class="required">出库单编号:</label>
<input
v-model="addFormData.deliveryNo"
class="form-input"
placeholder="请输入经销商名称"
placeholder="请输入出库单编号"
required
/>
</div>
<div class="form-item">
<label class="required">经销商名称:</label>
<select
v-model="addFormData.dealerName"
class="form-input"
@change="handleAddDealerChange"
required
>
<option value="">请选择经销商</option>
<option
v-for="dealer in dealerList"
:key="dealer.dealerId"
:value="dealer.dealerName"
>
{{ dealer.dealerName }}
</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label class="required">关联订单编号:</label>
<input
v-model="addFormData.orderNo"
......@@ -309,8 +492,6 @@
required
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label class="required">出库日期:</label>
<input
......@@ -321,6 +502,8 @@
required
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>仓库编码:</label>
<input
......@@ -329,8 +512,6 @@
placeholder="请输入仓库编码"
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>仓库名称:</label>
<input
......@@ -339,6 +520,8 @@
placeholder="请输入仓库名称"
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>数据来源:</label>
<input
......@@ -347,6 +530,11 @@
placeholder="请输入数据来源"
/>
</div>
<!-- 经销商编码字段隐藏,通过选择经销商名称自动填充 -->
<input
v-model="addFormData.dealerCode"
type="hidden"
/>
</div>
</div>
......@@ -360,20 +548,30 @@
<div v-for="(item, index) in addFormData.deliveryItems" :key="index" class="order-item">
<div class="item-row-single">
<div class="form-item">
<label class="required">产品编码:</label>
<input
v-model="item.productCode"
<label class="required">产品名称:</label>
<select
v-model="item.productName"
class="form-input"
placeholder="请输入产品编码"
@change="handleAddProductChange(index)"
required
/>
>
<option value="">请选择产品</option>
<option
v-for="product in productList"
:key="product.productId"
:value="product.productName"
>
{{ product.productName }}
</option>
</select>
</div>
<div class="form-item">
<label class="required">产品名称:</label>
<label class="required">产品编码:</label>
<input
v-model="item.productName"
class="form-input"
placeholder="请输入产品名称"
v-model="item.productCode"
class="form-input readonly"
placeholder="自动填充"
readonly
required
/>
</div>
......@@ -431,12 +629,17 @@
import { ref, reactive, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { deliveryApi, type DeliveryAddReq, type DeliveryInfo, type DeliveryQueryReq } from '../../api/delivery'
import { dealerApi, type DealerInfo } from '../../api/dealer'
import { productApi } from '../../api/product'
import type { ProductSimpleRes } from '../../api/product'
// 响应式数据
const loading = ref(false)
const deliveryList = ref<DeliveryInfo[]>([])
const showDetailDialog = ref(false)
const deliveryDetail = ref<DeliveryInfo | null>(null)
const dealerList = ref<DealerInfo[]>([])
const productList = ref<ProductSimpleRes[]>([])
// 新增出库相关数据
const showAddDialog = ref(false)
......@@ -452,9 +655,23 @@ const addFormData = reactive({
deliveryItems: [] as any[]
})
// 编辑出库相关数据
const showEditDialog = ref(false)
const editFormData = reactive({
deliveryId: 0,
deliveryNo: '',
dealerCode: '',
dealerName: '',
orderNo: '',
deliveryDate: '',
warehouseCode: '',
warehouseName: '',
dataSource: '',
deliveryItems: [] as any[]
})
// 搜索参数
const searchParams = reactive({
orderNo: '',
deliveryNo: '',
dealerCode: '',
dealerName: '',
......@@ -463,8 +680,6 @@ const searchParams = reactive({
dataSource: '',
deliveryStartDate: '',
deliveryEndDate: '',
startDate: '',
endDate: '',
pageNum: 1,
pageSize: 10
})
......@@ -541,7 +756,16 @@ const getPageNumbers = () => {
const fetchDeliveries = async () => {
try {
loading.value = true
const params = { ...searchParams, pageNum: pagination.pageNum, pageSize: pagination.pageSize }
// 处理日期格式,将日期转换为完整的日期时间格式
const processedParams = { ...searchParams }
if (processedParams.deliveryStartDate) {
processedParams.deliveryStartDate = processedParams.deliveryStartDate + ' 00:00:00'
}
if (processedParams.deliveryEndDate) {
processedParams.deliveryEndDate = processedParams.deliveryEndDate + ' 23:59:59'
}
const params = { ...processedParams, pageNum: pagination.pageNum, pageSize: pagination.pageSize }
const response = await deliveryApi.getDeliveryList(params) as any
console.log('出库查询API响应:', response)
......@@ -571,12 +795,12 @@ const handleSearch = () => {
const handleReset = () => {
Object.assign(searchParams, {
orderNo: '',
deliveryNo: '',
dealerCode: '',
dealerName: '',
deliveryStatus: undefined,
startDate: '',
endDate: ''
deliveryStartDate: '',
deliveryEndDate: ''
})
pagination.pageNum = 1
fetchDeliveries()
......@@ -600,6 +824,42 @@ const handleView = async (delivery: DeliveryInfo) => {
}
}
const handleEdit = async (delivery: DeliveryInfo) => {
try {
// 调用后端接口获取完整的出库详情(包括出库明细)
const response = await deliveryApi.getDeliveryDetail(delivery.deliveryId) as any
console.log('编辑出库API响应:', response)
if (response && response.deliveryId) {
// 处理日期时间格式,将后端返回的日期时间格式转换为前端datetime-local格式
let formattedDeliveryDate = response.deliveryDate
if (formattedDeliveryDate && formattedDeliveryDate.includes(' ')) {
// 将 YYYY-MM-DD HH:MM:SS 格式转换为 YYYY-MM-DDTHH:MM:SS 格式
formattedDeliveryDate = formattedDeliveryDate.replace(' ', 'T')
}
Object.assign(editFormData, {
deliveryId: response.deliveryId,
deliveryNo: response.deliveryNo,
dealerCode: response.dealerCode,
dealerName: response.dealerName,
orderNo: response.orderNo,
deliveryDate: formattedDeliveryDate,
warehouseCode: response.warehouseCode || '',
warehouseName: response.warehouseName || '',
dataSource: response.dataSource || '',
deliveryItems: response.deliveryItems || []
})
showEditDialog.value = true
} else {
showMessage('获取出库详情失败', 'error')
}
} catch (error) {
console.error('获取出库详情失败:', error)
showMessage('获取出库详情失败, 请重试', 'error')
}
}
const handleDelete = async (delivery: DeliveryInfo) => {
if (confirm(`确定要删除出库单"${delivery.deliveryNo}"吗?`)) {
try {
......@@ -709,6 +969,40 @@ const closeAddDialog = () => {
showAddDialog.value = false
}
const closeEditDialog = () => {
showEditDialog.value = false
}
// 经销商选择处理
const handleAddDealerChange = () => {
const selectedDealer = dealerList.value.find(dealer => dealer.dealerName === addFormData.dealerName)
if (selectedDealer) {
addFormData.dealerCode = selectedDealer.dealerCode
}
}
const handleEditDealerChange = () => {
const selectedDealer = dealerList.value.find(dealer => dealer.dealerName === editFormData.dealerName)
if (selectedDealer) {
editFormData.dealerCode = selectedDealer.dealerCode
}
}
// 产品选择处理
const handleAddProductChange = (index: number) => {
const selectedProduct = productList.value.find((product: ProductSimpleRes) => product.productName === addFormData.deliveryItems[index].productName)
if (selectedProduct) {
addFormData.deliveryItems[index].productCode = selectedProduct.productCode
}
}
const handleEditProductChange = (index: number) => {
const selectedProduct = productList.value.find((product: ProductSimpleRes) => product.productName === editFormData.deliveryItems[index].productName)
if (selectedProduct) {
editFormData.deliveryItems[index].productCode = selectedProduct.productCode
}
}
const addDeliveryItem = () => {
addFormData.deliveryItems.push({
productCode: '',
......@@ -723,6 +1017,20 @@ const removeDeliveryItem = (index: number) => {
addFormData.deliveryItems.splice(index, 1)
}
const addEditDeliveryItem = () => {
editFormData.deliveryItems.push({
productCode: '',
productName: '',
deliveryQty: 1,
deliveryPrice: 0,
deliveryAmount: 0
})
}
const removeEditDeliveryItem = (index: number) => {
editFormData.deliveryItems.splice(index, 1)
}
const calculateDeliveryItemTotal = (index: number) => {
const item = addFormData.deliveryItems[index]
if (item.deliveryQty && item.deliveryPrice) {
......@@ -730,6 +1038,13 @@ const calculateDeliveryItemTotal = (index: number) => {
}
}
const calculateEditDeliveryItemTotal = (index: number) => {
const item = editFormData.deliveryItems[index]
if (item.deliveryQty && item.deliveryPrice) {
item.deliveryAmount = item.deliveryQty * item.deliveryPrice
}
}
const handleSubmitAdd = async () => {
try {
// 处理日期时间格式,将datetime-local格式转换为后端需要的格式
......@@ -768,6 +1083,44 @@ const handleSubmitAdd = async () => {
}
}
const handleSubmitEdit = async () => {
try {
// 处理日期时间格式,将datetime-local格式转换为后端需要的格式
let formattedDeliveryDate = editFormData.deliveryDate
if (formattedDeliveryDate && formattedDeliveryDate.includes('T')) {
// 将 YYYY-MM-DDTHH:MM:SS 格式转换为 YYYY-MM-DD HH:MM:SS 格式
formattedDeliveryDate = formattedDeliveryDate.replace('T', ' ')
}
// 构造编辑出库的请求数据
const deliveryData = {
deliveryId: editFormData.deliveryId,
deliveryNo: editFormData.deliveryNo,
dealerCode: editFormData.dealerCode,
dealerName: editFormData.dealerName,
orderNo: editFormData.orderNo,
deliveryDate: formattedDeliveryDate,
warehouseCode: editFormData.warehouseCode,
dataSource: editFormData.dataSource || '系统录入',
deliveryItems: editFormData.deliveryItems.map(item => ({
productCode: item.productCode,
productName: item.productName,
deliveryQty: item.deliveryQty,
deliveryPrice: item.deliveryPrice,
deliveryAmount: item.deliveryAmount
}))
}
await deliveryApi.updateDelivery(deliveryData)
showMessage('编辑出库成功', 'success')
closeEditDialog()
fetchDeliveries() // 刷新列表
} catch (error) {
console.error('编辑出库失败:', error)
showMessage('编辑出库失败, 请重试', 'error')
}
}
const handlePageChange = (page: number) => {
......@@ -803,9 +1156,37 @@ const closeDetailDialog = () => {
deliveryDetail.value = null
}
// 加载经销商列表
const loadDealers = async () => {
try {
const response = await dealerApi.getAllDealers() as any
if (response && response.data && Array.isArray(response.data)) {
dealerList.value = response.data
}
} catch (error) {
console.error('加载经销商列表失败:', error)
showMessage('加载经销商列表失败', 'error')
}
}
// 加载产品列表
const loadProducts = async () => {
try {
const response = await productApi.getAllProducts() as any
if (response && response.data && Array.isArray(response.data)) {
productList.value = response.data
}
} catch (error) {
console.error('加载产品列表失败:', error)
showMessage('加载产品列表失败', 'error')
}
}
// 生命周期
onMounted(() => {
fetchDeliveries()
loadDealers()
loadProducts()
})
</script>
......@@ -1030,6 +1411,11 @@ onMounted(() => {
color: white;
}
.edit-btn {
background: #ffc107;
color: #333;
}
.delete-btn {
background: #dc3545;
color: white;
......@@ -1328,6 +1714,23 @@ onMounted(() => {
box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.2);
}
.form-select {
padding: 6px 8px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 12px;
width: 100%;
box-sizing: border-box;
background-color: #fff;
cursor: pointer;
}
.form-select:focus {
outline: none;
border-color: #007bff;
box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.2);
}
.form-actions {
display: flex;
justify-content: flex-end;
......@@ -1409,13 +1812,16 @@ onMounted(() => {
min-width: 0;
}
/* 产品名称字段 - 占用最多空间(现在在第一位) */
.order-item .form-item:nth-child(1) {
flex: 0 0 120px;
flex: 1 1 180px !important;
min-width: 120px !important;
max-width: 200px;
}
/* 产品编码字段 - 固定宽度(现在在第二位) */
.order-item .form-item:nth-child(2) {
flex: 1 1 200px;
min-width: 150px;
flex: 0 0 140px;
}
.order-item .form-item:nth-child(3) {
......
......@@ -5,9 +5,9 @@
<div class="search-row">
<div class="search-item">
<label>发票编号:</label>
<input
v-model="searchParams.invoiceNo"
class="search-input"
<input
v-model="searchParams.invoiceNo"
class="search-input"
placeholder="请输入发票编号"
/>
</div>
......@@ -48,7 +48,7 @@
<div class="search-item">
<label>开票开始日期:</label>
<input
v-model="searchParams.invoiceStartDate"
v-model="searchParams.invoiceStartDate"
class="search-input"
type="date"
/>
......@@ -56,7 +56,7 @@
<div class="search-item">
<label>开票结束日期:</label>
<input
v-model="searchParams.invoiceEndDate"
v-model="searchParams.invoiceEndDate"
class="search-input"
type="date"
/>
......@@ -101,7 +101,7 @@
<th>开票日期</th>
<th>发票金额</th>
<th>开票状态</th>
<th>上传时间</th>
<th>开票时间</th>
<th>关联订单编号</th>
<th>操作</th>
</tr>
......@@ -187,20 +187,20 @@
<form @submit.prevent="handleSubmit">
<div class="form-row">
<div class="form-item">
<label class="required">订单编号:</label>
<label class="required">发票号码:</label>
<input
v-model="formData.orderNo"
v-model="formData.invoiceNo"
class="form-input"
placeholder="请输入订单编号"
placeholder="请输入发票号码"
required
/>
</div>
<div class="form-item">
<label class="required">发票号码:</label>
<label class="required">订单编号:</label>
<input
v-model="formData.invoiceNo"
v-model="formData.orderNo"
class="form-input"
placeholder="请输入发票号码"
placeholder="请输入订单编号"
required
/>
</div>
......@@ -215,27 +215,28 @@
/>
</div>
<div class="form-item">
<label class="required">经销商编码:</label>
<input
v-model="formData.dealerCode"
class="form-input"
placeholder="请输入经销商编码"
required
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label class="required">经销商名称:</label>
<input
<select
v-model="formData.dealerName"
class="form-input"
placeholder="请输入经销商名称"
@change="handleDealerChange"
required
/>
>
<option value="">请选择经销商</option>
<option
v-for="dealer in dealerList"
:key="dealer.dealerId"
:value="dealer.dealerName"
>
{{ dealer.dealerName }}
</option>
</select>
</div>
</div>
<div class="form-row">
<input v-model="formData.dealerCode" type="hidden"/>
</div>
<div class="form-row">
<div class="form-item">
<label class="required">开票日期:</label>
<input
......@@ -292,6 +293,23 @@
<div class="invoice-items-container">
<div v-for="(item, index) in formData.invoiceItems" :key="index" class="invoice-item">
<div class="item-row-single">
<div class="form-item" style="flex: 1 1 200px; min-width: 150px;">
<label>产品名称:</label>
<select
v-model="item.productName"
class="form-input"
@change="handleProductChange(index)"
>
<option value="">请选择产品</option>
<option
v-for="product in productList"
:key="product.productId"
:value="product.productName"
>
{{ product.productName }}
</option>
</select>
</div>
<div class="form-item" style="flex: 0 0 120px;">
<label>产品编码:</label>
<input
......@@ -300,14 +318,6 @@
placeholder="产品编码"
/>
</div>
<div class="form-item" style="flex: 1 1 200px; min-width: 150px;">
<label>产品名称:</label>
<input
v-model="item.productName"
class="form-input"
placeholder="产品名称"
/>
</div>
<div class="form-item" style="flex: 0 0 80px;">
<label>数量:</label>
<input
......@@ -460,8 +470,8 @@
<table class="detail-table">
<thead>
<tr>
<th>产品编码</th>
<th>产品名称</th>
<th>产品编码</th>
<th>数量</th>
<th>单价</th>
<th>金额</th>
......@@ -471,8 +481,8 @@
</thead>
<tbody>
<tr v-for="item in invoiceDetail.invoiceItems" :key="item.invoiceItemId">
<td>{{ item.productCode }}</td>
<td>{{ item.productName }}</td>
<td>{{ item.productCode }}</td>
<td>{{ item.invoiceQty }}</td>
<td>{{ formatCurrency(item.unitPriceNoTax) }}</td>
<td class="amount-text">{{ formatCurrency(item.amountNoTax) }}</td>
......@@ -509,6 +519,9 @@
import { ref, reactive, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { invoiceApi, type InvoiceInfo, type InvoiceQueryReq } from '../../api/invoice'
import { dealerApi, type DealerInfo } from '../../api/dealer'
import { productApi } from '../../api/product'
import type { ProductSimpleRes } from '../../api/product'
// 响应式数据
const loading = ref(false)
......@@ -517,6 +530,8 @@ const showDialog = ref(false)
const showDetailDialog = ref(false)
const isEdit = ref(false)
const invoiceDetail = ref<InvoiceInfo | null>(null)
const dealerList = ref<DealerInfo[]>([])
const productList = ref<ProductSimpleRes[]>([])
// 搜索参数
const searchParams = reactive({
......@@ -1029,6 +1044,48 @@ const handleTableViewToggle = () => {
showMessage('视图切换功能开发中...', 'warning')
}
// 加载经销商列表
const loadDealers = async () => {
try {
const response = await dealerApi.getAllDealers() as any
if (response && response.data && Array.isArray(response.data)) {
dealerList.value = response.data
}
} catch (error) {
console.error('加载经销商列表失败:', error)
showMessage('加载经销商列表失败', 'error')
}
}
// 经销商选择变化处理
const handleDealerChange = () => {
const selectedDealer = dealerList.value.find(dealer => dealer.dealerName === formData.dealerName)
if (selectedDealer) {
formData.dealerCode = selectedDealer.dealerCode
}
}
// 加载产品列表
const loadProducts = async () => {
try {
const response = await productApi.getAllProducts() as any
if (response && response.data && Array.isArray(response.data)) {
productList.value = response.data
}
} catch (error) {
console.error('加载产品列表失败:', error)
showMessage('加载产品列表失败', 'error')
}
}
// 产品选择变化处理
const handleProductChange = (index: number) => {
const selectedProduct = productList.value.find((product: ProductSimpleRes) => product.productName === formData.invoiceItems[index].productName)
if (selectedProduct) {
formData.invoiceItems[index].productCode = selectedProduct.productCode
}
}
const closeDialog = () => {
showDialog.value = false
}
......@@ -1041,6 +1098,8 @@ const closeDetailDialog = () => {
// 生命周期
onMounted(() => {
fetchOrders()
loadDealers()
loadProducts()
})
</script>
......
......@@ -235,25 +235,25 @@
/>
</div>
<div class="form-item">
<label class="required">经销商编码:</label>
<input
v-model="formData.dealerCode"
class="form-input"
placeholder="请输入经销商编码"
required
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label class="required">经销商名称:</label>
<input
<select
v-model="formData.dealerName"
class="form-input"
placeholder="请输入经销商名称"
class="form-select"
@change="handleDealerChange"
required
/>
>
<option value="">请选择经销商</option>
<option
v-for="dealer in dealerList"
:key="dealer.dealerId"
:value="dealer.dealerName"
>
{{ dealer.dealerName }}
</option>
</select>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label class="required">订单日期:</label>
<input
......@@ -263,19 +263,19 @@
required
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label class="required">订单总金额:</label>
<label>订单总金额:</label>
<input
v-model.number="formData.totalAmount"
class="form-input"
class="form-input readonly"
type="number"
step="0.01"
placeholder="请输入订单总金额"
required
placeholder="自动计算"
readonly
/>
</div>
</div>
<div class="form-row">
<div class="form-item">
<label>返利金额:</label>
<input
......@@ -286,6 +286,11 @@
placeholder="请输入返利金额"
/>
</div>
<!-- 经销商编码字段隐藏,通过选择经销商名称自动填充 -->
<input
v-model="formData.dealerCode"
type="hidden"
/>
</div>
</div>
......@@ -297,25 +302,34 @@
</div>
<div class="order-items-container">
<div v-for="(item, index) in formData.orderItems" :key="index" class="order-item">
<div class="item-row-single">
<div class="form-item">
<label class="required">产品编码:</label>
<input
v-model="item.productCode"
class="form-input"
placeholder="请输入产品编码"
required
/>
</div>
<div class="form-item">
<label class="required">产品名称:</label>
<input
v-model="item.productName"
class="form-input"
placeholder="请输入产品名称"
required
/>
</div>
<div class="item-row-single">
<div class="form-item">
<label class="required">产品名称:</label>
<select
v-model="item.productName"
class="form-select"
@change="handleProductChange(index)"
required
>
<option value="">请选择产品</option>
<option
v-for="product in productList"
:key="product.productId"
:value="product.productName"
>
{{ product.productName }}
</option>
</select>
</div>
<div class="form-item">
<label class="required">产品编码:</label>
<input
v-model="item.productCode"
class="form-input readonly"
placeholder="自动填充"
readonly
/>
</div>
<div class="form-item">
<label class="required">商品数量:</label>
<input
......@@ -343,9 +357,10 @@
<label>明细金额:</label>
<input
v-model.number="item.itemAmount"
class="form-input"
class="form-input readonly"
type="number"
step="0.01"
placeholder="自动计算"
readonly
/>
</div>
......@@ -420,8 +435,8 @@
<table class="detail-table">
<thead>
<tr>
<th>产品编码</th>
<th>产品名称</th>
<th>产品编码</th>
<th>商品数量</th>
<th>单价</th>
<th>明细金额</th>
......@@ -429,8 +444,8 @@
</thead>
<tbody>
<tr v-for="item in orderDetail.orderItems" :key="item.itemId">
<td>{{ item.productCode }}</td>
<td>{{ item.productName }}</td>
<td>{{ item.productCode }}</td>
<td>{{ item.productQty }}</td>
<td>{{ formatCurrency(item.unitPrice) }}</td>
<td>{{ formatCurrency(item.itemAmount) }}</td>
......@@ -449,6 +464,9 @@
import { ref, reactive, computed, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { orderApi, type OrderInfo, type OrderQueryReq, type OrderAddReq, type OrderUpdateReq, type OrderItemAddReq } from '../../api/order'
import { dealerApi, type DealerInfo } from '../../api/dealer'
import { productApi } from '../../api/product'
import type { ProductSimpleRes } from '../../api/product'
// 响应式数据
const loading = ref(false)
......@@ -458,6 +476,8 @@ const showDialog = ref(false)
const showDetailDialog = ref(false)
const isEdit = ref(false)
const orderDetail = ref<OrderInfo | null>(null)
const dealerList = ref<DealerInfo[]>([])
const productList = ref<ProductSimpleRes[]>([])
// 搜索参数
const searchParams = reactive<OrderQueryReq>({
......@@ -701,6 +721,15 @@ const handleEdit = async (order: OrderInfo) => {
verifyStatus: response.verifyStatus,
orderItems: response.orderItems || []
})
// 编辑时重新计算总金额,确保数据一致性
calculateTotalAmount()
// 编辑时设置经销商编码(如果经销商名称已选择)
if (formData.dealerName) {
const selectedDealer = dealerList.value.find(dealer => dealer.dealerName === formData.dealerName)
if (selectedDealer) {
formData.dealerCode = selectedDealer.dealerCode
}
}
showDialog.value = true
} else {
showMessage('获取订单详情失败', 'error')
......@@ -880,10 +909,14 @@ const addOrderItem = () => {
unitPrice: 0,
itemAmount: 0
})
// 重新计算总金额
calculateTotalAmount()
}
const removeOrderItem = (index: number) => {
formData.orderItems.splice(index, 1)
// 重新计算总金额
calculateTotalAmount()
}
const calculateItemTotal = (index: number) => {
......@@ -891,6 +924,16 @@ const calculateItemTotal = (index: number) => {
if (item.productQty && item.unitPrice) {
item.itemAmount = item.productQty * item.unitPrice
}
// 重新计算订单总金额
calculateTotalAmount()
}
// 计算订单总金额
const calculateTotalAmount = () => {
const total = formData.orderItems.reduce((sum, item) => {
return sum + (item.itemAmount || 0)
}, 0)
formData.totalAmount = total
}
const handleSubmit = async () => {
......@@ -952,6 +995,48 @@ const handleSubmit = async () => {
}
}
// 经销商选择处理
const handleDealerChange = () => {
const selectedDealer = dealerList.value.find(dealer => dealer.dealerName === formData.dealerName)
if (selectedDealer) {
formData.dealerCode = selectedDealer.dealerCode
}
}
// 加载经销商列表
const loadDealers = async () => {
try {
const response = await dealerApi.getAllDealers() as any
if (response && response.data && Array.isArray(response.data)) {
dealerList.value = response.data
}
} catch (error) {
console.error('加载经销商列表失败:', error)
showMessage('加载经销商列表失败', 'error')
}
}
// 产品选择处理
const handleProductChange = (index: number) => {
const selectedProduct = productList.value.find((product: ProductSimpleRes) => product.productName === formData.orderItems[index].productName)
if (selectedProduct) {
formData.orderItems[index].productCode = selectedProduct.productCode
}
}
// 加载产品列表
const loadProducts = async () => {
try {
const response = await productApi.getAllProducts() as any
if (response && response.data && Array.isArray(response.data)) {
productList.value = response.data
}
} catch (error) {
console.error('加载产品列表失败:', error)
showMessage('加载产品列表失败', 'error')
}
}
const closeDialog = () => {
showDialog.value = false
formData.orderItems = []
......@@ -965,6 +1050,8 @@ const closeDetailDialog = () => {
// 生命周期
onMounted(() => {
fetchOrders()
loadDealers()
loadProducts()
})
</script>
......@@ -1438,7 +1525,26 @@ onMounted(() => {
border: 1px solid #ddd;
border-radius: 4px;
font-size: 12px;
width: 200px;
width: 250px;
height: 32px;
box-sizing: border-box;
}
.form-select {
background-color: #fff;
cursor: pointer;
}
.form-select:focus {
outline: none;
border-color: #007bff;
box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);
}
.form-input.readonly {
background-color: #f5f5f5;
color: #666;
cursor: not-allowed;
}
/* 订单明细中的输入框样式 - 优化空间利用 */
......@@ -1456,30 +1562,38 @@ onMounted(() => {
min-width: 0;
}
/* 产品编码字段 */
/* 产品名称字段 - 占用最多空间,增加长度(现在在第一位) */
.order-item .form-item:nth-child(1) {
flex: 0 0 120px;
flex: 1.5 1 200px;
min-width: 150px;
}
/* 产品名称字段 - 占用更多空间 */
/* 产品编码字段 - 固定宽度(现在在第二位),往左移动 */
.order-item .form-item:nth-child(2) {
flex: 1 1 200px;
min-width: 150px;
flex: 0 0 180px;
margin-left: -15px;
}
/* 数量字段 */
/* 产品编码输入框宽度调整为90% */
.order-item .form-item:nth-child(2) .form-input {
width: 90%;
}
/* 数量字段 - 较小宽度,往左移动 */
.order-item .form-item:nth-child(3) {
flex: 0 0 80px;
margin-left: -10px;
}
/* 单价字段 */
/* 单价字段 - 中等宽度,往左移动 */
.order-item .form-item:nth-child(4) {
flex: 0 0 100px;
flex: 0 0 110px;
margin-left: -5px;
}
/* 明细金额字段 */
/* 明细金额字段 - 中等宽度 */
.order-item .form-item:nth-child(5) {
flex: 0 0 100px;
flex: 0 0 110px;
}
.order-item .form-item label {
......@@ -1509,16 +1623,19 @@ onMounted(() => {
.order-items-container {
border: 1px solid #eee;
border-radius: 4px;
padding: 6px;
padding: 8px;
background: #f8f9fa;
width: 100%;
}
.order-item {
background: white;
border: 1px solid #ddd;
border-radius: 4px;
padding: 6px;
margin-bottom: 6px;
padding: 8px;
margin-bottom: 8px;
width: 100%;
box-sizing: border-box;
}
.order-item:last-child {
......@@ -1539,22 +1656,28 @@ onMounted(() => {
/* 单行布局 - 所有字段在一行显示,优化空间利用 */
.item-row-single {
display: flex;
gap: 4px;
gap: 8px;
align-items: end;
flex-wrap: nowrap;
justify-content: space-between;
width: 100%;
}
.remove-item-btn {
padding: 4px 8px;
padding: 6px 12px;
background: #dc3545;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 11px;
height: 28px;
height: 32px;
align-self: end;
transition: background-color 0.2s;
flex-shrink: 0;
}
.remove-item-btn:hover {
background: #c82333;
}
.form-actions {
......
{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@vue/shared/dist/shared.d.ts","./node_modules/@vue/reactivity/dist/reactivity.d.ts","./node_modules/@vue/runtime-core/dist/runtime-core.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","./node_modules/vue/jsx-runtime/index.d.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@vue/compiler-core/dist/compiler-core.d.ts","./node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts","./node_modules/vue/dist/vue.d.mts","./src/app.vue.ts","./node_modules/element-plus/es/utils/vue3.3.polyfill.d.ts","./node_modules/dayjs/locale/types.d.ts","./node_modules/dayjs/locale/index.d.ts","./node_modules/dayjs/index.d.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/async-validator/dist-types/interface.d.ts","./node_modules/async-validator/dist-types/index.d.ts","./node_modules/vue-demi/lib/index.d.ts","./node_modules/@vueuse/shared/index.d.ts","./node_modules/@vueuse/core/index.d.ts","./node_modules/memoize-one/dist/memoize-one.d.ts","./node_modules/@floating-ui/utils/dist/floating-ui.utils.d.mts","./node_modules/@floating-ui/core/dist/floating-ui.core.d.mts","./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.mts","./node_modules/@floating-ui/dom/dist/floating-ui.dom.d.mts","./node_modules/vue-router/dist/vue-router.d.ts","./node_modules/@ctrl/tinycolor/dist/interfaces.d.ts","./node_modules/@ctrl/tinycolor/dist/index.d.ts","./node_modules/@ctrl/tinycolor/dist/css-color-names.d.ts","./node_modules/@ctrl/tinycolor/dist/readability.d.ts","./node_modules/@ctrl/tinycolor/dist/to-ms-filter.d.ts","./node_modules/@ctrl/tinycolor/dist/from-ratio.d.ts","./node_modules/@ctrl/tinycolor/dist/format-input.d.ts","./node_modules/@ctrl/tinycolor/dist/random.d.ts","./node_modules/@ctrl/tinycolor/dist/conversion.d.ts","./node_modules/@ctrl/tinycolor/dist/public_api.d.ts","./node_modules/element-plus/es/index.d.ts","./node_modules/pinia/dist/pinia.d.ts","./src/types/index.ts","./node_modules/axios/index.d.ts","./src/views/test.vue.ts","./node_modules/@types/nprogress/index.d.ts","./src/router/index.ts","./src/utils/request.ts","./src/api/auth.ts","./node_modules/@types/js-cookie/index.d.ts","./node_modules/@types/js-cookie/index.d.mts","./src/utils/auth.ts","./src/stores/modules/user.ts","./src/stores/modules/app.ts","./src/components/layout/header.vue.ts","./src/api/menu.ts","./src/stores/modules/permission.ts","./src/components/layout/sidebaritem.vue.ts","./src/components/layout/sidebar.vue.ts","./src/layouts/index.vue.ts","./src/utils/index.ts","./src/views/dashboard/index.vue.ts","./src/views/error/404.vue.ts","./src/views/login/index.vue.ts","./src/views/sys/dict/index.vue.ts","./src/views/sys/log/index.vue.ts","./src/views/sys/menu/index.vue.ts","./src/views/sys/role/index.vue.ts","./src/views/sys/user/index.vue.ts","./__vls_types.d.ts","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/vite/types/importmeta.d.ts","./node_modules/vite/client.d.ts","./env.d.ts","./src/main.ts","./src/api/dict.ts","./src/api/log.ts","./src/api/role.ts","./src/api/user.ts","./auto-imports.d.ts","./components.d.ts","./node_modules/element-plus/global.d.ts","./src/components/layout/header.vue","./src/views/test.vue","./src/views/login/index.vue","./src/views/error/404.vue"],"fileInfos":[{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},"0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0",{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},"0","0","0","0","0",{"version":"0","affectsGlobalScope":true},"0","0"],"root":[57,98,100,[102,104],[107,125],[132,139]],"options":{"composite":true,"esModuleInterop":true,"jsx":1,"jsxImportSource":"vue","module":99,"noImplicitThis":true,"skipLibCheck":true,"strict":true,"target":99,"useDefineForClassFields":true},"fileIdsList":[[48,50,51,56,58,85,97,139,140],[56,58,85,97,139,140],[56,58,85,97,110,113,114,140],[56,58,85,97,131,139,140],[52],[86],[87],[86,87,88,89,90,91,92,93,94],[81],[82,83],[105],[62,64,65,66,67,68,69,70,71,72,73,74],[62,63,65,66,67,68,69,70,71,72,73,74],[63,64,65,66,67,68,69,70,71,72,73,74],[62,63,64,66,67,68,69,70,71,72,73,74],[62,63,64,65,67,68,69,70,71,72,73,74],[62,63,64,65,66,68,69,70,71,72,73,74],[62,63,64,65,66,67,69,70,71,72,73,74],[62,63,64,65,66,67,68,70,71,72,73,74],[62,63,64,65,66,67,68,69,71,72,73,74],[62,63,64,65,66,67,68,69,70,72,73,74],[62,63,64,65,66,67,68,69,70,71,73,74],[62,63,64,65,66,67,68,69,70,71,72,74],[62,63,64,65,66,67,68,69,70,71,72,73],[46,52,53],[54],[46],[46,47,48,50],[47,48,49,50],[77,78],[77],[75],[60],[59],[49,56,58,61,74,76,79,80,82,84,85,95,97,139,140],[56,58,85,96,97,139],[56,58,77,85,139,140],[130],[126],[127],[128,129],[50,55],[50],[51,98,103],[51,56,58,85,97,139,140],[51,56,58,85,96,97,108,109,139,140],[51,56,58,85,97,98,109,112,113,139,140],[51,56,58,85,97,98,139,140],[51,56,58,85,97,98,109,110,114,139,140],[51,56,57,58,85,97,102,139,140],[51,85,100,101,131],[51,56,58,85,97,98,102,108,111,139,140],[51,56,58,85,96,97,98,104,107,139,140],[51],[51,106],[51,96,99,102,108],[51,56,58,85,97,108,116,139,140],[51,56,58,85,96,97,98,108,139,140],[51,56,58,85,96,97,98,139,140],[131],[49,56,58,61,74,76,79,80,82,84,85,95,97,141],[56,58,85,97,141],[56,58,77,85,141],[48,50,51,56,58,85,97,101,142],[48,50,51,56,58,85,97,140,142],[48,50,51,56,58,85,97,101,141],[48,50,51,56,58,85,97,141],[132,133],[134],[56,58,85,97,135,141],[51,56,58,85,97,102,141,143],[51,85,96,135,144],[51,56,58,85,97,98,141],[51,56,58,85,97,98,102,108,111,141],[51,56,58,85,96,97,98,104,107,141]],"referencedMap":[[125,1],[138,2],[139,3],[132,4],[53,5],[94,6],[92,6],[91,7],[87,6],[95,8],[93,7],[89,7],[90,7],[82,9],[84,10],[106,11],[63,12],[64,13],[62,14],[65,15],[66,16],[67,17],[68,18],[69,19],[70,20],[71,21],[72,22],[73,23],[74,24],[54,25],[55,26],[47,27],[48,28],[50,29],[79,30],[78,31],[76,32],[61,33],[60,34],[96,35],[58,2],[140,36],[97,37],[131,38],[127,39],[128,40],[130,41],[77,2],[85,2],[56,42],[51,43],[104,44],[134,44],[135,44],[111,44],[136,44],[137,44],[57,45],[110,46],[114,47],[113,48],[115,49],[133,50],[102,51],[109,48],[112,52],[108,53],[98,54],[107,55],[116,54],[103,56],[117,57],[118,45],[119,58],[120,59],[121,59],[122,59],[123,59],[124,59],[100,45]],"exportedModulesMap":[[125,1],[138,44],[139,44],[132,60],[53,5],[94,6],[92,6],[91,7],[87,6],[95,8],[93,7],[89,7],[90,7],[82,9],[84,10],[106,11],[63,12],[64,13],[62,14],[65,15],[66,16],[67,17],[68,18],[69,19],[70,20],[71,21],[72,22],[73,23],[74,24],[54,25],[55,26],[47,27],[48,28],[50,29],[79,30],[78,31],[76,32],[61,33],[60,34],[96,61],[58,62],[140,44],[97,63],[131,38],[127,64],[126,65],[128,66],[129,67],[77,62],[85,62],[56,42],[51,43],[104,44],[134,68],[135,69],[111,44],[136,70],[137,71],[57,45],[110,46],[114,47],[113,48],[115,49],[102,72],[109,73],[112,74],[108,75],[98,54],[107,55],[116,54],[103,56],[117,57],[118,45],[119,58],[120,59],[121,59],[122,59],[123,59],[124,59],[100,45]],"semanticDiagnosticsPerFile":[125,138,139,132,53,52,94,88,92,91,87,86,95,93,89,90,82,84,81,83,106,105,63,64,62,65,66,67,68,69,70,71,72,73,74,101,54,55,47,48,50,46,79,78,76,75,99,49,61,60,59,96,58,140,80,97,44,45,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,20,24,21,22,23,25,26,27,5,28,29,30,31,6,35,32,33,34,36,7,37,42,43,38,39,40,41,1,131,127,126,128,129,130,77,85,56,51,104,134,135,111,136,137,57,110,114,113,115,133,102,109,112,108,98,107,116,103,117,118,119,120,121,122,123,124,100],"affectedFilesPendingEmit":[104,134,135,111,136,137,57,110,114,113,115,133,102,109,112,108,98,107,116,103,117,118,119,120,121,122,123,124,100],"emitSignatures":[57,98,100,102,103,104,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,137]},"version":"5.2.2"}
\ No newline at end of file
{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@vue/shared/dist/shared.d.ts","./node_modules/@vue/reactivity/dist/reactivity.d.ts","./node_modules/@vue/runtime-core/dist/runtime-core.d.ts","./node_modules/csstype/index.d.ts","./node_modules/@vue/runtime-dom/dist/runtime-dom.d.ts","./node_modules/vue/jsx-runtime/index.d.ts","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@vue/compiler-core/dist/compiler-core.d.ts","./node_modules/@vue/compiler-dom/dist/compiler-dom.d.ts","./node_modules/vue/dist/vue.d.mts","./src/app.vue.ts","./node_modules/element-plus/es/utils/vue3.3.polyfill.d.ts","./node_modules/dayjs/locale/types.d.ts","./node_modules/dayjs/locale/index.d.ts","./node_modules/dayjs/index.d.ts","./node_modules/@types/lodash/common/common.d.ts","./node_modules/@types/lodash/common/array.d.ts","./node_modules/@types/lodash/common/collection.d.ts","./node_modules/@types/lodash/common/date.d.ts","./node_modules/@types/lodash/common/function.d.ts","./node_modules/@types/lodash/common/lang.d.ts","./node_modules/@types/lodash/common/math.d.ts","./node_modules/@types/lodash/common/number.d.ts","./node_modules/@types/lodash/common/object.d.ts","./node_modules/@types/lodash/common/seq.d.ts","./node_modules/@types/lodash/common/string.d.ts","./node_modules/@types/lodash/common/util.d.ts","./node_modules/@types/lodash/index.d.ts","./node_modules/async-validator/dist-types/interface.d.ts","./node_modules/async-validator/dist-types/index.d.ts","./node_modules/vue-demi/lib/index.d.ts","./node_modules/@vueuse/shared/index.d.ts","./node_modules/@vueuse/core/index.d.ts","./node_modules/memoize-one/dist/memoize-one.d.ts","./node_modules/@floating-ui/utils/dist/floating-ui.utils.d.mts","./node_modules/@floating-ui/core/dist/floating-ui.core.d.mts","./node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.d.mts","./node_modules/@floating-ui/dom/dist/floating-ui.dom.d.mts","./node_modules/vue-router/dist/vue-router.d.ts","./node_modules/@ctrl/tinycolor/dist/interfaces.d.ts","./node_modules/@ctrl/tinycolor/dist/index.d.ts","./node_modules/@ctrl/tinycolor/dist/css-color-names.d.ts","./node_modules/@ctrl/tinycolor/dist/readability.d.ts","./node_modules/@ctrl/tinycolor/dist/to-ms-filter.d.ts","./node_modules/@ctrl/tinycolor/dist/from-ratio.d.ts","./node_modules/@ctrl/tinycolor/dist/format-input.d.ts","./node_modules/@ctrl/tinycolor/dist/random.d.ts","./node_modules/@ctrl/tinycolor/dist/conversion.d.ts","./node_modules/@ctrl/tinycolor/dist/public_api.d.ts","./node_modules/element-plus/es/index.d.ts","./node_modules/pinia/dist/pinia.d.ts","./src/types/index.ts","./node_modules/axios/index.d.ts","./src/api/auth.ts","./node_modules/@types/js-cookie/index.d.ts","./node_modules/@types/js-cookie/index.d.mts","./src/utils/auth.ts","./src/stores/modules/user.ts","./src/stores/modules/app.ts","./src/components/layout/header.vue.ts","./src/api/menu.ts","./src/views/login/index.vue.ts","./src/utils/request.ts","./src/layouts/mainlayout.vue.ts","./src/views/dashboard/index.vue.ts","./src/api/user.ts","./src/api/role.ts","./src/views/users/index.vue.ts","./src/views/test.vue.ts","./node_modules/@types/nprogress/index.d.ts","./src/api/product.ts","./src/views/product/index.vue.ts","./src/views/sys/role/index.vue.ts","./src/views/sys/menu/index.vue.ts","./src/api/dict.ts","./src/views/sys/dict/index.vue.ts","./src/api/dictitem.ts","./src/views/sys/dict-item/index.vue.ts","./node_modules/@element-plus/icons-vue/dist/types/components/add-location.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/aim.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/alarm-clock.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/apple.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/arrow-down-bold.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/arrow-down.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/arrow-left-bold.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/arrow-left.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/arrow-right-bold.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/arrow-right.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/arrow-up-bold.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/arrow-up.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/avatar.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/back.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/baseball.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/basketball.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/bell-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/bell.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/bicycle.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/bottom-left.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/bottom-right.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/bottom.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/bowl.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/box.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/briefcase.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/brush-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/brush.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/burger.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/calendar.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/camera-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/camera.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/caret-bottom.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/caret-left.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/caret-right.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/caret-top.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/cellphone.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/chat-dot-round.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/chat-dot-square.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/chat-line-round.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/chat-line-square.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/chat-round.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/chat-square.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/check.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/checked.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/cherry.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/chicken.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/chrome-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/circle-check-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/circle-check.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/circle-close-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/circle-close.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/circle-plus-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/circle-plus.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/clock.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/close-bold.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/close.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/cloudy.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/coffee-cup.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/coffee.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/coin.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/cold-drink.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/collection-tag.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/collection.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/comment.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/compass.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/connection.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/coordinate.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/copy-document.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/cpu.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/credit-card.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/crop.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/d-arrow-left.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/d-arrow-right.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/d-caret.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/data-analysis.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/data-board.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/data-line.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/delete-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/delete-location.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/delete.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/dessert.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/discount.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/dish-dot.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/dish.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/document-add.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/document-checked.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/document-copy.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/document-delete.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/document-remove.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/document.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/download.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/drizzling.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/edit-pen.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/edit.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/eleme-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/eleme.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/element-plus.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/expand.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/failed.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/female.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/files.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/film.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/filter.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/finished.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/first-aid-kit.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/flag.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/fold.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/folder-add.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/folder-checked.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/folder-delete.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/folder-opened.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/folder-remove.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/folder.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/food.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/football.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/fork-spoon.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/fries.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/full-screen.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/goblet-full.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/goblet-square-full.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/goblet-square.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/goblet.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/gold-medal.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/goods-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/goods.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/grape.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/grid.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/guide.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/handbag.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/headset.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/help-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/help.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/hide.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/histogram.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/home-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/hot-water.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/house.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/ice-cream-round.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/ice-cream-square.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/ice-cream.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/ice-drink.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/ice-tea.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/info-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/iphone.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/key.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/knife-fork.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/lightning.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/link.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/list.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/loading.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/location-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/location-information.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/location.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/lock.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/lollipop.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/magic-stick.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/magnet.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/male.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/management.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/map-location.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/medal.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/memo.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/menu.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/message-box.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/message.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/mic.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/microphone.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/milk-tea.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/minus.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/money.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/monitor.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/moon-night.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/moon.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/more-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/more.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/mostly-cloudy.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/mouse.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/mug.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/mute-notification.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/mute.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/no-smoking.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/notebook.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/notification.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/odometer.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/office-building.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/open.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/operation.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/opportunity.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/orange.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/paperclip.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/partly-cloudy.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/pear.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/phone-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/phone.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/picture-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/picture-rounded.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/picture.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/pie-chart.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/place.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/platform.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/plus.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/pointer.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/position.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/postcard.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/pouring.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/present.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/price-tag.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/printer.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/promotion.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/quartz-watch.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/question-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/rank.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/reading-lamp.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/reading.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/refresh-left.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/refresh-right.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/refresh.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/refrigerator.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/remove-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/remove.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/right.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/scale-to-original.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/school.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/scissor.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/search.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/select.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/sell.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/semi-select.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/service.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/set-up.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/setting.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/share.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/ship.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/shop.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/shopping-bag.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/shopping-cart-full.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/shopping-cart.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/shopping-trolley.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/smoking.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/soccer.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/sold-out.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/sort-down.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/sort-up.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/sort.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/stamp.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/star-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/star.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/stopwatch.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/success-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/sugar.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/suitcase-line.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/suitcase.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/sunny.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/sunrise.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/sunset.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/switch-button.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/switch-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/switch.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/takeaway-box.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/ticket.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/tickets.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/timer.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/toilet-paper.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/tools.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/top-left.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/top-right.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/top.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/trend-charts.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/trophy-base.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/trophy.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/turn-off.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/umbrella.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/unlock.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/upload-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/upload.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/user-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/user.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/van.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/video-camera-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/video-camera.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/video-pause.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/video-play.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/view.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/wallet-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/wallet.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/warn-triangle-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/warning-filled.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/warning.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/watch.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/watermelon.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/wind-power.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/zoom-in.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/zoom-out.vue.d.ts","./node_modules/@element-plus/icons-vue/dist/types/components/index.d.ts","./node_modules/@element-plus/icons-vue/dist/types/index.d.ts","./src/api/log.ts","./src/utils/index.ts","./src/views/sys/log/index.vue.ts","./src/api/dealer.ts","./src/views/dealer/index.vue.ts","./src/api/order.ts","./src/views/order/index.vue.ts","./src/api/delivery.ts","./src/views/delivery/index.vue.ts","./src/api/invoice.ts","./src/views/invoice/index.vue.ts","./node_modules/echarts/types/dist/echarts.d.ts","./node_modules/echarts/index.d.ts","./src/api/rebate.ts","./src/views/rebate/index.vue.ts","./src/api/exceptionworkorder.ts","./src/views/exceptionworkorder/index.vue.ts","./src/views/settings/index.vue.ts","./src/router/index.ts","./src/stores/modules/permission.ts","./src/components/layout/sidebaritem.vue.ts","./src/components/layout/sidebar.vue.ts","./src/layouts/index.vue.ts","./src/views/error/404.vue.ts","./__vls_types.d.ts","./node_modules/vite/types/hmrpayload.d.ts","./node_modules/vite/types/customevent.d.ts","./node_modules/vite/types/hot.d.ts","./node_modules/vite/types/importglob.d.ts","./node_modules/vite/types/importmeta.d.ts","./node_modules/vite/client.d.ts","./env.d.ts","./src/main.ts","./auto-imports.d.ts","./components.d.ts","./node_modules/element-plus/global.d.ts","./src/views/test.vue","./src/views/error/404.vue","./src/components/layout/header.vue","./src/views/login/index.vue"],"fileInfos":[{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},"0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0",{"version":"0","affectsGlobalScope":true},"0","0","0","0",{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},{"version":"0","affectsGlobalScope":true},"0",{"version":"0","affectsGlobalScope":true},"0","0"],"root":[57,98,100,[103,115],[117,124],[420,430],[433,444],[451,454]],"options":{"composite":true,"esModuleInterop":true,"jsx":1,"jsxImportSource":"vue","module":99,"noImplicitThis":true,"skipLibCheck":true,"strict":true,"target":99,"useDefineForClassFields":true},"fileIdsList":[[48,50,51,56,58,85,97,454,455],[96],[56,58,85,96,97,106,440,441,455],[56,58,85,97,450,454,455],[52],[86],[87],[86,87,88,89,90,91,92,93,94],[56,58,85,97,454,455],[125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417],[418],[81],[82,83],[101],[62,64,65,66,67,68,69,70,71,72,73,74],[62,63,65,66,67,68,69,70,71,72,73,74],[63,64,65,66,67,68,69,70,71,72,73,74],[62,63,64,66,67,68,69,70,71,72,73,74],[62,63,64,65,67,68,69,70,71,72,73,74],[62,63,64,65,66,68,69,70,71,72,73,74],[62,63,64,65,66,67,69,70,71,72,73,74],[62,63,64,65,66,67,68,70,71,72,73,74],[62,63,64,65,66,67,68,69,71,72,73,74],[62,63,64,65,66,67,68,69,70,72,73,74],[62,63,64,65,66,67,68,69,70,71,73,74],[62,63,64,65,66,67,68,69,70,71,72,74],[62,63,64,65,66,67,68,69,70,71,72,73],[46,52,53],[54],[46],[46,47,48,50],[47,48,49,50],[77,78],[77],[75],[60],[59],[431],[49,56,58,61,74,76,79,80,82,84,85,95,97,454,455],[56,58,85,96,97,454],[56,58,77,85,454,455],[449],[445],[446],[447,448],[50,55],[50],[51,98,99],[51,99],[51,109],[51,56,58,85,97,454,455],[51,56,58,85,96,97,104,105,454,455],[51,56,58,85,97,98,105,439,440,454,455],[51,56,58,85,97,98,454,455],[51,56,58,85,97,98,105,106,441,454,455],[51,56,58,85,97,100,109,454,455],[51,56,57,58,85,96,97,438,450,454,455],[51,85,108,110,111,114,115,116,118,119,120,122,124,422,424,426,428,430,434,436,437,450,451],[51,56,58,85,97,98,104,107,438,454,455],[51,56,58,85,96,97,98,100,103,454,455],[51],[51,102],[51,96,99,104,438],[51,56,58,85,97,109,454,455],[51,56,58,85,97,423,454,455],[51,56,58,85,96,97,117,423,427,454,455],[51,56,58,61,85,96,97,419,435,454,455],[51,56,58,85,96,97,117,423,429,454,455],[51,56,58,85,97,99,454,455],[51,56,58,85,96,97,117,423,425,454,455],[51,56,58,85,97,117,454,455],[51,56,58,85,96,97,419,421,432,433,454,455],[51,56,58,85,97,121,123,454,455],[51,56,58,85,97,121,454,455],[51,56,58,85,96,97,419,420,421,454,455],[51,56,58,85,97,107,454,455],[51,56,58,85,97,113,454,455],[51,56,58,85,97,112,113,454,455],[51,56,58,85,97,438,456,457],[51,98,109],[450],[49,56,58,61,74,76,79,80,82,84,85,95,97,456],[56,58,85,97,456],[56,58,77,85,456],[48,50,51,56,58,85,97,458,459],[48,50,51,56,58,85,97,455,458],[48,50,51,56,58,85,97,116,459],[48,50,51,56,58,85,97,116,456],[48,50,51,56,58,85,97,456],[121,452],[420],[56,58,85,97,113,456],[451],[51,85,96,113],[51,56,58,85,97,98,456],[51,56,58,85,97,98,104,107,438,456],[51,56,58,85,96,97,98,100,103,456]],"referencedMap":[[444,1],[453,2],[454,3],[451,4],[53,5],[94,6],[92,6],[91,7],[87,6],[95,8],[93,7],[89,7],[90,7],[125,9],[126,9],[127,9],[128,9],[129,9],[130,9],[131,9],[132,9],[133,9],[134,9],[135,9],[136,9],[137,9],[138,9],[139,9],[140,9],[141,9],[142,9],[143,9],[144,9],[145,9],[146,9],[147,9],[148,9],[149,9],[150,9],[151,9],[152,9],[153,9],[154,9],[155,9],[156,9],[157,9],[158,9],[159,9],[160,9],[161,9],[162,9],[163,9],[164,9],[165,9],[166,9],[167,9],[168,9],[169,9],[170,9],[171,9],[172,9],[173,9],[174,9],[175,9],[176,9],[177,9],[178,9],[179,9],[180,9],[181,9],[182,9],[183,9],[184,9],[185,9],[186,9],[187,9],[188,9],[189,9],[190,9],[191,9],[192,9],[193,9],[194,9],[195,9],[196,9],[197,9],[198,9],[199,9],[200,9],[201,9],[202,9],[203,9],[204,9],[205,9],[206,9],[207,9],[208,9],[209,9],[210,9],[211,9],[212,9],[213,9],[214,9],[215,9],[216,9],[217,9],[218,9],[219,9],[220,9],[221,9],[222,9],[223,9],[224,9],[225,9],[226,9],[227,9],[228,9],[229,9],[230,9],[231,9],[232,9],[233,9],[234,9],[235,9],[236,9],[237,9],[238,9],[239,9],[240,9],[241,9],[242,9],[243,9],[244,9],[245,9],[246,9],[247,9],[248,9],[249,9],[250,9],[251,9],[252,9],[253,9],[254,9],[255,9],[256,9],[257,9],[258,9],[259,9],[260,9],[261,9],[262,9],[263,9],[264,9],[265,9],[266,9],[418,10],[267,9],[268,9],[269,9],[270,9],[271,9],[272,9],[273,9],[274,9],[275,9],[276,9],[277,9],[278,9],[279,9],[280,9],[281,9],[282,9],[283,9],[284,9],[285,9],[286,9],[287,9],[288,9],[289,9],[290,9],[291,9],[292,9],[293,9],[294,9],[295,9],[296,9],[297,9],[298,9],[299,9],[300,9],[301,9],[302,9],[303,9],[304,9],[305,9],[306,9],[307,9],[308,9],[309,9],[310,9],[311,9],[312,9],[313,9],[314,9],[315,9],[316,9],[317,9],[318,9],[319,9],[320,9],[321,9],[322,9],[323,9],[324,9],[325,9],[326,9],[327,9],[328,9],[329,9],[330,9],[331,9],[332,9],[333,9],[334,9],[335,9],[336,9],[337,9],[338,9],[339,9],[340,9],[341,9],[342,9],[343,9],[344,9],[345,9],[346,9],[347,9],[348,9],[349,9],[350,9],[351,9],[352,9],[353,9],[354,9],[355,9],[356,9],[357,9],[358,9],[359,9],[360,9],[361,9],[362,9],[363,9],[364,9],[365,9],[366,9],[367,9],[368,9],[369,9],[370,9],[371,9],[372,9],[373,9],[374,9],[375,9],[376,9],[377,9],[378,9],[379,9],[380,9],[381,9],[382,9],[383,9],[384,9],[385,9],[386,9],[387,9],[388,9],[389,9],[390,9],[391,9],[392,9],[393,9],[394,9],[395,9],[396,9],[397,9],[398,9],[399,9],[400,9],[401,9],[402,9],[403,9],[404,9],[405,9],[406,9],[407,9],[408,9],[409,9],[410,9],[411,9],[412,9],[413,9],[414,9],[415,9],[416,9],[417,9],[419,11],[82,12],[84,13],[102,14],[63,15],[64,16],[62,17],[65,18],[66,19],[67,20],[68,21],[69,22],[70,23],[71,24],[72,25],[73,26],[74,27],[54,28],[55,29],[47,30],[48,31],[50,32],[79,33],[78,34],[76,35],[61,36],[60,37],[432,38],[96,39],[58,9],[455,40],[97,41],[450,42],[446,43],[447,44],[449,45],[77,9],[85,9],[56,46],[51,47],[100,48],[423,49],[427,50],[121,50],[123,49],[435,50],[429,50],[420,49],[107,49],[425,50],[117,49],[433,50],[113,49],[112,49],[57,51],[106,52],[441,53],[440,54],[442,55],[110,56],[452,57],[438,58],[105,54],[439,59],[104,60],[98,61],[103,62],[421,61],[109,63],[111,64],[424,65],[428,66],[443,51],[436,67],[430,68],[108,69],[426,70],[118,71],[434,72],[437,51],[124,73],[122,74],[422,75],[120,76],[119,77],[115,51],[114,78]],"exportedModulesMap":[[444,1],[453,79],[454,80],[451,81],[53,5],[94,6],[92,6],[91,7],[87,6],[95,8],[93,7],[89,7],[90,7],[125,9],[126,9],[127,9],[128,9],[129,9],[130,9],[131,9],[132,9],[133,9],[134,9],[135,9],[136,9],[137,9],[138,9],[139,9],[140,9],[141,9],[142,9],[143,9],[144,9],[145,9],[146,9],[147,9],[148,9],[149,9],[150,9],[151,9],[152,9],[153,9],[154,9],[155,9],[156,9],[157,9],[158,9],[159,9],[160,9],[161,9],[162,9],[163,9],[164,9],[165,9],[166,9],[167,9],[168,9],[169,9],[170,9],[171,9],[172,9],[173,9],[174,9],[175,9],[176,9],[177,9],[178,9],[179,9],[180,9],[181,9],[182,9],[183,9],[184,9],[185,9],[186,9],[187,9],[188,9],[189,9],[190,9],[191,9],[192,9],[193,9],[194,9],[195,9],[196,9],[197,9],[198,9],[199,9],[200,9],[201,9],[202,9],[203,9],[204,9],[205,9],[206,9],[207,9],[208,9],[209,9],[210,9],[211,9],[212,9],[213,9],[214,9],[215,9],[216,9],[217,9],[218,9],[219,9],[220,9],[221,9],[222,9],[223,9],[224,9],[225,9],[226,9],[227,9],[228,9],[229,9],[230,9],[231,9],[232,9],[233,9],[234,9],[235,9],[236,9],[237,9],[238,9],[239,9],[240,9],[241,9],[242,9],[243,9],[244,9],[245,9],[246,9],[247,9],[248,9],[249,9],[250,9],[251,9],[252,9],[253,9],[254,9],[255,9],[256,9],[257,9],[258,9],[259,9],[260,9],[261,9],[262,9],[263,9],[264,9],[265,9],[266,9],[418,10],[267,9],[268,9],[269,9],[270,9],[271,9],[272,9],[273,9],[274,9],[275,9],[276,9],[277,9],[278,9],[279,9],[280,9],[281,9],[282,9],[283,9],[284,9],[285,9],[286,9],[287,9],[288,9],[289,9],[290,9],[291,9],[292,9],[293,9],[294,9],[295,9],[296,9],[297,9],[298,9],[299,9],[300,9],[301,9],[302,9],[303,9],[304,9],[305,9],[306,9],[307,9],[308,9],[309,9],[310,9],[311,9],[312,9],[313,9],[314,9],[315,9],[316,9],[317,9],[318,9],[319,9],[320,9],[321,9],[322,9],[323,9],[324,9],[325,9],[326,9],[327,9],[328,9],[329,9],[330,9],[331,9],[332,9],[333,9],[334,9],[335,9],[336,9],[337,9],[338,9],[339,9],[340,9],[341,9],[342,9],[343,9],[344,9],[345,9],[346,9],[347,9],[348,9],[349,9],[350,9],[351,9],[352,9],[353,9],[354,9],[355,9],[356,9],[357,9],[358,9],[359,9],[360,9],[361,9],[362,9],[363,9],[364,9],[365,9],[366,9],[367,9],[368,9],[369,9],[370,9],[371,9],[372,9],[373,9],[374,9],[375,9],[376,9],[377,9],[378,9],[379,9],[380,9],[381,9],[382,9],[383,9],[384,9],[385,9],[386,9],[387,9],[388,9],[389,9],[390,9],[391,9],[392,9],[393,9],[394,9],[395,9],[396,9],[397,9],[398,9],[399,9],[400,9],[401,9],[402,9],[403,9],[404,9],[405,9],[406,9],[407,9],[408,9],[409,9],[410,9],[411,9],[412,9],[413,9],[414,9],[415,9],[416,9],[417,9],[419,11],[82,12],[84,13],[102,14],[63,15],[64,16],[62,17],[65,18],[66,19],[67,20],[68,21],[69,22],[70,23],[71,24],[72,25],[73,26],[74,27],[54,28],[55,29],[47,30],[48,31],[50,32],[79,33],[78,34],[76,35],[61,36],[60,37],[432,38],[96,82],[58,83],[455,80],[97,84],[446,85],[445,86],[447,87],[448,88],[449,89],[77,83],[85,83],[56,46],[51,47],[100,80],[423,49],[427,50],[123,49],[435,50],[429,50],[420,90],[107,80],[425,50],[117,49],[433,50],[113,91],[112,92],[57,51],[106,52],[441,53],[440,54],[442,55],[110,56],[452,93],[438,94],[105,95],[439,96],[104,97],[98,61],[103,62],[421,61],[109,63],[111,64],[424,65],[428,66],[443,51],[436,67],[430,68],[108,69],[426,70],[118,71],[434,72],[437,51],[124,73],[122,74],[422,75],[120,76],[119,77],[115,51],[114,78]],"semanticDiagnosticsPerFile":[444,453,454,451,53,52,94,88,92,91,87,86,95,93,89,90,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,418,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,419,82,84,81,83,102,101,63,64,62,65,66,67,68,69,70,71,72,73,74,116,54,55,47,48,50,46,79,78,76,75,99,49,61,60,59,432,431,96,58,455,80,97,44,45,8,9,11,10,2,12,13,14,15,16,17,18,19,3,4,20,24,21,22,23,25,26,27,5,28,29,30,31,6,35,32,33,34,36,7,37,42,43,38,39,40,41,1,450,446,445,447,448,449,77,85,56,51,100,423,427,121,123,435,429,420,107,425,117,433,113,112,57,106,441,440,442,110,452,438,105,[439,[{"file":"./src/stores/modules/permission.ts","start":123,"length":14,"messageText":"Module '\"@/api/menu\"' has no exported member 'getMenuListApi'. Did you mean to use 'import getMenuListApi from \"@/api/menu\"' instead?","category":1,"code":2614}]],104,98,103,421,109,111,[424,[{"file":"./src/views/dealer/index.vue","start":15719,"length":4,"code":2339,"category":1,"messageText":"Property 'code' does not exist on type 'AxiosResponse<ApiResponse<PageData<DealerInfo>>, any, {}>'."},{"file":"./src/views/dealer/index.vue","start":15775,"length":7,"code":2339,"category":1,"messageText":"Property 'records' does not exist on type 'ApiResponse<PageData<DealerInfo>>'."},{"file":"./src/views/dealer/index.vue","start":15823,"length":5,"code":2339,"category":1,"messageText":"Property 'total' does not exist on type 'ApiResponse<PageData<DealerInfo>>'."},{"file":"./src/views/dealer/index.vue","start":15871,"length":7,"code":2339,"category":1,"messageText":"Property 'current' does not exist on type 'ApiResponse<PageData<DealerInfo>>'."},{"file":"./src/views/dealer/index.vue","start":15922,"length":4,"code":2339,"category":1,"messageText":"Property 'size' does not exist on type 'ApiResponse<PageData<DealerInfo>>'."},{"file":"./src/views/dealer/index.vue","start":17692,"length":4,"code":2339,"category":1,"messageText":"Property 'code' does not exist on type 'AxiosResponse<ApiResponse<any>, any, {}>'."},{"file":"./src/views/dealer/index.vue","start":17795,"length":7,"code":2339,"category":1,"messageText":"Property 'message' does not exist on type 'AxiosResponse<ApiResponse<any>, any, {}>'."},{"file":"./src/views/dealer/index.vue","start":18836,"length":4,"code":2339,"category":1,"messageText":"Property 'code' does not exist on type 'AxiosResponse<ApiResponse<any>, any, {}>'."},{"file":"./src/views/dealer/index.vue","start":18977,"length":7,"code":2339,"category":1,"messageText":"Property 'message' does not exist on type 'AxiosResponse<ApiResponse<any>, any, {}>'."},{"file":"./src/views/dealer/index.vue","start":20376,"length":4,"code":2339,"category":1,"messageText":"Property 'code' does not exist on type 'AxiosResponse<ApiResponse<any>, any, {}>'."},{"file":"./src/views/dealer/index.vue","start":20559,"length":7,"code":2339,"category":1,"messageText":"Property 'message' does not exist on type 'AxiosResponse<ApiResponse<any>, any, {}>'."},{"file":"./src/views/dealer/index.vue","start":21847,"length":4,"code":2339,"category":1,"messageText":"Property 'code' does not exist on type 'AxiosResponse<ApiResponse<any>, any, {}>'."},{"file":"./src/views/dealer/index.vue","start":21982,"length":7,"code":2339,"category":1,"messageText":"Property 'message' does not exist on type 'AxiosResponse<ApiResponse<any>, any, {}>'."},{"file":"./src/views/dealer/index.vue","start":10908,"length":6,"code":2339,"category":1,"messageText":"Property 'remark' does not exist on type '{ dealerCode: string; dealerName: string; creditCode: string; dealerLevel: number; region: string; contactPerson?: string | undefined; contactPhone?: string | undefined; cooperateStartDate: string; ... 5 more ...; dealerId?: number | undefined; }'."}]],428,443,436,[430,[{"file":"./src/views/invoice/index.vue","start":29934,"length":9,"code":2339,"category":1,"messageText":"Property 'minAmount' does not exist on type '{ invoiceNo: string; orderNo: string; deliveryNo: string; dealerCode: string; dealerName: string; invoiceStatus: undefined; dataSource: string; invoiceStartDate: string; invoiceEndDate: string; pageNum: number; pageSize: number; }'."},{"file":"./src/views/invoice/index.vue","start":29978,"length":9,"code":2339,"category":1,"messageText":"Property 'maxAmount' does not exist on type '{ invoiceNo: string; orderNo: string; deliveryNo: string; dealerCode: string; dealerName: string; invoiceStatus: undefined; dataSource: string; invoiceStartDate: string; invoiceEndDate: string; pageNum: number; pageSize: number; }'."},{"file":"./src/views/invoice/index.vue","start":30078,"length":12,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ invoiceNo: string; orderNo: string; deliveryNo: string; dealerCode: string; dealerName: string; invoiceStatus: undefined; dataSource: string; invoiceStartDate: string; invoiceEndDate: string; minAmount: any; maxAmount: any; }' is not assignable to parameter of type 'InvoiceQueryReq'.","category":1,"code":2345,"next":[{"messageText":"Type '{ invoiceNo: string; orderNo: string; deliveryNo: string; dealerCode: string; dealerName: string; invoiceStatus: undefined; dataSource: string; invoiceStartDate: string; invoiceEndDate: string; minAmount: any; maxAmount: any; }' is missing the following properties from type 'InvoiceQueryReq': pageNum, pageSize","category":1,"code":2739}]}},{"file":"./src/views/invoice/index.vue","start":32901,"length":10,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ invoiceId: number; invoiceNo: string; orderNo: string; deliveryNo: string; dealerCode: string; dealerName: string; totalAmount: number; invoiceDate: string; invoiceStatus: number; taxRate: number; dataSource: string; invoiceItems: { ...; }[]; }' is not assignable to parameter of type 'InvoiceUpdateReq'.","category":1,"code":2345,"next":[{"messageText":"Types of property 'invoiceItems' are incompatible.","category":1,"code":2326,"next":[{"messageText":"Type '{ itemId: any; productCode: any; productName: any; invoiceQty: any; unitPriceNoTax: any; amountNoTax: any; taxRate: any; taxAmount: any; }[]' is not assignable to type 'InvoiceItemUpdateReq[]'.","category":1,"code":2322,"next":[{"messageText":"Type '{ itemId: any; productCode: any; productName: any; invoiceQty: any; unitPriceNoTax: any; amountNoTax: any; taxRate: any; taxAmount: any; }' is missing the following properties from type 'InvoiceItemUpdateReq': productQty, unitPrice, itemAmount","category":1,"code":2739}]}]}]}},{"file":"./src/views/invoice/index.vue","start":33848,"length":7,"code":2345,"category":1,"messageText":{"messageText":"Argument of type '{ invoiceNo: string; orderNo: string; deliveryNo: string; dealerCode: string; dealerName: string; totalAmount: number; invoiceDate: string; invoiceStatus: number; taxRate: number; dataSource: string; invoiceItems: { ...; }[]; }' is not assignable to parameter of type 'InvoiceAddReq'.","category":1,"code":2345,"next":[{"messageText":"Types of property 'invoiceItems' are incompatible.","category":1,"code":2326,"next":[{"messageText":"Type '{ productCode: any; productName: any; invoiceQty: any; unitPriceNoTax: any; amountNoTax: any; taxRate: any; taxAmount: any; }[]' is not assignable to type 'InvoiceItemAddReq[]'.","category":1,"code":2322,"next":[{"messageText":"Type '{ productCode: any; productName: any; invoiceQty: any; unitPriceNoTax: any; amountNoTax: any; taxRate: any; taxAmount: any; }' is missing the following properties from type 'InvoiceItemAddReq': productQty, unitPrice, itemAmount","category":1,"code":2739}]}]}]}},{"file":"./src/views/invoice/index.vue","start":18437,"length":13,"code":2551,"category":1,"messageText":"Property 'invoiceItemId' does not exist on type '{ itemId: number; invoiceId: number; invoiceNo: string; productCode: string; productName: string; productQty: number; unitPrice: number; itemAmount: number; taxRate: number; taxAmount: number; createBy?: string | undefined; createTime?: string | undefined; updateBy?: string | undefined; updateTime?: string | undefin...'. Did you mean 'invoiceId'?"},{"file":"./src/views/invoice/index.vue","start":18598,"length":10,"code":2339,"category":1,"messageText":"Property 'invoiceQty' does not exist on type '{ itemId: number; invoiceId: number; invoiceNo: string; productCode: string; productName: string; productQty: number; unitPrice: number; itemAmount: number; taxRate: number; taxAmount: number; createBy?: string | undefined; createTime?: string | undefined; updateBy?: string | undefined; updateTime?: string | undefin...'."},{"file":"./src/views/invoice/index.vue","start":18667,"length":14,"code":2339,"category":1,"messageText":"Property 'unitPriceNoTax' does not exist on type '{ itemId: number; invoiceId: number; invoiceNo: string; productCode: string; productName: string; productQty: number; unitPrice: number; itemAmount: number; taxRate: number; taxAmount: number; createBy?: string | undefined; createTime?: string | undefined; updateBy?: string | undefined; updateTime?: string | undefin...'."},{"file":"./src/views/invoice/index.vue","start":18761,"length":11,"code":2339,"category":1,"messageText":"Property 'amountNoTax' does not exist on type '{ itemId: number; invoiceId: number; invoiceNo: string; productCode: string; productName: string; productQty: number; unitPrice: number; itemAmount: number; taxRate: number; taxAmount: number; createBy?: string | undefined; createTime?: string | undefined; updateBy?: string | undefined; updateTime?: string | undefin...'."},{"file":"./src/views/invoice/index.vue","start":19324,"length":11,"code":2339,"category":1,"messageText":"Property 'amountNoTax' does not exist on type '{ itemId: number; invoiceId: number; invoiceNo: string; productCode: string; productName: string; productQty: number; unitPrice: number; itemAmount: number; taxRate: number; taxAmount: number; createBy?: string | undefined; createTime?: string | undefined; updateBy?: string | undefined; updateTime?: string | undefin...'."}]],108,426,118,[434,[{"file":"./src/views/rebate/index.vue","start":18996,"length":12,"messageText":"Variable 'responseData' implicitly has type 'any' in some locations where its type cannot be determined.","category":1,"code":7034},{"file":"./src/views/rebate/index.vue","start":20763,"length":12,"messageText":"Variable 'responseData' implicitly has an 'any' type.","category":1,"code":7005}]],437,[124,[{"file":"./src/views/sys/dict-item/index.vue","start":8324,"length":7,"messageText":"Module '\"../../../api/dict\"' has no exported member 'dictApi'.","category":1,"code":2305},{"file":"./src/views/sys/dict-item/index.vue","start":8338,"length":8,"messageText":"Module '\"../../../api/dict\"' has no exported member 'DictType'.","category":1,"code":2305}]],[122,[{"file":"./src/views/sys/dict/index.vue","start":8205,"length":7,"messageText":"Module '\"../../../api/dict\"' has no exported member 'dictApi'.","category":1,"code":2305},{"file":"./src/views/sys/dict/index.vue","start":8219,"length":8,"messageText":"Module '\"../../../api/dict\"' has no exported member 'DictType'.","category":1,"code":2305},{"file":"./src/views/sys/dict/index.vue","start":8234,"length":20,"messageText":"Module '\"../../../api/dict\"' has no exported member 'DictTypeSearchParams'.","category":1,"code":2305}]],422,120,119,115,[114,[{"file":"./src/views/users/index.vue","start":16164,"length":5,"code":2322,"category":1,"messageText":"Type 'null' is not assignable to type 'Menu[] | { menuId: number; parentId?: number | undefined; menuName: string; menuType: string; menuTypeText: string; path?: string | undefined; icon?: string | undefined; sort: number; ... 5 more ...; children?: ...[] | undefined; }[] | undefined'.","relatedInformation":[{"file":"./src/api/role.ts","start":1554,"length":5,"messageText":"The expected type comes from property 'menus' which is declared here on type 'Role | { roleId: number; roleCode: string; roleName: string; status: number; statusText: string; remark: string; createTime: string; updateTime: string; menuIds?: number[] | undefined; menus?: { ...; }[] | undefined; }'","category":3,"code":6500}]},{"file":"./src/views/users/index.vue","start":16508,"length":5,"code":2322,"category":1,"messageText":"Type 'null' is not assignable to type 'Menu[] | { menuId: number; parentId?: number | undefined; menuName: string; menuType: string; menuTypeText: string; path?: string | undefined; icon?: string | undefined; sort: number; ... 5 more ...; children?: ...[] | undefined; }[] | undefined'.","relatedInformation":[{"file":"./src/api/role.ts","start":1554,"length":5,"messageText":"The expected type comes from property 'menus' which is declared here on type 'Role | { roleId: number; roleCode: string; roleName: string; status: number; statusText: string; remark: string; createTime: string; updateTime: string; menuIds?: number[] | undefined; menus?: { ...; }[] | undefined; }'","category":3,"code":6500}]},{"file":"./src/views/users/index.vue","start":16851,"length":5,"code":2322,"category":1,"messageText":"Type 'null' is not assignable to type 'Menu[] | { menuId: number; parentId?: number | undefined; menuName: string; menuType: string; menuTypeText: string; path?: string | undefined; icon?: string | undefined; sort: number; ... 5 more ...; children?: ...[] | undefined; }[] | undefined'.","relatedInformation":[{"file":"./src/api/role.ts","start":1554,"length":5,"messageText":"The expected type comes from property 'menus' which is declared here on type 'Role | { roleId: number; roleCode: string; roleName: string; status: number; statusText: string; remark: string; createTime: string; updateTime: string; menuIds?: number[] | undefined; menus?: { ...; }[] | undefined; }'","category":3,"code":6500}]}]]],"affectedFilesPendingEmit":[100,423,427,121,123,435,429,420,107,425,117,433,113,112,57,106,441,440,442,110,452,438,105,439,104,98,103,421,109,111,424,428,443,436,430,108,426,118,434,437,124,122,422,120,119,115,114],"emitSignatures":[57,98,100,103,104,105,106,107,108,109,110,111,114,115,117,118,119,120,122,123,124,421,422,423,424,425,426,427,428,429,430,433,434,435,436,437,438,439,440,441,442,443]},"version":"5.2.2"}
\ No newline at end of file
......