Commit 1ea5a41b authored by 王李辉's avatar 王李辉

巡查模块

parent 706d2fc4
Pipeline #8209 passed with stage
in 5 minutes and 6 seconds
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
"axios": "^0.19.2", "axios": "^0.19.2",
"better-scroll": "^1.15.2", "better-scroll": "^1.15.2",
"core-js": "^3.4.3", "core-js": "^3.4.3",
"echarts": "^5.3.2",
"js-cookie": "^2.2.1", "js-cookie": "^2.2.1",
"js-md5": "^0.7.3", "js-md5": "^0.7.3",
"lib-flexible": "^0.3.2", "lib-flexible": "^0.3.2",
......
<template>
<div>
<LHeader :text="text"></LHeader>
<!-- 内容列表 -->
<div class="con-list">
<!-- v-for="(item, index) in messageList" :key="index" -->
<van-cell-group inset>
<van-row gutter class="cont-operation">
<van-col span="24">申请原因</van-col>
</van-row>
<van-row gutter class="cont-operation" style="margin-top: 10px;">
<van-col span="24">
<van-radio-group v-model="radio" direction="horizontal" @change="operation">
<van-radio name="1" shape="square">快捷申请</van-radio>
<van-radio name="2" shape="square">自定义</van-radio>
</van-radio-group>
</van-col>
</van-row>
</van-cell-group>
</div>
<van-form
style="margin: 0 10px"
@submit="onSubmit"
:scroll-to-error="true"
:show-error="false"
validate-trigger="onSubmit"
>
<van-field
v-if="isShow"
readonly
clickable
required
label="申请原因"
name="applyReason"
:value="applyReason"
placeholder="请选择"
@click="showReason = true"
/>
<van-popup v-model="showReason" position="bottom">
<van-picker
show-toolbar
:columns="columnsReason"
@confirm="onConSetReason"
@cancel="showReason = false"
/>
</van-popup>
<van-field
v-if="!isShow"
v-model="measures"
name="measures"
label="应急措施"
type="textarea"
rows="3"
autosize
placeholder="请输入"
/>
</van-form>
<div class="operation-btn">
<van-button
block
type="info"
plain
native-type="button"
style="border-radius: 5px; background-color: #f0f1f5; margin-bottom: 10px;"
@click="cancel"
>取消</van-button>
<van-button
block
type="info"
native-type="submit"
style="border-radius: 5px;"
@click="save"
>提交</van-button>
</div>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
import { getFun, postFun } from "@/service/table.js";
export default {
name: "cancel-patrol",
components: {
LHeader
},
data() {
return {
text: "取消申请",
radio: "1",
applyReason: "",
setRank: "", //风险定级
showReason: false,
columnsReason: ["今日请假", "今日外出、离岗", "今日调休"],
measures: "",
isShow: true
};
},
methods: {
operation() {
if (this.radio == "1") {
this.isShow = true;
} else {
this.isShow = false;
}
},
onConSetReason(value) {
this.showReason = false;
this.applyReason = value;
},
onSubmit(values) {
// 放图片路径 因为formdat存数组会自动变成字符串所以次用这种追加字段的方式
console.log(values);
// this.$toast.loading({
// message: "提交中...",
// forbidClick: true,
// loadingType: "spinner",
// duration: 0,
// });
// postReAdd(url, formdata)
// .then((res) => {
// this.$toast.clear();
// this.$toast.success({
// message: "提交成功",
// duration: 2000,
// });
// history.go(-1);
// })
// .catch(() => {
// this.$toast.clear();
// this.$toast.fail("提交失败,请稍后再试");
// });
// this.$toast.clear();
},
save(){},
cancel() {
this.$router.go(-1);
}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.con-list {
padding: 0;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
margin-bottom: 0.26667rem;
padding: 0.25rem;
font-size: 0.4rem;
position: relative;
border-radius: 4%;
box-shadow: 0px 0px 10px 2px #f3f3f3;
width: 90%;
margin: 0.4rem auto;
.van-row {
font-size: 0.4rem;
line-height: 0.8rem;
margin-bottom: 0;
}
}
}
.operation-btn {
width: 95%;
margin: 20px 10px 10px;
position: fixed;
bottom: 50px;
right: 0;
left: 0;
}
</style>
<template>
<div>
<van-sticky>
<LHeader :text="text"></LHeader>
</van-sticky>
<!-- tab标签 -->
<van-tabs
v-model="active"
@change="postList"
color="#2980f7"
animated
:sticky="true"
offset-top="1.5rem"
>
<van-tab v-for="(item, key) in tabs" :key="key" :title="item.title">
<!-- 内容列表 -->
<div class="con-list">
<!-- v-for="(item, index) in messageList" :key="index" -->
<van-cell-group inset>
<van-row gutter>
<van-col span="18">
<span class="con_title">日查</span>
<span>&nbsp;&nbsp;制度、规程、方案</span>
</van-col>
<van-col span="6" class="con_type con_right">危险隐患</van-col>
</van-row>
<van-row gutter>
<van-col span="24">应建立地下有限空间作业安全生产责任制、安全生产规章制度和操作规程。</van-col>
</van-row>
<van-row gutter class="cont-operation">
<van-col span="10" class="con_type">法律依据/出处</van-col>
<van-col span="14" class="con_right">
<van-radio-group
v-model="radio"
direction="horizontal"
@change="operation"
>
<van-radio name="1" shape="square">合格</van-radio>
<van-radio name="2" shape="square">不合格</van-radio>
</van-radio-group>
</van-col>
</van-row>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<!-- <div
style="
width: 100%;
text-align: center;
font-size: 0.48rem;
position: fixed;
top: 30%;
"
v-if="messageList.length == 0"
>暂无数据</div>-->
</van-tab>
</van-tabs>
<div class="operation-btn">
<van-button
block
type="info"
plain
native-type="button"
style="border-radius: 5px; background-color: #f0f1f5; margin-bottom: 10px;"
@click="save"
>保存</van-button>
<van-button
block
type="info"
native-type="submit"
style="border-radius: 5px;"
@click="finish"
>结束巡查</van-button>
</div>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
import { getFun, postFun } from "@/service/table.js";
export default {
name: "implement",
components: {
LHeader
},
data() {
return {
text: "执行巡查",
messageList: [],
active: 0,
radio: "1",
tabs: [
{
title: "安全管理类",
api: "/rectification/list1"
},
{
title: "文明施工类",
api: "/rectification/list2"
},
{
title: "临时用电类",
api: "/rectification/finishList"
}
]
};
},
created() {
// this.postList();
},
methods: {
postList(val) {
console.log(this.active);
// this.$toast.loading({
// message: "加载中...",
// forbidClick: true,
// loadingType: "spinner",
// duration: 0
// });
// let formdata = new FormData();
// postFun(this.tabs[this.active]["api"], formdata)
// .then(res => {
// console.log(res);
// this.$toast.clear();
// this.messageList = res.rows || res.data;
// })
// .catch(err => {
// console.log(err);
// this.$toast.clear();
// this.$toast.fail("加载失败,请稍后再试");
// });
},
operation() {
// 如果不合格跳转到隐患上报页面
if (this.radio == "2") {
this.$router.push({
name: "add-danger"
});
}
},
save() {},
finish() {}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
#app {
font-family: "";
color: #2c3e50;
}
.con-list {
padding: 0;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
margin-bottom: 0.26667rem;
padding: 0.25rem;
font-size: 0.4rem;
position: relative;
border-radius: 4%;
box-shadow: 0px 0px 10px 2px #f3f3f3;
width: 90%;
margin: 0.4rem auto;
.van-row {
font-size: 0.4rem;
line-height: 0.8rem;
margin-bottom: 0;
.con_title {
color: #05a7f0;
font-weight: 600;
}
.con_type {
color: #05a7f0;
padding-right: 10px;
}
}
.con_right {
display: flex;
justify-content: flex-end;
}
.cont-operation {
display: flex;
align-items: center;
margin-top: 10px;
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
}
/deep/.van-tab__pane-wrapper {
min-height: 8rem;
}
.van-tabs__track {
min-height: 3rem;
}
.operation-btn {
width: 95%;
margin: 20px 10px 10px;
position: fixed;
bottom: 50px;
right: 0;
left: 0;
}
</style>
<template>
<div>
<LHeader :text="text"></LHeader>
<!-- 内容列表 -->
<div class="con-list">
<van-cell-group
inset
v-for="(item, index) in contentList"
:key="index"
@click="onClick(item.content)"
>
<div class="icon-wrap">
<span class="icon-img">
<van-image
width="35"
height="35"
style="margin: 0 10px;overflow: hidden; border-radius: 5px;"
:src="item.imgUrl"
/>
</span>
{{ item.content }}
</div>
</van-cell-group>
</div>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
export default {
name: "danger-patrol",
components: {
LHeader
},
data() {
return {
text: "危险作业申请",
contentList: [
{
title: "A1",
imgUrl: require("@/assets/dangerPatrol/patrol-icon.png"),
content: "执行巡查"
},
{
title: "A2",
imgUrl: require("@/assets/dangerPatrol/patrol-icon.png"),
content: "取消巡查"
},
{
title: "A1",
imgUrl: require("@/assets/dangerPatrol/patrol-icon.png"),
content: "巡查记录"
},
{
title: "A2",
imgUrl: require("@/assets/dangerPatrol/patrol-icon.png"),
content: "巡查统计"
}
]
};
},
mounted() {},
methods: {
onClick(val) {
if (val == "执行巡查") {
this.$router.push({
name: "implement"
});
} else if (val == "取消巡查") {
this.$router.push({
name: "cancel-patrol"
});
} else if (val == "巡查记录") {
this.$router.push({
name: "record-patrol"
});
} else if (val == "巡查统计") {
this.$router.push({
name: "statistics"
});
}
}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
.van-cell-group--inset {
height: 2.266667rem;
line-height: 2.266667rem;
font-size: 0.4rem;
font-weight: bolder;
margin: 0.266667rem;
padding-left: 0.666667rem;
color: #3499ff;
.icon-wrap {
display: flex;
align-items: center;
.icon-img {
margin-right: 0.533333rem;
display: inherit;
}
}
}
</style>
<template>
<div>
<LHeader :text="text"></LHeader>
<!-- 内容列表 -->
<!-- 接口对接4 START -->
<div class="con-list">
<van-cell-group inset>
<van-row gutte>
<van-col span="24">项目名称: XXX回迁房新建工程</van-col>
</van-row>
<van-row gutte>
<van-col span="24">项目名称: 专职安全员</van-col>
</van-row>
<van-row gutte>
<van-col span="12">开始巡查时间: 09:30</van-col>
<van-col span="12" class="cont-end">结束巡查时间: 11:25</van-col>
</van-row>
<van-row gutter>
<van-col span="24">巡查时长: 2小时13分</van-col>
</van-row>
<van-row gutter>
<van-col span="24">上报隐患: 8</van-col>
</van-row>
<van-row gutter>
<van-col span="24">确认隐患: 5</van-col>
</van-row>
</van-cell-group>
<van-cell-group inset>
<van-row gutte>
<van-col span="12">制度、规程、方案</van-col>
<van-col span="12" class="cont-end affirm-status">已认定</van-col>
</van-row>
<van-row gutter>
<van-col span="24">应建立地下有限空间作业安全生产责任制、安全生产规章制度和操作规程。</van-col>
</van-row>
</van-cell-group>
<van-cell-group inset>
<van-row gutte>
<van-col span="12">制度、规程、方案</van-col>
<van-col span="12" class="cont-end back-status">已退回</van-col>
</van-row>
<van-row gutter>
<van-col span="24">应建立地下有限空间作业安全生产责任制、安全生产规章制度和操作规程。</van-col>
</van-row>
</van-cell-group>
</div>
<tab-bar :index="1"></tab-bar>
</div>
</template>
<script>
import tabBar from "@/components/TabBar";
import LHeader from "@/components/header.vue";
import { getFun, postFun } from "@/service/table.js";
export default {
name: "record-detail",
components: {
LHeader,
tabBar
},
data() {
return {
text: "记录详情",
messageList: [],
isHaveNews: false
};
},
created() {},
methods: {}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
#app {
font-family: "";
color: #2c3e50;
}
.con-list {
padding: 0;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
margin-bottom: 0.26667rem;
padding: 0.25rem;
font-size: 0.4rem;
position: relative;
border-radius: 4%;
box-shadow: 0px 0px 10px 2px #f3f3f3;
width: 90%;
margin: 0.4rem auto;
.van-row {
font-size: 0.4rem;
line-height: 0.8rem;
margin-bottom: 0;
.cont-end{
display: flex;
justify-content: flex-end;
}
.affirm-status{
color: #008080;
}
.back-status{
color: #f59a83;
}
}
}
}
</style>
<template>
<div>
<LHeader :text="text"></LHeader>
<van-sticky offset-top="1.5rem">
<van-search v-model="searchValue" show-action placeholder="请输入搜索内容" @search="onSearch">
<template #action>
<div @click="onSearch">搜索</div>
</template>
</van-search>
</van-sticky>
<!-- 内容列表 -->
<!-- 接口对接4 START -->
<div class="con-list" @touchmove="showIndex = null">
<!-- v-for="(item, index) in messageList"
:key="index"
@click="touchstart(index, item)"-->
<van-cell-group inset>
<van-row gutte>
<van-col span="12">
<span class="record-time">2022年4月8日</span>
</van-col>
<van-col span="12" class="cont-end record-status">已执行</van-col>
</van-row>
<van-row gutte>
<van-col span="12">开始时间: 09:30</van-col>
<van-col span="12" class="cont-end">结束巡查时间: 11:25</van-col>
</van-row>
<van-row gutter>
<van-col span="24">巡查时长: 2小时13分</van-col>
</van-row>
<van-row gutter>
<van-col span="24">上报隐患: 8</van-col>
</van-row>
<van-row gutter>
<van-col span="24">确认隐患: 5</van-col>
</van-row>
<!-- 长按显示遮罩层 -->
<!-- :show="showIndex == index" -->
<van-overlay :show="true">
<div class="wrapper" @click.stop="showIndex = null">
<van-button round type="primary" @click="goDetail(item)">详情</van-button>
</div>
</van-overlay>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<!-- v-if="isHaveNews" -->
<div
style="width: 100%;text-align: center; font-size: .48rem;position: fixed; top: 30%;"
v-if="false"
>暂无数据</div>
<tab-bar :index="1"></tab-bar>
</div>
</template>
<script>
import tabBar from "@/components/TabBar";
import LHeader from "@/components/header.vue";
import { getFun, postFun } from "@/service/table.js";
import { superviseSABlist } from "@/service/danger";
/*接口对接2 START*/
// 例子:
// import {
// getFormList,
// postHdTyp,
// postHdName,
// postHdInventories,
// postHdRiskSource,
// postHdShowPeople,
// postHdReportAdd,
// dangerReturnEcho,
// } from "@/service/danger";
/*接口对接2 END*/
export default {
name: "record-patrol",
components: {
LHeader,
tabBar
},
data() {
return {
text: "企业级督办",
searchValue: "",
messageList: [],
isHaveNews: false,
showIndex: null // 是否显示遮罩层
};
},
created() {
this.getList();
},
methods: {
getList(select = "") {
this.$toast.loading({
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0
});
let formdata = new FormData();
formdata.append("select", select);
superviseSABlist("/supervise/SABlist", formdata)
.then(res => {
this.$toast.clear();
this.messageList = res.data;
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
});
},
onSearch(val) {
this.getList(this.searchValue);
},
touchstart(index, item) {
if (this.showIndex != null) {
this.showIndex = null;
return;
}
this.showIndex = index;
},
// 详情
goDetail(data) {
this.$router.push({
name: "record-detail"
});
// 先跳转到详情页
// this.$router.push({
// name: "normal-detail",
// params: {
// id: data.pid
// }
// });
// this.showIndex = null;
}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
#app {
font-family: "";
color: #2c3e50;
}
.con-list {
padding: 0;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
margin-bottom: 0.26667rem;
padding: 0.25rem;
font-size: 0.4rem;
position: relative;
border-radius: 4%;
box-shadow: 0px 0px 10px 2px #f3f3f3;
width: 90%;
margin: 0.4rem auto;
.van-row {
font-size: 0.4rem;
line-height: 0.8rem;
margin-bottom: 0;
.record-time {
color: #f59a83;
}
.record-status {
color: #008080;
}
.cont-end {
display: flex;
justify-content: flex-end;
}
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
}
</style>
<template>
<div>
<LHeader :text="text"></LHeader>
<!-- 内容列表 -->
<!-- 接口对接4 START -->
<div class="con-list">
<van-cell-group inset>
<van-row gutte>
<van-col span="24">总巡查次数:85次</van-col>
</van-row>
<van-row gutte>
<van-col span="24">认定隐患数量: 25个</van-col>
</van-row>
<van-tabs @click="onClick" color="#2980f7">
<van-tab title="隐患上报统计">
<van-row gutte>
<van-col span="24" class="excel-title">
<span>月巡查</span>
<span>周巡查</span>
</van-col>
</van-row>
<!-- echarts图 -->
<van-row gutte>
<van-col span="24" class="excel-title">
<div id="box" style="width: 100%;height: 300px;"></div>
</van-col>
</van-row>
</van-tab>
<van-tab title="巡查时长统计">2</van-tab>
</van-tabs>
</van-cell-group>
</div>
<tab-bar :index="1"></tab-bar>
</div>
</template>
<script>
import tabBar from "@/components/TabBar";
import LHeader from "@/components/header.vue";
import { getFun, postFun } from "@/service/table.js";
import * as echarts from "echarts";
export default {
name: "statistics",
components: {
LHeader,
tabBar
},
data() {
return {
text: "巡查统计",
messageList: [],
isHaveNews: false
};
},
mounted() {
this.$nextTick(() => {
this.myEcharts();
});
},
methods: {
onClick(name, title) {
console.log(title);
},
myEcharts() {
console.log(echarts);
var myChart = echarts.init(document.getElementById("box"));
//配置图表
var option = {
xAxis: {
type: "category",
data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
},
yAxis: {
type: "value"
},
series: [
{
data: [120, 200, 150, 80, 70, 110, 130],
type: "bar"
}
]
};
myChart.setOption(option);
}
}
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
#app {
font-family: "";
color: #2c3e50;
}
.con-list {
padding: 0;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
margin-bottom: 0.26667rem;
padding: 0.25rem;
font-size: 0.4rem;
position: relative;
border-radius: 4%;
box-shadow: 0px 0px 10px 2px #f3f3f3;
width: 90%;
margin: 0.4rem auto;
.van-row {
font-size: 0.4rem;
line-height: 0.8rem;
margin-bottom: 0;
.excel-title {
display: flex;
justify-content: space-evenly;
margin-top: 15px;
}
}
}
}
</style>
<template>
<div>
<van-sticky offset-top="0">
<LHeader :text="text"></LHeader>
</van-sticky>
<van-sticky offset-top="1.5rem">
<van-search
v-model="searchValue"
show-action
placeholder="请输入搜索内容"
@search="onSearch"
>
<template #action>
<div @click="onSearch">搜索</div>
</template>
</van-search>
</van-sticky>
<!-- 内容列表 -->
<!-- 接口对接4 START -->
<van-tabs
v-model="active"
@change="
getList(searchValue);
showIndex = null;
"
color="#2980f7"
animated
:sticky="true"
offset-top="2.93rem"
>
<van-tab v-for="(item, key) in tabs" :key="key" :title="item.title">
<div
class="con-list"
@touchmove="showIndex = null"
v-if="key == active"
>
<van-cell-group
inset
v-for="(item, index) in messageList"
:key="index"
@click="touchstart(index, item)"
>
<van-row gutter="">
<van-col span="7">隐患单编号:</van-col>
<van-col span="17">{{
item.businessId || item.pid
}}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7">所属项目:</van-col>
<van-col span="17">{{ item.proId }}</van-col>
</van-row>
<van-row gutter="">
<van-col span="7" v-if="item.hdLev"
>隐患级别:</van-col
>
<van-col span="17">{{
item.hdLev | dangerText
}}</van-col>
</van-row>
<van-row gutter="" v-show="item.examineResult">
<van-col span="7">是否通过:</van-col>
<van-col span="17">{{
item.examineResult == 1 ? "是" : "否"
}}</van-col>
</van-row>
<van-row gutter="" v-show="item.examineReason">
<van-col span="7">意见:</van-col>
<van-col span="17">{{
item.examineReason
}}</van-col>
</van-row>
<van-row gutter="" v-if="item.taskName">
<van-col span="7">工单状态:</van-col>
<van-col span="17">{{ item.taskName }}</van-col>
</van-row>
<!-- 长按显示遮罩层 -->
<template>
<van-overlay :show="showIndex == index">
<div
class="wrapper"
@click.stop="showIndex = null"
>
<van-button
round
type="primary"
@click="goDetail(item, 'normal-detail')"
>隐患详情</van-button
>
<van-button
round
type="info"
@click="goConfirm(item)"
v-if="active == 0"
>审批
</van-button>
<van-button
round
type="info"
@click="
goDetail(
item,
'finish-delay-detail'
)
"
v-if="active == 1"
>延期查看</van-button
>
</div>
</van-overlay>
</template>
</van-cell-group>
</div>
<!-- 暂无数据 -->
<div
style="
width: 100%;
text-align: center;
font-size: 0.48rem;
position: fixed;
top: 30%;
"
v-if="messageList.length == 0"
>
暂无数据
</div>
</van-tab>
</van-tabs>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
import { getFun, postFun } from "@/service/table.js";
import { delayList } from "@/service/danger";
export default {
name:'delay-approval',
components: {
LHeader,
},
data() {
return {
text: "延期审批",
searchValue: "",
isHaveNews: false,
messageList: [],
Loop: "", // 定时器
showIndex: null, // 是否显示遮罩层
active: 0,
tabs: [
{
title: "待审批",
api: "/delayApply/list",
},
{
title: "已审批",
api: "/delayApply/finishList",
},
],
};
},
created() {
this.getList();
},
methods: {
getList(select = "") {
/*接口对接3 START*/
// 例子:
this.$toast.loading({
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0,
});
let formdata = new FormData();
formdata.append("select", select);
postFun(this.tabs[this.active]["api"], formdata)
.then((res) => {
this.$toast.clear();
this.messageList = res.rows || res.data;
// 判断有无数据返回
if (this.messageList.length == 0) {
this.isHaveNews = true;
}
})
.catch((err) => {
console.log(err);
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
});
/*接口对接3 END*/
},
onSearch() {
this.getList(this.searchValue);
},
touchstart(index, item) {
if (this.showIndex != null) {
this.showIndex = null;
return;
}
this.showIndex = index;
},
// 详情
goDetail(data, name = "normal-detail") {
let id =
name == "normal-detail" ? data.businessId || data.pid : data.id;
this.$router.push({
name,
params: {
id,
},
});
this.showIndex = null;
},
// 审批
goConfirm(data) {
this.$router.push({
name: "ratify-info",
params: {
taskId: data.taskId,
},
});
this.showIndex = null;
},
},
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
#app {
font-family: "";
color: #2c3e50;
}
.con-list {
padding: 0;
background-color: #f0f1f5;
.van-cell-group--inset {
margin: 0;
margin-bottom: 0.26667rem;
padding: 0.25rem;
font-size: 0.4rem;
position: relative;
border-radius: 4%;
box-shadow: 0px 0px 10px 2px #f3f3f3;
width: 90%;
margin: 0.4rem auto;
.van-row {
font-size: 0.4rem;
line-height: 0.8rem;
margin-bottom: 0;
}
.van-overlay {
position: absolute;
.wrapper {
display: flex;
align-items: center;
justify-content: space-evenly;
height: 100%;
}
}
}
}
/deep/.van-tab__pane-wrapper {
min-height: 8rem;
}
.van-tabs__track {
min-height: 3rem;
}
</style>
<template>
<div>
<LHeader :text="text"></LHeader>
<van-form
@submit="onSubmit"
:show-error="false"
:scroll-to-error="true"
validate-trigger="onSubmit"
>
<van-field
v-model="applyDate"
readonly
name="applyDate"
label="延期时间"
placeholder="空"
/>
<van-field
v-model="applyReason"
readonly
label="延期理由"
name="applyReason"
rows="1"
autosize
type="textarea"
placeholder="空"
/>
<van-field name="isAgree" label="延期是否通过">
<template #input>
<van-radio-group
v-model="isAgree"
direction="horizontal"
@change="selectResult"
>
<van-radio name="1">通过</van-radio>
<van-radio name="0">退回</van-radio>
</van-radio-group>
</template>
</van-field>
<van-field
v-model="opinion"
label='审批意见'
name="examineReason"
rows="3"
type="textarea"
placeholder="请输入"
required
:rules="[{ required: true, message: '理由或者意见不能为空' }]"
/>
<div style="margin: 16px">
<van-button round block type="info" native-type="submit"
>保存</van-button
>
</div>
</van-form>
<div style="margin: 10px 16px 0px; padding-bottom: 16px">
<van-button round block type="warning" @click.native="cancel"
>取消</van-button
>
</div>
</div>
</template>
<script>
import LHeader from "@/components/header.vue";
import {getFun,postFun} from "@/service/table.js";
import { delayReturn } from "@/service/danger";
import { delayEdit } from "@/service/danger";
export default {
components: {
LHeader,
},
data() {
return {
pid:'',
id:'',
text: "延期审批",
taskId: "",
delayTime: "", // 延迟时间
showDelayTime: false,
delayApply: "", // 延迟理由
isAgree: '1', // 延期是否通过
opinion: "", //理由或者意见
applyDate: "", //延期时间
applyReason: "", //延期理由
};
},
created() {
this.taskId = this.$route.params.taskId;
this.getReturnEcho();
},
methods: {
onSubmit(values) {
this.$toast.loading({
message: "提交中...",
forbidClick: true,
loadingType: "spinner",
duration: 0,
});
// console.log(this.isAgree)
let formdata = new FormData();
formdata.append("examineResult", this.isAgree*1);
formdata.append("examineReason", values.examineReason);
formdata.append("taskId", this.taskId);
formdata.append("pid", this.pid);
formdata.append('applyDate',this.applyDate);
formdata.append('id',this.id);
delayEdit(`/delayApply/edit`, formdata)
.then((res) => {
this.$toast.clear();
this.$toast.success({
message: "提交成功",
duration: 2000,
});
history.go(-1);
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("提交失败,请稍后再试");
});
},
// 请求已退回详情数据
getReturnEcho() {
this.$toast.loading({
message: "加载中...",
forbidClick: true,
loadingType: "spinner",
duration: 0,
});
delayReturn(`/delayApply/edit/${this.taskId}`)
.then((res) => {
this.$toast.clear();
// 对数据进行赋值
this.applyDate = res.data.delayApply.applyDate;
this.applyReason = res.data.delayApply.applyReason;
this.pid=res.data.delayApply.pid;
this.id=res.data.delayApply.id;
})
.catch(() => {
this.$toast.clear();
this.$toast.fail("加载失败,请稍后再试");
});
},
selectResult(val) {
this.isAgree = val;
},
cancel() {
this.$router.go(-1);
},
},
};
</script>
<style lang="less" scoped>
/* @import url(); 引入css类 */
</style>
module.exports = {
devServer: {
open: false,
// 跨域
proxy: {
'/app-api': {
target: 'http://192.168.124.7:8096',
// changeOrigin: true,
// logLevel:'debug',
}
},
https: true
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment