|
@@ -30,25 +30,25 @@
|
|
|
</el-tabs>
|
|
</el-tabs>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="2">
|
|
<el-col :span="2">
|
|
|
- <Icon icon="ep:search" :size="20" @click="show=false"/>
|
|
|
|
|
|
|
+ <Icon icon="ep:search" :size="20" @click="show = false" />
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
</div>
|
|
</div>
|
|
|
<el-form v-else :inline="true" :model="queryParams" ref="queryFormRef" class="searchContent">
|
|
<el-form v-else :inline="true" :model="queryParams" ref="queryFormRef" class="searchContent">
|
|
|
<el-row>
|
|
<el-row>
|
|
|
<el-col :span="20">
|
|
<el-col :span="20">
|
|
|
- <el-input placeholder="请输入审批内容" v-model="queryParams.templateContent" @change="handleQuery"/>
|
|
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ placeholder="请输入审批内容"
|
|
|
|
|
+ v-model="queryParams.templateContent"
|
|
|
|
|
+ @change="handleQuery"
|
|
|
|
|
+ />
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="4">
|
|
<el-col :span="4">
|
|
|
- <el-button class="mt2" @click="show=true" link type="primary">取消</el-button>
|
|
|
|
|
|
|
+ <el-button class="mt2" @click="show = true" link type="primary">取消</el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
- <div
|
|
|
|
|
- v-if="selectableTaskIds.length"
|
|
|
|
|
- class="batch-select-bar"
|
|
|
|
|
- @click.stop
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ <div v-if="selectableTaskIds.length" class="batch-select-bar" @click.stop>
|
|
|
<el-checkbox
|
|
<el-checkbox
|
|
|
:model-value="isAllSelectableSelected"
|
|
:model-value="isAllSelectableSelected"
|
|
|
:indeterminate="isPartialSelectableSelected"
|
|
:indeterminate="isPartialSelectableSelected"
|
|
@@ -57,31 +57,61 @@
|
|
|
全选当前列表({{ selectedSelectableCount }}/{{ selectableTaskIds.length }})
|
|
全选当前列表({{ selectedSelectableCount }}/{{ selectableTaskIds.length }})
|
|
|
</el-checkbox>
|
|
</el-checkbox>
|
|
|
</div>
|
|
</div>
|
|
|
- <div v-infinite-scroll="load" class="infinite-list scrollLeft" v-loading="loading" v-if="list.length">
|
|
|
|
|
|
|
+ <div
|
|
|
|
|
+ v-infinite-scroll="load"
|
|
|
|
|
+ style="overflow: auto; height: 70vh; padding: 1vh 0; margin: 0; list-style: none"
|
|
|
|
|
+ v-loading="loading"
|
|
|
|
|
+ v-show="list.length"
|
|
|
|
|
+ >
|
|
|
<el-checkbox-group v-model="processInstanceIds">
|
|
<el-checkbox-group v-model="processInstanceIds">
|
|
|
- <el-card shadow="never" v-for="(item, index) in list" :key="index" :class="['card-item', {'selected': currItem.processInstanceId == item.processInstanceId}]" @click="handleClickCard(item)">
|
|
|
|
|
- <el-badge v-show="item.readStatus == 0 && currItem.processInstanceId != item.processInstanceId" is-dot class="badge" />
|
|
|
|
|
|
|
+ <el-card
|
|
|
|
|
+ shadow="never"
|
|
|
|
|
+ v-for="(item, index) in list"
|
|
|
|
|
+ :key="index"
|
|
|
|
|
+ :class="[
|
|
|
|
|
+ 'card-item',
|
|
|
|
|
+ { selected: currItem.processInstanceId == item.processInstanceId }
|
|
|
|
|
+ ]"
|
|
|
|
|
+ @click="handleClickCard(item)"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-badge
|
|
|
|
|
+ v-show="item.readStatus == 0 && currItem.processInstanceId != item.processInstanceId"
|
|
|
|
|
+ is-dot
|
|
|
|
|
+ class="badge"
|
|
|
|
|
+ />
|
|
|
<div class="title mb5 mt2">
|
|
<div class="title mb5 mt2">
|
|
|
<span class="lh16 mr-1">{{ item.templateContent }}</span>
|
|
<span class="lh16 mr-1">{{ item.templateContent }}</span>
|
|
|
- <dict-tag :type="DICT_TYPE.BPM_TASK_STATUS" :value="item.status"/>
|
|
|
|
|
|
|
+ <dict-tag :type="DICT_TYPE.BPM_TASK_STATUS" :value="item.status" />
|
|
|
<span class="ml2">
|
|
<span class="ml2">
|
|
|
- <el-checkbox :value="item.id" v-if="item.status == 1"/>
|
|
|
|
|
|
|
+ <el-checkbox :value="item.id" v-if="item.status == 1" />
|
|
|
</span>
|
|
</span>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="mb4 c6 lh14">申请类型:<span class="c3">{{ item.applicationType }}</span></div>
|
|
|
|
|
- <div class="mb4 c6 lh14">申请编号:<span class="c3">{{ item.processInstanceId }}</span></div>
|
|
|
|
|
- <div class="mb2 c6 lh14">所属组织:<span class="c3">{{ item.tenantName }}</span></div>
|
|
|
|
|
- </el-card>
|
|
|
|
|
|
|
+ <div class="mb4 c6 lh14"
|
|
|
|
|
+ >申请类型:<span class="c3">{{ item.applicationType }}</span></div
|
|
|
|
|
+ >
|
|
|
|
|
+ <div class="mb4 c6 lh14"
|
|
|
|
|
+ >申请编号:<span class="c3">{{ item.processInstanceId }}</span></div
|
|
|
|
|
+ >
|
|
|
|
|
+ <div class="mb2 c6 lh14"
|
|
|
|
|
+ >所属组织:<span class="c3">{{ item.tenantName }}</span></div
|
|
|
|
|
+ >
|
|
|
|
|
+ </el-card>
|
|
|
</el-checkbox-group>
|
|
</el-checkbox-group>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="no-content" v-else>
|
|
|
|
|
|
|
+ <div class="no-content" v-show="list.length <= 0">
|
|
|
<span>暂无数据</span>
|
|
<span>暂无数据</span>
|
|
|
</div>
|
|
</div>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
<el-col :span="18" :xs="24">
|
|
<el-col :span="18" :xs="24">
|
|
|
<el-button @click="handlePass" type="primary" :loading="batchLoading">批量通过</el-button>
|
|
<el-button @click="handlePass" type="primary" :loading="batchLoading">批量通过</el-button>
|
|
|
<div class="content">
|
|
<div class="content">
|
|
|
- <ProcessDetail v-if="obj.processInstanceId" :id="obj.processInstanceId" :taskName="obj.templateContent" ref="processDetailRef" @success="getList(false, true)"/>
|
|
|
|
|
|
|
+ <ProcessDetail
|
|
|
|
|
+ v-if="obj.processInstanceId"
|
|
|
|
|
+ :id="obj.processInstanceId"
|
|
|
|
|
+ :taskName="obj.templateContent"
|
|
|
|
|
+ ref="processDetailRef"
|
|
|
|
|
+ @success="getList(false, true)"
|
|
|
|
|
+ />
|
|
|
<div v-else class="tc">
|
|
<div v-else class="tc">
|
|
|
<div></div>
|
|
<div></div>
|
|
|
</div>
|
|
</div>
|
|
@@ -129,17 +159,18 @@ const handleClick = (tab) => {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const currItem: any = ref({})
|
|
const currItem: any = ref({})
|
|
|
-const getList = async (flag: boolean = false, refresh=false) => { // flag 存在数据, refresh 是否重载页面数据
|
|
|
|
|
|
|
+const getList = async (flag: boolean = false, refresh = false) => {
|
|
|
|
|
+ // flag 存在数据, refresh 是否重载页面数据
|
|
|
try {
|
|
try {
|
|
|
loading.value = true
|
|
loading.value = true
|
|
|
const res = await ProcessInstanceApi.getMyPage(queryParams)
|
|
const res = await ProcessInstanceApi.getMyPage(queryParams)
|
|
|
- if(refresh){
|
|
|
|
|
|
|
+ if (refresh) {
|
|
|
list.value = res.list
|
|
list.value = res.list
|
|
|
- }else{
|
|
|
|
|
|
|
+ } else {
|
|
|
list.value = list.value.concat(res.list)
|
|
list.value = list.value.concat(res.list)
|
|
|
}
|
|
}
|
|
|
total.value = res.total
|
|
total.value = res.total
|
|
|
- if(flag && res.list[0]){
|
|
|
|
|
|
|
+ if (flag && res.list[0]) {
|
|
|
handleClickCard(res.list[0])
|
|
handleClickCard(res.list[0])
|
|
|
currItem.value = res.list[0]
|
|
currItem.value = res.list[0]
|
|
|
}
|
|
}
|
|
@@ -149,7 +180,8 @@ const getList = async (flag: boolean = false, refresh=false) => { // flag 存在
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const load = () => {
|
|
const load = () => {
|
|
|
- if(queryParams.pageNo * queryParams.pageSize < total.value){
|
|
|
|
|
|
|
+ console.log('加载。。。')
|
|
|
|
|
+ if (queryParams.pageNo * queryParams.pageSize < total.value) {
|
|
|
queryParams.pageNo += 1
|
|
queryParams.pageNo += 1
|
|
|
getList()
|
|
getList()
|
|
|
}
|
|
}
|
|
@@ -181,13 +213,13 @@ const getCount = async () => {
|
|
|
|
|
|
|
|
// 标记已读
|
|
// 标记已读
|
|
|
const updateRead = async (item) => {
|
|
const updateRead = async (item) => {
|
|
|
- if((queryParams.queryType != '3' && queryParams.queryType != '1') && item.messageId){
|
|
|
|
|
- await ProcessInstanceApi.updateReadById(item.messageId)
|
|
|
|
|
- item.readStatus = 1
|
|
|
|
|
- }else if(item.processInstanceId){
|
|
|
|
|
- await ProcessInstanceApi.updateMyCreateReadById(item.processInstanceId)
|
|
|
|
|
- item.readStatus = 1
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (queryParams.queryType != '3' && queryParams.queryType != '1' && item.messageId) {
|
|
|
|
|
+ await ProcessInstanceApi.updateReadById(item.messageId)
|
|
|
|
|
+ item.readStatus = 1
|
|
|
|
|
+ } else if (item.processInstanceId) {
|
|
|
|
|
+ await ProcessInstanceApi.updateMyCreateReadById(item.processInstanceId)
|
|
|
|
|
+ item.readStatus = 1
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const processDetailRef = ref()
|
|
const processDetailRef = ref()
|
|
@@ -197,8 +229,8 @@ const selectableTaskIds = computed(() =>
|
|
|
list.value.filter((item) => item.status == 1).map((item) => item.id)
|
|
list.value.filter((item) => item.status == 1).map((item) => item.id)
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
-const selectedSelectableCount = computed(() =>
|
|
|
|
|
- selectableTaskIds.value.filter((id) => processInstanceIds.value.includes(id)).length
|
|
|
|
|
|
|
+const selectedSelectableCount = computed(
|
|
|
|
|
+ () => selectableTaskIds.value.filter((id) => processInstanceIds.value.includes(id)).length
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
const isAllSelectableSelected = computed(
|
|
const isAllSelectableSelected = computed(
|
|
@@ -215,7 +247,9 @@ const isPartialSelectableSelected = computed(
|
|
|
|
|
|
|
|
const onSelectAllChange = (checked: boolean) => {
|
|
const onSelectAllChange = (checked: boolean) => {
|
|
|
if (checked) {
|
|
if (checked) {
|
|
|
- processInstanceIds.value = [...new Set([...processInstanceIds.value, ...selectableTaskIds.value])]
|
|
|
|
|
|
|
+ processInstanceIds.value = [
|
|
|
|
|
+ ...new Set([...processInstanceIds.value, ...selectableTaskIds.value])
|
|
|
|
|
+ ]
|
|
|
} else {
|
|
} else {
|
|
|
const drop = new Set(selectableTaskIds.value)
|
|
const drop = new Set(selectableTaskIds.value)
|
|
|
processInstanceIds.value = processInstanceIds.value.filter((id) => !drop.has(id))
|
|
processInstanceIds.value = processInstanceIds.value.filter((id) => !drop.has(id))
|
|
@@ -225,40 +259,46 @@ const onSelectAllChange = (checked: boolean) => {
|
|
|
// 批量通过
|
|
// 批量通过
|
|
|
const handlePass = () => {
|
|
const handlePass = () => {
|
|
|
batchLoading.value = true
|
|
batchLoading.value = true
|
|
|
- let queue = processInstanceIds.value.map(item => {
|
|
|
|
|
|
|
+ let queue = processInstanceIds.value.map((item) => {
|
|
|
return new Promise((resolve, reject) => {
|
|
return new Promise((resolve, reject) => {
|
|
|
- axios.put({url: base_url + `/bpm/task/approve`, data: {
|
|
|
|
|
- id: item,
|
|
|
|
|
- reason: '批量通过',
|
|
|
|
|
- variables: {} // 审批通过, 把修改的字段值赋于流程实例变量
|
|
|
|
|
- }}).then((res) => {
|
|
|
|
|
- console.log(`获取的code为: ${res}`);
|
|
|
|
|
- resolve(res)
|
|
|
|
|
- }).catch((err) => {
|
|
|
|
|
- reject(err)
|
|
|
|
|
- batchLoading.value = true
|
|
|
|
|
|
|
+ axios
|
|
|
|
|
+ .put({
|
|
|
|
|
+ url: base_url + `/bpm/task/approve`,
|
|
|
|
|
+ data: {
|
|
|
|
|
+ id: item,
|
|
|
|
|
+ reason: '批量通过',
|
|
|
|
|
+ variables: {} // 审批通过, 把修改的字段值赋于流程实例变量
|
|
|
|
|
+ }
|
|
|
|
|
+ })
|
|
|
|
|
+ .then((res) => {
|
|
|
|
|
+ console.log(`获取的code为: ${res}`)
|
|
|
|
|
+ resolve(res)
|
|
|
|
|
+ })
|
|
|
|
|
+ .catch((err) => {
|
|
|
|
|
+ reject(err)
|
|
|
|
|
+ batchLoading.value = true
|
|
|
})
|
|
})
|
|
|
})
|
|
})
|
|
|
})
|
|
})
|
|
|
- Promise.all(queue).then(async result => {
|
|
|
|
|
|
|
+ Promise.all(queue).then(async (result) => {
|
|
|
batchLoading.value = false
|
|
batchLoading.value = false
|
|
|
// 判断所有值为0的时候审批成功
|
|
// 判断所有值为0的时候审批成功
|
|
|
- const allApproved = result.every(item => item === true);
|
|
|
|
|
- if (allApproved) {
|
|
|
|
|
- ElMessage.success('所有审批通过成功')
|
|
|
|
|
- // 这里可以执行审批成功后的逻辑
|
|
|
|
|
- } else {
|
|
|
|
|
- console.log("存在未通过的审批!");
|
|
|
|
|
- // 这里可以执行审批失败后的逻辑
|
|
|
|
|
- ElMessage.error('审批不成功')
|
|
|
|
|
- }
|
|
|
|
|
- // 清空值
|
|
|
|
|
- processInstanceIds.value = []
|
|
|
|
|
|
|
+ const allApproved = result.every((item) => item === true)
|
|
|
|
|
+ if (allApproved) {
|
|
|
|
|
+ ElMessage.success('所有审批通过成功')
|
|
|
|
|
+ // 这里可以执行审批成功后的逻辑
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.log('存在未通过的审批!')
|
|
|
|
|
+ // 这里可以执行审批失败后的逻辑
|
|
|
|
|
+ ElMessage.error('审批不成功')
|
|
|
|
|
+ }
|
|
|
|
|
+ // 清空值
|
|
|
|
|
+ processInstanceIds.value = []
|
|
|
|
|
|
|
|
- await getList(false, true)
|
|
|
|
|
- // 找到对应的id
|
|
|
|
|
- processDetailRef.value.refresh()
|
|
|
|
|
- getCount()
|
|
|
|
|
|
|
+ await getList(false, true)
|
|
|
|
|
+ // 找到对应的id
|
|
|
|
|
+ processDetailRef.value.refresh()
|
|
|
|
|
+ getCount()
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -275,39 +315,39 @@ watch(
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
onMounted(async () => {
|
|
onMounted(async () => {
|
|
|
- getCount()
|
|
|
|
|
|
|
+ await getCount()
|
|
|
await getList(true)
|
|
await getList(true)
|
|
|
-})
|
|
|
|
|
|
|
|
|
|
|
|
+})
|
|
|
</script>
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
-.process-list{
|
|
|
|
|
|
|
+.process-list {
|
|
|
font-size: 16px;
|
|
font-size: 16px;
|
|
|
- .title{
|
|
|
|
|
|
|
+ .title {
|
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .card-item{
|
|
|
|
|
|
|
+ .card-item {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
margin-bottom: 5px;
|
|
margin-bottom: 5px;
|
|
|
border-radius: 8px;
|
|
border-radius: 8px;
|
|
|
border: 2px solid #e5e5e5;
|
|
border: 2px solid #e5e5e5;
|
|
|
- &:hover{
|
|
|
|
|
|
|
+ &:hover {
|
|
|
background-color: #f3f4f6;
|
|
background-color: #f3f4f6;
|
|
|
}
|
|
}
|
|
|
- &.selected{
|
|
|
|
|
|
|
+ &.selected {
|
|
|
border: 2px solid var(--el-color-primary);
|
|
border: 2px solid var(--el-color-primary);
|
|
|
background-color: color-mix(in srgb, var(--el-color-primary) 10%, white);
|
|
background-color: color-mix(in srgb, var(--el-color-primary) 10%, white);
|
|
|
}
|
|
}
|
|
|
- .c6{
|
|
|
|
|
|
|
+ .c6 {
|
|
|
color: #666;
|
|
color: #666;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
}
|
|
}
|
|
|
- .c3{
|
|
|
|
|
|
|
+ .c3 {
|
|
|
color: #333;
|
|
color: #333;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
}
|
|
}
|
|
|
- .status-label{
|
|
|
|
|
|
|
+ .status-label {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
right: -15px;
|
|
right: -15px;
|
|
|
top: -6px;
|
|
top: -6px;
|
|
@@ -316,51 +356,51 @@ onMounted(async () => {
|
|
|
background: var(--el-color-primary);
|
|
background: var(--el-color-primary);
|
|
|
text-align: center;
|
|
text-align: center;
|
|
|
transform: rotate(45deg);
|
|
transform: rotate(45deg);
|
|
|
- .check{
|
|
|
|
|
|
|
+ .check {
|
|
|
color: #fff;
|
|
color: #fff;
|
|
|
font-size: 12px !important;
|
|
font-size: 12px !important;
|
|
|
margin-top: 11px;
|
|
margin-top: 11px;
|
|
|
transform: rotate(-45deg);
|
|
transform: rotate(-45deg);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- .badge{
|
|
|
|
|
|
|
+ .badge {
|
|
|
position: absolute;
|
|
position: absolute;
|
|
|
top: 10px;
|
|
top: 10px;
|
|
|
right: 10px;
|
|
right: 10px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- .content{
|
|
|
|
|
|
|
+ .content {
|
|
|
background-color: #fff;
|
|
background-color: #fff;
|
|
|
border-radius: 4px;
|
|
border-radius: 4px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
</style>
|
|
</style>
|
|
|
<style lang="scss">
|
|
<style lang="scss">
|
|
|
-.process-list{
|
|
|
|
|
|
|
+.process-list {
|
|
|
position: relative;
|
|
position: relative;
|
|
|
- .searchContent{
|
|
|
|
|
|
|
+ .searchContent {
|
|
|
padding: 10px;
|
|
padding: 10px;
|
|
|
border-radius: 4px;
|
|
border-radius: 4px;
|
|
|
background-color: #fff;
|
|
background-color: #fff;
|
|
|
}
|
|
}
|
|
|
- .header{
|
|
|
|
|
|
|
+ .header {
|
|
|
// display: flex;
|
|
// display: flex;
|
|
|
// align-items: flex-start;
|
|
// align-items: flex-start;
|
|
|
border-radius: 4px;
|
|
border-radius: 4px;
|
|
|
background-color: #fff;
|
|
background-color: #fff;
|
|
|
- .demo-tabs{
|
|
|
|
|
- .el-tabs__header{
|
|
|
|
|
|
|
+ .demo-tabs {
|
|
|
|
|
+ .el-tabs__header {
|
|
|
margin: 0;
|
|
margin: 0;
|
|
|
padding-bottom: 10px;
|
|
padding-bottom: 10px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- .el-icon{
|
|
|
|
|
|
|
+ .el-icon {
|
|
|
padding-top: 20px;
|
|
padding-top: 20px;
|
|
|
padding-left: 10px;
|
|
padding-left: 10px;
|
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- .no-content{
|
|
|
|
|
|
|
+ .no-content {
|
|
|
background-color: #fff;
|
|
background-color: #fff;
|
|
|
height: 77vh;
|
|
height: 77vh;
|
|
|
margin-top: 10px;
|
|
margin-top: 10px;
|
|
@@ -371,18 +411,18 @@ onMounted(async () => {
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
border-radius: 8px;
|
|
border-radius: 8px;
|
|
|
}
|
|
}
|
|
|
- .el-card{
|
|
|
|
|
- .el-card__body{
|
|
|
|
|
|
|
+ .el-card {
|
|
|
|
|
+ .el-card__body {
|
|
|
padding: 10px 20px !important;
|
|
padding: 10px 20px !important;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
- .el-tabs__item{
|
|
|
|
|
|
|
+ .el-tabs__item {
|
|
|
padding: 0 10px !important;
|
|
padding: 0 10px !important;
|
|
|
}
|
|
}
|
|
|
- .el-scrollbar{
|
|
|
|
|
|
|
+ .el-scrollbar {
|
|
|
height: auto;
|
|
height: auto;
|
|
|
}
|
|
}
|
|
|
- .tc{
|
|
|
|
|
|
|
+ .tc {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
@@ -390,32 +430,32 @@ onMounted(async () => {
|
|
|
font-size: 26px;
|
|
font-size: 26px;
|
|
|
color: #ccc;
|
|
color: #ccc;
|
|
|
}
|
|
}
|
|
|
- .batch-select-bar{
|
|
|
|
|
|
|
+ .batch-select-bar {
|
|
|
padding: 8px 12px;
|
|
padding: 8px 12px;
|
|
|
margin-top: 8px;
|
|
margin-top: 8px;
|
|
|
background-color: #fff;
|
|
background-color: #fff;
|
|
|
border-radius: 8px;
|
|
border-radius: 8px;
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
}
|
|
}
|
|
|
- .scrollLeft{
|
|
|
|
|
|
|
+ .scrollLeft {
|
|
|
padding: 10px 0;
|
|
padding: 10px 0;
|
|
|
height: 78vh;
|
|
height: 78vh;
|
|
|
overflow-y: auto;
|
|
overflow-y: auto;
|
|
|
}
|
|
}
|
|
|
::-webkit-scrollbar {
|
|
::-webkit-scrollbar {
|
|
|
- width: 0px; //滚动条宽度
|
|
|
|
|
|
|
+ width: 0px; //滚动条宽度
|
|
|
}
|
|
}
|
|
|
::-webkit-scrollbar-thumb {
|
|
::-webkit-scrollbar-thumb {
|
|
|
- //上层
|
|
|
|
|
- border-radius: 10px; //滚动条圆弧半径
|
|
|
|
|
- //-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); //滚动条阴影
|
|
|
|
|
- background: var(--el-border-color-dark); //背景颜色
|
|
|
|
|
|
|
+ //上层
|
|
|
|
|
+ border-radius: 10px; //滚动条圆弧半径
|
|
|
|
|
+ //-webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2); //滚动条阴影
|
|
|
|
|
+ background: var(--el-border-color-dark); //背景颜色
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- .lh14{
|
|
|
|
|
|
|
+ .lh14 {
|
|
|
line-height: 14px;
|
|
line-height: 14px;
|
|
|
}
|
|
}
|
|
|
- .lh16{
|
|
|
|
|
|
|
+ .lh16 {
|
|
|
line-height: 16px;
|
|
line-height: 16px;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|