有限空间作业

八项作业
LiuJiaNan 2024-07-05 18:01:23 +08:00
parent 76179cb2ac
commit bac78be6e2
16 changed files with 875 additions and 196 deletions

View File

@ -46,4 +46,7 @@ export const setTaskSave = (params) => post("/app/Task/init", params) //八项
export const getCurrentNextOperation = (params) => post("/app/Task/getSupplementInfo", params) //获取当前任务的下一步操作 export const getCurrentNextOperation = (params) => post("/app/Task/getSupplementInfo", params) //获取当前任务的下一步操作
export const getDepartmentTree = (params) => post("/app/util/getDepartmentTree", params) //获取部门树 export const getDepartmentTree = (params) => post("/app/util/getDepartmentTree", params) //获取部门树
export const getUserList = (params) => post("/app/util/getUserList", params) //获取人员 export const getUserList = (params) => post("/app/util/getUserList", params) //获取人员
export const getToDoTaskList = (params) => post("/app/Task/getAllToDoList", params) //获取待办列表
export const getTaskTechnologicalProcess = (params) => post("/app/Task/getAgencyList", params) //获取流程
export const getTaskInfo = (params) => post("/app/Task/getInfo", params) //查看信息
// 结束 // 结束

View File

@ -174,18 +174,6 @@
"navigationBarTitleText": "高危作业" "navigationBarTitleText": "高危作业"
} }
}, },
{
"path": "pages/eight_assignments/select_corp_info",
"style": {
"navigationBarTitleText": "选择分公司"
}
},
{
"path": "pages/eight_assignments/confined_space/index",
"style": {
"navigationBarTitleText": "受限空间安全作业"
}
},
{ {
"path": "pages/eight_assignments/confined_space/apply", "path": "pages/eight_assignments/confined_space/apply",
"style": { "style": {
@ -198,6 +186,36 @@
"navigationBarTitleText": "位置定位" "navigationBarTitleText": "位置定位"
} }
}, },
{
"path": "pages/eight_assignments/select_corp_info",
"style": {
"navigationBarTitleText": "选择分公司"
}
},
{
"path": "pages/eight_assignments/subordinate_index",
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "pages/eight_assignments/to_do_list",
"style": {
"navigationBarTitleText": "待办"
}
},
{
"path": "pages/eight_assignments/technological_process",
"style": {
"navigationBarTitleText": "流程"
}
},
{
"path": "pages/eight_assignments/view_info",
"style": {
"navigationBarTitleText": "查看"
}
},
{ {
"path": "pages/eight_assignments/select_review_personnel", "path": "pages/eight_assignments/select_review_personnel",
"style": { "style": {

View File

@ -118,33 +118,33 @@ export default {
WORK_CONTENT: '', WORK_CONTENT: '',
WORK_START_DATE: '', WORK_START_DATE: '',
WORK_END_DATE: '', WORK_END_DATE: '',
WORK_LONGITUDE: '1', WORK_LONGITUDE: '',
WORK_LATITUDE: '2', WORK_LATITUDE: '',
WORK_USER: '', WORK_USER: '',
SPECIAL_WORK: '', SPECIAL_WORK: '',
RISK_IDENTIFICATION: '', RISK_IDENTIFICATION: '',
}, },
rules: { rules: {
APPLY_DEPARTMENT_ID: [{type: 'string', required: true, message: '请选择申请单位', trigger: 'blur'}], APPLY_DEPARTMENT_ID: [{type: 'string', required: true, message: '请选择申请单位', trigger: ['blur','change']}],
APPLY_DEPARTMENT_NAME: [{type: 'string', required: true, message: '请选择申请人', trigger: 'blur'}], APPLY_DEPARTMENT_NAME: [{type: 'string', required: true, message: '请选择申请人', trigger: ['blur','change']}],
APPLY_USER_NAME: [{type: 'string', required: true, message: '请选择申请人', trigger: 'blur'}], APPLY_USER_NAME: [{type: 'string', required: true, message: '请选择申请人', trigger: ['blur','change']}],
CORP_NAME: [{type: 'string', required: true, message: '请选择作业分公司', trigger: 'blur'}], CORP_NAME: [{type: 'string', required: true, message: '请选择作业分公司', trigger: ['blur','change']}],
BELONG_CORP: [{type: 'string', required: true, message: '请输入受限空间所属单位', trigger: 'blur'}], BELONG_CORP: [{type: 'string', required: true, message: '请输入受限空间所属单位', trigger: ['blur','change']}],
// LIMITSPACE_NAME: [{type: 'string', required: true, message: '', trigger: 'blur'}], LIMITSPACE_NAME: [{type: 'string', required: true, message: '请选择受限空间名称', trigger: ['blur','change']}],
MEDIUM_NAME: [{type: 'string', required: true, message: '请输入受限空间内原有介质名称', trigger: 'blur'}], MEDIUM_NAME: [{type: 'string', required: true, message: '请输入受限空间内原有介质名称', trigger: ['blur','change']}],
WORK_CONTENT: [{type: 'string', required: true, message: '请输入作业内容', trigger: 'blur'}], WORK_CONTENT: [{type: 'string', required: true, message: '请输入作业内容', trigger: ['blur','change']}],
WORK_START_DATE: [{type: 'string', required: true, message: '请选择作业开始时间', trigger: 'blur'}], WORK_START_DATE: [{type: 'string', required: true, message: '请选择作业开始时间', trigger: ['blur','change']}],
WORK_END_DATE: [{type: 'string', required: true, message: '请选择作业结束时间', trigger: 'blur'}], WORK_END_DATE: [{type: 'string', required: true, message: '请选择作业结束时间', trigger: ['blur','change']}],
WORK_LONGITUDE: [{type: 'string', required: true, message: '请选择经度', trigger: 'blur'}], WORK_LONGITUDE: [{type: 'string', required: true, message: '请选择经度', trigger: ['blur','change']}],
WORK_LATITUDE: [{type: 'string', required: true, message: '请选择纬度', trigger: 'blur'}], WORK_LATITUDE: [{type: 'string', required: true, message: '请选择纬度', trigger: ['blur','change']}],
WORK_USER: [{type: 'string', required: true, message: '请输入作业人', trigger: 'blur'}], WORK_USER: [{type: 'string', required: true, message: '请输入作业人', trigger: ['blur','change']}],
SPECIAL_WORK: [{ SPECIAL_WORK: [{
type: 'string', type: 'string',
required: true, required: true,
message: '请输入关联的其他特殊作业及安全作业票编号', message: '请输入关联的其他特殊作业及安全作业票编号',
trigger: 'blur' trigger: ['blur','change']
}], }],
RISK_IDENTIFICATION: [{type: 'string', required: true, message: '请输入风险辨识结果', trigger: 'blur'}], RISK_IDENTIFICATION: [{type: 'string', required: true, message: '请输入风险辨识结果', trigger: ['blur','change']}],
}, },
picker: { picker: {
show: false, show: false,

View File

@ -1,77 +0,0 @@
<template>
<view class="content">
<view class="card">
<view class="items">
<view class="item" v-for="(item,index) in baseList" :key="index" @click="fnNavigator(index)">
<image :src="item.img" mode=""></image>
<view class="text">
<text>{{ item.title }}</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
baseList: [
{
img: require('../../../static/icon-apps/i9.png'),
title: '申请',
url: '/pages/eight_assignments/select_corp_info',
params: {
type: 'confined_space'
}
},
{
img: require('../../../static/icon-apps/i10.png'),
title: '待办',
url: '/pages/eight_assignments/confined_space/index'
},
{
img: require('../../../static/icon-apps/i11.png'),
title: '已办',
url: '/pages/eight_assignments/confined_space/index'
},
]
};
},
methods: {
fnNavigator(e) {
uni.$u.route({
url: this.baseList[e].url,
params: this.baseList[e].params
})
},
}
}
</script>
<style lang="scss" scoped>
.items {
background-color: #fff;
display: flex;
flex-wrap: wrap;
margin-top: -20upx;
.item {
flex-basis: calc(100% / 3);
text-align: center;
margin-top: 20upx;
image {
width: 110upx;
height: 110upx;
}
.text {
width: 130upx;
font-size: 28upx;
margin: auto;
}
}
}
</style>

View File

@ -1,98 +1,126 @@
<template> <template>
<view class="content"> <view class="content">
<view class="card"> <view class="card">
<view class="items"> <view class="items">
<view class="item" v-for="(item,index) in baseList" :key="index" @click="fnNavigator(index)"> <view class="item" v-for="(item,index) in baseList" :key="index" @click="fnNavigator(index)">
<image :src="item.img" mode=""></image> <image :src="item.img" mode=""></image>
<view class="text"> <view class="text">
<text>{{ item.title }}</text> <text>{{ item.title }}</text>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
baseList: [ baseList: [
{ {
img: require('../../static/icon-apps/i1.png'), img: require('../../static/icon-apps/i1.png'),
title: '受限空间安全作业', title: '受限空间安全作业',
url: '/pages/eight_assignments/confined_space/index' url: '/pages/eight_assignments/subordinate_index',
}, params: {
{ type: 'confined_space',
img: require('../../static/icon-apps/i2.png'), }
title: '盲板抽堵作业', },
url: '/pages/electronic_work_card/index' {
}, img: require('../../static/icon-apps/i2.png'),
{ title: '盲板抽堵作业',
img: require('../../static/icon-apps/i3.png'), url: '/pages/eight_assignments/subordinate_index',
title: '动土作业', params: {
url: '/pages/electronic_work_card/index' type: 'blind_board',
}, }
{ },
img: require('../../static/icon-apps/i4.png'), {
title: '高处作业', img: require('../../static/icon-apps/i3.png'),
url: '/pages/electronic_work_card/index' title: '动土作业',
}, url: '/pages/eight_assignments/subordinate_index',
{ params: {
img: require('../../static/icon-apps/i5.png'), type: 'break_ground',
title: '吊装作业', }
url: '/pages/electronic_work_card/index' },
}, {
{ img: require('../../static/icon-apps/i4.png'),
img: require('../../static/icon-apps/i6.png'), title: '高处作业',
title: '临时用电作业', url: '/pages/eight_assignments/subordinate_index',
url: '/pages/electronic_work_card/index' params: {
}, type: 'high_work',
{ }
img: require('../../static/icon-apps/i7.png'), },
title: '动火作业', {
url: '/pages/electronic_work_card/index' img: require('../../static/icon-apps/i5.png'),
}, title: '吊装作业',
{ url: '/pages/eight_assignments/subordinate_index',
img: require('../../static/icon-apps/i8.png'), params: {
title: '断路作业', type: 'hoisting',
url: '/pages/electronic_work_card/index' }
}, },
] {
}; img: require('../../static/icon-apps/i6.png'),
}, title: '临时用电作业',
methods: { url: '/pages/eight_assignments/subordinate_index',
fnNavigator(e) { params: {
uni.$u.route({ type: 'electricity',
url: this.baseList[e].url }
}) },
}, {
} img: require('../../static/icon-apps/i7.png'),
} title: '动火作业',
url: '/pages/eight_assignments/subordinate_index',
params: {
type: 'hot_work',
}
},
{
img: require('../../static/icon-apps/i8.png'),
title: '断路作业',
url: '/pages/eight_assignments/subordinate_index',
params: {
type: 'cut_road',
}
},
]
};
},
methods: {
fnNavigator(e) {
uni.$u.route({
url: this.baseList[e].url,
params: {
title: this.baseList[e].title,
...this.baseList[e].params
}
})
},
}
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.items { .items {
background-color: #fff; background-color: #fff;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
margin-top: -20upx; margin-top: -20upx;
.item { .item {
flex-basis: 25%; flex-basis: 25%;
text-align: center; text-align: center;
margin-top: 20upx; margin-top: 20upx;
image { image {
width: 110upx; width: 110upx;
height: 110upx; height: 110upx;
} }
.text { .text {
width: 130upx; width: 130upx;
font-size: 28upx; font-size: 28upx;
margin: auto; margin: auto;
} }
} }
} }
</style> </style>

