Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
X
xyw_asset_console
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DaiJiezhang
xyw_asset_console
Commits
00d54727
Commit
00d54727
authored
Jul 06, 2026
by
DaiJiezhang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Refine phone list workspace
parent
da65cb92
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
98 additions
and
21 deletions
+98
-21
app-v2.js
app-v2.js
+2
-2
phone-add-dialog.js
src/modules/phone/phone-add-dialog.js
+9
-9
phone-detail-drawer.js
src/modules/phone/phone-detail-drawer.js
+1
-9
phone-list-runtime.js
src/modules/phone/phone-list-runtime.js
+0
-0
record-adapters.js
src/modules/shared/record-adapters.js
+7
-1
styles-v2.css
styles-v2.css
+79
-0
No files found.
app-v2.js
View file @
00d54727
...
@@ -75,7 +75,6 @@
...
@@ -75,7 +75,6 @@
channelOperator
:
'中国移动'
,
channelOperator
:
'中国移动'
,
numberStatus
:
true
,
numberStatus
:
true
,
linkedWecom
:
'张三企业微信'
,
linkedWecom
:
'张三企业微信'
,
numberRetentionStatus
:
true
,
updateTime
:
'2024-03-12 10:25'
,
updateTime
:
'2024-03-12 10:25'
,
note
:
'用于客户联系'
note
:
'用于客户联系'
}
}
...
@@ -529,7 +528,7 @@ function renderExternalRuntime(moduleKey) {
...
@@ -529,7 +528,7 @@ function renderExternalRuntime(moduleKey) {
phoneText
:
{
phoneText
:
{
add
:
'新增号卡'
,
add
:
'新增号卡'
,
reset
:
'重置'
,
reset
:
'重置'
,
searchPlaceholder
:
'搜索手机号、实名人或
城市
'
,
searchPlaceholder
:
'搜索手机号、实名人或
域名
'
,
deleteConfirm
:
'确认删除这条手机号记录吗?'
,
deleteConfirm
:
'确认删除这条手机号记录吗?'
,
deleteFailed
:
'删除失败,请稍后重试'
,
deleteFailed
:
'删除失败,请稍后重试'
,
loadFailed
:
'加载手机号列表失败,请确认本地后端已启动'
loadFailed
:
'加载手机号列表失败,请确认本地后端已启动'
...
@@ -708,3 +707,4 @@ function initPage() {
...
@@ -708,3 +707,4 @@ function initPage() {
window
.
updateActiveNav
=
updateActiveNav
;
window
.
updateActiveNav
=
updateActiveNav
;
window
.
renderModule
=
renderModule
;
window
.
renderModule
=
renderModule
;
document
.
addEventListener
(
'DOMContentLoaded'
,
initPage
);
document
.
addEventListener
(
'DOMContentLoaded'
,
initPage
);
src/modules/phone/phone-add-dialog.js
View file @
00d54727
...
@@ -107,31 +107,31 @@
...
@@ -107,31 +107,31 @@
/**
/**
* 代码作用(白话):把外层传入的手机号记录回填到表单里,兼容列表记录和详情记录两种字段名,并把两张旧图按一个图片区域回显;关联文件:F:/Project/xyw_console/app-v2.js、F:/Project/xyw_console/src/modules/phone/phone-detail-drawer.js、F:/Project/xyw_console/src/modules/shared/record-adapters.js;关联逻辑(调用链/消息链/数据流):编辑按钮/详情抽屉编辑 -> PhoneAddDialogAPI.open('edit', record) -> populateFormData() -> 表单与图片预览回填。
* 代码作用(白话):把外层传入的手机号记录回填到表单里,兼容列表记录和详情记录两种字段名,并把两张旧图按一个图片区域回显;关联文件:F:/Project/xyw_console/app-v2.js、F:/Project/xyw_console/src/modules/phone/phone-detail-drawer.js、F:/Project/xyw_console/src/modules/shared/record-adapters.js;关联逻辑(调用链/消息链/数据流):编辑按钮/详情抽屉编辑 -> PhoneAddDialogAPI.open('edit', record) -> populateFormData() -> 表单与图片预览回填。
*/
*/
/**
* ???????????????????????????????? `card_status` / `mobile_status` / `channel_operator`?????????????????????F:/Project/xyw_console/src/modules/phone/phone-add-dialog.js?F:/Project/xyw_console/src/modules/shared/record-adapters.js?????????/???/???????/???? -> populateFormData() -> formData -> ?????
*/
function
populateFormData
(
record
)
{
function
populateFormData
(
record
)
{
formData
.
id
=
record
.
id
||
null
;
formData
.
id
=
record
.
id
||
null
;
formData
.
phoneNumber
=
record
.
phoneNumber
||
record
.
phone
||
''
;
formData
.
phoneNumber
=
record
.
phoneNumber
||
record
.
phone
||
''
;
formData
.
realPerson
=
record
.
realPerson
||
''
;
formData
.
realPerson
=
record
.
realPerson
||
''
;
formData
.
iccid
=
record
.
iccid
||
''
;
formData
.
iccid
=
record
.
iccid
||
''
;
formData
.
city
=
record
.
city
||
''
;
formData
.
city
=
record
.
city
||
''
;
formData
.
cardStatus
=
record
.
cardStatus
||
record
.
status
||
'正常'
;
formData
.
cardStatus
=
record
.
cardStatus
||
record
.
card_status
||
record
.
status
||
'正常'
;
formData
.
cardUsageLocation
=
record
.
cardUsageLocation
||
record
.
usageLocation
||
''
;
formData
.
cardUsageLocation
=
record
.
cardUsageLocation
||
record
.
card_usage_location
||
record
.
usageLocation
||
''
;
formData
.
wecom
=
record
.
wecom
===
true
;
formData
.
wecom
=
record
.
wecom
===
true
;
formData
.
wechat
=
record
.
wechat
===
true
;
formData
.
wechat
=
record
.
wechat
===
true
;
formData
.
outboundCall
=
record
.
outboundCall
===
true
||
record
.
outbound
===
'可外呼'
;
formData
.
outboundCall
=
record
.
outboundCall
===
true
||
record
.
outbound
_call
===
true
||
record
.
outbound
===
'可外呼'
;
formData
.
douyinAccount
=
record
.
douyinAccount
||
''
;
formData
.
douyinAccount
=
record
.
douyinAccount
||
''
;
formData
.
miniProgramFiling
=
record
.
miniProgramFiling
===
true
;
formData
.
miniProgramFiling
=
record
.
miniProgramFiling
===
true
;
formData
.
packageChange5yuan
=
record
.
packageChange5yuan
===
true
;
formData
.
packageChange5yuan
=
record
.
packageChange5yuan
===
true
;
formData
.
channelOperator
=
record
.
channelOperator
||
record
.
carrier
||
''
;
formData
.
channelOperator
=
record
.
channelOperator
||
record
.
c
hannel_operator
||
record
.
c
arrier
||
''
;
formData
.
numberStatus
=
record
.
numberStatus
!==
fals
e
;
formData
.
numberStatus
=
record
.
numberStatus
??
record
.
mobile_status
??
record
.
number_status
??
tru
e
;
formData
.
linkedWecom
=
record
.
linkedWecom
||
''
;
formData
.
linkedWecom
=
record
.
linkedWecom
||
record
.
linked_wecom
||
''
;
imageItems
.
value
=
buildImageItemsFromRecord
(
record
);
imageItems
.
value
=
buildImageItemsFromRecord
(
record
);
syncImagesToFormData
();
syncImagesToFormData
();
}
}
/**
* 代码作用(白话):按新增或编辑模式打开手机号弹窗,并决定是重置表单还是回填旧记录;关联文件:F:/Project/xyw_console/app-v2.js、F:/Project/xyw_console/src/modules/phone/phone-add-dialog.js;关联逻辑(调用链/消息链/数据流):新增/编辑按钮 -> PhoneAddDialogAPI.open() -> open() -> visible/formData/imageItems 更新。
*/
function
open
(
mode
=
'add'
,
record
=
null
)
{
function
open
(
mode
=
'add'
,
record
=
null
)
{
visible
.
value
=
true
;
visible
.
value
=
true
;
isEdit
.
value
=
mode
===
'edit'
;
isEdit
.
value
=
mode
===
'edit'
;
...
...
src/modules/phone/phone-detail-drawer.js
View file @
00d54727
(
function
initPhoneDetailDrawer
()
{
(
function
initPhoneDetailDrawer
()
{
const
{
createApp
,
ref
,
reactive
}
=
window
.
Vue
;
const
{
createApp
,
ref
,
reactive
}
=
window
.
Vue
;
const
ElementPlus
=
window
.
ElementPlus
;
const
ElementPlus
=
window
.
ElementPlus
;
...
@@ -85,10 +85,6 @@
...
@@ -85,10 +85,6 @@
<span style="font-size: 15px; font-weight: 500; color: #111827;">{{ recordData.realPerson || '—' }}</span>
<span style="font-size: 15px; font-weight: 500; color: #111827;">{{ recordData.realPerson || '—' }}</span>
</div>
</div>
<div style="display: flex; flex-direction: column; gap: 6px;">
<div style="display: flex; flex-direction: column; gap: 6px;">
<span style="font-size: 13px; color: #6b7280;">ICCID</span>
<span style="font-size: 15px; font-weight: 500; color: #111827; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;">{{ recordData.iccid || '—' }}</span>
</div>
<div style="display: flex; flex-direction: column; gap: 6px;">
<span style="font-size: 13px; color: #6b7280;">归属地</span>
<span style="font-size: 13px; color: #6b7280;">归属地</span>
<span style="font-size: 15px; font-weight: 500; color: #111827;">{{ recordData.city || '—' }}</span>
<span style="font-size: 15px; font-weight: 500; color: #111827;">{{ recordData.city || '—' }}</span>
</div>
</div>
...
@@ -122,10 +118,6 @@
...
@@ -122,10 +118,6 @@
<span style="font-size: 13px; color: #6b7280;">绑定企微号</span>
<span style="font-size: 13px; color: #6b7280;">绑定企微号</span>
<span style="font-size: 15px; font-weight: 400; color: #374151;">{{ recordData.linkedWecom || '—' }}</span>
<span style="font-size: 15px; font-weight: 400; color: #374151;">{{ recordData.linkedWecom || '—' }}</span>
</div>
</div>
<div style="display: flex; flex-direction: column; gap: 6px;">
<span style="font-size: 13px; color: #6b7280;">抖音账号</span>
<span style="font-size: 15px; font-weight: 400; color: #374151;">{{ recordData.douyinAccount || '—' }}</span>
</div>
</div>
</div>
</section>
</section>
...
...
src/modules/phone/phone-list-runtime.js
View file @
00d54727
This diff is collapsed.
Click to expand it.
src/modules/shared/record-adapters.js
View file @
00d54727
...
@@ -83,11 +83,16 @@
...
@@ -83,11 +83,16 @@
/**
/**
* 代码作用(白话):把手机号原始记录整理成列表、详情抽屉、编辑弹窗共用的统一字段,避免每个组件自己猜字段名;关联文件:F:/Project/xyw_console/app-v2.js、F:/Project/xyw_console/src/modules/phone/phone-list-runtime.js、F:/Project/xyw_console/src/modules/phone/phone-detail-drawer.js、F:/Project/xyw_console/src/modules/phone/phone-add-dialog.js;关联逻辑(调用链/消息链/数据流):PhoneApiClient/DATA_SOURCES.phone -> normalizePhoneRecord() -> app-v2.js 注入 -> 手机号列表/详情/编辑弹窗。
* 代码作用(白话):把手机号原始记录整理成列表、详情抽屉、编辑弹窗共用的统一字段,避免每个组件自己猜字段名;关联文件:F:/Project/xyw_console/app-v2.js、F:/Project/xyw_console/src/modules/phone/phone-list-runtime.js、F:/Project/xyw_console/src/modules/phone/phone-detail-drawer.js、F:/Project/xyw_console/src/modules/phone/phone-add-dialog.js;关联逻辑(调用链/消息链/数据流):PhoneApiClient/DATA_SOURCES.phone -> normalizePhoneRecord() -> app-v2.js 注入 -> 手机号列表/详情/编辑弹窗。
*/
*/
/**
* ????????????????????????????????????????????? status ??????????????F:/Project/xyw_console/src/modules/shared/record-adapters.js?F:/Project/xyw_console/src/modules/phone/phone-list-runtime.js?F:/Project/xyw_console/src/modules/phone/phone-add-dialog.js?????????/???/????????? -> normalizePhoneRecord() -> ??/??/?????
*/
function
normalizePhoneRecord
(
row
)
{
function
normalizePhoneRecord
(
row
)
{
const
source
=
row
||
{};
const
source
=
row
||
{};
const
images
=
buildPhoneImages
(
source
);
const
images
=
buildPhoneImages
(
source
);
const
cardStatusRaw
=
source
.
cardStatus
??
source
.
card_status
??
source
.
status
;
const
cardStatusRaw
=
source
.
cardStatus
??
source
.
card_status
??
source
.
status
;
const
cardStatus
=
cardStatusRaw
===
0
||
cardStatusRaw
===
'0'
||
cardStatusRaw
===
'异常'
?
'异常停机'
:
(
cardStatusRaw
||
'正常'
);
const
cardStatus
=
cardStatusRaw
===
0
||
cardStatusRaw
===
'0'
||
cardStatusRaw
===
'异常'
?
'异常停机'
:
(
cardStatusRaw
||
'正常'
);
const
phoneNumber
=
source
.
phoneNumber
||
source
.
phone_number
||
source
.
phone
||
''
;
const
phoneNumber
=
source
.
phoneNumber
||
source
.
phone_number
||
source
.
phone
||
''
;
const
realPerson
=
source
.
realPerson
||
source
.
real_person
||
''
;
const
realPerson
=
source
.
realPerson
||
source
.
real_person
||
''
;
const
channelOperator
=
source
.
channelOperator
||
source
.
channel_operator
||
source
.
carrier
||
''
;
const
channelOperator
=
source
.
channelOperator
||
source
.
channel_operator
||
source
.
carrier
||
''
;
...
@@ -148,6 +153,7 @@
...
@@ -148,6 +153,7 @@
packageChange5yuan
:
packageChangeEnabled
,
packageChange5yuan
:
packageChangeEnabled
,
package_change_5yuan
:
packageChangeEnabled
,
package_change_5yuan
:
packageChangeEnabled
,
numberStatus
,
numberStatus
,
mobileStatus
:
numberStatus
,
mobile_status
:
numberStatus
,
mobile_status
:
numberStatus
,
linkedWecom
,
linkedWecom
,
linked_wecom
:
linkedWecom
,
linked_wecom
:
linkedWecom
,
...
...
styles-v2.css
View file @
00d54727
...
@@ -1150,3 +1150,82 @@
...
@@ -1150,3 +1150,82 @@
align-items
:
center
;
align-items
:
center
;
gap
:
8px
;
gap
:
8px
;
}
}
/* Phone card filter toggle buttons and collapsible filter rows */
.phone-toolbar-main
{
flex-wrap
:
nowrap
;
}
.phone-toolbar-main
.toolbar-left
{
flex
:
0
0
auto
;
min-width
:
0
;
}
.phone-toolbar-actions
{
flex
:
1
1
auto
;
justify-content
:
flex-end
;
gap
:
8px
;
flex-wrap
:
nowrap
;
}
.filter-toggle-btn
{
flex
:
0
0
auto
;
height
:
32px
;
padding
:
0
14px
;
border
:
1px
solid
#e5e7eb
;
border-radius
:
6px
;
background
:
#fff
;
color
:
#4b5563
;
font-size
:
13px
;
font-weight
:
500
;
cursor
:
pointer
;
white-space
:
nowrap
;
transition
:
border-color
0.15s
ease
,
color
0.15s
ease
,
background
0.15s
ease
;
}
.filter-toggle-btn
:hover
{
border-color
:
#93c5fd
;
color
:
#2563eb
;
}
.filter-toggle-btn.is-active
{
background
:
#eff6ff
;
border-color
:
#3b82f6
;
color
:
#2563eb
;
font-weight
:
600
;
}
.phone-search-input
{
flex
:
0
0
220px
;
}
.phone-filter-row
{
display
:
flex
;
align-items
:
center
;
gap
:
8px
;
flex-wrap
:
wrap
;
padding
:
12px
20px
;
border-bottom
:
1px
solid
#f3f4f6
;
background
:
#fafbfc
;
}
.phone-filter-row
.el-select
,
.phone-filter-row
.el-date-editor
,
.phone-filter-row
.el-input
{
margin
:
0
;
}
.phone-date-range.el-date-editor.el-input__wrapper
,
.phone-date-range
{
width
:
190px
!important
;
flex
:
0
0
190px
;
}
.phone-date-range
.el-range-input
{
min-width
:
0
!important
;
width
:
68px
!important
;
}
.phone-date-range
.el-range-separator
{
padding
:
0
2px
!important
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment