Commit 072e77a0 authored by 刘怀志's avatar 刘怀志

feat(审批详情):追溯审批1

parent 106e6be8
...@@ -153,3 +153,19 @@ export function getTpmProcessDetail(businessId) { ...@@ -153,3 +153,19 @@ export function getTpmProcessDetail(businessId) {
} }
}) })
} }
export function getCompletionDetail(businessId) {
return request({
url: '/traceability/getCompletion/'+businessId,
method: 'get',
})
}
export function processCompletionApproval(approve) {
return request({
url: '/traceability/processCompletionApproval',
method: 'post',
data: approve,
headers: {
'Content-Type': 'application/json;charset=UTF-8' // 接口修改传参类型
}
})
}
\ No newline at end of file
...@@ -96,7 +96,7 @@ export default { ...@@ -96,7 +96,7 @@ export default {
page: 1, page: 1,
rows: 10, rows: 10,
mesType: '1', mesType: '1',
processGroup: '1', processGroup: '1'
}, },
defaultPageSize: 10, defaultPageSize: 10,
// 底部加载 // 底部加载
...@@ -129,14 +129,14 @@ export default { ...@@ -129,14 +129,14 @@ export default {
methods: { methods: {
goDetail(processId, processCode, processStatus, allowApprove, processName) { goDetail(processId, processCode, processStatus, allowApprove, processName) {
let path = '' let path = ''
if (this.processCode === '00016' || this.processCode === '00017') { if (processCode === '00016' || processCode === '00017') {
// 00016(铸造科对发动机装配科发起追溯) 00017(机加工科对发动机装配科发起追溯) => drawerShowEngineTrace // 00016(铸造科对发动机装配科发起追溯) 00017(机加工科对发动机装配科发起追溯) => drawerShowEngineTrace
path = 'drawerShowEngineTrace' path = 'drawerShowEngineTrace'
} else if (this.processCode !== '00019') { } else if (processCode !== '00019') {
// processCode.value !== '00019' =>drawerShow // processCode.value !== '00019' =>drawerShow
path = 'drawerShow' path = 'drawerShow'
} else { } else {
console.log('3', this.processCode) console.log('3', processCode)
// 00019(追溯完成度异常提醒) => drawerShowTraceError // 00019(追溯完成度异常提醒) => drawerShowTraceError
path = 'drawerShowTraceError' path = 'drawerShowTraceError'
} }
......
...@@ -423,8 +423,8 @@ ...@@ -423,8 +423,8 @@
></u-datetime-picker> ></u-datetime-picker>
<!-- 按钮区域 --> <!-- 按钮区域 -->
<view class="btns-container"> <view class="btns-container">
<view class="btn reject-btn" @click="handleClose('REJECT')"></view> <view class="btn reject-btn" v-if="processStatus && isUpdate" @click="handleClose('REJECT')"></view>
<view class="btn approve-btn" :loading="btnLoading" @click="handleConfirm('CONSENT')"> 确定 </view> <view class="btn approve-btn" v-if="processStatus && isUpdate" :loading="btnLoading" @click="handleConfirm('CONSENT')"> 确定 </view>
</view> </view>
</view> </view>
</view> </view>
...@@ -453,7 +453,7 @@ ...@@ -453,7 +453,7 @@
this.processId = option.processId; this.processId = option.processId;
this.processCode = option.processCode; this.processCode = option.processCode;
this.processStatus = option.processStatus; this.processStatus = option.processStatus;
this.isUpdate = option.allowApprove; this.isUpdate = option.allowApprove && option.processStatus === '0';
this.processName = option.processName; this.processName = option.processName;
this.getList(); this.getList();
this.getInstanceDetail(); this.getInstanceDetail();
......
<!-- 00019(追溯完成度异常提醒) 审批详情 --> <!-- 00019(追溯完成度异常提醒) 审批详情 -->
<template> <template>
<view class="base-detail"> <view class="base-detail">
<ya-navbar title="审批详情drawerShowTraceError" :left-icon-color="'#fff'" :bg-style="'#333399'" <ya-navbar
:title-style="'color: #fff;font-weight: 500;font-size: 35rpx;'" /> title="审批详情"
:left-icon-color="'#fff'"
:bg-style="'#333399'"
:title-style="'color: #fff;font-weight: 500;font-size: 35rpx;'"
/>
<view class="container"> <view class="container">
<view class="title"> <view class="title">
基础数据变更({{ label }} {{ processName }}
</view> </view>
<!-- 步骤图区 --> <!-- 步骤图区 -->
<view class="step-container"> <view class="step-container">
<vertical-steps :steps="steps" :current-step="1"> <vertical-steps :steps="steps" :current-step="1">
<!-- 自定义内容 --> <!-- 自定义内容 -->
<template v-for="(step, index) in steps" #[`content-${index}`]> <template v-for="(step, index) in steps" #[`content-${index}`]>
<!-- 发起人 --> <!-- 发起人 -->
...@@ -18,27 +21,33 @@ ...@@ -18,27 +21,33 @@
<view class="custom-table"> <view class="custom-table">
<view class="subTitleClass"> <view class="subTitleClass">
<view class="subRow"> <view class="subRow">
<view class="subTitle"> <view class="subTitle"> 追溯批次号 </view>
员工姓名
</view>
<view class="subContent"> <view class="subContent">
{{ step.content.userName }} {{ instanceDetail.formDto.traceableNumber || '-' }}
</view> </view>
</view> </view>
<view class="subRow"> <view class="subRow">
<view class="subTitle"> <view class="subTitle"> 发起科室 </view>
员工职级
</view>
<view class="subContent"> <view class="subContent">
{{ getLabelByValue(jobLevelList, step.content.rank) }} {{ getLabelByValue(
initiateDepartmentList,
instanceDetail.formDto.initiateDepartment
) || '-' }}
</view> </view>
</view> </view>
<view class="subRow"> <view class="subRow">
<view class="subTitle"> <view class="subTitle"> 发起人 </view>
创建日期 <view class="subContent">
{{ instanceDetail.formDto.initiateUserName }}
</view>
</view> </view>
<view class="subRow">
<view class="subTitle"> 追溯部品类型 </view>
<view class="subContent"> <view class="subContent">
{{ parseTimeA(step.content.createTime, 'YYYY/MM/DD HH:mm') }} {{getLabelByValue(
traceablePartsTypeList,
instanceDetail.formDto.partType
) }}
</view> </view>
</view> </view>
</view> </view>
...@@ -46,95 +55,155 @@ ...@@ -46,95 +55,155 @@
</template> </template>
<!-- 审批人 --> <!-- 审批人 -->
<template v-else> <template v-else>
<view class="custom-table"> <u-collapse
<view class="subTitleClass"> :border="false"
<view class="subRow"> @change="change"
<view class="subTitle"> @close="close"
部门 @open="open"
</view> >
<u-collapse-item
:title="step.content.configApproveUserName"
name="configApproveUserName"
>
<view class="custom-table-collapse">
<view class="subTitleClass-collapse">
<view class="subRow-collapse">
<view class="subTitle"> 部门 </view>
<view class="subContent"> <view class="subContent">
{{ step.content.approveDeptName }} {{ step.content.configApproveDeptName }}
</view>
</view> </view>
<view class="subRow">
<view class="subTitle">
生产角色
</view> </view>
<view class="subRow-collapse">
<view class="subTitle"> 生产角色 </view>
<view class="subContent"> <view class="subContent">
{{ step.content.approveRoleName || '无' }} {{ step.content.configApproveRoleName || '无' }}
</view>
</view> </view>
<view class="subRow">
<view class="subTitle">
员工姓名
</view> </view>
<view class="subRow-collapse">
<view class="subTitle"> 处理结果 </view>
<view class="subContent"> <view class="subContent">
{{ step.content.approveUser || '无' }} {{ step.content.approveResult || '无' }}
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</u-collapse-item>
</u-collapse>
</template> </template>
</template> </template>
</vertical-steps> </vertical-steps>
</view> </view>
<!-- 步骤图完成 --> <!-- 步骤图完成 -->
<!-- 备注区 --> <!-- 备注区 -->
<view class="title">
备注信息
</view>
<view class="remark-container"> <view class="remark-container">
<u-form :model="instanceDetail"> <u-upload
<u-form-item label="访问区域" prop="remark" labelPosition="top" labelWidth="80"> v-if="processStatus && isUpdate"
<u-textarea disabled v-model="instanceDetail.remarks" placeholder="-"></u-textarea> :fileList="fileList"
</u-form-item> @afterRead="afterRead"
</u-form> @delete="deletePic"
</view> name="6"
<!-- 备注区完成 --> multiple
<!-- 变更内容区 --> :maxCount="1"
<view class="title"> width="250"
变更内容 height="150"
</view> :previewImage="false"
<view class="change-container"> >
<view class="change-item"> <image
请登录PC端查看变更详情 :src="fileIcon"
mode="widthFix"
style="width: 80rpx;height: 80rpx;"
></image>
<text style="font-size: 28rpx;color: #333399;">
点击上传
</text>
</u-upload>
<view class="upload-finish" v-if=" processStatus && isUpdate && this.fileList.length > 0">
<div class="file-title">{{this.fileList[0].name}}</div>
<!-- 新增删除图标 -->
<u-icon
name="close-circle-fill"
color="#ff4444"
size="20"
@click="deletePic"
style="position: absolute; right: 20rpx;"
></u-icon>
</view>
<view class="upload-finish" v-if="!(processStatus && isUpdate)">
<image
:src="fileIcon"
mode="widthFix"
style="width: 80rpx;height: 80rpx;"
></image>
<div class="file-title">{{this.fileList.length > 0 ? this.fileList[0].name : '无'}}</div>
<div class="file-status">{{this.fileList.length > 0 ? '已上传' : '未上传' }}</div>
</view> </view>
</view> </view>
<!-- 按钮区域 --> <!-- 按钮区域 -->
<view v-if="isView === '0' && status === 'true'" class="btns-container"> <view class="btns-container">
<view class="btn reject-btn" @click="approveByAdmin('REJECT')"> <view class="btn reject-btn" v-if="processStatus && isUpdate" @click="handleClose('REJECT')"> 返回 </view>
驳回 <view class="btn approve-btn" v-if="processStatus && isUpdate" :loading="btnLoading" @click="handleConfirm('CONSENT')"> 确定 </view>
</view>
<view class="btn approve-btn" @click="approveByAdmin('CONSENT')">
通过
</view>
</view> </view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import VerticalSteps from '@/components/vertical-steps/vertical-steps' import VerticalSteps from '@/components/vertical-steps/vertical-steps';
import { getProcessNodeByInstanceId, approveByAdmin, getProcessInstanceStatus } from '../../api/system/approve' import {
import { parseTime } from '../../api/utils/ruoyi' getCompletionDetail,
import { getDicts } from "../../api/system/baseConfig"; processCompletionApproval,
import { toast } from '../../utils/common' } from '../../api/system/approve';
import { parseTime } from '../../api/utils/ruoyi';
import { getDicts } from '../../api/system/baseConfig';
import { baseUrl } from '../../config'
import { getToken } from '@/utils/auth'
export default { export default {
name: "baseDetail", name: 'baseDetail',
onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数 onLoad: function (option) {
//option为object类型,会序列化上个页面传递的参数
// processId, processCode, processStatus, allowApprove, processName // processId, processCode, processStatus, allowApprove, processName
this.processId = option.processId; this.processId = option.processId;
this.processCode = option.processCode; this.processCode = option.processCode;
this.processStatus = option.processStatus; this.processStatus = option.processStatus;
this.isUpdate = option.allowApprove; this.isUpdate = option.allowApprove && option.processStatus === '0';
this.processName = option.processName; this.processName = option.processName;
this.getList(); this.getList();
this.toProcessInstanceInfo(); this.getInstanceDetail();
}, },
components: { VerticalSteps }, components: { VerticalSteps },
data() { data() {
return { return {
// 文件上传路径前缀
temp: 'project',
// 水桶
bucket: 'qms-ae',
baseUrl,
fileIcon: require('../../static/images/fileIcon.png'),
initiateDepartmentList: [],
traceablePartsTypeList: [],
fileList: [],
traceabilityVos: null,
btnLoading:false,
rules: {
formResultOne: [
{ required: true, message: '请选择日期' },
],
},
showApproval: false,
selectOptions: [
{ label: '本次强制开机', value: '本次强制开机' },
{ label: '本次禁止开机', value: '本次禁止开机' },
{ label: '改正后开机', value: '改正后开机' },
],
tpmOptions: [
{ label: '本次强制开机', value: '本次强制开机' },
{ label: '本次禁止开机', value: '本次禁止开机' },
{ label: '改正后开机', value: '改正后开机' },
],
formResultOne: null,
showFormResultOne: false,
isLoading: false,
processId: '', processId: '',
processCode: '', processCode: '',
processStatus: '', processStatus: '',
...@@ -142,180 +211,225 @@ export default { ...@@ -142,180 +211,225 @@ export default {
processName: '', processName: '',
processType: '', processType: '',
label: '', label: '',
instanceDetail: {}, instanceDetail: {
approves: [],
toolCheckDto: {},
materialDto: {},
tmpInfoDTO: {},
},
// 发起时间
initiateDate: '',
approve: {
processInstanceId: null,
instanceApproveId: null,
hasConfirm: true,
formResult: null,
formResultOne: null,
formResultTwo: null,
approveOpinion: 1,
selectOption: null,
},
// 流程实例详情列表
instanceDetailList: [],
formData: { formData: {
remark: '' remark: '',
}, },
steps: [], steps: [],
jobLevelList: [], jobLevelList: [],
isView: '', isView: '',
status: '', status: '',
// url };
urlList: [
{
value: '0001',
url: '/staff/processApproval'
},
{
value: '1001',
url: '/aeclassesinfo/processApproval'
},
{
value: '1002',
url: '/accreditpostvalidity/processPostApproval'
},
{
value: '0002',
url: '/sysRoleMamager/processApproval'
},
{
value: '0004',
url: '/sysRoleMamager/non_processApproval'
},
{
value: '0003',
url: '/organization/processApproval'
},
{
value: '1020',
url: '/aeequipmenttype/processApproval'
},
{
value: '1030',
url: '/aeenginemodel/processApproval'
},
{
value: '1031',
url: '/aeenginemodelextend/processApproval'
},
{
value: '1032',
url: '/aemodelgx/processApproval'
},
{
value: '1043',
url: '/aeunit/processApproval'
}, },
{ computed: {
value: '1042',
url: '/aepartinformation/processApproval' // 根据processCode进行动态页面渲染
}, // 所有预警告警不显示处理结果
{ getFlag() {
value: '1040', return !(
url: '/aetool/processApproval' this.processCode === '00003' ||
}, this.processCode === '00006' ||
{ this.processCode === '00010' ||
value: '1004', this.processCode === '00013' ||
url: '/aeprolineinfo/processApproval' this.processCode === '00002' ||
}, this.processCode === '00005' ||
{ this.processCode === '00009' ||
value: '1005', this.processCode === '00012'
url: '/aeprolinesegment/processApproval' );
}, },
{ // 计算属性
value: '1006', parseTimeA() {
url: '/aeprolinegx/processGxApproval' return (time, format) => {
return parseTime(time, format || '{m}-{d} {h}:{i}:{s}');
};
}, },
{
value: '1041',
url: '/aeauxiliarymaterial/processApproval'
}, },
{ methods: {
value: '1009', afterRead(event) {
url: '/aeprolinetray/processApproval' console.log('event',event);
console.log('this.baseUrl',this.baseUrl);
const uploadFileUrl= `${this.baseUrl}/common/fileUpload?temp=${
this.temp
}&bucket=${this.bucket}`;
const file = event.file[0]; // 获取上传的文件对象
uni.uploadFile({
url: uploadFileUrl, //仅为示例,非真实的接口地址
filePath: file.url,
name: 'file', // 与后端约定的文件字段名
header: {
Authorization: 'Bearer ' + getToken()
},
success: (res) => {
const data = JSON.parse(res.data);
if (data.code === 200) {
const {
data: { url, path, originalName, businessId }
} = data
this.fileList.push({ url, path, name: originalName, businessId })
uni.$u.toast('上传成功')
} else {
uni.$u.toast('上传文件失败,请重试')
}
}
});
}, },
{ // 删除图片
value: '1007', deletePic() {
url: '/aetechequipment/processApproval' this.fileList = [];
}, },
{ blur() {
value: '1008', this.approve.formResult = this.approve.formResultTwo
url: '/aetechassembly/processApproval'
}, },
{ formResultOneConfirm(e) {
value: '1010', this.showFormResultOne = false;
url: '/aetechequipment/all/processApproval' this.approve.formResultOne = uni.$u.timeFormat(e.value, 'yyyy-mm-dd');
this.approve.formResult = this.approve.formResultOne;
}, },
{ formResultOneClose() {
value: '1011', this.showFormResultOne = false;
url: '/aetechassembly/all/processApproval'
}, },
{ hideKeyboard() {
value: '1021', uni.hideKeyboard();
url: '/aeequipmentinfo/processApproval'
}, },
{ getProcessType() {
value: '1044', if (
url: '/aegroupproject/processApproval' this.processCode === '00002' ||
this.processCode === '00003' ||
this.processCode === '00004'
) {
return '标定';
} }
] if (
this.processCode === '00005' ||
this.processCode === '00006' ||
this.processCode === '00007'
) {
return 'TPM';
} }
}, if (this.processCode === '00009' || this.processCode === '00010') {
computed: { return '工具';
// 计算属性 }
parseTimeA() { if (this.processCode === '00012' || this.processCode === '00013') {
return (time, format) => { return '辅材';
return parseTime(time, format || '{m}-{d} {h}:{i}:{s}')
} }
}, },
},
methods: {
/** /**
* 获取审批url * 获取流程实例详情
* @returns {string}
*/ */
getUrl() { async getInstanceDetail () {
const type = this.instanceDetail.processType this.isLoading = true
let url = '' getCompletionDetail(this.processId).then(res => {
this.urlList.forEach(item => { if (res.code === 200) {
if (item.value === type) { this.instanceDetail = res.data
url = item.url this.instanceDetailList.push(res.data.formDto)
this.processName = res.data.formDto.processName
this.initiateDate = res.data.formDto.initiateDate
this.traceabilityVos = res.data.traceabilityVos
this.fileList = res.data.formDto.attachment ? [JSON.parse(res.data.formDto.attachment)] : []
// 统一处理步骤生成
if (res.data) {
this.steps = [
{ title: '发起', content: {} },
...this.instanceDetail.approves.map((item, index) => ({
title: `综合审批`,
content: item,
})),
];
}
} }
}) })
return url this.isLoading = false
}, },
async approveByAdmin(type) { /**
* 审批
* @returns {Promise<void>}
*/
async handleConfirm () {
console.log('this.fileList', this.fileList)
if (this.fileList.length < 1) {
uni.$u.toast('请上传附件')
} else {
this.btnLoading = true this.btnLoading = true
// 审批
await approveByAdmin({ this.instanceDetail.approves.forEach(item => {
instanceId: this.processId, if (item.currentNode === '1') {
approveId: this.instanceDetail.currentApprove.businessId, this.approve.instanceApproveId = item.businessId
approveControl: type, this.approve.processInstanceId = item.instanceId
url: this.getUrl(), }
processGroup: '1'
}).catch(() => {
this.isView = ''
}) })
// 回调获取流程实例的状态 this.approve['map'] = this.fileList[0]
const { data } = await getProcessInstanceStatus(this.processId) console.log('this.approve', this.approve)
// 异常结束 await processCompletionApproval(this.approve)
if (data === '6') { .then(res => {
toast('流程异常结束,请检查对应流程') if (res.code === 200) {
uni.$u.toast('审批成功')
} else { } else {
toast('审批成功') uni.$u.toast(res.message)
this.$tab.reLaunch('/pages/index') }
})
.catch(() => {
this.isUpdate = false
this.btnLoading = false
})
this.handleClose()
// 关闭所有的loading
this.btnLoading = false
this.isUpdate = false
} }
}, },
handleClose() {
this.$tab.reLaunch('/pages/index')
},
/** 查询字典数据列表 */ /** 查询字典数据列表 */
getList() { getList() {
getDicts('sys_job_level').then(response => { getDicts('initiate_department').then(response => {
// console.log("查询数据字段狗",response) // console.log("查询数据字段狗",response)
const jobLevelForm = response.data const jobLevelForm = response.data;
for (const item of jobLevelForm) { for (const item of jobLevelForm) {
const result = { const result = {
value: item.dictValue, value: item.dictValue,
label: item.dictLabel label: item.dictLabel,
};
this.initiateDepartmentList.push(result);
} }
this.jobLevelList.push(result) });
getDicts('traceable_parts_type').then(response => {
// console.log("查询数据字段狗",response)
const jobLevelForm = response.data;
for (const item of jobLevelForm) {
const result = {
value: item.dictValue,
label: item.dictLabel,
};
this.traceablePartsTypeList.push(result);
} }
}) });
}, },
/** /**
* 指定列表,根据值,取label * 指定列表,根据值,取label
*/ */
getLabelByValue(list, value, key = 'value', label = 'label') { getLabelByValue(list, value, key = 'value', label = 'label') {
const item = list.find(item => item[key] === value) const item = list.find(item => item[key] === value);
return item ? item[label] : '-' return item ? item[label] : '-';
}, },
/** /**
* 获取审批节点详情 * 获取审批节点详情
...@@ -323,41 +437,43 @@ export default { ...@@ -323,41 +437,43 @@ export default {
toProcessInstanceInfo() { toProcessInstanceInfo() {
// 非追溯完成度异常 // 非追溯完成度异常
if (this.processCode === '00016' || this.processCode === '00017') { if (this.processCode === '00016' || this.processCode === '00017') {
console.log('1', this.processCode) console.log('1', this.processCode);
drawerShowEngineTrace.value = true drawerShowEngineTrace.value = true;
} else if (this.processCode !== '00019') { } else if (this.processCode !== '00019') {
console.log('2', this.processCode) console.log('2', this.processCode);
drawerShow.value = true drawerShow.value = true;
// drawerShowTraceError.value = true // drawerShowTraceError.value = true
} else { } else {
console.log('3', this.processCode) console.log('3', this.processCode);
// 追溯完成度异常 // 追溯完成度异常
drawerShowTraceError.value = true drawerShowTraceError.value = true;
}
}
} }
} },
},
};
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.base-detail { .base-detail {
background: #FFFFFF; background: #ffffff;
min-height: 100vh; min-height: 100vh;
// height: 100vh; // height: 100vh;
.container { .container {
.title { .title {
font-family: PingFangSC, PingFang SC; font-family:
PingFangSC,
PingFang SC;
font-weight: 500; font-weight: 500;
font-size: 40rpx; font-size: 40rpx;
color: #0B0B0B; color: #0b0b0b;
text-align: left; text-align: left;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
padding: 52rpx 32rpx 20rpx 32rpx; padding: 52rpx 32rpx 20rpx 32rpx;
border-bottom: 2rpx solid #F2F2F2; border-bottom: 2rpx solid #f2f2f2;
} }
} }
...@@ -367,16 +483,18 @@ export default { ...@@ -367,16 +483,18 @@ export default {
} }
.custom-table { .custom-table {
background: #F9F9F9; background: #f9f9f9;
border-radius: 10rpx; border-radius: 10rpx;
padding: 32rpx; padding: 32rpx;
} }
.subTitleClass { .subTitleClass {
font-family: PingFangSC, PingFang SC; font-family:
PingFangSC,
PingFang SC;
font-weight: 400; font-weight: 400;
font-size: 28rpx; font-size: 28rpx;
color: #9A9A9A; color: #9a9a9a;
text-align: left; text-align: left;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
...@@ -388,10 +506,12 @@ export default { ...@@ -388,10 +506,12 @@ export default {
margin-bottom: 12rpx; margin-bottom: 12rpx;
.subTitle { .subTitle {
font-family: PingFangSC, PingFang SC; font-family:
PingFangSC,
PingFang SC;
font-weight: 400; font-weight: 400;
font-size: 28rpx; font-size: 28rpx;
color: #9A9A9A; color: #9a9a9a;
text-align: left; text-align: left;
font-style: normal; font-style: normal;
text-transform: none; text-transform: none;
...@@ -399,7 +519,9 @@ export default { ...@@ -399,7 +519,9 @@ export default {
} }
.subContent { .subContent {
font-family: PingFangSC, PingFang SC; font-family:
PingFangSC,
PingFang SC;
font-weight: 400; font-weight: 400;
font-size: 28rpx; font-size: 28rpx;
color: #222222; color: #222222;
...@@ -408,12 +530,99 @@ export default { ...@@ -408,12 +530,99 @@ export default {
text-transform: none; text-transform: none;
} }
} }
.custom-table-collapse {
padding: 32rpx;
}
.subTitleClass-collapse {
font-family:
PingFangSC,
PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #9a9a9a;
text-align: left;
font-style: normal;
text-transform: none;
}
.subRow-collapse {
display: flex;
justify-content: space-between;
margin-bottom: 12rpx;
.subTitle {
font-family:
PingFangSC,
PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #9a9a9a;
text-align: left;
font-style: normal;
text-transform: none;
min-width: 120rpx;
}
.subContent {
font-family:
PingFangSC,
PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #222222;
text-align: right;
font-style: normal;
text-transform: none;
}
}
::v-deep .u-collapse-item__content__text{
padding: 0;
}
::v-deep .u-collapse-item {
background: #f9f9f9;
border-radius: 10rpx;
}
.remark-container { .remark-container {
padding: 28rpx 46rpx 0 48rpx; padding: 28rpx 46rpx 0 48rpx;
background: #f9f9f9;
border-radius: 10rpx;
width: 684rpx;
height: 180rpx;
margin: 0 auto;
.upload-finish {
display: flex;
justify-content: center;
flex-direction: column;
align-items: center;
.file-title{
font-family: PingFangSC, PingFang SC;
font-weight: 500;
color: #333399;
font-style: normal;
}
.file-status{
font-family: PingFangSC, PingFang SC;
font-weight: 400;
color: #999999;
font-style: normal;
}
}
// 新增卡片间距
& > view {
margin-bottom: 20rpx;
&:last-child {
margin-bottom: 0;
}
}
::v-deep .u-form-item__body__left__content__label { ::v-deep .u-form-item__body__left__content__label {
font-family: PingFangSC, PingFang SC; font-family:
PingFangSC,
PingFang SC;
font-weight: 500; font-weight: 500;
font-size: 28rpx; font-size: 28rpx;
color: #111111; color: #111111;
...@@ -422,6 +631,57 @@ export default { ...@@ -422,6 +631,57 @@ export default {
text-transform: none; text-transform: none;
margin-bottom: 14rpx; margin-bottom: 14rpx;
} }
.rmark-card {
background: #f9f9f9;
border-radius: 20rpx;
padding: 0rpx 40rpx 0 38rpx;
.subRow {
display: flex;
justify-content: space-between;
margin-bottom: 12rpx;
border-bottom: 2rpx solid #e9e9e9;
padding-bottom: 12rpx;
align-items: center;
&:last-child {
border-bottom: none;
padding-bottom: 0;
}
height: 96rpx;
.subTitle {
font-family:
PingFangSC,
PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #666666;
text-align: left;
font-style: normal;
text-transform: none;
min-width: 120rpx;
}
.subContent {
font-family:
PingFangSC,
PingFang SC;
font-weight: 400;
font-size: 28rpx;
color: #111111;
text-align: right;
font-style: normal;
text-transform: none;
}
.expire-color {
color: red !important;
}
}
}
} }
.change-container { .change-container {
...@@ -433,15 +693,23 @@ export default { ...@@ -433,15 +693,23 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
background: #FFFBF0; background: #fffbf0;
font-family: PingFangSC, PingFang SC; font-family:
PingFangSC,
PingFang SC;
font-weight: 400; font-weight: 400;
font-size: 28rpx; font-size: 28rpx;
color: #F4850E; color: #f4850e;
line-height: 36rpx; line-height: 36rpx;
font-style: normal; font-style: normal;
} }
} }
::v-deep .u-upload__wrap{
justify-content: center;
uni-view{
align-items: center;
}
}
} }
.btns-container { .btns-container {
...@@ -454,7 +722,9 @@ export default { ...@@ -454,7 +722,9 @@ export default {
width: 312rpx; width: 312rpx;
height: 96rpx; height: 96rpx;
border-radius: 56rpx; border-radius: 56rpx;
font-family: PingFangSC, PingFang SC; font-family:
PingFangSC,
PingFang SC;
font-weight: 400; font-weight: 400;
font-size: 34rpx; font-size: 34rpx;
line-height: 48rpx; line-height: 48rpx;
...@@ -472,7 +742,7 @@ export default { ...@@ -472,7 +742,7 @@ export default {
.approve-btn { .approve-btn {
background: #333399; background: #333399;
color: #FFFFFF; color: #ffffff;
} }
} }
</style> </style>
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