View File

@ -60,7 +60,7 @@ export default {
this.$set(this.rules, item.key_name, [{ this.$set(this.rules, item.key_name, [{
required: item.isRequired === '1', required: item.isRequired === '1',
message: item.name + '不能为空', message: item.name + '不能为空',
trigger: 'blur', trigger: ['blur', 'change'],
}]) }])
}) })
}, },
@ -90,6 +90,10 @@ export default {
}, },
async fnGetUserList({DEPARTMENT_ID, TYPE}, value) { async fnGetUserList({DEPARTMENT_ID, TYPE}, value) {
let resData = await getUserList({DEPARTMENT_ID, TYPE}) let resData = await getUserList({DEPARTMENT_ID, TYPE})
for (let i = 0; i < resData.list.list.length; i++) {
resData.list.list[i].NAME = resData.list.list[i].name || resData.list.list[i].NAME
resData.list.list[i].USER_ID = resData.list.list[i].user_ID || resData.list.list[i].USER_ID
}
this.$set(this.picker.columnsAll, value, [resData.list.list]) this.$set(this.picker.columnsAll, value, [resData.list.list])
}, },
fnSelectUser(key_name, key_id, value) { fnSelectUser(key_name, key_id, value) {

View File

@ -0,0 +1,86 @@
<template>
<view class="content">
<view class="card">
<view class="items">
<view class="item" v-for="(item,index) in baseList" :key="index" @click="fnNavigator(index)">
<image :src="item.img" mode=""></image>
<view class="text">
<text>{{ item.title }}</text>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
baseList: [
{
img: require('../../static/icon-apps/i9.png'),
title: '申请',
url: '/pages/eight_assignments/select_corp_info'
},
{
img: require('../../static/icon-apps/i10.png'),
title: '待办',
url: '/pages/eight_assignments/to_do_list'
},
{
img: require('../../static/icon-apps/i11.png'),
title: '已办',
url: '/pages/eight_assignments/completed_list'
},
],
type: '',
title: ''
};
},
onLoad(query) {
this.type = query.type;
this.title = query.title;
uni.setNavigationBarTitle({
title: this.title
})
},
methods: {
fnNavigator(e) {
uni.$u.route({
url: this.baseList[e].url,
params: {
type: this.type,
title: this.title,
}
})
},
}
}
</script>
<style lang="scss" scoped>
.items {
background-color: #fff;
display: flex;
flex-wrap: wrap;
margin-top: -20upx;
.item {
flex-basis: calc(100% / 3);
text-align: center;
margin-top: 20upx;
image {
width: 110upx;
height: 110upx;
}
.text {
width: 130upx;
font-size: 28upx;
margin: auto;
}
}
}
</style>

