提交 2889c6b9 authored 作者: lidongxu's avatar lidongxu

test(cesh): 我看

上级 5d16ed39
......@@ -6,9 +6,9 @@ VITE_APP_ENV = 'development'
VITE_APP_PUBLIC_PATH = '/'
# 基地址
VITE_APP_BASE_API = '/dev-api' # 小卤
# VITE_APP_BASE_API = '/dev-api' # 小卤
# VITE_APP_BASE_API = '/ql_local' # 小卤
# VITE_APP_BASE_API = '/bc_local' # 小卤
VITE_APP_BASE_API = '/bc_local' # 小卤
VITE_APP_PROMOTION = '/dev-promotion-api' # 促销
# 飞书服务回调地址(本地测试已经通过并上线,后台飞书登录接口重定向地址已经不是 localhost 了所以本地开发无需使用飞书登录,线上已经可用)
......
......@@ -2,4 +2,63 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [0.0.1](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/compare/v2.0.1...v0.0.1) (2025-07-11)
### [2.0.1](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/compare/v2.0.0...v2.0.1) (2025-07-10)
### ✅ Tests | 测试
* **测试:** 测试 ([71e865f](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/commit/71e865f2efe69eabede225e4442fb1e605a9420e))
## [2.0.0](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/compare/v1.0.0...v2.0.0) (2025-07-10)
### ✨ Features | 新功能
* **version:** ce ([2574587](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/commit/25745872822e3836d9518a3a8eb780844209ea91))
## [1.0.0](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/compare/v0.2.0...v1.0.0) (2025-07-10)
## [0.2.0](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/compare/v0.1.9...v0.2.0) (2025-07-10)
### ⚠ BREAKING CHANGES
* **version:** 主版本发布测试
### ✨ Features | 新功能
* **version:** 测试主版本发布 ([4f93f0f](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/commit/4f93f0f5258370671cb84da988719b93a7297a66))
* **version:** 主版本测试发布 ([547d5fa](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/commit/547d5fa9671499173887604f4c58c1ea1cb4635d))
### [0.1.9](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/compare/v0.1.8...v0.1.9) (2025-07-10)
### [0.1.8](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/compare/v0.1.7...v0.1.8) (2025-07-10)
### ✨ Features | 新功能
* **version.js:** 新版本文件保存测试 ([f442d56](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/commit/f442d56877629c4bd81f743c68e2f9dbc0b4d854))
### 🐛 Bug Fixes | Bug 修复
* **bug:** bug 修改测试 ([3aa02b0](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/commit/3aa02b0770a9f4a914a38b242149b7fa435e59f9))
### 💄 Styles | 风格
* **styles:** 测试样式变更 ([fd26446](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/commit/fd2644690215413718941ed503ad57f0ef7018a9))
### 💄 Styles | 重构
* **v:** 重构测试 ([451460f](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/commit/451460f43e518182be62d2f6fc9c4617ed146e2e))
### [0.1.6](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/compare/v0.1.5...v0.1.6) (2025-07-10)
### ✅ Tests | 测试
* **测试:** 测试 ([0c5f644](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/commit/0c5f644d847688c95e1c3992ea8566c70bdab2ad))
### [0.1.5](http://192.168.100.51/sfa/wangxiaolu-sfa-ui/compare/v0.1.4...v0.1.5) (2025-07-10)
\ No newline at end of file
王小卤
\ No newline at end of file
# 王小卤链路中心
\ No newline at end of file
{
"name": "wangxiaolu",
"version": "0.0.1",
"version": "0.0.0",
"description": "王小卤",
"author": "王小卤",
"license": "MIT",
......
......@@ -12,6 +12,8 @@ export * from './bi/sale'
export * from './bi/store'
export * from './bi/supply'
export * from './jimu/index'
export * from './other/logistics'
export * from './other/version'
export * from './monitor/cache'
export * from './monitor/job'
export * from './monitor/jobLog'
......
import request from '@/utils/request'
// 查询物流轨迹
export function getLogisticsListAPI(queryParams) {
console.log(queryParams)
return request({
url: '/schedule/order/sent/query',
params: queryParams
})
}
\ No newline at end of file
import request from '@/utils/request'
// 提交版本号
export const submitVersionAPI = (data) => {
return request({
url: '/bi/front/version/core',
method: 'POST',
data
})
}
// 获取版本号
export const getVersionAPI = () => {
return request({
url: '/bi/front/version/query'
})
}
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1752199740917" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4389" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M987.04 533.208c-15.951-18.618-12.415-26.62 0.947-42.956 69.21-84.716 31.696-201.788-74.55-229.604-26.705-6.985-38.047-14.813-28.855-37.193C887.36 116.06 783.764 43.795 682.875 81.34c-23.697 8.815-32.08 6.967-46.299-13.836-61.223-89.51-188.549-89.59-249.31 0.046-14.453 21.302-23.543 22.162-46.413 13.935-103.4-37.228-208.124 36.36-201.084 142.258 1.774 26.523-6.729 30.735-29.426 36.824C4.276 289.07-34.412 407.945 35.925 490.36c15.47 18.123 13.656 25.996-0.449 43.293-70.264 86.13-30.09 202.613 79.444 230.943 20.223 5.23 26.623 9.243 25.28 31.722-6.748 112.214 95.964 184.444 205.302 144.714 20.503-7.474 27.514-5.58 39.599 12.37 63.32 94.021 190.484 93.64 253.87-0.987 12.649-18.874 19.977-18.476 39.684-11.11 108.264 40.473 214.39-35.934 204.702-147.362-1.786-20.577 3.608-23.863 22.703-28.612 112.563-27.945 154.277-146.564 80.98-232.123zM214.635 718.206l-58.778-168.943c-5.088-14.651 0.203-24.952 15.841-30.861 8.91-1.167 16.832 0.137 23.728 3.87l145.283 92.081 1.251-0.417-39.036-112.224c-5.094-14.652 0.198-24.953 15.842-30.879 15.358-4.114 25.992 1.052 31.941 15.43l58.743 168.945c4.003 14.153-1.552 23.656-16.633 28.532-8.383 2.727-16.022 2.202-22.93-1.595l-144.888-90.879-1.251 0.4L262.37 702.74c3.984 14.16-1.557 23.657-16.634 28.557-15.906 5.165-26.288 0.798-31.1-13.09zM436.72 645.1l-56.748-163.14c-5.638-16.216-0.63-27.26 15.033-33.188l80.433-26.002c13.675-3.588 23.494 0.56 29.48 12.35 3.127 14.432-2 23.82-15.393 28.157l-56.562 18.286 14.895 42.813 52.794-17.054c14.799-3.062 25.146 1.305 31.133 13.102 2.858 13.662-2.662 23.165-16.634 28.533l-52.794 17.077 15.694 45.113 59.09-19.083c14.518-3.824 24.338 0.319 29.479 12.34 3.127 14.426-2.002 23.814-15.393 28.152l-82.95 26.829c-15.391 4.132-25.906-0.652-31.557-14.285z m178.89-56.54l-97.827-148.59c-2.763-2.52-4.381-5.848-4.878-10.025-3.194-11.831 2.068-20.803 15.788-26.955 13.392-4.321 24.753 0.156 34.047 13.449l69.852 116.436 1.276-0.415-3.609-143.006c0.431-12.131 6.813-20.647 19.114-25.476 12.001-3.027 22.386 0.063 31.169 9.214l86.55 116.21 1.277-0.409-15.823-133.895c-3.146-14.442 2.696-24.483 17.507-30.127 13.92-2.773 23.745 1.322 29.461 12.34 1.361 3.887 2.115 7.504 2.367 10.838l16.135 175.004c-1.042 15.783-9.107 26.13-24.188 30.97-16.785 5.437-29.93 2.41-39.535-9.081l-77.538-102.363 2.133 126.764c-1.306 15.004-9.49 24.935-24.59 29.811-17.62 5.66-30.532 2.118-38.688-10.694z m0 0" fill="#d81e06" p-id="4390"></path></svg>
\ No newline at end of file
......@@ -33,7 +33,8 @@
</div>
</div>
<el-dialog title="编辑常用菜单"
v-model="visible">
v-model="visible"
draggable>
<el-transfer ref="myTransfer"
v-model="selectList"
:data="menuList"
......
......@@ -36,6 +36,7 @@
title="预览"
width="800px"
append-to-body
draggable
>
<img
:src="dialogImageUrl"
......
......@@ -53,7 +53,8 @@
</el-row>
<el-dialog :title="title"
v-model="open"
append-to-body>
append-to-body
draggable>
<el-transfer :titles="['显示', '隐藏']"
v-model="value"
:data="columns"
......
<template>
<div class="wrap">
<el-dialog v-model="dialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false"
width="40%"
@close="handleClose"
draggable>
<template #header>
<p class="el-dialog__title">版本更新说明</p>
<div class="version-tag">V7.2.86 更新内容</div>
</template>
<el-collapse :accordion="false"
class="update-content"
v-model="showVersionList">
<!-- 版本更新说明 -->
<el-collapse-item name="1">
<template #title>
<span class="section-title">LTC功能更新</span>
</template>
<ol class="feature-list">
<li>
大客户开发生命周期管理、潜在客户评估、客户从对象变更触发审批、基于工商注册信息验证线索真实性。
</li>
<li>试用管理、商机阶段任务管理、自动作废商机。
</li>
<li>
商品组合和约束(BOM)、可售范围管理、价目表管理、报价单(按价目表报价/差异化特价/非标品报价)。
</li>
<li>
按价目表生成合同、按报价单生成合同、非标品销售合同。
</li>
</ol>
</el-collapse-item>
<!-- 国际化功能更新 -->
<el-collapse-item name="2">
<template #title>
<span class="section-title">国际化功能更新</span>
</template>
<ol class="feature-list">
<li>
大客户开发生命周期管理、潜在客户评估、客户从对象变更触发审批、基于工商注册信息验证线索真实性。
</li>
<li>试用管理、商机阶段任务管理、自动作废商机。
</li>
<li>
商品组合和约束(BOM)、可售范围管理、价目表管理、报价单(按价目表报价/差异化特价/非标品报价)。
</li>
<li>
按价目表生成合同、按报价单生成合同、非标品销售合同。
</li>
</ol>
</el-collapse-item>
</el-collapse>
<template #footer>
<span class="dialog-footer">
<el-button @click="handleViewDetail">查看详情</el-button>
<el-button type="primary"
@click="handleConfirm">我知道了</el-button>
</span>
</template>
</el-dialog>
</div>
</template>
<script setup>
import { ref, defineEmits } from 'vue';
const props = defineProps({
modelValue: {
type: Boolean,
default: false
}
})
const emit = defineEmits(['update:modelValue']);
const dialogVisible = ref(props.modelValue);
watch(() => props.modelValue, (val) => {
dialogVisible.value = val;
})
const handleClose = () => {
emit('update:modelValue', false);
};
const handleViewDetail = () => {
// 跳转到飞书文档查看版本更新详情文档
// emit('viewDetail');
};
const handleConfirm = () => {
emit('update:modelValue', false);
};
const showVersionList = ref(['1', '2'])
const versionObj = {
"2.0.1": {
"breakingChanges": [],
"changes": [
{
"type": "测试",
"desc": ["测试"]
}
]
},
"2.0.0": {
"breakingChanges": [],
"changes": [
{
"type": "新功能",
"desc": ["ce"]
}
]
},
"1.0.0": {
"breakingChanges": [],
"changes": []
},
"0.2.0": {
"breakingChanges": ["主版本发布测试"],
"changes": [
{
"type": "新功能",
"desc": [
"测试主版本发布",
"主版本测试发布"
]
}
]
},
"0.1.8": {
"breakingChanges": [],
"changes": [
{
"type": "新功能",
"desc": ["新版本文件保存测试"]
},
{
"type": "Bug 修复",
"desc": ["bug 修改测试"]
},
{
"type": "风格",
"desc": ["测试样式变更"]
},
{
"type": "重构",
"desc": ["重构测试"]
}
]
},
"0.1.6": {
"breakingChanges": [],
"changes": [
{
"type": "测试",
"desc": ["测试"]
}
]
}
}
</script>
<style lang="scss"
scoped>
.wrap {
::v-deep(.el-overlay) {
.el-overlay-dialog {
.el-dialog {
// 从上到下的渐变蓝色
background: linear-gradient(to bottom, #3879e0, #ffffff);
// 自定义对话框样式
.el-dialog__header {
height: auto;
.el-dialog__title {
color: white;
font-size: 24px;
margin: 0;
}
.el-dialog__headerbtn .el-dialog__close {
color: white;
&:hover {
color: #f5f5f5;
}
}
}
.version-tag {
margin-top: 10px;
color: white;
line-height: 1.5;
}
}
}
// 更新内容
.update-content {
.el-collapse-item__header {
font-weight: 500;
color: #333;
padding-left: 30px;
.section-title {
position: relative;
&::before {
content: "";
position: absolute;
left: -12px;
top: 50%;
transform: translateY(-50%);
width: 4px;
height: 16px;
background-color: #8B0000; // 暗红色指示条
border-radius: 2px;
}
}
}
.feature-list {
list-style: decimal;
padding: 0 40px;
li {
color: #444;
}
}
}
}
}
</style>
\ No newline at end of file
......@@ -13,6 +13,14 @@
<div class="right-menu">
<template v-if="appStore.device !== 'mobile'">
<!-- 新版本 -->
<div class="right-menu-item hover-effect new-version"
@click="showVersionNoticeVisible = true">
<svg-icon icon-class="new-version" />
</div>
<version-notice v-model="showVersionNoticeVisible" />
<header-search id="header-search"
class="right-menu-item" />
......@@ -80,13 +88,24 @@ import HeaderSearch from '@/components/HeaderSearch'
import useAppStore from '@/store/modules/app'
import useUserStore from '@/store/modules/user'
import useSettingsStore from '@/store/modules/settings'
import useVersionStore from '@/store/modules/version'
const appStore = useAppStore()
const userStore = useUserStore()
const settingsStore = useSettingsStore()
const versionStore = useVersionStore()
const version = versionStore.version
const name = userStore.name;
const showQuit = !window.h5sdk; // 判断飞书客户端内,则不显示退出登录
const showVersionNoticeVisible = ref(false) // 判断版本通知是否出现
// 判断是否有新版本出现
onMounted(() => {
const list = Object.keys(version)
console.log(list)
})
function toggleSideBar() {
appStore.toggleSideBar()
......@@ -171,6 +190,11 @@ function toggleTheme() {
line-height: 50px;
display: flex;
.new-version {
font-size: 30px !important;
padding-top: 2px !important;
}
&:focus {
outline: none;
}
......@@ -183,6 +207,8 @@ function toggleTheme() {
color: var(--navbar-text);
vertical-align: text-bottom;
&.hover-effect {
cursor: pointer;
transition: background 0.3s;
......@@ -213,7 +239,7 @@ function toggleTheme() {
display: flex;
align-items: center;
.user-name{
.user-name {
font-size: 16px;
}
......
......@@ -34,6 +34,7 @@ const device = computed(() => useAppStore().device);
const needTagsView = computed(() => settingsStore.tagsView);
const fixedHeader = computed(() => settingsStore.fixedHeader);
const classObj = computed(() => ({
hideSidebar: !sidebar.value.opened,
openSidebar: sidebar.value.opened,
......
......@@ -60,6 +60,12 @@ import XLToolTip from '@/components/XLToolTip'
import XlSelect from '@/components/XLSelect'
// 开窗查询组件
import OpenDialog from '@/components/OpenDialog'
// 版本通知组件
import VersionNotice from '@/components/VersionNotice'
const app = createApp(App)
......@@ -97,6 +103,7 @@ app.component('BackToUp', BackToUp)
app.component('XlToolTip', XLToolTip)
app.component('XlSelect', XlSelect)
app.component('OpenDialog', OpenDialog)
app.component('VersionNotice', VersionNotice)
// 全局插件
app.use(plugins)
......
......@@ -9,6 +9,7 @@ import { isRelogin } from '@/utils/request'
import useUserStore from '@/store/modules/user'
import useSettingsStore from '@/store/modules/settings'
import usePermissionStore from '@/store/modules/permission'
import useVersionStore from '@/store/modules/version'
NProgress.configure({ showSpinner: false })
......@@ -42,12 +43,15 @@ router.beforeEach((to, from, next) => {
})
next({ ...to, replace: true })
})
}).catch(err => {
useUserStore().logOut().then(() => {
ElMessage.error(err)
next({ path: '/' })
})
})
// 获取版本信息
useVersionStore().getVersion()
} else {
next()
}
......
import { getVersionAPI } from '@/api'
export default defineStore(
'version',
{
state: () => ({
version: {}
}),
actions: {
// 获取版本信息
getVersion() {
return new Promise((resolve, reject) => {
getVersionAPI().then(res => {
this.version = res.data
console.log(res)
resolve(res)
}).catch(error => {
reject(error)
})
})
}
}
})
console.log('23412313cccsadfdas啊是的范德萨发fasdfasffd')
let obj = {
'0.1.8': [
{
info: '新功能',
desc: ['新版本文件保存测试']
}, {
info: 'Bug 修复',
desc: ['bug 修改测试']
}, {
info: '风格',
desc: ['测试样式变更']
}, {
info: '重构',
desc: ['重构测试']
}
]
}
\ No newline at end of file
......@@ -191,7 +191,8 @@
<el-dialog v-model="detailVisible"
title="订单详情"
width="80%"
footer-class="dialog-footer">
footer-class="dialog-footer"
draggable>
<el-table :data="detailList"
ref="detailTableRef"
border
......
......@@ -39,7 +39,8 @@
</div>
</el-card>
<el-dialog title="编辑常用报表"
v-model="visible">
v-model="visible"
draggable>
<div class="wrap">
<div class="left">
<draggable v-model="reportList"
......
......@@ -46,7 +46,8 @@
</el-row>
<!-- 添加/修改-商品标签 -->
<el-dialog :title="title"
v-model="visible">
v-model="visible"
draggable>
<el-form ref="formRef"
:model="form"
:rules="rules"
......
......@@ -260,7 +260,8 @@
@click="createTableAndECharts">新增套表</div>
<!-- 上传货需弹框 -->
<el-dialog title="上传货需"
v-model="uploadDemandImportVisible">
v-model="uploadDemandImportVisible"
draggable>
<el-form :model="uploadDemand"
label-width="150px">
<el-form-item label="年份">
......
......@@ -108,7 +108,8 @@
</div>
<!-- 添加或修改对话框 -->
<el-dialog :title="title"
v-model="open">
v-model="open"
draggable>
<el-form ref="formRef"
:model="form"
:rules="rules"
......
......@@ -42,7 +42,8 @@
</el-card>
<!-- 自定义报表分组 -->
<el-dialog title="编辑常用报表"
v-model="visible">
v-model="visible"
draggable>
<div class="wrap">
<!-- 列表 -->
<div class="left">
......
......@@ -12,7 +12,6 @@
<el-input v-model="loginForm.username"
type="text"
size="large"
auto-complete="off"
placeholder="工号">
<template #prefix>
<svg-icon icon-class="user"
......@@ -24,7 +23,6 @@
<el-input v-model="loginForm.password"
type="password"
size="large"
auto-complete="off"
placeholder="密码"
@keyup.enter="handleLogin">
<template #prefix>
......
......@@ -187,7 +187,8 @@
<el-dialog :title="title"
v-model="open"
width="820px"
append-to-body>
append-to-body
draggable>
<el-form ref="jobRef"
:model="form"
:rules="rules"
......
......@@ -133,7 +133,8 @@
/>
<!-- 调度日志详细 -->
<el-dialog title="调度日志详细" v-model="open" width="700px" append-to-body>
<el-dialog title="调度日志详细" v-model="open" width="700px" append-to-body
draggable>
<el-form :model="form" label-width="100px">
<el-row>
<el-col :span="12">
......
......@@ -189,7 +189,8 @@
<el-dialog title="操作日志详细"
v-model="open"
width="800px"
append-to-body>
append-to-body
draggable>
<el-form :model="form"
label-width="100px">
<el-row>
......
......@@ -2,7 +2,7 @@
<div class="app">
<div class="container">
<p class="order">
<span>单号:{{ orderId }}</span>
<span>单号:{{ orderId }}</span>
</p>
<div class="wrap">
<el-timeline>
......@@ -22,124 +22,42 @@
</div>
</div>
</div>
</template>
<script setup>
const data = {
"code": "1000",
"data": {
"purchaseTraceList": [
{
"traceDetails": [
{
"operateCode": "-265",
"operateDetailCode": "-265",
"operateName": "华悦薇",
"operateRemark": "司机已到达提货地-江苏 无锡市",
"operateTime": "2025-07-03 11:01:11",
"operateTitle": "已到达装货地"
},
{
"operateCode": "-640",
"operateDetailCode": "-640",
"operateName": "华悦薇",
"operateRemark": "司机开始装车",
"operateTime": "2025-07-03 11:01:11",
"operateTitle": "配送员完成揽收"
},
{
"operateCode": "-1880",
"operateDetailCode": "-1880",
"operateName": "华悦薇",
"operateRemark": "车辆已经到达“无锡锡山TC”",
"operateTime": "2025-07-03 12:18:29",
"operateTitle": "经停"
},
{
"operateCode": "-170",
"operateDetailCode": "-170",
"operateName": "孙永杰",
"operateRemark": "无锡锡山TC已收货(11箱、76.70kg、0.70方)",
"operateTime": "2025-07-03 20:12:34",
"operateTitle": "分拣中心收货"
},
{
"operateCode": "16",
"operateDetailCode": "16",
"operateName": "孙永杰",
"operateRemark": "订单已在无锡锡山TC出发,目的地:武汉新洲TC",
"operateTime": "2025-07-04 02:39:27",
"operateTitle": "分拣发货"
},
{
"operateCode": "-450",
"operateDetailCode": "-450",
"operateName": "孙永杰",
"operateRemark": "您的快件已发车",
"operateTime": "2025-07-04 02:39:29",
"operateTitle": "封车"
},
{
"operateCode": "16",
"operateDetailCode": "16",
"operateName": "程瑶",
"operateRemark": "订单已在武汉新洲TC出发,目的地:郑州TC",
"operateTime": "2025-07-05 02:05:33",
"operateTitle": "分拣发货"
},
{
"operateCode": "-450",
"operateDetailCode": "-450",
"operateName": "程瑶",
"operateRemark": "您的快件已发车",
"operateTime": "2025-07-05 02:05:34",
"operateTitle": "封车"
},
{
"operateCode": "-170",
"operateDetailCode": "-170",
"operateName": "maxiaodong14",
"operateRemark": "郑州TC已收货(11箱,批次号JDV021786083827002)",
"operateTime": "2025-07-05 10:09:25",
"operateTitle": "分拣中心收货"
},
{
"operateCode": "-300",
"operateDetailCode": "-300",
"operateName": "梁龙龙",
"operateRemark": "司机已到达目的城市-河南 郑州市,请您准备签收",
"operateTime": "2025-07-06 13:53:54",
"operateTitle": "运输车辆到达"
},
{
"operateCode": "150",
"operateDetailCode": "150",
"operateName": "梁龙龙",
"operateRemark": "订单已完成配送,感谢您选择京东物流!",
"operateTime": "2025-07-06 13:54:38",
"operateTitle": "站点收款"
}
],
"waybillNo": "JDV021786083827"
}
]
},
"message": "成功",
"requestId": "1751961953930"
import { getLogisticsListAPI } from '@/api'
const route = useRoute()
const activities = ref([])
const orderId = ref('')
const getLogisticsList = async () => {
// 获取当前 URL 上的参数 sentNo
const { data } = await getLogisticsListAPI({
sentNo: route.query.sentNo
})
orderId.value = data.expressNo
// 判断 data.sentInfo 为空给 activities 空数组怎么写
if (!data.sentInfo) {
activities.value = [{
content: '还未生成物流信息,请稍等',
timestamp: new Date()
}]
return
}
activities.value = data.sentInfo.traceDetails.map(o => ({
content: o.operateRemark,
timestamp: o.operateTime
}))
}
const activities = ref(data.data.purchaseTraceList[0].traceDetails.map(o => ({
content: o.operateRemark,
timestamp: o.operateTime
})))
const orderId = ref(data.data.purchaseTraceList[0].waybillNo)
getLogisticsList()
onMounted(() => {
//定义地图中心点坐标
var center = new TMap.LatLng(39.984120, 116.307484)
//定义map变量,调用 TMap.Map() 构造函数创建地图
var map = new TMap.Map(document.getElementById('map-container'), {
new TMap.Map(document.getElementById('map-container'), {
center: center,//设置地图中心点坐标
zoom: 17.2, //设置地图缩放级别
// pitch: 43.5, //设置俯仰角
......
......@@ -102,7 +102,8 @@
<el-dialog title="上传计划"
v-model="uploadPlanDialogVisible"
:close-on-click-modal="false"
:close-on-press-escape="false">
:close-on-press-escape="false"
draggable>
<div>
<!-- 计划表格 -->
<el-table :data="planTableList"
......@@ -134,7 +135,8 @@
<el-dialog class="add-edit-plan"
:title="(addOrEditPlanForm.id ? '修改' : '新增') + '计划'"
v-model="addOrEditPlanVisible"
width="60%">
width="60%"
draggable>
<!-- 表单 -->
<el-form :model="addOrEditPlanForm"
label-width="150px"
......@@ -277,7 +279,8 @@
<!-- 修改计划归属人 -->
<el-dialog title="修改计划归属人"
v-model="editPlanEmpVisible"
width="60%">
width="60%"
draggable>
<!-- 表单 -->
<el-form :model="editPlanEmpForm"
label-width="150px"
......
......@@ -105,7 +105,8 @@
<!-- 照片查看弹窗 -->
<el-dialog :title="photoLookInfoObj.storeName"
v-model="photoDialogVisible"
width="60%">
width="60%"
draggable>
<p>活动记录 ID :{{ photoLookInfoObj.id }}</p>
<p>活动时间 :{{ photoLookInfoObj.createDate }}</p>
<el-card v-for="obj in photoDialogList"
......
......@@ -124,7 +124,8 @@
<!-- 添加或修改考勤规则对话框 -->
<el-dialog :title="title"
v-model="open"
append-to-body>
append-to-body
draggable>
<el-form class="form"
ref="addForm"
:model="form"
......
......@@ -163,7 +163,8 @@
<!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title"
v-model="open"
append-to-body>
append-to-body
draggable>
<el-form ref="configRef"
:model="form"
:rules="rules"
......
......@@ -109,7 +109,8 @@
<!-- 添加或修改部门对话框 -->
<el-dialog :title="title"
v-model="open"
append-to-body>
append-to-body
draggable>
<el-form ref="deptRef"
:model="form"
:rules="rules"
......
......@@ -126,7 +126,8 @@
/>
<!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-dialog :title="title" v-model="open" width="500px" append-to-body
draggable>
<el-form ref="dataRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="字典类型">
<el-input v-model="form.dictType" :disabled="true" />
......
......@@ -141,7 +141,8 @@
/>
<!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" v-model="open" append-to-body>
<el-dialog :title="title" v-model="open" append-to-body
draggable>
<el-form ref="dictRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="字典名称" prop="dictName">
<el-input v-model="form.dictName" placeholder="请输入字典名称" />
......
......@@ -121,7 +121,8 @@
<!-- 添加或修改菜单对话框 -->
<el-dialog :title="title"
v-model="open"
append-to-body>
append-to-body
draggable>
<el-form ref="menuRef"
:model="form"
:rules="rules"
......
......@@ -140,7 +140,8 @@
<!-- 添加或修改公告对话框 -->
<el-dialog :title="title"
v-model="open"
append-to-body>
append-to-body
draggable>
<el-form ref="noticeRef"
:model="form"
:rules="rules"
......
......@@ -138,7 +138,8 @@
<!-- 添加或修改岗位对话框 -->
<el-dialog :title="title"
v-model="open"
append-to-body>
append-to-body
draggable>
<el-form ref="postRef"
:model="form"
:rules="rules"
......
......@@ -180,7 +180,8 @@
<!-- 添加或修改角色配置对话框 -->
<el-dialog :title="title"
v-model="open"
append-to-body>
append-to-body
draggable>
<el-form ref="roleRef"
:model="form"
:rules="rules"
......@@ -250,7 +251,8 @@
<!-- 分配角色数据权限对话框 -->
<el-dialog :title="title"
v-model="openDataScope"
append-to-body>
append-to-body
draggable>
<el-form :model="form"
label-width="80px">
<el-form-item label="角色名称">
......
......@@ -3,7 +3,8 @@
<el-dialog title="选择用户"
v-model="visible"
top="5vh"
append-to-body>
append-to-body
draggable>
<el-form :model="queryParams"
ref="queryRef"
:inline="true">
......
......@@ -219,7 +219,8 @@
<!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title"
v-model="open"
append-to-body>
append-to-body
draggable>
<el-form :model="form"
:rules="rules"
ref="userRef"
......@@ -397,7 +398,8 @@
<!-- 用户导入对话框 -->
<el-dialog :title="upload.title"
v-model="upload.open"
append-to-body>
append-to-body
draggable>
<el-upload ref="uploadRef"
:limit="1"
accept=".xlsx, .xls"
......
<template>
<div class="user-info-head" @click="editCropper()">
<img :src="options.img" title="点击上传头像" class="img-circle img-lg" />
<el-dialog :title="title" v-model="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog">
<el-dialog :title="title" v-model="open" width="800px" append-to-body @opened="modalOpened" @close="closeDialog"
draggable>
<el-row>
<el-col :xs="24" :md="12" :style="{ height: '350px' }">
<vue-cropper
......
<template>
<el-dialog v-model="open" width="500px" title="选择生成类型" @open="onOpen" @close="onClose">
<el-dialog v-model="open" width="500px" title="选择生成类型" @open="onOpen" @close="onClose"
draggable>
<el-form ref="codeTypeForm" :model="formData" :rules="rules" label-width="100px">
<el-form-item label="生成类型" prop="type">
<el-radio-group v-model="formData.type">
......
<template>
<div class="icon-dialog">
<el-dialog v-model="value" width="980px" :close-on-click-modal="false" :modal-append-to-body="false" @open="onOpen"
@close="onClose">
@close="onClose"
draggable>
<template #header="{ close, titleId, titleClass }">
选择图标
<el-input v-model="key" size="small" :style="{ width: '260px' }" placeholder="请输入图标名称" prefix-icon="Search"
......
<template>
<div>
<el-dialog title="添加选项" v-model="open" width="800px" :close-on-click-modal="false" :modal-append-to-body="false"
@open="onOpen" @close="onClose">
@open="onOpen" @close="onClose"
draggable>
<el-form ref="treeNodeForm" :model="formData" :rules="rules" label-width="100px">
<el-col :span="24">
<el-form-item label="选项名" prop="label">
......
<template>
<!-- 创建表 -->
<el-dialog title="创建表" v-model="visible" width="800px" top="5vh" append-to-body>
<el-dialog title="创建表" v-model="visible" width="800px" top="5vh" append-to-body
draggable>
<span>创建表语句(支持多个建表语句):</span>
<el-input type="textarea" :rows="10" placeholder="请输入文本" v-model="content"></el-input>
<template #footer>
......
<template>
<!-- 导入表 -->
<el-dialog title="导入表" v-model="visible" width="800px" top="5vh" append-to-body>
<el-dialog title="导入表" v-model="visible" width="800px" top="5vh" append-to-body
draggable>
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="表名称" prop="tableName">
<el-input
......
......@@ -175,7 +175,8 @@
v-model="preview.open"
top="5vh"
append-to-body
class="scrollbar">
class="scrollbar"
draggable>
<el-tabs v-model="preview.activeName">
<el-tab-pane v-for="(value, key) in preview.data"
:label="key.substring(key.lastIndexOf('/') + 1, key.indexOf('.vm'))"
......
import fs from 'fs'
import axios from 'axios'
function parseChangelog(changelogText) {
const result = {};
const versionRegex = /^## \[([\d.]+)\]\([^)]+\)/; // 匹配二级标题版本
const sectionRegex = /^### (.*?) \| (.*)$/; // 匹配三级标题部分
const breakingChangesRegex = /^### ⚠ BREAKING CHANGES$/; // 匹配BREAKING CHANGES
const descRegex = /^\* \*\*(.*?):?\*\* (.*?) \(/; // 匹配描述行
const result = [];
const versionRegex = /^#{1,3} \[([\d.]+)\]/;
const sectionRegex = /^### (.*?) \| (.*)$/;
const breakingChangesRegex = /^### ⚠ BREAKING CHANGES$/;
const descRegex = /^\* \*\*(.*?):?\*\* (.*?) \(/;
let currentVersion = null;
let currentVersionObj = null;
let currentSection = null;
let isBreakingChanges = false;
const lines = changelogText.split('\n');
for (const line of lines) {
// 检查是否是版本行 (二级标题)
const versionMatch = line.match(versionRegex);
const trimmedLine = line.trim();
// 检查是否是版本行
const versionMatch = trimmedLine.match(versionRegex);
if (versionMatch) {
currentVersion = versionMatch[1];
result[currentVersion] = {
// 保存当前版本对象(如果有)
if (currentVersionObj) {
// 清理空版本
if (currentVersionObj.breakingChanges.length > 0 ||
currentVersionObj.changes.length > 0) {
result.push(currentVersionObj);
}
}
// 创建新版本对象
currentVersionObj = {
version: versionMatch[1],
breakingChanges: [],
changes: []
};
isBreakingChanges = false;
currentSection = null;
continue;
}
// 如果是当前版本下的内容
if (currentVersion) {
// 检查是否是BREAKING CHANGES部分
const breakingMatch = line.match(breakingChangesRegex);
if (breakingMatch) {
isBreakingChanges = true;
continue;
}
if (!currentVersionObj) continue;
// 检查是否是普通的三级标题部分
const sectionMatch = line.match(sectionRegex);
if (sectionMatch) {
isBreakingChanges = false;
currentSection = {
type: sectionMatch[2], // 取 | 后面的部分作为类型
desc: []
};
result[currentVersion].changes.push(currentSection);
continue;
}
// 检查是否是BREAKING CHANGES部分
if (trimmedLine.match(breakingChangesRegex)) {
isBreakingChanges = true;
currentSection = {
type: '重大变化',
desc: []
};
currentVersionObj.changes.push(currentSection);
continue;
}
// 收集描述内容
const descMatch = line.match(descRegex);
if (descMatch) {
const description = descMatch[2].trim();
if (isBreakingChanges) {
result[currentVersion].breakingChanges.push(description);
} else if (currentSection) {
// 检查是否是普通章节部分
const sectionMatch = trimmedLine.match(sectionRegex);
if (sectionMatch) {
isBreakingChanges = false;
currentSection = {
type: sectionMatch[2],
desc: []
};
currentVersionObj.changes.push(currentSection);
continue;
}
// 收集描述内容
const descMatch = trimmedLine.match(descRegex);
if (descMatch) {
const description = descMatch[2].trim();
if (isBreakingChanges) {
currentVersionObj.breakingChanges.push(description);
if (currentSection) {
currentSection.desc.push(description);
}
} else if (currentSection) {
currentSection.desc.push(description);
}
}
}
// 添加最后一个版本对象
if (currentVersionObj &&
(currentVersionObj.breakingChanges.length > 0 ||
currentVersionObj.changes.length > 0)) {
result.push(currentVersionObj);
}
return result;
}
const changelog = './CHANGELOG.md'
const changeData = fs.readFileSync(changelog, 'utf-8')
const result = parseChangelog(changeData)
// 把对象写回到 version.js
console.log(result)
\ No newline at end of file
console.log(result)
axios({
url: 'http://192.168.101.103:8180/bi/front/version/core',
method: 'POST',
data: result
}).then(res => {
console.log(res)
}).catch(err => {
console.log(err, 'err')
})
......@@ -23,8 +23,8 @@ export default defineConfig(({ mode, command }) => {
open: true,
proxy: {
'/dev-api': {
// target: 'http://192.168.100.55:8080',
target: 'https://sfa-qa.wxl66.cn/api',
target: 'http://192.168.100.55:8080',
// target: 'https://sfa-qa.wxl66.cn/api',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
},
......@@ -39,7 +39,7 @@ export default defineConfig(({ mode, command }) => {
rewrite: (p) => p.replace(/^\/ql_local/, '')
},
'/bc_local': {
target: 'http://192.168.131.5:8180',
target: 'http://192.168.101.103:8180',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/bc_local/, '')
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论