流程签收功能 取消组任务

This commit is contained in:
yangzhq68909 2024-10-24 11:15:16 +08:00
parent 72e1f6c02f
commit 60e6f2bd2f
6 changed files with 146 additions and 189 deletions

View File

@ -8,13 +8,6 @@ export function taskListApi(config) { // 我的任务列表
data: config
})
}
export function taskGroupListApi(config) { // 我的组任务列表
return https({
url: '/act/task/taskGroupList',
method: 'get',
data: config
})
}
export function taskHistoryListApi(config) { // 我的历史任务列表
return https({
url: '/act/task/taskHistoryList',

View File

@ -1,32 +1,36 @@
<template>
<view class="list_box">
<view class="list" v-for="item,i in taskArr" :key="i" @click="tojump(`/pages/task/handle?info=${JSON.stringify(item)}&type=${currentIndex}`)">
<view class="list" v-for="item,i in taskArr" :key="i"
@click="tojump(`/pages/task/handle?info=${JSON.stringify(item)}&type=${currentIndex}`)">
<view class="title f-row aic jcb">
<view class="">
<view class="">
{{item.processApplyUserName}}{{item.processDefinitionName}}
<view>
<view>
{{item.bpmBizTitle}}
</view>
</view>
<text>{{item.durationStr}}</text>
</view>
<view class="info">
<view class="">
<view>
申请理由{{item.bpmBizTitle}}
</view>
<view class="">
<view>
当前环节{{item.taskName}}
</view>
<view class="">
<view>
流程名称{{item.processDefinitionName}}
</view>
<view class="">
<view>
发起人{{item.processApplyUserName}}
</view>
<view class="">
<view>
开始时间{{item.taskBeginTime}}
</view>
<view v-if="currentIndex == 1">
结束时间{{item.taskEndTime}}
</view>
<view class="btn f-row aic jcb" v-show="currentIndex!=2">
</view>
<view class="btn f-row aic jcb" v-if="currentIndex == 0 && item.taskAssigneeName">
<view class="entrust" @click.stop="tojump(`/pages/userlist/index?isradio=1&id=${item.id}`)">
委托
</view>
@ -34,11 +38,28 @@
办理
</view>
</view>
<view class="btn f-row aic jcb" v-if="currentIndex == 0 && !item.taskAssigneeName">
<view>
</view>
<view class="handle" @click="claim(item.id)">
签收
</view>
</view>
</view>
</view>
</template>
<script setup>
import {
claimApi
} from '@/api/api.js';
import {
getCurrentInstance,
} from 'vue';
const {
proxy
} = getCurrentInstance()
const props = defineProps({
taskArr: {
type: Array,
@ -53,11 +74,26 @@
const tojump = (url) => {
emit('jump', url)
}
/**签收*/
const claim = (id) => {
claimApi({
taskId: id
}).then((res) => {
if (res.success) {
proxy.$toast(res.message)
setTimeout(function() {
uni.redirectTo({
url: './index?id=0'
});
}, 500);
}
})
}
</script>
<style lang="scss" scoped>
.list_box {
// padding: 200rpx 30rpx 0 30rpx;
padding: 0 30rpx 0 30rpx;
margin-top: 24rpx;

View File

@ -250,9 +250,6 @@
const menu = ref([{
text: '我的任务',
path: '/pages/task/index?id=0'
}, {
text: '组任务',
path: '/pages/task/index?id=1'
},{
text: '历史任务',
path: '/pages/task/index?id=2'

View File

@ -11,7 +11,7 @@
<view class="name">
{{taskInfo.processApplyUserName}}{{taskInfo.processDefinitionName}}
</view>
<view class="status" v-if="type!=2">
<view class="status" v-if="type==0">
待审批
</view>
<view class="status" v-else style="background-color: #7AC756;">
@ -20,7 +20,7 @@
</view>
</customNav>
<component :is="comp" :dataId="dataId"></component>
<view class="btn f-row aic jcb" v-if="type!=2&&taskInfo.taskAssigneeName">
<view class="btn f-row aic jcb" >
<view class="refuse" @click="openpop(1)">
拒绝
</view>
@ -28,14 +28,6 @@
同意
</view>
</view>
<view class="btn f-row aic jcb" v-if="type!=2&&!taskInfo.taskAssigneeName">
<view class="">
</view>
<view class="agree" @click="claim">
签收
</view>
</view>
<uni-popup ref="popup" type="center">
<view class="popup">
@ -44,7 +36,6 @@
</view>
<view class="f-col aic">
<view class="input f-col">
<textarea v-model="reason" name="" id="" maxlength="200" placeholder="请输入"></textarea>
<view class="">
{{reason.length}}/200
@ -90,7 +81,6 @@
processCompleteApi,
getProcessTaskTransInfoApi,
getHisProcessNodeInfoApi,
claimApi
} from '@/api/api.js';
import {
beforeJump
@ -173,19 +163,6 @@
}
})
}
/**签收*/
const claim = () => {
claimApi({
taskId: taskInfo.value.id
}).then((res) => {
if (res.success) {
proxy.$toast(res.message)
setTimeout(() => {
uni.navigateBack()
}, 2000)
}
})
}
/**审批流程节点*/
@ -223,7 +200,7 @@
onLoad((options) => {
taskInfo.value = JSON.parse(options.info)
type = options.type
if (type == 2) {
if (type == 1) {
return getHisProcessNodeInfo(taskInfo.value.processInstanceId)
}
getProcessNodeInfo(taskInfo.value.id)

View File

@ -10,9 +10,6 @@
<view class="tasklist">
<tasklistCom @jump="jump" :taskArr="taskArr" :currentIndex="currentIndex"></tasklistCom>
</view>
</view>
</template>
@ -24,7 +21,6 @@
import { toast } from '@/utils/index.js';
import {
taskListApi,
taskGroupListApi,
taskHistoryListApi
} from '@/api/api.js';
import {
@ -55,12 +51,10 @@
const tabArr = ref([{
text: '我的任务',
id: 0
}, {
text: '组任务',
id: 1
}, {
},
{
text: '历史任务',
id: 2
id: 1
}])
const date = ref('')
const currentIndex = ref(0)
@ -73,8 +67,7 @@
uni.showLoading({
title: '加载中...'
})
let getlist = currentIndex.value == 0 ? taskListApi : currentIndex.value == 1 ? taskGroupListApi :
taskHistoryListApi
let getlist = currentIndex.value == 0 ? taskListApi : taskHistoryListApi
getlist({
// createTime: date.value ? date.value + ' 00:00:00' : '',
pageNo,
@ -92,8 +85,6 @@
})
}
const change = (i) => {
taskArr.value = []
pageNo = 1

View File

@ -61,7 +61,7 @@ if (uni.restoreGlobal) {
const _imports_4 = "/static/login/eye-off.png";
const _imports_5 = "/static/login/nocheck.png";
const _imports_6 = "/static/login/checked.png";
let baseUrl$1 = "https://36.112.48.190/jeecg-boot";
let baseUrl$1 = "http://10.75.166.174:8080/jeecg-boot";
let loading = false;
function https(config) {
if (loading)
@ -130,9 +130,9 @@ if (uni.restoreGlobal) {
});
return promise;
}
function loginApi(config) {
function localLoginApi(config) {
return https({
url: "/sys/sinopecLogin",
url: "/sys/login",
method: "post",
data: config
});
@ -1779,21 +1779,15 @@ This will fail in production.`);
return proxy.$toast("请输入账号");
if (!password.value.trim())
return proxy.$toast("请输入密码");
let un = Base64.encode(encodeURIComponent(username.value));
let pw = Base64.encode(encodeURIComponent(password.value));
Base64.encode(encodeURIComponent(username.value));
Base64.encode(encodeURIComponent(password.value));
uni.showLoading({
title: "登录中..."
});
loginApi({
username: un,
password: pw,
ip: getDeviceIp()
/*生产环境 end */
/*开发环境 begin */
// localLoginApi({
// username: username.value,
// password: password.value,
// captcha: 'app'
localLoginApi({
username: username.value,
password: password.value,
captcha: "app"
/*开发环境 end */
}).then((loginres) => {
if (loginres.success) {
@ -1825,31 +1819,6 @@ This will fail in production.`);
password.value = obj.pw ? obj.pw : "";
}
});
function getDeviceIp() {
let deviceIp;
if (plus.os.name == "Android") {
let Context = plus.android.importClass("android.content.Context");
let main = plus.android.runtimeMainActivity();
let cm = main.getSystemService(Context.CONNECTIVITY_SERVICE);
plus.android.importClass(cm);
let linkProperties = cm.getLinkProperties(cm.getActiveNetwork());
let linkAddrs = plus.android.invoke(linkProperties, "getLinkAddresses");
plus.android.importClass(linkAddrs);
for (var i2 = 0; i2 < linkAddrs.size(); i2++) {
let inetAddr = plus.android.invoke(linkAddrs.get(i2), "getAddress");
deviceIp = plus.android.invoke(inetAddr, "getHostAddress");
}
if (deviceIp == "") {
var wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);
var wifiInfo = plus.android.invoke(wifiManager, "getConnectionInfo");
var ipAddress = plus.android.invoke(wifiInfo, "getIpAddress");
if (ipAddress != 0) {
deviceIp = (ipAddress & 255) + "." + (ipAddress >> 8 & 255) + "." + (ipAddress >> 16 & 255) + "." + (ipAddress >> 24 & 255);
}
}
}
return deviceIp;
}
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock(
"view",
@ -6219,13 +6188,6 @@ This will fail in production.`);
data: config
});
}
function taskGroupListApi(config) {
return https({
url: "/act/task/taskGroupList",
method: "get",
data: config
});
}
function taskHistoryListApi(config) {
return https({
url: "/act/task/taskHistoryList",
@ -6451,7 +6413,7 @@ This will fail in production.`);
}
};
const customNav = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["__scopeId", "data-v-420daeb5"], ["__file", "D:/projects/cxc-szcx-uniapp/bpm/customNav.vue"]]);
const baseurl = "https://36.112.48.190/jeecg-boot/sys/common/static/";
const baseurl = "http://10.75.166.174:8080/jeecg-boot/sys/common/static/";
const toast = (title, icon, duration) => {
uni.showToast({
title,
@ -6674,7 +6636,7 @@ This will fail in production.`);
vue.useCssVars((_ctx) => ({
"ae0729d5-cusnavbarheight": cusnavbarheight
}));
const baseurl2 = "https://36.112.48.190/jeecg-boot";
const baseurl2 = "http://10.75.166.174:8080/jeecg-boot";
const store = useStore();
onShow(() => {
cxcDaping();
@ -6743,9 +6705,6 @@ This will fail in production.`);
const menu = vue.ref([{
text: "我的任务",
path: "/pages/task/index?id=0"
}, {
text: "组任务",
path: "/pages/task/index?id=1"
}, {
text: "历史任务",
path: "/pages/task/index?id=2"
@ -6765,7 +6724,7 @@ This will fail in production.`);
}
loading2 = false;
}).catch((err) => {
formatAppLog("log", "at pages/tab/index.vue:276", "err", err);
formatAppLog("log", "at pages/tab/index.vue:273", "err", err);
});
};
const gonggaolist = () => {
@ -6779,7 +6738,7 @@ This will fail in production.`);
}
loading2 = false;
}).catch((err) => {
formatAppLog("log", "at pages/tab/index.vue:291", "err", err);
formatAppLog("log", "at pages/tab/index.vue:288", "err", err);
});
};
const zhibanArr = vue.ref([]);
@ -6789,7 +6748,7 @@ This will fail in production.`);
zhibanArr.value = res2.result.records.slice(0, 2);
}
}).catch((err) => {
formatAppLog("log", "at pages/tab/index.vue:302", "err", err);
formatAppLog("log", "at pages/tab/index.vue:299", "err", err);
});
};
const fagui = () => {
@ -6803,7 +6762,7 @@ This will fail in production.`);
}
loading2 = false;
}).catch((err) => {
formatAppLog("log", "at pages/tab/index.vue:318", "err", err);
formatAppLog("log", "at pages/tab/index.vue:315", "err", err);
});
};
const zhidu = () => {
@ -6819,7 +6778,7 @@ This will fail in production.`);
}
loading2 = false;
}).catch((err) => {
formatAppLog("log", "at pages/tab/index.vue:335", "err", err);
formatAppLog("log", "at pages/tab/index.vue:332", "err", err);
});
};
const formatObj = (arr, title, time, depart) => {
@ -7887,10 +7846,27 @@ This will fail in production.`);
},
emits: ["jump"],
setup(__props, { emit: __emit }) {
const {
proxy
} = vue.getCurrentInstance();
const emit = __emit;
const tojump = (url) => {
emit("jump", url);
};
const claim = (id) => {
claimApi({
taskId: id
}).then((res) => {
if (res.success) {
proxy.$toast(res.message);
setTimeout(function() {
uni.redirectTo({
url: "./index?id=0"
});
}, 500);
}
});
};
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("view", { class: "list_box" }, [
(vue.openBlock(true), vue.createElementBlock(
@ -7903,11 +7879,11 @@ This will fail in production.`);
onClick: ($event) => tojump(`/pages/task/handle?info=${JSON.stringify(item)}&type=${__props.currentIndex}`)
}, [
vue.createElementVNode("view", { class: "title f-row aic jcb" }, [
vue.createElementVNode("view", { class: "" }, [
vue.createElementVNode("view", null, [
vue.createElementVNode(
"view",
{ class: "" },
vue.toDisplayString(item.processApplyUserName) + "的" + vue.toDisplayString(item.processDefinitionName),
null,
vue.toDisplayString(item.bpmBizTitle),
1
/* TEXT */
)
@ -7923,44 +7899,51 @@ This will fail in production.`);
vue.createElementVNode("view", { class: "info" }, [
vue.createElementVNode(
"view",
{ class: "" },
null,
" 申请理由:" + vue.toDisplayString(item.bpmBizTitle),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "" },
null,
" 当前环节:" + vue.toDisplayString(item.taskName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "" },
null,
" 流程名称:" + vue.toDisplayString(item.processDefinitionName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "" },
null,
" 发起人:" + vue.toDisplayString(item.processApplyUserName),
1
/* TEXT */
),
vue.createElementVNode(
"view",
{ class: "" },
null,
" 开始时间:" + vue.toDisplayString(item.taskBeginTime),
1
/* TEXT */
)
]),
vue.withDirectives(vue.createElementVNode(
),
__props.currentIndex == 1 ? (vue.openBlock(), vue.createElementBlock(
"view",
{ class: "btn f-row aic jcb" },
[
{ key: 0 },
" 结束时间:" + vue.toDisplayString(item.taskEndTime),
1
/* TEXT */
)) : vue.createCommentVNode("v-if", true)
]),
__props.currentIndex == 0 && item.taskAssigneeName ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "btn f-row aic jcb"
}, [
vue.createElementVNode("view", {
class: "entrust",
onClick: vue.withModifiers(($event) => tojump(`/pages/userlist/index?isradio=1&id=${item.id}`), ["stop"])
@ -7969,12 +7952,17 @@ This will fail in production.`);
class: "handle",
onClick: ($event) => tojump(`/pages/task/handle?info=${JSON.stringify(item)}&type=${__props.currentIndex}`)
}, " 办理 ", 8, ["onClick"])
],
512
/* NEED_PATCH */
), [
[vue.vShow, __props.currentIndex != 2]
])
])) : vue.createCommentVNode("v-if", true),
__props.currentIndex == 0 && !item.taskAssigneeName ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "btn f-row aic jcb"
}, [
vue.createElementVNode("view"),
vue.createElementVNode("view", {
class: "handle",
onClick: ($event) => claim(item.id)
}, " 签收 ", 8, ["onClick"])
])) : vue.createCommentVNode("v-if", true)
], 8, ["onClick"]);
}),
128
@ -8001,16 +7989,16 @@ This will fail in production.`);
loading2 = false;
taskList();
});
const tabArr = vue.ref([{
const tabArr = vue.ref([
{
text: "我的任务",
id: 0
}, {
text: "组任务",
id: 1
}, {
},
{
text: "历史任务",
id: 2
}]);
id: 1
}
]);
vue.ref("");
const currentIndex = vue.ref(0);
let pageNo = 1;
@ -8022,7 +8010,7 @@ This will fail in production.`);
uni.showLoading({
title: "加载中..."
});
let getlist = currentIndex.value == 0 ? taskListApi : currentIndex.value == 1 ? taskGroupListApi : taskHistoryListApi;
let getlist = currentIndex.value == 0 ? taskListApi : taskHistoryListApi;
getlist({
// createTime: date.value ? date.value + ' 00:00:00' : '',
pageNo,
@ -8038,7 +8026,7 @@ This will fail in production.`);
loading2 = false;
}
}).catch((err) => {
formatAppLog("log", "at pages/task/index.vue:91", err);
formatAppLog("log", "at pages/task/index.vue:84", err);
});
};
const change = (i2) => {
@ -8969,18 +8957,6 @@ This will fail in production.`);
}
});
};
const claim = () => {
claimApi({
taskId: taskInfo.value.id
}).then((res) => {
if (res.success) {
proxy.$toast(res.message);
setTimeout(() => {
uni.navigateBack();
}, 2e3);
}
});
};
const stepNode = vue.ref([]);
const currentnode = vue.ref(null);
const nodeChange = (e2) => {
@ -9011,7 +8987,7 @@ This will fail in production.`);
onLoad((options) => {
taskInfo.value = JSON.parse(options.info);
type = options.type;
if (type == 2) {
if (type == 1) {
return getHisProcessNodeInfo(taskInfo.value.processInstanceId);
}
getProcessNodeInfo(taskInfo.value.id);
@ -9052,7 +9028,7 @@ This will fail in production.`);
1
/* TEXT */
),
vue.unref(type) != 2 ? (vue.openBlock(), vue.createElementBlock("view", {
vue.unref(type) == 0 ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "status"
}, " 待审批 ")) : (vue.openBlock(), vue.createElementBlock("view", {
@ -9066,10 +9042,7 @@ This will fail in production.`);
/* STABLE */
}),
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(comp.value), { dataId: dataId.value }, null, 8, ["dataId"])),
vue.unref(type) != 2 && taskInfo.value.taskAssigneeName ? (vue.openBlock(), vue.createElementBlock("view", {
key: 0,
class: "btn f-row aic jcb"
}, [
vue.createElementVNode("view", { class: "btn f-row aic jcb" }, [
vue.createElementVNode("view", {
class: "refuse",
onClick: _cache[0] || (_cache[0] = ($event) => openpop(1))
@ -9078,17 +9051,7 @@ This will fail in production.`);
class: "agree",
onClick: _cache[1] || (_cache[1] = ($event) => openpop(2))
}, " 同意 ")
])) : vue.createCommentVNode("v-if", true),
vue.unref(type) != 2 && !taskInfo.value.taskAssigneeName ? (vue.openBlock(), vue.createElementBlock("view", {
key: 1,
class: "btn f-row aic jcb"
}, [
vue.createElementVNode("view", { class: "" }),
vue.createElementVNode("view", {
class: "agree",
onClick: claim
}, " 签收 ")
])) : vue.createCommentVNode("v-if", true),
]),
vue.createVNode(
_component_uni_popup,
{
@ -15706,7 +15669,7 @@ ${i3}
const address = vue.ref("");
const reason = vue.ref("");
const path = vue.ref([]);
const baseUrl2 = "https://36.112.48.190/jeecg-boot/sys/common/upload/";
const baseUrl2 = "http://10.75.166.174:8080/jeecg-boot/sys/common/upload/";
const imageStyles = {
width: 64,
height: 64,
@ -16115,7 +16078,7 @@ ${i3}
const _sfc_main$j = {
__name: "useredit",
setup(__props) {
const baseUrl2 = "https://36.112.48.190/jeecg-boot/sys/common/upload";
const baseUrl2 = "http://10.75.166.174:8080/jeecg-boot/sys/common/upload";
const store = useStore();
const chooseAvatar = () => {
uni.chooseImage({
@ -19006,7 +18969,7 @@ ${i3}
__definePage("pages/safe/detail", PagesSafeDetail);
__definePage("pages/zhiban/index", PagesZhibanIndex);
__definePage("pages/task/self", PagesTaskSelf);
const baseUrl = "https://36.112.48.190/jeecg-boot/sys/common/static/";
const baseUrl = "http://10.75.166.174:8080/jeecg-boot/sys/common/static/";
const useUpdateApp = defineStore("updateApp", () => {
const updateOptions = vue.reactive({
force: false,