View File

@ -0,0 +1,90 @@
<template>
<view class="content">
<cc-defineStep colors="#fa436a" :stepData="stepData"></cc-defineStep>
</view>
</template>
<script>
import {getTaskTechnologicalProcess} from "@/api";
export default {
data() {
return {
stepData: [
{
name: '提交申请',
time: '2023-06-09 20:01:49',
isNow: 0,
type: 1,
desc: '不想要了'
},
{
name: '等待审核',
time: '2023-06-09 20:01:49',
isNow: 0,
type: 1,
desc: '您的服务单已申请成功,待售后审核中'
},
{
name: '审核意见',
time: '2023-06-09 20:13:49',
isNow: 0,
type: 1,
desc: '您的售后单已收到会在24小时与您联系。'
},
{
name: '审核上门取件',
time: '2023-06-09 20:13:49',
isNow: 0,
type: 1,
desc: '您的服务单已预约时间2023-06-10(周日) 15:00-20:00'
},
{
name: '取件成功',
time: '2023-06-10 18:54:55',
isNow: 0,
type: 1,
desc: '您的商品已取件成功'
},
{
name: '商家售后已收到',
time: '2023-06-12 09:01:49',
isNow: 0,
type: 1,
desc: '您的服务单商品已收到'
},
{
name: '返修换新订单生产',
time: '2023-06-12 13:19:49',
isNow: 0,
type: 1,
desc: '您的服务订单已生成新的订单'
},
{
name: '返修换新完成',
time: '2023-06-13 12:12:49',
isNow: 1,
type: 1,
desc: '您的服务单已完成,如有疑问请反馈,谢谢~,欢迎再次光临'
},
]
}
},
onLoad(query) {
this.fnGetData(query.taskId)
uni.setNavigationBarTitle({
title: query.title + '流程'
})
},
methods: {
async fnGetData(taskId) {
let resData = await getTaskTechnologicalProcess({ID: taskId})
console.log(resData)
}
},
}
</script>
<style scoped lang="scss">
</style>

