功能修改
This commit is contained in:
parent
453efb910d
commit
f4930c5e31
|
|
@ -45,17 +45,18 @@
|
|||
<el-table-column label="联系人" align="center" width="170" prop="linkMan" show-overflow-tooltip />
|
||||
<el-table-column label="联系电话" align="center" width="170" prop="phone" show-overflow-tooltip />
|
||||
<el-table-column label="日期" align="center" width="170" prop="reserveDate" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
label="排号"
|
||||
align="center"
|
||||
width="120"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<!-- 使用作用域插槽获取行数据 -->
|
||||
<template #default="scope">
|
||||
{{ scope.row.timeType }}-{{ scope.row.sort }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="排号" align="center" width="120" prop="sort" show-overflow-tooltip />
|
||||
<!-- <el-table-column-->
|
||||
<!-- label="排号"-->
|
||||
<!-- align="center"-->
|
||||
<!-- width="120"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- >-->
|
||||
<!-- <!– 使用作用域插槽获取行数据 –>-->
|
||||
<!-- <template #default="scope">-->
|
||||
<!-- {{ scope.row.timeType }}-{{ scope.row.sort }}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column label="操作" align="center" width="170">
|
||||
<template slot-scope="{ row }">
|
||||
<el-button size="mini" v-if="row.sort===null" type="success" @click="handleView(row)">排号</el-button>
|
||||
|
|
@ -77,21 +78,21 @@
|
|||
<el-dialog title="审核排号" :visible.sync="viewDialogVisible" width="500px" append-to-body>
|
||||
<el-form :model="viewForm" label-width="60px" class="view-dialog-form">
|
||||
<el-form-item label="排号:">
|
||||
<span
|
||||
style="display: inline-block;
|
||||
margin-right: 5px;
|
||||
color: #666;
|
||||
vertical-align: middle;
|
||||
font-size: 16px;
|
||||
font-weight: bold;"
|
||||
>
|
||||
{{ timeType }}-
|
||||
</span>
|
||||
<!-- <span-->
|
||||
<!-- style="display: inline-block;-->
|
||||
<!-- margin-right: 5px;-->
|
||||
<!-- color: #666;-->
|
||||
<!-- vertical-align: middle;-->
|
||||
<!-- font-size: 16px;-->
|
||||
<!-- font-weight: bold;"-->
|
||||
<!-- >-->
|
||||
<!-- {{ timeType }}- -->
|
||||
<!--</span>-->
|
||||
<el-input
|
||||
style="display: inline-block; width: auto; vertical-align: middle;"
|
||||
v-model.number="viewForm.sort"
|
||||
v-model="viewForm.sort"
|
||||
@input="handleSortInput"
|
||||
placeholder="请输入数字"
|
||||
placeholder="请输入排号"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
|
@ -131,7 +132,7 @@
|
|||
<table class="ticket-table" style="margin: 0 auto;">
|
||||
<tr>
|
||||
<td width="100" style="text-align: center;">号类</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ currentTicketData.timeType }}-{{ currentTicketData.sort }}</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ currentTicketData.sort }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">工程名称</td>
|
||||
|
|
@ -155,7 +156,9 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">签字</td>
|
||||
<td style="height: 50px; text-align: center;"></td>
|
||||
<td style="height: 50px; text-align: center;">
|
||||
<img :src="currentTicketData.signUrl" style="width: 100px;height: 100px;transform: rotate(-90deg);max-width: 100%;" alt="">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
|
@ -188,7 +191,7 @@
|
|||
<table class="loading-ticket-table" style="margin: 0 auto;">
|
||||
<tr>
|
||||
<td width="100" style="text-align: center;">号类</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ loadingTicketData.timeType }}-{{ loadingTicketData.sort }}</td>
|
||||
<td style="font-weight: bold; font-size: 25px; text-align: center;">{{ loadingTicketData.sort }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">工程名称</td>
|
||||
|
|
@ -212,7 +215,9 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center;">签字</td>
|
||||
<td style="height: 50px; text-align: center;"></td>
|
||||
<td style="height: 50px; text-align: center;">
|
||||
<img :src="loadingTicketData.signUrl" style="width: 100px;height: 100px;transform: rotate(-90deg);max-width: 100%;" alt="">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
|
@ -315,7 +320,8 @@ export default {
|
|||
linkMan: '',
|
||||
phone: '',
|
||||
reserveDate: '',
|
||||
sort:''
|
||||
sort:'',
|
||||
signUrl:''
|
||||
},
|
||||
loadingDialogVisible: false,
|
||||
loadingTicketData: {
|
||||
|
|
@ -326,7 +332,8 @@ export default {
|
|||
linkMan: '',
|
||||
phone: '',
|
||||
reserveDate: '',
|
||||
sort:''
|
||||
sort:'',
|
||||
signUrl:''
|
||||
},
|
||||
timeType:'',
|
||||
sort:''
|
||||
|
|
@ -348,7 +355,7 @@ export default {
|
|||
methods: {
|
||||
// 限制输入框只能输入数字
|
||||
handleSortInput(value) {
|
||||
this.viewForm.sort = value.replace(/[^0-9]/g, '');
|
||||
// this.viewForm.sort = value.replace(/[^0-9]/g, '');
|
||||
},
|
||||
// 是否可用勾选框
|
||||
selectable(row) {
|
||||
|
|
@ -414,14 +421,14 @@ export default {
|
|||
this.viewForm.sort = row.sort // 可选:将原排号显示在输入框中
|
||||
this.viewForm.id = row.id // 保存当前行的 id
|
||||
|
||||
const params = {
|
||||
type:''
|
||||
}
|
||||
getSort(params).then(response => {
|
||||
console.log(response.data)
|
||||
this.timeType=response.data.timeType,
|
||||
this.viewForm.sort=response.data.sort
|
||||
})
|
||||
// const params = {
|
||||
// type:''
|
||||
// }
|
||||
// getSort(params).then(response => {
|
||||
// console.log(response.data)
|
||||
// this.timeType=response.data.timeType,
|
||||
// this.viewForm.sort=response.data.sort
|
||||
// })
|
||||
|
||||
|
||||
},
|
||||
|
|
@ -449,7 +456,8 @@ export default {
|
|||
carCode: row.carCode,
|
||||
linkMan: row.linkMan,
|
||||
phone: row.phone,
|
||||
reserveDate: row.reserveDate
|
||||
reserveDate: row.reserveDate,
|
||||
signUrl: row.signUrl,
|
||||
};
|
||||
this.currentPreviewImage = null; // 确保不使用图片预览
|
||||
this.previewDialogVisible = true;
|
||||
|
|
@ -500,7 +508,8 @@ export default {
|
|||
carCode: row.carCode,
|
||||
linkMan: row.linkMan,
|
||||
phone: row.phone,
|
||||
reserveDate: row.reserveDate
|
||||
reserveDate: row.reserveDate,
|
||||
signUrl: row.signUrl,
|
||||
};
|
||||
this.currentPreviewImage = null; // 确保不使用图片预览
|
||||
this.loadingDialogVisible = true;
|
||||
|
|
|
|||
|
|
@ -96,17 +96,60 @@
|
|||
|
||||
<el-dialog :title="dialogTitle" :visible.sync="authDialogVisible" width="60%" append-to-body>
|
||||
<el-form :model="authForm" ref="authFormRef" label-width="110px" class="auth-dialog-form" :rules="authFormRules">
|
||||
<el-form-item label="选择班组:" prop="teamId">
|
||||
<el-select
|
||||
v-model="authForm.teamId"
|
||||
placeholder="请选择班组"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 40%"
|
||||
:disabled="isEditMode"
|
||||
<el-form-item label="选择单位:" prop="teamId">
|
||||
<el-popover
|
||||
placement="bottom-start"
|
||||
width="400"
|
||||
trigger="click"
|
||||
v-model="teamSelectVisible"
|
||||
>
|
||||
<el-option v-for="team in teamList" :key="team.id" :label="team.name" :value="team.id"></el-option>
|
||||
</el-select>
|
||||
<div class="tree-container">
|
||||
<el-input
|
||||
v-model="treeFilterText"
|
||||
placeholder="搜索单位"
|
||||
size="small"
|
||||
clearable
|
||||
style="margin-bottom: 10px"
|
||||
/>
|
||||
<el-tree
|
||||
:data="teamTreeData"
|
||||
:props="treeProps"
|
||||
node-key="id"
|
||||
:highlight-current="true"
|
||||
:expand-on-click-node="false"
|
||||
:filter-node-method="filterTeamNode"
|
||||
:default-expand-all="false"
|
||||
:show-checkbox="false"
|
||||
ref="teamTree"
|
||||
@node-click="handleTeamNodeClick"
|
||||
class="team-tree"
|
||||
>
|
||||
<span class="custom-tree-node" slot-scope="{ node, data }">
|
||||
<span
|
||||
:class="{
|
||||
'selectable-node': isSelectableNode(data),
|
||||
'disabled-node': !isSelectableNode(data)
|
||||
}"
|
||||
>
|
||||
{{ data.name }}
|
||||
<!-- <span v-if="data.level" class="node-level">({{ getLevelText(data.level) }})</span>-->
|
||||
</span>
|
||||
</span>
|
||||
</el-tree>
|
||||
</div>
|
||||
<el-input
|
||||
slot="reference"
|
||||
v-model="authForm.teamName"
|
||||
placeholder="请选择单位"
|
||||
readonly
|
||||
clearable
|
||||
style="width: 50%"
|
||||
:disabled="isEditMode"
|
||||
@clear="handleTeamClear"
|
||||
>
|
||||
<i slot="suffix" class="el-input__icon el-icon-arrow-down"></i>
|
||||
</el-input>
|
||||
</el-popover>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="授权委托书:" prop="authorizationFile" required>
|
||||
|
|
@ -468,6 +511,14 @@ export default {
|
|||
detailsList: [],
|
||||
userName: '',
|
||||
createTime: ''
|
||||
},
|
||||
// 新增数据属性
|
||||
teamSelectVisible: false,
|
||||
teamTreeData: [],
|
||||
treeFilterText: '', // 树形搜索文本
|
||||
treeProps: {
|
||||
label: 'name',
|
||||
children: 'children'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -482,9 +533,71 @@ export default {
|
|||
this.resetUploadState()
|
||||
this.$refs.authFormRef.resetFields() // 重置表单
|
||||
}
|
||||
},
|
||||
// 监听搜索文本变化
|
||||
treeFilterText(val) {
|
||||
this.$refs.teamTree.filter(val)
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 判断节点是否可选择(只有第三级或没有层级的数据可选择)
|
||||
isSelectableNode(node) {
|
||||
// 第三级数据:level为"3"
|
||||
// 没有层级的数据:没有parentId或parentId为null
|
||||
return node.level === '3' || (!node.parentId || node.parentId === null)
|
||||
},
|
||||
|
||||
// 获取层级文本
|
||||
getLevelText(level) {
|
||||
const levelMap = {
|
||||
'1': '一级',
|
||||
'2': '二级',
|
||||
'3': '三级'
|
||||
}
|
||||
return levelMap[level] || ''
|
||||
},
|
||||
|
||||
// 处理节点点击
|
||||
handleTeamNodeClick(node) {
|
||||
// 只有可选择的节点才能被选中
|
||||
if (!this.isSelectableNode(node)) {
|
||||
// this.$message.warning('只能选择具体的班组(第三级)或独立班组')
|
||||
return
|
||||
}
|
||||
|
||||
this.authForm.teamId = node.id
|
||||
this.authForm.teamName = node.name
|
||||
this.teamSelectVisible = false
|
||||
|
||||
// 清除表单验证错误
|
||||
this.$refs.authFormRef.clearValidate(['teamId'])
|
||||
},
|
||||
|
||||
// 清除选择
|
||||
handleTeamClear() {
|
||||
this.authForm.teamId = ''
|
||||
this.authForm.teamName = ''
|
||||
},
|
||||
|
||||
// 过滤节点方法
|
||||
filterTeamNode(value, data) {
|
||||
if (!value) return true
|
||||
return data.name.toLowerCase().indexOf(value.toLowerCase()) !== -1
|
||||
},
|
||||
|
||||
// 处理树形数据(适配已经是树形结构的数据)
|
||||
processTreeData(data) {
|
||||
if (!Array.isArray(data)) return []
|
||||
|
||||
return data.map(item => {
|
||||
const processedItem = {
|
||||
...item,
|
||||
// 确保children存在
|
||||
children: item.children ? this.processTreeData(item.children) : []
|
||||
}
|
||||
return processedItem
|
||||
})
|
||||
},
|
||||
// 是否可用勾选框
|
||||
selectable(row) {
|
||||
return row.authId === null
|
||||
|
|
@ -705,12 +818,13 @@ export default {
|
|||
},
|
||||
// 获取班组列表
|
||||
getTeamList() {
|
||||
// 这里替换为实际的API调用
|
||||
const params = {
|
||||
externalId: null
|
||||
}
|
||||
getTeamList(params).then(response => {
|
||||
this.teamList = response.data
|
||||
// 处理树形数据
|
||||
this.teamTreeData = this.processTreeData(response.data)
|
||||
})
|
||||
},
|
||||
// 重置上传状态
|
||||
|
|
@ -1056,6 +1170,62 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
/* 树形容器样式 */
|
||||
.tree-container {
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
/* 自定义树节点样式 */
|
||||
.custom-tree-node {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 14px;
|
||||
padding-right: 8px;
|
||||
}
|
||||
|
||||
/* 可选择节点样式 */
|
||||
.selectable-node {
|
||||
color: #333;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
color: #409eff;
|
||||
}
|
||||
}
|
||||
|
||||
/* 不可选择节点样式 */
|
||||
.disabled-node {
|
||||
//color: #c0c4cc;
|
||||
cursor: not-allowed;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* 层级标识样式 */
|
||||
.node-level {
|
||||
font-size: 12px;
|
||||
//color: #909399;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
/* 树形组件样式调整 */
|
||||
.team-tree {
|
||||
.el-tree-node__content {
|
||||
height: 32px;
|
||||
|
||||
&:hover {
|
||||
background-color: #f5f7fa;
|
||||
}
|
||||
}
|
||||
|
||||
.el-tree-node.is-current > .el-tree-node__content {
|
||||
background-color: #e6f7ff;
|
||||
color: #409eff;
|
||||
}
|
||||
}
|
||||
/* 批量授权标签容器 */
|
||||
.selected-items-container {
|
||||
max-height: 150px;
|
||||
|
|
|
|||
Loading…
Reference in New Issue