Commit ffd8ea2c by pangchong

feat: 领导批示

parent 53185b82
......@@ -15,8 +15,6 @@ export default {
<style lang="scss">
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
@import 'uview-plus/index.scss';
// 修改uview-plus样式
@import 'mocpStatic/css/uview-plus.scss';
// 加入mocp主题相关样式
@import 'mocpStatic/css/theme.scss';
// 加入mocp字体图标
......
......@@ -26,3 +26,11 @@ export const savaArrangeWorkFeedbackApi = (data, config) => {
config
})
}
export const savaLeaderApprovalApi = (data, config) => {
return http({
method: 'POST',
url: '/technical-support/savaLeaderApproval',
data,
config
})
}
......@@ -39,7 +39,7 @@
<slot name="top"></slot>
</template>
<!-- 滚动内容 -->
<view class="content" :style="getStyle">
<view class="mocp-content" :style="getStyle">
<slot :dataList="dataList" v-if="isDataList"></slot>
<slot></slot>
</view>
......@@ -229,7 +229,34 @@ const handleFooterClick = () => {
// 获取页面栈
const pages = getCurrentPages()
</script>
<style scoped>
<script>
export default {
options: {
styleIsolation: 'shared'
}
}
</script>
<style lang="scss" scoped>
.mocp-content {
// 表单内容
:deep(.u-form-item__body) {
padding: 24rpx 0 !important;
.u-form-item__body__left__content__label {
color: $mocp-text-5 !important;
font-size: 28rpx !important;
}
.u-input__content__field-wrapper__field {
color: $mocp-text-4 !important;
}
.u-textarea {
margin-top: 8rpx;
.u-textarea__field {
font-size: 28rpx !important;
color: $mocp-text-4 !important;
}
}
}
}
.cancel {
font-size: 28rpx;
}
......
......@@ -23,3 +23,8 @@ export const feedbackState = [
{ label: 'OPEN', value: 1 },
{ label: 'CLOSE', value: 2 }
]
export const leaderState = [
{ label: '同意', value: '1' },
{ label: '不同意', value: '0' },
{ label: '部分同意', value: '2' }
]
......@@ -12,9 +12,18 @@ const useBaseStore = defineStore('base', {
},
getters: {},
actions: {
initSysData() {
this.getAircraftNumbers()
this.getBasicParamsList()
async initSysData() {
uni.showLoading({
title: '正在加载系统所有基本参数中,请稍后!',
mask: true
})
try {
await this.getAircraftNumbers()
await this.getBasicParamsList()
uni.hideLoading()
} catch (error) {
uni.hideLoading()
}
},
async getAircraftNumbers() {
const res = await getAircraftNumbersApi({})
......
......@@ -9,29 +9,27 @@
<view class="p">登录你的账户</view>
<view class="txt">请输入账号密码登录</view>
</view>
<view class="mocp-form">
<up-form ref="loginFormRef" labelWidth="auto" :model="loginForm" :rules="rules" label-position="top">
<up-form-item label="账号" prop="username">
<up-input v-model="loginForm.username" placeholder="请输入账号" clearable />
</up-form-item>
<up-form-item label="密码" prop="password">
<up-input v-model="loginForm.password" placeholder="请输入密码" clearable type="password" />
</up-form-item>
<up-form-item label="验证码" prop="verifyCode">
<view class="verify-code">
<up-input v-model="loginForm.verifyCode" placeholder="请输入验证码" style="flex: auto" />
<image
class="verify-code-image"
v-if="loginCode && loginForm.username"
:src="loginCode"
mode="scaleToFill"
@tap="getGifCaptcha"
/>
<view class="verify-code-image" v-else></view>
</view>
</up-form-item>
</up-form>
</view>
<up-form ref="loginFormRef" labelWidth="auto" :model="loginForm" :rules="rules" label-position="top">
<up-form-item label="账号" prop="username">
<up-input v-model="loginForm.username" placeholder="请输入账号" clearable />
</up-form-item>
<up-form-item label="密码" prop="password">
<up-input v-model="loginForm.password" placeholder="请输入密码" clearable type="password" />
</up-form-item>
<up-form-item label="验证码" prop="verifyCode">
<view class="verify-code">
<up-input v-model="loginForm.verifyCode" placeholder="请输入验证码" style="flex: auto" />
<image
class="verify-code-image"
v-if="loginCode && loginForm.username"
:src="loginCode"
mode="scaleToFill"
@tap="getGifCaptcha"
/>
<view class="verify-code-image" v-else></view>
</view>
</up-form-item>
</up-form>
<view class="login-btn">
<global-button size="large" type="primary" @tap="handleLogin" :loading="loading">登录</global-button>
</view>
......
......@@ -5,7 +5,7 @@
:showNavRight="arrangeWorkExtendList.length"
navRightType="icon"
showFooterBtn
footerBtnText="工作反馈"
footerBtnText="领导批示"
@handleRightClick="handleRightClick"
@handleFooterClick="handleFooterClick"
>
......@@ -93,8 +93,21 @@
<global-empty></global-empty>
</view>
</card-details>
<card-details title="领导批示" titleIcon="drive">
<view class="card-empty">
<card-details title="领导批示">
<template v-if="arrangeWorkExtend.approvalTime != 0">
<card-details-item
title="领导批示意见"
:content="useGetDictByValue('leaderState', arrangeWorkExtend.leaderApprovalComments)"
></card-details-item>
<card-details-item title="批示要点" :content="arrangeWorkExtend.approvalContent"></card-details-item>
<card-details-footer
leftLabel="批示人:"
:leftValue="arrangeWorkExtend.approvalUser || '-'"
rightLabel="批示时间:"
:rightValue="timeStampFormat(arrangeWorkExtend.approvalTime) || '-'"
></card-details-footer>
</template>
<view class="card-empty" v-else>
<global-empty></global-empty>
</view>
</card-details>
......@@ -132,7 +145,7 @@ const handleRightClick = () => {
}
//新增
const handleFooterClick = () => {
uni.$mocpJump.navigateTo('/panel/assign-work/edit-work')
uni.$mocpJump.navigateTo('/panel/assign-work/edit-approval')
}
onUnload(() => {
assignWorkStore.$reset()
......
<template>
<global-page title="添加领导批示" navLeftType="text" :showNavRight="true" navRightType="button" navRightText="保存">
<global-page
title="添加领导批示"
navLeftType="text"
:showNavRight="true"
navRightType="button"
navRightText="保存"
@handleRightClick="handleSave"
>
<view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto" ref="formRef">
<up-form-item label="领导批示意见" :borderBottom="true">
<global-picker pickAlign="right" clearable></global-picker>
<up-form labelPosition="left" labelWidth="auto" :model="formData" :rules="rules" ref="formRef">
<up-form-item label="领导批示意见" :borderBottom="true" prop="leaderApprovalComments" required>
<global-picker pickAlign="right" v-model="formData.leaderApprovalComments" clearable dictkey="leaderState"></global-picker>
</up-form-item>
<up-form-item label="批示要点" :borderBottom="true" labelPosition="top">
<up-form-item label="批示要点" :borderBottom="true" labelPosition="top" prop="approvalContent" required>
<up-textarea
v-model.trim="formData.approvalContent"
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
border="none"
......@@ -17,7 +25,63 @@
</global-page>
</template>
<script setup></script>
<script setup>
import { onLoad } from '@dcloudio/uni-app'
import { savaLeaderApprovalApi } from 'mocp/api/assign-work'
import useAssignWorkStore from 'mocp/store/assign-work'
import { storeToRefs } from 'pinia'
import { reactive, ref } from 'vue'
const assignWorkStore = useAssignWorkStore()
const { arrangeWorkExtend } = storeToRefs(assignWorkStore)
const formData = reactive({
leaderApprovalComments: '',
approvalContent: '',
approvalUser: '',
approvalTime: ''
})
const rules = reactive({
leaderApprovalComments: [
{
type: 'number',
required: true,
message: '请选择领导批示意见',
trigger: ['blur', 'change']
}
],
approvalContent: [
{
required: true,
message: '请输入批示要点',
trigger: ['blur', 'change']
}
]
})
//页面初始化
onLoad(() => {
formData.id = arrangeWorkExtend.value.id
formData.workId = arrangeWorkExtend.value.workId
formData.company = arrangeWorkExtend.value.company
formData.leaderApprovalComments = arrangeWorkExtend.value.leaderApprovalComments
formData.approvalContent = arrangeWorkExtend.value.approvalContent
formData.approvalUser = arrangeWorkExtend.value.approvalUser
formData.approvalTime = arrangeWorkExtend.value.approvalTime
})
//保存
const formRef = ref()
const handleSave = async () => {
await formRef.value?.validate()
const res = await savaLeaderApprovalApi(formData, { loading: true })
if (res.code == 200) {
uni.$mocpJump.navigateBack()
uni.$mocpMessage.showToast(res.message)
//更新当前责任单位详情
assignWorkStore.setState('arrangeWorkExtend', res.data)
} else {
uni.$mocpMessage.showToast(res.message)
}
}
</script>
<style lang="scss" scoped>
.mocp-form {
background: #fff;
......
......@@ -10,33 +10,31 @@
footerBtnText="添加分解计划"
@handleFooterClick="handleFooterClick"
>
<view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto">
<template v-for="(item, index) in formData" :key="index">
<view class="form">
<up-form-item
:label="formData.length > 1 ? '分解计划' + (index + 1) : '分解计划'"
:borderBottom="true"
labelPosition="top"
required
>
<view class="delete" v-if="formData.length > 1" @tap="handleDelete(index)">
<global-icon icon="delete-01" color="#F53F3F"></global-icon>
</view>
<up-textarea
v-model="item.plan"
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
border="none"
></up-textarea>
</up-form-item>
<up-form-item label="完成时限" :borderBottom="true">
<global-date pickAlign="right" clearable placeholder="请选择日期" v-model="item.time" emptyValue="null"></global-date>
</up-form-item>
</view>
</template>
</up-form>
</view>
<up-form labelPosition="left" labelWidth="auto">
<template v-for="(item, index) in formData" :key="index">
<view class="form">
<up-form-item
:label="formData.length > 1 ? '分解计划' + (index + 1) : '分解计划'"
:borderBottom="true"
labelPosition="top"
required
>
<view class="delete" v-if="formData.length > 1" @tap="handleDelete(index)">
<global-icon icon="delete-01" color="#F53F3F"></global-icon>
</view>
<up-textarea
v-model="item.plan"
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
border="none"
></up-textarea>
</up-form-item>
<up-form-item label="完成时限" :borderBottom="true">
<global-date pickAlign="right" clearable placeholder="请选择日期" v-model="item.time" emptyValue="null"></global-date>
</up-form-item>
</view>
</template>
</up-form>
<up-modal
:width="250"
content="确认删除吗?删除后不可恢复!"
......
<template>
<global-page title="跟踪反馈" navLeftType="text" :showNavRight="true" navRightType="button" navRightText="保存">
<view class="mocp-form">
<up-form labelPosition="left" labelWidth="auto" ref="formRef">
<up-form-item label="跟踪反馈" :borderBottom="true" labelPosition="top">
<up-textarea
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
border="none"
></up-textarea>
</up-form-item>
</up-form>
</view>
<up-form labelPosition="left" labelWidth="auto" ref="formRef">
<up-form-item label="跟踪反馈" :borderBottom="true" labelPosition="top">
<up-textarea
placeholder="一段很长很长的内容文字,长文本自动换行,该选项的描述是一段很长的内容"
:height="40"
border="none"
></up-textarea>
</up-form-item>
</up-form>
</global-page>
</template>
......
<template>
<image class="page-bg" src="/static/mocp/image/panel/page-bg.png" />
<global-page :showNavbar="false">
<!-- 导航栏 -->
<template #top>
<image class="page-bg" src="/static/mocp/image/panel/page-bg.png" />
<panel-navbar></panel-navbar>
</template>
<!-- 菜单图标 -->
......@@ -24,6 +24,10 @@ baseStore.initSysData()
position: absolute;
width: 100%;
height: 100%;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: -1;
}
</style>
// 表单
.mocp-form {
.u-form-item__body {
padding: 24rpx 0 !important;
.u-form-item__body__left__content__label {
color: $mocp-text-5 !important;
font-size: 28rpx !important;
}
.u-input__content__field-wrapper__field {
color: $mocp-text-4 !important;
}
.u-textarea {
margin-top: 8rpx;
.u-textarea__field {
font-size: 28rpx !important;
color: $mocp-text-4 !important;
}
}
}
}
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