View File

@ -0,0 +1,85 @@
<template>
<view class="content">
<u-list @scrolltolower="scrolltolower" v-if="list.length > 0">
<u-list-item v-for="(item, index) in list" :key="index">
<view class="flex-between main-title">
<text>申请人{{ item.taskName }}</text>
</view>
<view class="flex-between main-title">
<text>作业分公司{{ item.taskName }}</text>
</view>
<view class="flex-between main-title">
<text>申请时间{{ item.taskName }}</text>
</view>
<view class="flex-between mt-10 subtitle">
<view></view>
<view class="flex-between">
<u-button type="primary" text="流程" size="mini" class="bth-mini"
@click="$u.route({
url: '/pages/eight_assignments/technological_process',
params: {taskId:item.taskId,type,title}
})"/>
<u-button type="primary" text="审批" size="mini" class="bth-mini ml-10"
@click="$u.route({
url: '/pages/eight_assignments/view_info',
params: {taskId:item.taskId,type,title}
})"/>
</view>
</view>
</u-list-item>
</u-list>
<empty v-else></empty>
</view>
</template>
<script>
import {getToDoTaskList} from "@/api";
export default {
data() {
return {
type: '',
title: '',
pageSize: 10,
currentPage: 1,
totalPage: 0,
list: []
}
},
onLoad(query) {
this.type = query.type
this.title = query.title
uni.setNavigationBarTitle({
title: this.title + '待办'
})
},
onShow() {
this.resetList()
},
methods: {
async getData() {
let resData = await getToDoTaskList({
showCount: this.pageSize,
currentPage: this.currentPage,
type: this.type,
});
this.list = [...this.list, ...resData.list.list];
this.totalPage = resData.list.totalPage;
},
resetList() {
this.pageSize = 10
this.currentPage = 1
this.list = []
this.getData()
},
scrolltolower() {
this.currentPage++;
if (this.totalPage >= this.currentPage) this.getData();
},
},
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,28 @@
<template>
<view class="content">
<view class="card"></view>
</view>
</template>
<script>
import {getTaskInfo} from "@/api";
export default {
onLoad(query) {
this.fnGetData(query.taskId)
uni.setNavigationBarTitle({
title: query.title + '查看'
})
},
methods: {
async fnGetData(taskId) {
let resData = await getTaskInfo({EW_RU_TASK_ID: taskId})
console.log(resData)
}
},
}
</script>
<style scoped lang="scss">
</style>

View File

@ -0,0 +1,8 @@
## 1.32024-06-27
优化
## 1.22024-05-16
组件优化
## 1.0.12023-07-09
组件优化
## 1.0.02023-07-09
组件初始化

View File

@ -0,0 +1,135 @@
<template>
<view class="step">
<view class="step_box">
<!-- 左侧进度线 -->
<view class="step_left">
</view>
<view class="step_right">
<view class="right_content" v-for="(item,index) in stepData" :key="index">
<!-- 进度名称 -->
<block v-if="item.isNow == 0">
<view class="title" :style="{color:item.type == 1? '#202020':'#999'}">{{item.name}}</view>
</block>
<block v-if="item.isNow == 1">
<view class="title" :style="{color:item.type == 1? colors:'#999'}">{{item.name}}</view>
</block>
<!-- 进度时间 -->
<view class="times" v-if="item.type == 1">{{item.time}}</view>
<!-- 进度详情备注 -->
<view class="result" v-if="item.desc && item.desc !== ''"><text
style="color: #202020;">{{item.desc}}</text></view>
<!-- 右侧的进度点 -->
<view class="status"
:style="{background: item.isNow == 1?colors:'#ccc',borderColor: item.isNow == 1?colors:'#ccc'}">{{item.isNow == 1?"✓":''}}
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {};
},
props: {
colors: {
type: String
},
stepData: {
type: Array
}
},
};
</script>
<style lang="scss" scoped>
.step {
padding: 40upx 20upx;
margin-bottom: 20upx;
}
.step_box {
margin: 0 20upx;
display: flex;
.step_left {
width: 2upx;
display: block;
background-color: #DDDDDD;
overflow: hidden;
}
.step_right {
margin-left: 20upx;
margin-top: -10upx;
.right_content {
position: relative;
margin-bottom: 30upx;
.title {
font-size: 28upx;
font-family: Source Han Sans CN;
font-weight: 500;
color: #333333;
}
.times {
font-size: 22upx;
font-family: Source Han Sans CN;
font-weight: 400;
color: #999999;
line-height: 36upx;
}
.status {
width: 24upx;
height: 24upx;
border-radius: 50%;
border: 2upx solid #ccc;
position: absolute;
top: 10upx;
background-color: #ccc;
left: -36upx;
color: white;
line-height: 12px;
font-size: 10px;
text-align: center;
}
.result {
padding: 10upx 15upx;
background-color: #F6F6F6;
font-size: 22upx;
margin-top: 10upx;
border: 1upx dashed #ddd;
}
&:last-of-type {
margin-bottom: 0;
.status {
top: 14upx;
}
&::before {
content: '';
width: 6upx;
height: 100%;
background-color: #FFFFFF;
position: absolute;
top: 22upx;
left: -24upx;
}
}
}
}
}
</style>

