Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
computedRoomPad
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
邓文彬
computedRoomPad
Commits
7e671fff
提交
7e671fff
authored
3月 20, 2025
作者:
caodi\cd
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix:数据同步
上级
9b24d271
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
530 行增加
和
42 行删除
+530
-42
index.vue
components/inspectionItem/index.vue
+1
-1
inspectionContentList.vue
pages/inspectionContent/inspectionContentList.vue
+53
-13
inspectionContentNew.vue
pages/inspectionContent/inspectionContentNew.vue
+32
-9
dialog.vue
pages/inspectionManagement/dialog.vue
+408
-0
index.vue
pages/inspectionManagement/index.vue
+36
-19
没有找到文件。
components/inspectionItem/index.vue
浏览文件 @
7e671fff
...
...
@@ -56,7 +56,7 @@
toPage
()
{
const
url
=
this
.
details
.
inspectionType
==
1
?
`/pages/inspectionContent/inspectionContent?isDisable=
${
`/pages/inspectionContent/inspectionContent
List
?isDisable=
${
this
.
isDisable
?
1
:
0
}
`
:
`/pages/shaftInspection/shaftInspectionList?isDisable=
${
...
...
pages/inspectionContent/inspectionContentList.vue
浏览文件 @
7e671fff
...
...
@@ -13,7 +13,7 @@
</block>
<block
slot=
"right"
class=
"nav-right"
>
<view
class=
"header-buttons"
>
<
button
class=
"button"
@
click=
"lookLog"
>
查看样表
</button
>
<
!--
<button
class=
"button"
@
click=
"lookLog"
>
查看样表
</button>
--
>
</view>
</block>
</uni-nav-bar>
...
...
@@ -34,17 +34,23 @@
</view>
</view>
<view
class=
"profile-right"
>
<button
class=
"record-button"
@
click=
"toListingManagement"
>
<
!--
<
button
class=
"record-button"
@
click=
"toListingManagement"
>
巡检人签字
</button>
</button>
-->
</view>
</view>
</view>
<view
class=
"box"
>
<view
class=
"bar"
>
<view
class=
"title"
>
巡检进度
</view>
<view
class=
"dai"
>
待巡检
<text
class=
"num"
>
11
</text>
个机房
</view>
<view
class=
"yi"
>
已完成
<text
class=
"num"
>
0
</text>
个机房
</view>
<view
class=
"dai"
>
待巡检
<text
class=
"num"
>
{{
11
-
inspectionNumber
}}
</text
>
个机房
</view
>
<view
class=
"yi"
>
已完成
<text
class=
"num"
>
{{
inspectionNumber
}}
</text
>
个机房
</view
>
</view>
</view>
<view
class=
"card-box"
>
...
...
@@ -59,11 +65,7 @@
v-for=
"(card, cardIndex) in row"
:key=
"cardIndex"
@
click=
"
toShaftInspection(
card.dictLabel,
card.jfType,
card.value
)
toShaftInspection(card.name, card.jfType, card.value)
"
>
<view
class=
"card"
>
...
...
@@ -76,7 +78,7 @@
<text
class=
"status"
>
{{
card
.
statusLable
}}
</text>
</view>
<view
class=
"second-row"
>
<text
class=
"location"
>
{{
card
.
dictLabel
}}
</text>
<text
class=
"location"
>
{{
card
.
name
}}
</text>
</view>
</view>
<view
class=
"spacer-image right"
v-if=
"cardIndex
<
row
.
length
-
1
"
>
...
...
@@ -128,7 +130,14 @@ export default {
init
()
{
return
new
Promise
((
resolve
,
reject
)
=>
{
let
list
=
pad_all_inspection_position
.
rows
.
map
((
item
,
index
)
=>
{
return
item
;
return
{
name
:
item
.
dictLabel
,
value
:
item
.
dictValue
,
jfType
:
item
.
jfType
,
isVaild
:
false
,
// 校验通过
status
:
item
.
status
,
statusLable
:
item
.
statusLable
};
});
const
group1
=
list
.
slice
(
0
,
5
);
const
group2
=
list
.
slice
(
5
,
10
);
...
...
@@ -153,8 +162,39 @@ export default {
resolve
();
});
},
// 回显数据
getDetails
(
uid
)
{
uni
.
showLoading
();
getInspectionDetails
(
uid
)
.
then
((
res
)
=>
{
const
detailsInfo
=
res
;
console
.
log
(
"detailsInfo"
,
detailsInfo
);
this
.
detailsInfo
=
detailsInfo
;
this
.
inspectionNumber
=
detailsInfo
.
inspectionNumber
;
this
.
inspectionCode
=
detailsInfo
.
inspectionCode
;
this
.
cardsInfo
=
detailsInfo
.
originData
;
const
group1
=
this
.
cardsInfo
.
slice
(
0
,
5
);
const
group2
=
this
.
cardsInfo
.
slice
(
5
,
10
);
const
group3
=
this
.
cardsInfo
.
slice
(
10
);
this
.
rows
=
[
group1
,
group2
,
group3
];
console
.
log
(
"this.cardsInfo"
,
this
.
cardsInfo
);
this
.
isDisable
=
this
.
isDisable
||
detailsInfo
.
synchronization
==
1
;
// 是否禁用 1:已同步数据 0: 未同步数据
uni
.
hideLoading
();
})
.
catch
((
error
)
=>
{
uni
.
showToast
({
title
:
error
.
msg
,
icon
:
"none"
,
duration
:
1000
,
});
uni
.
hideLoading
();
});
},
// 跳转到具体的机房
toShaftInspection
(
location
,
jfType
,
value
)
{
toShaftInspection
(
location
,
jfType
,
value
)
{
uni
.
navigateTo
({
url
:
`/pages/inspectionContent/inspectionContentNew?value=
${
value
}
&inspectionCode=
${
this
.
inspectionCode
}
&jfType=
${
jfType
}
&location=
${
location
}
&uid=
${
this
.
uid
}
`
,
});
...
...
pages/inspectionContent/inspectionContentNew.vue
浏览文件 @
7e671fff
...
...
@@ -51,6 +51,7 @@
mode=
"aspectFit"
></image
></view>
<view
class=
"kong"
></view>
<!-- 操作区域 -->
<!-- 物理环境 -->
<wlhj
...
...
@@ -194,6 +195,7 @@ export default {
detailsInfo
:
{},
// 详情
baseInfo
:
{},
// 基础信息
list
:
[],
//巡检信息
itemDetail
:
{},
};
},
computed
:
{
...
...
@@ -228,7 +230,9 @@ export default {
}
},
watch
:
{},
mounted
()
{},
mounted
()
{
this
.
itemDetail
=
this
.
getAllChildFormData
();
},
methods
:
{
// 初始化
init
()
{
...
...
@@ -332,17 +336,21 @@ export default {
return
this
.
detailsInfo
;
}
else
{
let
baseInfo
=
this
.
baseInfo
;
let
paramsObj
=
this
.
getAllChildFormData
();
let
paramsObj
=
this
.
getAllChildFormData
();
//获取所有数据
let
dataObj
=
pad_all_inspection_position
.
rows
.
map
((
item
,
index
)
=>
{
return
{
name
:
item
.
dictLabel
,
value
:
item
.
dictValue
,
jfType
:
item
.
jfType
,
jfType
:
item
.
jfType
,
isVaild
:
false
,
// 校验通过
details
:
this
.
itemDetail
,
status
:
item
.
status
,
statusLable
:
item
.
statusLable
};
});
let
tabList
=
JSON
.
parse
(
JSON
.
stringify
(
dataObj
));
let
posItem
=
tabList
[
this
.
value
-
1
];
let
posItem
=
tabList
[
this
.
value
];
console
.
log
(
"posItem"
,
posItem
);
posItem
.
details
=
paramsObj
;
console
.
log
(
"posItem"
,
posItem
);
if
(
!
this
.
checkInspectionResult
(
paramsObj
))
{
...
...
@@ -358,7 +366,7 @@ export default {
inspectionNumber
:
1
,
isException
:
posItem
.
status
==
2
?
1
:
0
,
items
:
[],
synchronization
:
typeSubmit
>
0
?
2
:
0
,
// 是否同步过
synchronization
:
0
,
// 是否同步过
submitTime
:
moment
().
format
(
"yyyy-MM-DD"
),
// 记录提交时间
submitMonth
:
moment
().
format
(
"yyyy-MM"
),
// 记录提交月份
originData
:
tabList
,
//所有大楼和楼层的数据
...
...
@@ -415,7 +423,7 @@ export default {
},
// 提交
submit
(
isSubmit
=
1
)
{
let
allValid
=
this
.
allValid
(
paramsObj
);
let
allValid
=
this
.
allValid
(
this
.
getAllChildFormData
()
);
// 校验是否通过
if
(
isSubmit
&&
!
allValid
)
{
uni
.
showToast
({
...
...
@@ -497,9 +505,19 @@ export default {
console
.
log
(
"所有子组件的数据:"
,
allData
);
return
allData
;
},
// 判断所有tab下的数据是否通过校验
allValid
(
arr
)
{
return
arr
.
every
((
item
)
=>
item
.
isValid
===
true
);
// 判断所有的数据是否通过校验
allValid
(
parentObj
)
{
// 遍历对象的所有属性
for
(
let
key
in
parentObj
)
{
// 确保属性是对象自身的(而非继承的)
if
(
parentObj
.
hasOwnProperty
(
key
))
{
// 检查 isValid 属性是否为 false
if
(
parentObj
[
key
].
isValid
===
false
)
{
return
false
;
// 如果有一个为 false,直接返回 false
}
}
}
return
true
;
// 如果全部为 true,返回 true
},
// 检查所有Tab 的必填项是否填写完整
isAllTabValid
()
{
...
...
@@ -673,11 +691,16 @@ export default {
}
.jfImg {
width: 100%;
margin-bottom: 15px;
.weitu {
width: 100%;
height: 280px;
}
}
.kong {
width: 100%;
height: 10px;
}
.tab-item {
display: flex;
align-items: flex-start;
...
...
pages/inspectionManagement/dialog.vue
0 → 100644
浏览文件 @
7e671fff
<
template
>
<view
class=
"synchronous-dialog"
>
<view
class=
"synchronous-content"
>
<view
class=
"row-item"
>
<text
class=
"title"
>
待打包数据
</text>
</view>
<view
class=
"row-item count-num"
>
<text
class=
"num"
>
{{
notSynchronizationList
.
length
}}
</text>
<text>
条
</text>
</view>
<view
class=
"operating-instructions"
>
<view
class=
"title"
>
操作说明:
</view>
<view
class=
"instructions-item"
>
1、在PAD端,点击“数据打包”,做好同步准备。
</view>
<view
class=
"instructions-item"
>
2、完成打包后,将PAD直联PC机,等待PC机自动导入需同步记录。
</view>
<view
class=
"instructions-item"
>
3、PC端自动导入完成后,请点击“同步数据”,同步成功后,列表自动刷新展示同步数据;且PAD同步的数据不支持修改。
</view>
</view>
<view
class=
"row-item bottom-row"
>
<button
class=
"button"
:loading=
"loading"
@
click=
"clickHandle"
>
数据打包
</button>
</view>
<!-- 关闭按钮 -->
<div
class=
"close-button"
>
<text
class=
"iconfont icon-a-bianzu16beifen"
@
click=
"close"
></text>
</div>
</view>
</view>
</
template
>
<
script
>
import
{
SYNCHRONIZE_DATA_PAD
,
checkAndCreateDirectory
,
createFileWithPlusIO
,
setSm2
,
USER_FILE_NAME
,
getUserList
,
}
from
"@/utils/systemCofig"
;
import
{
writeInspectionData
,
copyDirectory
,
deleteAllFilesInDirectory
,
addLog
,
getLogContent
,
LOG_TYPE_ENUM
,
}
from
"@/utils/IoReadingAndWriting.js"
;
import
moment
from
"moment"
;
import
{
getAllInspections
}
from
"@/request/index.js"
;
import
{
Base64
}
from
"js-base64"
;
export
default
{
props
:
{
list
:
{
type
:
Array
,
default
:
()
=>
{
return
[];
},
},
},
components
:
{},
data
()
{
return
{
loading
:
false
,
notSynchronizationList
:
[],
// 未同步数据
allList
:
[],
// 所有数据
};
},
mounted
()
{
const
temp
=
[];
this
.
list
.
forEach
((
item
)
=>
{
temp
.
push
(...(
item
.
list
||
[]));
});
this
.
notSynchronizationList
=
temp
.
filter
(
(
item
)
=>
item
.
synchronization
==
0
);
getAllInspections
().
then
((
res
)
=>
{
this
.
allList
=
res
;
});
},
watch
:
{
list
(
newData
)
{
const
temp
=
[];
newData
.
forEach
((
item
)
=>
{
temp
.
push
(...(
item
.
list
||
[]));
});
this
.
notSynchronizationList
=
temp
.
filter
(
(
item
)
=>
item
.
synchronization
==
0
);
},
},
methods
:
{
close
()
{
this
.
$emit
(
"close"
);
},
/**
* 1.生成两个文件. 机房文件 和 井道文件
* 2. 更新巡检数据状态 synchronization 置为 1
* 3. 写入数据
* 读取上一次打包的文件, 复制到 [ history ] 文件夹中
*/
clickHandle
()
{
if
(
this
.
loading
)
return
;
const
directoryPath
=
`
${
SYNCHRONIZE_DATA_PAD
}
/发送数据`
;
const
targetDirectoryPath
=
`
${
SYNCHRONIZE_DATA_PAD
}
/history`
;
checkAndCreateDirectory
(
directoryPath
).
then
(()
=>
{
copyDirectory
(
directoryPath
,
targetDirectoryPath
)
.
then
(()
=>
{
return
deleteAllFilesInDirectory
(
directoryPath
);
})
.
then
(()
=>
{
this
.
coverData
();
})
.
catch
((
error
)
=>
{
uni
.
showToast
({
title
:
error
,
icon
:
"none"
,
duration
:
1000
,
});
});
});
},
// 处理数据
coverData
()
{
const
userName
=
this
.
$store
.
state
.
now_user
.
user
;
const
notSynchronizationList
=
this
.
notSynchronizationList
;
const
allList
=
this
.
allList
;
let
timeStr
=
moment
().
format
(
"yyyy_MM_DD_hh_mm_ss"
);
const
JFXJ_DATA
=
notSynchronizationList
.
filter
((
item
)
=>
item
.
inspectionType
==
1
)
.
map
((
item
)
=>
{
return
{
...
item
,
originData
:
[],
};
});
// 机房数据类型是 1
const
JDXJ_DATA
=
notSynchronizationList
.
filter
((
item
)
=>
item
.
inspectionType
==
2
)
.
map
((
item
)
=>
{
return
item
[
item
.
inspectionCode
];
});
// 井道数据类型是 2
this
.
loading
=
true
;
const
tmepList
=
[];
if
(
JFXJ_DATA
.
length
)
{
let
JFXJ_DATA_FILE_NAME
=
`
${
userName
}
_JFXJ_
${
timeStr
}
.txt`
;
tmepList
.
push
(
this
.
packedData
(
JFXJ_DATA
,
JFXJ_DATA_FILE_NAME
));
}
JDXJ_DATA
.
forEach
((
item
,
index
)
=>
{
let
JDXJ_DATA_FILE_NAME
=
`
${
userName
}
_JDXJ_
${
timeStr
}
_
${
index
}
.txt`
;
tmepList
.
push
(
this
.
packedData
(
item
,
JDXJ_DATA_FILE_NAME
));
});
Promise
.
all
(
tmepList
)
.
then
(()
=>
{
// 更新巡检数据状态
const
synchronizationUids
=
notSynchronizationList
.
map
((
item
)
=>
{
item
.
synchronization
=
1
;
return
item
.
uid
;
});
const
userData
=
{};
allList
.
forEach
((
item
)
=>
{
if
(
synchronizationUids
.
includes
(
item
.
uid
))
{
item
.
synchronization
=
1
;
}
if
(
userData
[
item
.
createByName
])
{
userData
[
item
.
createByName
].
push
(
item
);
}
else
{
userData
[
item
.
createByName
]
=
[
item
];
}
});
this
.
$store
.
commit
(
"SET_ALL_DATA"
,
allList
);
const
keys
=
Object
.
keys
(
userData
);
const
promiseArr
=
keys
.
map
((
key
)
=>
{
const
val
=
userData
[
key
];
return
writeInspectionData
(
val
,
key
);
});
Promise
.
all
(
promiseArr
)
.
then
(()
=>
{
setTimeout
(()
=>
{
uni
.
showToast
({
title
:
"打包成功"
,
icon
:
"none"
,
duration
:
2000
,
});
this
.
close
();
this
.
loading
=
false
;
// 生成日志
const
logContent
=
getLogContent
(
LOG_TYPE_ENUM
.
sys
,
""
,
"同步模块"
);
const
log_list
=
this
.
$store
.
state
.
log_list
;
log_list
.
push
(
logContent
);
this
.
$store
.
commit
(
"SET_LOG_LIST"
,
log_list
);
addLog
(
log_list
).
then
((
res
)
=>
{
});
// 更新同步时间
this
.
updateSysTime
();
},
2
*
1000
);
})
.
catch
((
error
)
=>
{
this
.
loading
=
false
;
uni
.
showToast
({
title
:
error
,
icon
:
"none"
,
duration
:
2000
,
});
});
})
.
catch
(()
=>
{
setTimeout
(()
=>
{
uni
.
showToast
({
title
:
"打包失败"
,
icon
:
"none"
,
duration
:
2000
,
});
this
.
loading
=
false
;
},
2
*
1000
);
});
},
// 打包文件
packedData
(
content
,
fileName
)
{
const
fileContent
=
setSm2
(
content
);
return
createFileWithPlusIO
(
`
${
SYNCHRONIZE_DATA_PAD
}
/发送数据`
,
fileName
,
fileContent
);
},
// 更新最近一次同步时间
updateSysTime
()
{
getUserList
().
then
((
personList
)
=>
{
const
now_user
=
this
.
$store
.
state
.
now_user
;
const
key
=
personList
.
findIndex
(
(
item
)
=>
item
.
userId
==
now_user
.
userId
);
// 更新用户同步时间
const
userInfo
=
personList
[
key
];
const
LastSynchronizationTime
=
moment
().
format
(
"yyyy-MM-DD HH:mm"
);
personList
[
key
].
LastSynchronizationTime
=
LastSynchronizationTime
;
userInfo
.
LastSynchronizationTime
=
LastSynchronizationTime
;
this
.
$store
.
commit
(
"SET_USER"
,
userInfo
);
uni
.
setStorageSync
(
"last_time"
,
userInfo
.
LastSynchronizationTime
||
""
);
// 更新用户数据
const
fileContent
=
JSON
.
stringify
(
Base64
.
encode
(
JSON
.
stringify
(
personList
))
);
uni
.
setStorage
({
key
:
"user_data"
,
data
:
JSON
.
stringify
(
personList
),
fail
:
(
error
)
=>
{
console
.
log
(
"APP.vue 存储数据失败"
,
error
);
},
});
createFileWithPlusIO
(
SYNCHRONIZE_DATA_PAD
,
USER_FILE_NAME
,
fileContent
).
then
(()
=>
{
console
.
log
(
"---用户数据更新成功"
)
}).
catch
(
error
=>
{
console
.
log
(
"---用户数据更新失败"
,
error
)
})
});
},
},
};
</
script
>
<
style
scoped
lang=
"less"
>
.synchronous-dialog {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
.synchronous-content {
padding: 3% 20px 32px 24px;
width: 400px;
height: 60%;
box-sizing: border-box;
background-image: linear-gradient(
-6deg,
#f9ffe7 0%,
#ffffff 12%,
#fcfeff 73%,
#ccf1ff 100%
);
border: 0.4px solid rgba(224, 224, 224, 1);
border-radius: 12px;
position: relative;
.row-item {
display: flex;
align-items: center;
justify-content: center;
}
.title {
font-family: PingFangSC-Medium;
font-size: 18px;
color: #000000;
text-align: center;
line-height: 26px;
font-weight: 500;
}
.count-num {
margin: 5% 0 5% 0;
align-items: flex-end;
.num {
display: inline-block;
font-family: AlibabaPuHuiTi_2_65_Medium;
font-size: 50px;
color: #3774f6;
line-height: 44px;
font-weight: 500;
}
}
.operating-instructions {
margin-bottom: 8%;
.title {
font-size: 13px;
color: #4a4a4a;
line-height: 24px;
font-weight: 600;
text-align: left;
}
.instructions-item {
font-size: 12px;
color: #7c7c7c;
line-height: 22px;
font-weight: 400;
}
}
// 打包按钮
.bottom-row {
position: absolute;
bottom: 24px;
left: 50%;
transform: translateX(-50%);
.button {
display: flex;
align-items: center;
justify-content: center;
background-image: linear-gradient(180deg, #3773f6 0%, #2c57f6 99%);
box-shadow: 0px 10px 24px 0px rgba(51, 104, 246, 0.24);
border-radius: 27px;
width: 160px;
height: 40px;
color: #fff;
}
}
// 关闭按钮
.close-button {
position: absolute;
bottom: -40px;
left: 50%;
transform: translateX(-50%);
.iconfont {
color: #fff;
font-size: 24px;
}
}
}
}
</
style
>
pages/inspectionManagement/index.vue
浏览文件 @
7e671fff
...
...
@@ -54,7 +54,14 @@
</view>
<!-- 开始巡检 -->
<view
class=
"inspection-button"
@
click=
"toPage"
>
同步数据
</view>
<!--
<view
class=
"inspection-button"
@
click=
"toPage"
>
开始巡检
</view>
-->
<view
class=
"inspection-button"
@
click=
"openDialog(true)"
>
同步数据
</view
>
<!-- 打包弹窗 -->
<Dialog
v-show=
"isDialog && list.length"
:list=
"list"
@
close=
"openDialog(false)"
></Dialog>
</view>
</
template
>
...
...
@@ -62,6 +69,7 @@
import
SearchCom
from
"@/components/searchCom/index.vue"
;
import
InspectionItem
from
"@/components/inspectionItem/index.vue"
;
import
{
getDarft
}
from
"@/request/index.js"
;
import
Dialog
from
"./dialog.vue"
;
import
{
getAllInspections
}
from
"@/request/index.js"
;
import
Empty
from
"@/components/empty/index.vue"
;
...
...
@@ -69,6 +77,7 @@ export default {
components
:
{
SearchCom
,
InspectionItem
,
Dialog
,
Empty
,
},
data
()
{
...
...
@@ -116,16 +125,18 @@ export default {
clickInspection
(
type
)
{
if
(
type
==
1
)
{
uni
.
navigateTo
({
url
:
"/pages/
shaftInspection/shaftInspectionNew
"
,
url
:
"/pages/
inspectionContent/inspectionContentList
"
,
});
}
else
{
uni
.
navigateTo
({
url
:
"/pages/shaftInspection/shaftInspection
New
"
,
url
:
"/pages/shaftInspection/shaftInspection
List
"
,
});
}
},
init
()
{
const
all_data
=
this
.
all_data
||
[];
// this.isPackedDataBtn =
// all_data.filter((item) => item.synchronization == 0).length > 0;
const
{
inspectionTime
=
[]
}
=
this
.
searchForm
;
const
startTime
=
inspectionTime
[
0
];
...
...
@@ -174,7 +185,7 @@ export default {
},
coverData
(
arr
=
[])
{
console
.
log
(
"arr"
,
arr
)
console
.
log
(
"arr"
,
arr
);
const
{
isException
=
""
,
inspectionType
=
""
,
...
...
@@ -195,6 +206,12 @@ export default {
);
});
},
openDialog
(
show
)
{
this
.
isDialog
=
show
;
if
(
!
show
)
{
this
.
init
();
}
},
change
(
e
)
{
this
.
searchForm
=
e
;
...
...
@@ -244,21 +261,21 @@ export default {
</
script
>
<
style
scoped
lang=
"less"
>
.uni-nav-bar-text {
height: 28.8px;
width: 28.8px;
background: #ffffff;
border: 0.32px solid rgba(224, 224, 224, 1);
border-radius: 14.4px;
color: #333;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
height: 28.8px;
width: 28.8px;
background: #ffffff;
border: 0.32px solid rgba(224, 224, 224, 1);
border-radius: 14.4px;
color: #333;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
.iconfont {
font-size: 16px;
line-height: 28.8px;
}
.iconfont {
font-size: 16px;
line-height: 28.8px;
}
}
.nav-right {
width: 192px;
...
...
@@ -278,7 +295,7 @@ export default {
color: #000000;
line-height: 28.8px;
font-weight: 400;
border: 0;
border: 0;
}
}
.inspection-management {
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论