安装前准备页面图标改造
This commit is contained in:
@@ -3,20 +3,24 @@
|
|||||||
<div class="current-project-bar">当前项目:{{ currentProjectName }}</div>
|
<div class="current-project-bar">当前项目:{{ currentProjectName }}</div>
|
||||||
<div class="rm-panel">
|
<div class="rm-panel">
|
||||||
<div class="rm-panel-header">
|
<div class="rm-panel-header">
|
||||||
<span>🛠️ 安装前准备</span>
|
<span>安装前准备</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="rm-panel-body">
|
<div class="rm-panel-body">
|
||||||
<el-tabs v-model="activeTab" @tab-click="onTabClick">
|
<el-tabs v-model="activeTab" @tab-click="onTabClick">
|
||||||
<el-tab-pane label="🔧 工具准备" name="tools">
|
<el-tab-pane name="tools">
|
||||||
|
<span slot="label"><i class="el-icon-s-tools"></i> 工具准备</span>
|
||||||
<install-tools ref="toolsTab" :project-id="currentProjectId" />
|
<install-tools ref="toolsTab" :project-id="currentProjectId" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="👷 安装人员" name="personnel">
|
<el-tab-pane name="personnel">
|
||||||
|
<span slot="label"><i class="el-icon-user-solid"></i> 安装人员</span>
|
||||||
<install-personnel ref="personnelTab" :project-id="currentProjectId" />
|
<install-personnel ref="personnelTab" :project-id="currentProjectId" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="📏 安装精度" name="precision">
|
<el-tab-pane name="precision">
|
||||||
|
<span slot="label"><i class="el-icon-data-line"></i> 安装精度</span>
|
||||||
<install-precision ref="precisionTab" :project-id="currentProjectId" />
|
<install-precision ref="precisionTab" :project-id="currentProjectId" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="📊 安装进度" name="progress">
|
<el-tab-pane name="progress">
|
||||||
|
<span slot="label"><i class="el-icon-timer"></i> 安装进度</span>
|
||||||
<install-progress ref="progressTab" :project-id="currentProjectId" />
|
<install-progress ref="progressTab" :project-id="currentProjectId" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<div v-if="precision.length === 0" style="text-align:center;color:#aaa;padding:40px;">暂无精度数据</div>
|
<div v-if="precision.length === 0" style="text-align:center;color:#aaa;padding:40px;">暂无精度数据</div>
|
||||||
<div v-for="(grp, sys) in grouped" :key="sys" class="cat-section">
|
<div v-for="(grp, sys) in grouped" :key="sys" class="cat-section">
|
||||||
<div class="cat-header">
|
<div class="cat-header">
|
||||||
<span>{{ sysIcon(sys) }} {{ sys }}</span>
|
<span><i :class="sysIcon(sys)" style="margin-right:4px;"></i>{{ sys }}</span>
|
||||||
<span class="cat-count">{{ grp.length }}项 · 合格 {{ grp.filter(p=>p.isQualified==='1').length }}/{{ grp.length }}</span>
|
<span class="cat-count">{{ grp.length }}项 · 合格 {{ grp.filter(p=>p.isQualified==='1').length }}/{{ grp.length }}</span>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="grp" stripe border size="small" style="width:100%;">
|
<el-table :data="grp" stripe border size="small" style="width:100%;">
|
||||||
@@ -175,7 +175,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
sysIcon(s) { return { '轧辊系统':'🔄','AGC系统':'📐','主机框架':'🏛️','液压系统':'💧','电气系统':'⚡','辅助设备':'🔩','冷却润滑':'❄️','安全装置':'🛡️' }[s]||'📌' },
|
sysIcon(s) { return { '轧辊系统':'el-icon-s-operation','AGC系统':'el-icon-s-marketing','主机框架':'el-icon-s-home','液压系统':'el-icon-water-cup','电气系统':'el-icon-s-platform','辅助设备':'el-icon-s-tools','冷却润滑':'el-icon-cold-drink','安全装置':'el-icon-s-check' }[s]||'el-icon-collection' },
|
||||||
cleanForm() { return { systemName:'轧辊系统', itemName:'', nameEn:'', targetValue:'', unit:'mm', importance:'★★★', tool:'', methodDesc:'', standardRef:'', actualValue:'', _qualified:false, photos:'', _files:[] } },
|
cleanForm() { return { systemName:'轧辊系统', itemName:'', nameEn:'', targetValue:'', unit:'mm', importance:'★★★', tool:'', methodDesc:'', standardRef:'', actualValue:'', _qualified:false, photos:'', _files:[] } },
|
||||||
loadData() {
|
loadData() {
|
||||||
if (!this.projectId) return
|
if (!this.projectId) return
|
||||||
|
|||||||
@@ -12,13 +12,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Bar chart -->
|
<!-- Bar chart -->
|
||||||
<div style="font-weight:600;font-size:13px;margin-bottom:8px;">📊 安装进度条形图</div>
|
<div style="font-weight:600;font-size:13px;margin-bottom:8px;"><i class="el-icon-data-line" style="margin-right:4px;"></i>安装进度条形图</div>
|
||||||
<div v-if="progress.length === 0" style="text-align:center;color:#aaa;padding:20px;">暂无安装进度数据</div>
|
<div v-if="progress.length === 0" style="text-align:center;color:#aaa;padding:20px;">暂无安装进度数据</div>
|
||||||
<div v-for="(p,i) in progress" :key="i" style="margin-bottom:8px;">
|
<div v-for="(p,i) in progress" :key="i" style="margin-bottom:8px;">
|
||||||
<div style="display:flex;justify-content:space-between;font-size:11px;margin-bottom:3px;">
|
<div style="display:flex;justify-content:space-between;font-size:11px;margin-bottom:3px;">
|
||||||
<span style="font-weight:600;">
|
<span style="font-weight:600;">
|
||||||
{{ p.itemName }}
|
{{ p.itemName }}
|
||||||
<el-tag v-if="isOverdue(p)" size="mini" type="danger" style="margin-left:4px;">逾期</el-tag>
|
<el-tag v-if="isOverdue(p)" size="mini" type="danger" style="margin-left:4px;"><i class="el-icon-warning-outline" style="margin-right:2px;"></i>逾期</el-tag>
|
||||||
</span>
|
</span>
|
||||||
<span style="color:#6c757d;">{{ p.planStart||'?' }}~{{ p.planEnd||'?' }} · {{ statusLabel(p) }} · {{ barPercent(p) }}%</span>
|
<span style="color:#6c757d;">{{ p.planStart||'?' }}~{{ p.planEnd||'?' }} · {{ statusLabel(p) }} · {{ barPercent(p) }}%</span>
|
||||||
</div>
|
</div>
|
||||||
@@ -29,14 +29,14 @@
|
|||||||
实际: {{ p.actualStart||'-' }}~{{ p.actualEnd||'-' }}
|
实际: {{ p.actualStart||'-' }}~{{ p.actualEnd||'-' }}
|
||||||
</div>
|
</div>
|
||||||
<div v-if="isOverdue(p) && p.delayReason" style="font-size:10px;color:#e74c3c;margin-top:1px;">
|
<div v-if="isOverdue(p) && p.delayReason" style="font-size:10px;color:#e74c3c;margin-top:1px;">
|
||||||
⚠️ 延误原因:{{ p.delayReason }}
|
<i class="el-icon-warning-outline" style="margin-right:2px;"></i>延误原因:{{ p.delayReason }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<el-divider></el-divider>
|
<el-divider></el-divider>
|
||||||
|
|
||||||
<!-- Detail table -->
|
<!-- Detail table -->
|
||||||
<div style="font-weight:600;font-size:13px;margin-bottom:8px;">📋 安装进度明细</div>
|
<div style="font-weight:600;font-size:13px;margin-bottom:8px;"><i class="el-icon-tickets" style="margin-right:4px;"></i>安装进度明细</div>
|
||||||
<el-table :data="progress" v-loading="loading" stripe border size="small" style="width:100%;">
|
<el-table :data="progress" v-loading="loading" stripe border size="small" style="width:100%;">
|
||||||
<el-table-column type="index" label="#" width="40" />
|
<el-table-column type="index" label="#" width="40" />
|
||||||
<el-table-column prop="itemName" label="安装项目" min-width="130" show-overflow-tooltip />
|
<el-table-column prop="itemName" label="安装项目" min-width="130" show-overflow-tooltip />
|
||||||
@@ -62,10 +62,10 @@
|
|||||||
<span v-else style="color:#bbb;">0</span>
|
<span v-else style="color:#bbb;">0</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="🎬视频" width="55" align="center">
|
<el-table-column label="视频" width="55" align="center">
|
||||||
<template slot-scope="s">
|
<template slot-scope="s">
|
||||||
<el-tag v-if="s.row.videos" size="mini" type="primary">🎬 {{ (s.row.videos||'').split(';').filter(Boolean).length }}</el-tag>
|
<el-tag v-if="s.row.videos" size="mini" type="primary"><i class="el-icon-video-camera" style="margin-right:2px;"></i> {{ (s.row.videos||'').split(';').filter(Boolean).length }}</el-tag>
|
||||||
<span v-else style="color:#bbb;">🎬 0</span>
|
<span v-else style="color:#bbb;"><i class="el-icon-video-camera"></i> 0</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" width="80" fixed="right">
|
<el-table-column label="操作" width="80" fixed="right">
|
||||||
@@ -114,7 +114,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group"><label>🎬 视频(文件名,;分隔)</label><el-input v-model="form.videos" /></div>
|
<div class="form-group"><label><i class="el-icon-video-camera" style="margin-right:2px;"></i>视频(文件名,;分隔)</label><el-input v-model="form.videos" /></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group"><label>备注</label><el-input v-model="form.remark" /></div>
|
<div class="form-group"><label>备注</label><el-input v-model="form.remark" /></div>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<div v-if="tools.length === 0" style="text-align:center;color:#aaa;padding:40px;">暂无工具数据</div>
|
<div v-if="tools.length === 0" style="text-align:center;color:#aaa;padding:40px;">暂无工具数据</div>
|
||||||
<div v-for="(grp, cat) in grouped" :key="cat" class="cat-section">
|
<div v-for="(grp, cat) in grouped" :key="cat" class="cat-section">
|
||||||
<div class="cat-header">
|
<div class="cat-header">
|
||||||
<span>{{ catIcon(cat) }} {{ cat }}</span>
|
<span><i :class="catIcon(cat)" style="margin-right:4px;"></i>{{ cat }}</span>
|
||||||
<span class="cat-count">{{ grp.length }}项 · ¥{{ groupTotal(grp).toLocaleString() }}</span>
|
<span class="cat-count">{{ grp.length }}项 · ¥{{ groupTotal(grp).toLocaleString() }}</span>
|
||||||
</div>
|
</div>
|
||||||
<el-table :data="grp" stripe border size="small" style="width:100%;">
|
<el-table :data="grp" stripe border size="small" style="width:100%;">
|
||||||
@@ -113,7 +113,7 @@ export default {
|
|||||||
arrivedCount() { return this.tools.filter(t => t.status==='已到位').length }
|
arrivedCount() { return this.tools.filter(t => t.status==='已到位').length }
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
catIcon(cat) { return { '起重吊装':'🏗️','测量仪器':'📐','机械安装':'🔩','液压专用':'💧','电气安装':'⚡' }[cat]||'📌' },
|
catIcon(cat) { return { '起重吊装':'el-icon-ship','测量仪器':'el-icon-rank','机械安装':'el-icon-setting','液压专用':'el-icon-water-cup','电气安装':'el-icon-s-platform' }[cat]||'el-icon-collection' },
|
||||||
groupTotal(arr) { return arr.reduce((s,t) => s+(parseFloat(t.totalPrice)||0), 0) },
|
groupTotal(arr) { return arr.reduce((s,t) => s+(parseFloat(t.totalPrice)||0), 0) },
|
||||||
cleanForm() { return { name:'', nameEn:'', spec:'', qty:'', unit:'台', unitPrice:'', totalPrice:'', priority:'', arrivalDate:'', purpose:'', responsible:'', status:'待确认', category:'起重吊装', remark:'' } },
|
cleanForm() { return { name:'', nameEn:'', spec:'', qty:'', unit:'台', unitPrice:'', totalPrice:'', priority:'', arrivalDate:'', purpose:'', responsible:'', status:'待确认', category:'起重吊装', remark:'' } },
|
||||||
loadData() {
|
loadData() {
|
||||||
|
|||||||
Reference in New Issue
Block a user