View File

@ -0,0 +1,87 @@
{
"id": "cc-defineStep",
"displayName": "自定义精美steps步骤条进度条插件 物流信息跟踪展示组件 流程审批跟进组件",
"version": "1.3",
"description": "自定义精美steps步骤条进度条插件 物流信息跟踪展示组件 流程审批跟进组件",
"keywords": [
"步骤条",
"时间轴",
"",
"物流信息",
"物流",
"跟踪"
],
"repository": "",
"engines": {
"HBuilderX": "^3.8.0"
},
"dcloudext": {
"type": "component-vue",
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "无",
"permissions": "无"
},
"npmurl": ""
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "n"
},
"client": {
"Vue": {
"vue2": "y",
"vue3": "y"
},
"App": {
"app-vue": "y",
"app-nvue": "y"
},
"H5-mobile": {
"Safari": "y",
"Android Browser": "y",
"微信浏览器(Android)": "y",
"QQ浏览器(Android)": "y"
},
"H5-pc": {
"Chrome": "y",
"IE": "y",
"Edge": "y",
"Firefox": "y",
"Safari": "y"
},
"小程序": {
"微信": "y",
"阿里": "y",
"百度": "y",
"字节跳动": "y",
"QQ": "y",
"钉钉": "y",
"快手": "y",
"飞书": "y",
"京东": "y"
},
"快应用": {
"华为": "y",
"联盟": "y"
}
}
}
}
}

