|
@@ -6,6 +6,60 @@
|
|
|
<p>工单</p>
|
|
<p>工单</p>
|
|
|
<h3>
|
|
<h3>
|
|
|
{{ detail.name }}
|
|
{{ detail.name }}
|
|
|
|
|
+ <span v-if="detail.orderStatus == '30'">
|
|
|
|
|
+ <span>
|
|
|
|
|
+ <el-button @click="handleChangeTime()">改期</el-button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <!--支持人员反馈(总结)-->
|
|
|
|
|
+ <span>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ v-if="
|
|
|
|
|
+ detail.feedbackSupportBy == 0 &&
|
|
|
|
|
+ (detail.orderTypeName == '技术文件支持' || detail.orderTypeName == '售前讲解支持')
|
|
|
|
|
+ "
|
|
|
|
|
+ v-permissions="['work:workOrder:feedback:support']"
|
|
|
|
|
+ @click="openFeedBack('support')">
|
|
|
|
|
+ 支持人员总结
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <!--销售反馈-->
|
|
|
|
|
+ <span>
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ v-if="
|
|
|
|
|
+ detail.feedbackSupportBy == 1 &&
|
|
|
|
|
+ detail.feedbackSaleBy != 1 &&
|
|
|
|
|
+ (detail.orderTypeName == '技术文件支持' || detail.orderTypeName == '售前讲解支持')
|
|
|
|
|
+ "
|
|
|
|
|
+ v-permissions="['work:workOrder:feedback:sale']"
|
|
|
|
|
+ @click="openFeedBack('sale')">
|
|
|
|
|
+ 销售反馈
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <span
|
|
|
|
|
+ v-if="detail.orderTypeName == '产品试用申请(硬件)' || detail.orderTypeName == '产品试用申请(软件)'">
|
|
|
|
|
+ <!--试用启动反馈-->
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ v-if="!detail.feedbackTrail"
|
|
|
|
|
+ v-permissions="['work:workOrder:feedback:start']"
|
|
|
|
|
+ @click="openFeedBack('start')">
|
|
|
|
|
+ 试用启动反馈
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ <!--试用过程反馈-->
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ v-if="detail.feedbackTrail"
|
|
|
|
|
+ v-permissions="['work:workOrder:feedback:process']"
|
|
|
|
|
+ @click="openFeedBack('process')">
|
|
|
|
|
+ 试用过程反馈
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ <!--试用总结反馈-->
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ v-if="detail.feedbackTrail && detail.feedbackTrail.length > 1"
|
|
|
|
|
+ v-permissions="['work:workOrder:feedback:summarize']"
|
|
|
|
|
+ @click="openFeedBack('summarize')">
|
|
|
|
|
+ 试用总结反馈
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </span>
|
|
|
|
|
+ </span>
|
|
|
</h3>
|
|
</h3>
|
|
|
</div>
|
|
</div>
|
|
|
<header>
|
|
<header>
|
|
@@ -43,7 +97,19 @@
|
|
|
v-show="item.componentName !== 'TableField'"
|
|
v-show="item.componentName !== 'TableField'"
|
|
|
:key="index"
|
|
:key="index"
|
|
|
:label="item.name">
|
|
:label="item.name">
|
|
|
- <span v-if="item.componentName === 'DDDateRangeField'">{{ item.value.join(' 至 ') }}</span>
|
|
|
|
|
|
|
+ <span v-if="item.name == '试用开始时间'">
|
|
|
|
|
+ {{ parseTime(detail.trialTimeStart, '{y}-{m}-{d} {h}:{i}') }}
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <span v-else-if="item.name == '试用结束时间'">
|
|
|
|
|
+ {{ parseTime(detail.trialTimeEnd, '{y}-{m}-{d} {h}:{i}') }}
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <span v-else-if="item.name == '期望完成时间'">
|
|
|
|
|
+ {{ parseTime(detail.expectTime, '{y}-{m}-{d} {h}:{i}') }}
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <span v-else-if="item.name == '支持时间'">
|
|
|
|
|
+ {{ parseTime(detail.supportTime, '{y}-{m}-{d} {h}:{i}') }}
|
|
|
|
|
+ </span>
|
|
|
|
|
+ <span v-else-if="item.componentName === 'DDDateRangeField'">{{ item.value.join(' 至 ') }}</span>
|
|
|
<span v-else-if="item.componentName === 'DDAttachment'">
|
|
<span v-else-if="item.componentName === 'DDAttachment'">
|
|
|
{{ item && item.length > 0 ? item[0].fileName : '' }}
|
|
{{ item && item.length > 0 ? item[0].fileName : '' }}
|
|
|
</span>
|
|
</span>
|
|
@@ -77,8 +143,26 @@
|
|
|
</div>
|
|
</div>
|
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
|
<!-- <el-tab-pane label="反馈记录" name="feedback">
|
|
<!-- <el-tab-pane label="反馈记录" name="feedback">
|
|
|
- <detail-feedback ref="feedback" :work-order-id="id" />
|
|
|
|
|
|
|
+ <feedback-record :detail="detail" />
|
|
|
</el-tab-pane> -->
|
|
</el-tab-pane> -->
|
|
|
|
|
+ <el-tab-pane
|
|
|
|
|
+ v-if="detail.orderTypeName == '技术文件支持' || detail.orderTypeName == '售前讲解支持'"
|
|
|
|
|
+ label="支持人员总结"
|
|
|
|
|
+ name="supportFB">
|
|
|
|
|
+ <feedback-record :detail="detail" type="support" />
|
|
|
|
|
+ </el-tab-pane>
|
|
|
|
|
+ <el-tab-pane
|
|
|
|
|
+ v-if="detail.orderTypeName == '技术文件支持' || detail.orderTypeName == '售前讲解支持'"
|
|
|
|
|
+ label="销售反馈"
|
|
|
|
|
+ name="saleFB">
|
|
|
|
|
+ <feedback-record :detail="detail" type="sale" />
|
|
|
|
|
+ </el-tab-pane>
|
|
|
|
|
+ <el-tab-pane
|
|
|
|
|
+ v-if="detail.orderTypeName == '产品试用申请(硬件)' || detail.orderTypeName == '产品试用申请(软件)'"
|
|
|
|
|
+ label="试用反馈"
|
|
|
|
|
+ name="try">
|
|
|
|
|
+ <feedback-record :detail="detail" type="try" />
|
|
|
|
|
+ </el-tab-pane>
|
|
|
</el-tabs>
|
|
</el-tabs>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="info-side">
|
|
<div class="info-side">
|
|
@@ -116,17 +200,24 @@
|
|
|
</el-row>
|
|
</el-row>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <support-feedback ref="supportFB" @update-detail="getDetail" />
|
|
|
|
|
+ <sale-feedback ref="saleFB" @update-detail="getDetail" />
|
|
|
|
|
+ <try-feedback ref="tryFB" @update-detail="getDetail" />
|
|
|
|
|
+ <change-time ref="changeTime" @update-detail="getDetail" />
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
import to from 'await-to-js'
|
|
import to from 'await-to-js'
|
|
|
import api from '@/api/work/index'
|
|
import api from '@/api/work/index'
|
|
|
- // import DetailFeedback from './components/DetailFeedback'
|
|
|
|
|
-
|
|
|
|
|
|
|
+ import SaleFeedback from '@/views/work/order/components/SaleFeedback'
|
|
|
|
|
+ import SupportFeedback from '@/views/work/order/components/SupportFeedback'
|
|
|
|
|
+ import TryFeedback from '@/views/work/order/components/TryFeedback'
|
|
|
|
|
+ import FeedbackRecord from './components/FeedbackRecord'
|
|
|
|
|
+ import ChangeTime from './components/ChangeTime'
|
|
|
export default {
|
|
export default {
|
|
|
name: 'WorkOrderDetail',
|
|
name: 'WorkOrderDetail',
|
|
|
- // components: { DetailFeedback },
|
|
|
|
|
|
|
+ components: { FeedbackRecord, SaleFeedback, SupportFeedback, TryFeedback, ChangeTime },
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
feedBackContent: '',
|
|
feedBackContent: '',
|
|
@@ -145,8 +236,22 @@
|
|
|
this.id = parseInt(this.$route.query.id)
|
|
this.id = parseInt(this.$route.query.id)
|
|
|
this.getOptions()
|
|
this.getOptions()
|
|
|
this.getDynamics()
|
|
this.getDynamics()
|
|
|
|
|
+ this.getDetail()
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
|
|
+ handleChangeTime() {
|
|
|
|
|
+ this.$refs.changeTime.open(this.detail)
|
|
|
|
|
+ },
|
|
|
|
|
+ // 打开不同的反馈组件
|
|
|
|
|
+ openFeedBack(type = null) {
|
|
|
|
|
+ if (type == 'support') {
|
|
|
|
|
+ this.$refs.supportFB.open(this.detail)
|
|
|
|
|
+ } else if (type == 'sale') {
|
|
|
|
|
+ this.$refs.saleFB.open(this.detail)
|
|
|
|
|
+ } else {
|
|
|
|
|
+ this.$refs.tryFB.open(this.detail, type)
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
async getDynamics() {
|
|
async getDynamics() {
|
|
|
const [err, res] = await to(api.dynamicsList({ orderId: this.id }))
|
|
const [err, res] = await to(api.dynamicsList({ orderId: this.id }))
|
|
|
if (err) return
|
|
if (err) return
|
|
@@ -178,16 +283,21 @@
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
getOptions() {
|
|
getOptions() {
|
|
|
- Promise.all([api.getDetail({ id: this.id }), this.getDicts('work_order_status')])
|
|
|
|
|
- .then(([detail, workOrderStatus]) => {
|
|
|
|
|
- this.detail = detail.data
|
|
|
|
|
|
|
+ Promise.all([this.getDicts('work_order_status')])
|
|
|
|
|
+ .then(([workOrderStatus]) => {
|
|
|
this.orderStatusOptions = workOrderStatus.data.values || []
|
|
this.orderStatusOptions = workOrderStatus.data.values || []
|
|
|
-
|
|
|
|
|
- this.dingFormData = JSON.parse(this.detail.formData)
|
|
|
|
|
- this.checkDingFormType()
|
|
|
|
|
})
|
|
})
|
|
|
.catch((err) => console.log(err))
|
|
.catch((err) => console.log(err))
|
|
|
},
|
|
},
|
|
|
|
|
+ async getDetail() {
|
|
|
|
|
+ const [err, res] = await to(api.getDetail({ id: this.id }))
|
|
|
|
|
+ if (err) return
|
|
|
|
|
+ if (res.code == 200) {
|
|
|
|
|
+ this.detail = res.data
|
|
|
|
|
+ this.dingFormData = JSON.parse(this.detail.formData)
|
|
|
|
|
+ this.checkDingFormType()
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
checkDingFormType() {
|
|
checkDingFormType() {
|
|
|
for (let item of this.dingFormData) {
|
|
for (let item of this.dingFormData) {
|
|
|
if (item.componentName === 'TableField') {
|
|
if (item.componentName === 'TableField') {
|