|
@@ -1,81 +1,103 @@
|
|
|
<template>
|
|
|
<view class="my-page">
|
|
|
- <scroll-view :scroll-top="scrollTop" scroll-y="true" class="scroll-Y">
|
|
|
- <view class="my-page-main">
|
|
|
- <RadiusCell :title="title" @click="showPopup1 = true"></RadiusCell>
|
|
|
- <RadiusCell title="SOP项目计划变更说明" @click="showPopup2 = true"></RadiusCell>
|
|
|
+ <view class="my-page-main">
|
|
|
+ <RadiusCell :title="title" @click="showPopup1 = true"></RadiusCell>
|
|
|
+ <RadiusCell title="SOP项目计划变更说明" @click="showPopup2 = true"></RadiusCell>
|
|
|
+ <u-form :model="formData" ref="formRef" :border-bottom="false" label-position="top">
|
|
|
<view class="my-card">
|
|
|
- <u-form :model="formData" ref="formRef" :border-bottom="false" label-position="top">
|
|
|
- <template v-if="!IS_NEW_MODE">
|
|
|
- <u-form-item label="报备申请人"> {{ sopInfo.createRealName }}</u-form-item>
|
|
|
- <u-form-item label="报备申请时间">
|
|
|
- {{ sopInfo.createTime | timeFormat }}
|
|
|
- </u-form-item>
|
|
|
- </template>
|
|
|
+ <template v-if="!IS_NEW_MODE">
|
|
|
+ <view class="title-info">报备申请人:{{ sopInfo.createRealName }}</view>
|
|
|
+ <view class="title-info">报备申请时间:{{ dateFormat(sopInfo.createTime) }}</view>
|
|
|
+ </template>
|
|
|
|
|
|
- <u-form-item label="变更类型" requiredMark>
|
|
|
- <view style="padding-top: 3px">
|
|
|
- <my-select v-model="formData.type" :disabled="readonly" :list="dictToOptionList(PLAN_CHANGE_TYPE)"></my-select>
|
|
|
- <div class="sub-title gray">
|
|
|
- <p>1.关键信息及计划变更:项目关键信息里填写的项目关键信息或时间计划内容调整;</p>
|
|
|
- <p>2.项目取消:若项目取消,则只需填写变更原因后提交。</p>
|
|
|
- </div>
|
|
|
+ <u-form-item label="变更类型" prop="type" :border-bottom="false" required>
|
|
|
+ <view>
|
|
|
+ <view class="tips-info color-warning" style="margin-bottom: 16rpx">
|
|
|
+ <p>1.关键信息及计划变更:项目关键信息里填写的项目关键信息或时间计划内容调整;</p>
|
|
|
+ <p>2.项目取消:若项目取消,则只需填写变更原因后提交。</p>
|
|
|
</view>
|
|
|
- </u-form-item>
|
|
|
+ <my-select v-model="formData.type" :disabled="readonly" :list="dictToOptionList(PLAN_CHANGE_TYPE)"></my-select>
|
|
|
+ </view>
|
|
|
+ </u-form-item>
|
|
|
|
|
|
- <u-form-item label="变更原因" prop="reason">
|
|
|
- <u-input :disabled="readonly" v-model="formData.reason" placeholder="50字以内" :maxlength="50"></u-input>
|
|
|
- </u-form-item>
|
|
|
+ <u-form-item label="变更原因" prop="reason" :border-bottom="false" required>
|
|
|
+ <u-input v-model="formData.reason" placeholder="50字以内" :maxlength="50" border :disabled="readonly"></u-input>
|
|
|
+ </u-form-item>
|
|
|
+ </view>
|
|
|
|
|
|
- <u-form-item label="项目信息及计划变更明细" prop="contentJson" requiredMark>
|
|
|
- <dynamic-table ref="dTable" v-model="formData.contentJson" :columns="columns" :readonly="readonly"></dynamic-table>
|
|
|
- </u-form-item>
|
|
|
+ <view class="my-card">
|
|
|
+ <u-form-item prop="contentJson" :border-bottom="false">
|
|
|
+ <dynamic-table
|
|
|
+ ref="dTable"
|
|
|
+ v-model="formData.contentJson"
|
|
|
+ :columns="columns"
|
|
|
+ :readonly="readonly"
|
|
|
+ header="项目信息及计划变更明细"
|
|
|
+ ></dynamic-table>
|
|
|
+ </u-form-item>
|
|
|
+ </view>
|
|
|
|
|
|
- <template v-if="!IS_NEW_MODE">
|
|
|
- <view class="form-group-title">变更处理结果</view>
|
|
|
- <u-form-item label="处理结果">
|
|
|
- <my-select v-model="formData.projectExchangeApprove" :list="approveList"></my-select>
|
|
|
- </u-form-item>
|
|
|
+ <view v-if="!IS_NEW_MODE" class="my-card">
|
|
|
+ <view class="title-info">变更处理结果</view>
|
|
|
|
|
|
- <u-form-item label="变更备注" prop="remark">
|
|
|
- <u-input type="textarea" v-model="formData.remark"></u-input>
|
|
|
- </u-form-item>
|
|
|
- </template>
|
|
|
- </u-form>
|
|
|
+ <u-form-item label="处理结果" prop="projectExchangeApprove" :border-bottom="false" required>
|
|
|
+ <my-select v-model="formData.projectExchangeApprove" :list="approveList"></my-select>
|
|
|
+ </u-form-item>
|
|
|
+
|
|
|
+ <u-form-item label="变更备注" prop="remark" :border-bottom="false">
|
|
|
+ <view class="tips-info color-danger">(取消变更、部分变更,此项必填)</view>
|
|
|
+ <u-input v-model="formData.remark" type="textarea" border></u-input>
|
|
|
+ </u-form-item>
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <view class="my-page-footer">
|
|
|
- <u-row gutter="16">
|
|
|
- <u-col :span="6"> <u-button type="default" @click="cancelHandle">取消</u-button> </u-col>
|
|
|
- <u-col :span="6"><u-button type="primary" @click="submitHandle">保存</u-button></u-col>
|
|
|
- </u-row>
|
|
|
- </view>
|
|
|
- </scroll-view>
|
|
|
+ </u-form>
|
|
|
+ </view>
|
|
|
+ <view class="my-page-footer">
|
|
|
+ <u-row gutter="16">
|
|
|
+ <u-col :span="6"> <u-button type="default" @click="cancelHandle">取消</u-button> </u-col>
|
|
|
+ <u-col :span="6"><u-button type="primary" @click="submitHandle">保存</u-button></u-col>
|
|
|
+ </u-row>
|
|
|
+ </view>
|
|
|
|
|
|
- <u-popup v-model="showPopup2" mode="bottom" :mask-close-able="false" :closeable="true" :border-radius="28">
|
|
|
- <view class="popup-box1">
|
|
|
- <view class="title">{{ title }}</view>
|
|
|
- <view class="content">
|
|
|
- <view
|
|
|
- >SOP项目计划需要变更时,可手动发起一个或多个申请,质控专员审核后,在SOP流程中进行计划变更调整,完成变更后,申请流程结束并通知到发起申请人。</view
|
|
|
- >
|
|
|
+ <u-popup
|
|
|
+ v-model="showPopup2"
|
|
|
+ mode="bottom"
|
|
|
+ :mask-close-able="false"
|
|
|
+ :closeable="true"
|
|
|
+ close-icon-color="#000000"
|
|
|
+ close-icon-size="22"
|
|
|
+ border-radius="24"
|
|
|
+ >
|
|
|
+ <view class="my-popup">
|
|
|
+ <view class="popup-title">{{ title }}</view>
|
|
|
+ <view class="popup-content">
|
|
|
+ <view class="color-danger">
|
|
|
+ SOP项目计划需要变更时,可手动发起一个或多个申请,质控专员审核后,在SOP流程中进行计划变更调整,完成变更后,申请流程结束并通知到发起申请人。
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</u-popup>
|
|
|
|
|
|
- <u-popup v-model="showPopup1" mode="bottom" :mask-close-able="false" :closeable="true" :border-radius="28">
|
|
|
- <view class="popup-box2">
|
|
|
- <view class="title">SOP项目计划变更说明</view>
|
|
|
- <view class="content">
|
|
|
- <view class="item">项目单号:{{ sopInfo.crmNo }}</view>
|
|
|
- <view class="item">项目名称:{{ sopInfo.crmName }}</view>
|
|
|
- <view class="item">派单时间:{{ sopInfo.crmBeginTime }}</view>
|
|
|
- <view class="item">客户经理:{{ sopInfo.customManagerName }}</view>
|
|
|
- <view class="item">客户类型:{{ CUSTOMER_TYPE[sopInfo.customType] }}</view>
|
|
|
- <view class="item">客户名称:{{ sopInfo.customName }}</view>
|
|
|
- <view class="item">考试时间:{{ sopInfo.examStartTime + ' 至 ' + sopInfo.examEndTime }}</view>
|
|
|
- <view class="item">实施产品:{{ sopInfo.productName }}</view>
|
|
|
- <view class="item">服务单元:{{ sopInfo.serviceUnitName }}</view>
|
|
|
+ <u-popup
|
|
|
+ v-model="showPopup1"
|
|
|
+ mode="bottom"
|
|
|
+ :mask-close-able="false"
|
|
|
+ :closeable="true"
|
|
|
+ close-icon-color="#000000"
|
|
|
+ close-icon-size="22"
|
|
|
+ border-radius="24"
|
|
|
+ >
|
|
|
+ <view class="my-popup">
|
|
|
+ <view class="popup-title">SOP项目计划变更说明</view>
|
|
|
+ <view class="popup-content pad">
|
|
|
+ <view class="key-value">项目单号:{{ sopInfo.crmNo }}</view>
|
|
|
+ <view class="key-value">项目名称:{{ sopInfo.crmName }}</view>
|
|
|
+ <view class="key-value">派单时间:{{ sopInfo.crmBeginTime }}</view>
|
|
|
+ <view class="key-value">客户经理:{{ sopInfo.customManagerName }}</view>
|
|
|
+ <view class="key-value">客户类型:{{ CUSTOMER_TYPE[sopInfo.customType] }}</view>
|
|
|
+ <view class="key-value">客户名称:{{ sopInfo.customName }}</view>
|
|
|
+ <view class="key-value">考试时间:{{ sopInfo.examStartTime + ' 至 ' + sopInfo.examEndTime }}</view>
|
|
|
+ <view class="key-value">实施产品:{{ sopInfo.productName }}</view>
|
|
|
+ <view class="key-value">服务单元:{{ sopInfo.serviceName }}</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
</u-popup>
|
|
@@ -86,7 +108,7 @@
|
|
|
|
|
|
<script>
|
|
|
import { createPlanChange, approvePlanChange, planChangeDetail } from '@/api/sop'
|
|
|
- import { objAssign, dictToOptionList } from '@/utils/utils'
|
|
|
+ import { objAssign, dictToOptionList, dateFormat } from '@/utils/utils'
|
|
|
import { omit } from 'lodash'
|
|
|
import { CUSTOMER_TYPE, PLAN_CHANGE_TYPE } from '@/utils/constants'
|
|
|
import RadiusCell from '@/components/radius-cell.vue'
|
|
@@ -101,6 +123,8 @@
|
|
|
sopInfo: {},
|
|
|
CUSTOMER_TYPE,
|
|
|
PLAN_CHANGE_TYPE,
|
|
|
+ showPopup1: false,
|
|
|
+ showPopup2: false,
|
|
|
formData: {
|
|
|
serviceId: '',
|
|
|
sopNo: '',
|
|
@@ -167,11 +191,17 @@
|
|
|
}
|
|
|
],
|
|
|
rules: {
|
|
|
+ type: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择变更类型',
|
|
|
+ trigger: 'change'
|
|
|
+ }
|
|
|
+ ],
|
|
|
reason: [
|
|
|
{
|
|
|
required: true,
|
|
|
message: '请填写变更原因',
|
|
|
- type: 'error',
|
|
|
trigger: 'change'
|
|
|
}
|
|
|
],
|
|
@@ -184,6 +214,13 @@
|
|
|
}
|
|
|
}
|
|
|
],
|
|
|
+ projectExchangeApprove: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择处理结果',
|
|
|
+ trigger: 'change'
|
|
|
+ }
|
|
|
+ ],
|
|
|
remark: [
|
|
|
{
|
|
|
validator: (rule, value, callback) => {
|
|
@@ -208,12 +245,17 @@
|
|
|
return `项目派单信息(${this.sopInfo.crmNo})`
|
|
|
}
|
|
|
},
|
|
|
+ onReady() {
|
|
|
+ this.$refs.formRef.setRules(this.rules)
|
|
|
+ },
|
|
|
mounted() {
|
|
|
this.sopInfo = { ...(this.$Route.query.sop || {}) }
|
|
|
this.initData()
|
|
|
+ console.log(this.$Route.query)
|
|
|
},
|
|
|
methods: {
|
|
|
dictToOptionList,
|
|
|
+ dateFormat,
|
|
|
async initData() {
|
|
|
if (this.IS_NEW_MODE) {
|
|
|
this.formData.serviceId = this.sopInfo.serviceId
|