View File

@ -0,0 +1,170 @@
# cc-defineStep
### 我的技术微信公众号
![图片](https://i.postimg.cc/RZ0sjnYP/front-End-Component.jpg)
#### 使用方法
```使用方法
<!-- colors: 设置主题色 stepData:步骤数据 -->
<cc-defineStep :colors="colors" :stepData="stepData"></cc-defineStep>
<!-- 数据设置 -->
colors:"#fa436a",
//模拟后台返回的数据
stepData: [
{
name: '提交申请',
time: '2023-06-09 20:01:49',
isNow: 0,
type: 1,
desc: '不想要了'
},
{
name: '等待审核',
time: '2023-06-09 20:01:49',
isNow: 0,
type: 1,
desc: '您的服务单已申请成功,待售后审核中'
},
{
name: '审核意见',
time: '2023-06-09 20:13:49',
isNow: 0,
type: 1,
desc: '您的售后单已收到会在24小时与您联系。'
},
{
name: '审核上门取件',
time: '2023-06-09 20:13:49',
isNow: 0,
type: 1,
desc: '您的服务单已预约时间2023-06-10(周日) 15:00-20:00'
},
{
name: '取件成功',
time: '2023-06-10 18:54:55',
isNow: 0,
type: 1,
desc: '您的商品已取件成功'
},
{
name: '商家售后已收到',
time: '2023-06-12 09:01:49',
isNow: 0,
type: 1,
desc: '您的服务单商品已收到'
},
{
name: '返修换新订单生产',
time: '2023-06-12 13:19:49',
isNow: 0,
type: 1,
desc: '您的服务订单已生成新的订单'
},
{
name: '返修换新完成',
time: '2023-06-13 12:12:49',
isNow: 1,
type: 1,
desc: '您的服务单已完成,如有疑问请反馈,谢谢~,欢迎再次光临'
},
]
```
#### HTML代码实现部分
```html
<template>
<!-- colors: 设置主题色 stepData:步骤数据 -->
<cc-defineStep :colors="colors" :stepData="stepData"></cc-defineStep>
</template>
<script>
export default {
data() {
return {
colors:"#fa436a",
//模拟后台返回的数据
stepData: [
{
name: '提交申请',
time: '2023-06-09 20:01:49',
isNow: 0,
type: 1,
desc: '不想要了'
},
{
name: '等待审核',
time: '2023-06-09 20:01:49',
isNow: 0,
type: 1,
desc: '您的服务单已申请成功,待售后审核中'
},
{
name: '审核意见',
time: '2023-06-09 20:13:49',
isNow: 0,
type: 1,
desc: '您的售后单已收到会在24小时与您联系。'
},
{
name: '审核上门取件',
time: '2023-06-09 20:13:49',
isNow: 0,
type: 1,
desc: '您的服务单已预约时间2023-06-10(周日) 15:00-20:00'
},
{
name: '取件成功',
time: '2023-06-10 18:54:55',
isNow: 0,
type: 1,
desc: '您的商品已取件成功'
},
{
name: '商家售后已收到',
time: '2023-06-12 09:01:49',
isNow: 0,
type: 1,
desc: '您的服务单商品已收到'
},
{
name: '返修换新订单生产',
time: '2023-06-12 13:19:49',
isNow: 0,
type: 1,
desc: '您的服务订单已生成新的订单'
},
{
name: '返修换新完成',
time: '2023-06-13 12:12:49',
isNow: 1,
type: 1,
desc: '您的服务单已完成,如有疑问请反馈,谢谢~,欢迎再次光临'
},
]
}
},
onLoad() {
// 步骤数组数据反序
this.stepData.reverse()
}
}
</script>
<style lang="scss" scoped>
</style>
```

View File

@ -12,7 +12,7 @@
<view class="next-tree-bar-confirm" :style="{'color':_themeColor}" hover-class="hover-c" @tap="_confirm"></view> <view class="next-tree-bar-confirm" :style="{'color':_themeColor}" hover-class="hover-c" @tap="_confirm"></view>
</view> </view>
</view> </view>
<!-- #ifdef APP-PLUS--> <!-- #ifndef H5-->
<view class="next-tree-view" :style="'top:'+(_showTreeBar?'72rpx':'0rpx')"> <view class="next-tree-view" :style="'top:'+(_showTreeBar?'72rpx':'0rpx')">
<!-- #endif--> <!-- #endif-->
<!-- #ifdef H5--> <!-- #ifdef H5-->

View File

@ -51,6 +51,13 @@ export const setPersonnelForm = async ({form, list, taskId, CORP_ID, TYPE}) => {
}) })
await resolveNextOperation(taskId, CORP_ID, TYPE) await resolveNextOperation(taskId, CORP_ID, TYPE)
} }
const endCurrentPersonnelTechnologicalProcess = async ({EW_RU_TASK_ID}) => {
await setTaskSave({
COMPLETE_FLAG: '1',
data: [{task: {EW_RU_TASK_ID}}],
postMethod: 'application/json',
})
}
// 决定下一步操作 EW_RU_TASK_ID当前任务id CORP_ID 选择的企业id TYPE作业类型 // 决定下一步操作 EW_RU_TASK_ID当前任务id CORP_ID 选择的企业id TYPE作业类型
const resolveNextOperation = async (EW_RU_TASK_ID, CORP_ID, TYPE) => { const resolveNextOperation = async (EW_RU_TASK_ID, CORP_ID, TYPE) => {
const {info} = await getCurrentNextOperation({EW_RU_TASK_ID}) const {info} = await getCurrentNextOperation({EW_RU_TASK_ID})
@ -72,5 +79,12 @@ const resolveNextOperation = async (EW_RU_TASK_ID, CORP_ID, TYPE) => {
if (info.canAddFlag === '1') { if (info.canAddFlag === '1') {
return return
} }
console.log('没有下一步了') // 没有下一步,结束流程,因为无法确定有多少步骤,跳转了多少页面,所以直接跳转到首页
await endCurrentPersonnelTechnologicalProcess({EW_RU_TASK_ID})
uni.$u.toast('提交成功')
setTimeout(() => {
uni.switchTab({
url: '/pages/index/index'
})
}, 1500)
} }