Commit c7ee8ad7 by wuqian
parents b8d91a05 fe0fd3e2
...@@ -8,7 +8,6 @@ export {} ...@@ -8,7 +8,6 @@ export {}
declare module 'vue' { declare module 'vue' {
export interface GlobalComponents { export interface GlobalComponents {
CardWrapper: typeof import('./src/components/CardWrapper.vue')['default'] CardWrapper: typeof import('./src/components/CardWrapper.vue')['default']
CommodityCard: typeof import('./src/components/commodityCard.vue')['default']
ElButton: typeof import('element-plus/es')['ElButton'] ElButton: typeof import('element-plus/es')['ElButton']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCol: typeof import('element-plus/es')['ElCol'] ElCol: typeof import('element-plus/es')['ElCol']
...@@ -42,7 +41,6 @@ declare module 'vue' { ...@@ -42,7 +41,6 @@ declare module 'vue' {
ElTag: typeof import('element-plus/es')['ElTag'] ElTag: typeof import('element-plus/es')['ElTag']
ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTree: typeof import('element-plus/es')['ElTree'] ElTree: typeof import('element-plus/es')['ElTree']
ElUpload: typeof import('element-plus/es')['ElUpload']
Icon: typeof import('./src/components/Icon.vue')['default'] Icon: typeof import('./src/components/Icon.vue')['default']
ImageView: typeof import('./src/components/ImageView.vue')['default'] ImageView: typeof import('./src/components/ImageView.vue')['default']
LogList: typeof import('./src/components/LogList.vue')['default'] LogList: typeof import('./src/components/LogList.vue')['default']
......
...@@ -92,8 +92,8 @@ export function submitReviewPriceInfoApi(id: number, data: PriceForm) { ...@@ -92,8 +92,8 @@ export function submitReviewPriceInfoApi(id: number, data: PriceForm) {
return axios.post<never, BaseRespData<never>>( return axios.post<never, BaseRespData<never>>(
'supply/supplyTypesettingPrice/saveQuotedPrice', 'supply/supplyTypesettingPrice/saveQuotedPrice',
{ {
typesettingId: id,
...data, ...data,
typesettingId: id,
}, },
) )
} }
......
...@@ -23,7 +23,11 @@ ...@@ -23,7 +23,11 @@
<img :src="c.imagePath" /> <img :src="c.imagePath" />
</div> </div>
</div> </div>
<div class="commodity-card-name-price flex flex-justify-space-between"> <slot name="time"></slot>
<div
v-if="cardItem.productName"
class="commodity-card-name-price flex flex-justify-space-between"
>
<slot name="productName"></slot> <slot name="productName"></slot>
<slot name="price"></slot> <slot name="price"></slot>
</div> </div>
......
...@@ -28,6 +28,9 @@ export interface TypesettingListData { ...@@ -28,6 +28,9 @@ export interface TypesettingListData {
confirm?: boolean confirm?: boolean
personInChargeId?: number personInChargeId?: number
personInChargeName?: string personInChargeName?: string
createTime?: string
updateTime?: string
assignmentTime?: string
} }
export interface SearchForm { export interface SearchForm {
......
...@@ -23,7 +23,13 @@ ...@@ -23,7 +23,13 @@
</div> </div>
<div class="right-content flex-1 flex-column overflow-hidden"> <div class="right-content flex-1 flex-column overflow-hidden">
<div class="search-form"> <div class="search-form">
<ElForm :model="searchForm" size="large" inline> <ElForm
:model="searchForm"
size="large"
inline
@submit.prevent
@keyup.enter="search"
>
<!-- <ElFormItem label="创建时间" prop="rangeDate"> <!-- <ElFormItem label="创建时间" prop="rangeDate">
<ElDatePicker <ElDatePicker
v-model="searchForm.rangeDate" v-model="searchForm.rangeDate"
...@@ -81,7 +87,7 @@ ...@@ -81,7 +87,7 @@
cardItem.productName cardItem.productName
}}</span> }}</span>
</template> </template>
<template #price> <template v-if="cardItem.retailPrice" #price>
<span class="price"> <span class="price">
{{ cardItem.retailPrice ? '$' : '' {{ cardItem.retailPrice ? '$' : ''
}}{{ cardItem.retailPrice }} }}{{ cardItem.retailPrice }}
...@@ -94,6 +100,14 @@ ...@@ -94,6 +100,14 @@
</template> </template>
</Icon> </Icon>
<Icon <Icon
name="chakanxiangqing"
@click.stop="submitReview(cardItem, true)"
>
<template #title>
<title>查看详情</title>
</template>
</Icon>
<Icon
v-if="treeId === '201'" v-if="treeId === '201'"
name="querenshenhexunjia" name="querenshenhexunjia"
@click.stop="confirm(cardItem)" @click.stop="confirm(cardItem)"
...@@ -110,7 +124,15 @@ ...@@ -110,7 +124,15 @@
@click.stop="submitReview(cardItem)" @click.stop="submitReview(cardItem)"
> >
<template #title> <template #title>
<title>提交审核</title> <title>
{{
cardItem?.state === '301' || cardItem?.state === '501'
? '打版完成'
: cardItem?.state === '401'
? '修改'
: ''
}}
</title>
</template> </template>
</Icon> </Icon>
<Icon <Icon
...@@ -119,19 +141,22 @@ ...@@ -119,19 +141,22 @@
@click.stop="submitReview(cardItem)" @click.stop="submitReview(cardItem)"
> >
<template #title> <template #title>
<title>报价</title> <title>上传稿件</title>
</template>
</Icon>
<Icon
v-if="treeId === '701' || treeId === '901'"
name="chakanxiangqing"
@click.stop="submitReview(cardItem)"
>
<template #title>
<title>查看</title>
</template> </template>
</Icon> </Icon>
</template> </template>
<template #time>
<div class="product-time">
<div class="create-time">
<span class="label">创建时间:</span>
<span class="value">{{ cardItem.createTime }}</span>
</div>
<div class="assign-time">
<span class="label">分派时间:</span>
<span class="value">{{ cardItem.assignmentTime }}</span>
</div>
</div>
</template>
</CardWrapper> </CardWrapper>
</div> </div>
</div> </div>
...@@ -161,7 +186,16 @@ ...@@ -161,7 +186,16 @@
<submitReviewModal <submitReviewModal
ref="submitReviewModelRef" ref="submitReviewModelRef"
v-model="submitReviewVisible" v-model="submitReviewVisible"
title="提交审核" :detailable="detailable"
:title="
detailable
? '查看详情'
: row?.state === '301' || row?.state === '501'
? '打版完成'
: row?.state === '401'
? '修改'
: '上传稿件'
"
:row="row" :row="row"
@refresh="onRefreshPage" @refresh="onRefreshPage"
></submitReviewModal> ></submitReviewModal>
...@@ -201,12 +235,13 @@ import { ...@@ -201,12 +235,13 @@ import {
getStatusListApi, getStatusListApi,
getTypesettingDetail, getTypesettingDetail,
getTypesettingLogByIdApi, getTypesettingLogByIdApi,
rejectDataApi rejectDataApi,
} from '@/api/typesetting' } from '@/api/typesetting'
import Icon from '@/components/Icon.vue' import Icon from '@/components/Icon.vue'
import reviewModel from './reviewModel.vue' import reviewModel from './reviewModel.vue'
import submitReviewModal from './submitReviewModal.vue' import submitReviewModal from './submitReviewModal.vue'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { showConfirm } from '@/utils/ui'
const treeData = ref<TreeData[]>([]) const treeData = ref<TreeData[]>([])
const treeRef = ref() const treeRef = ref()
const treeId = ref('201') const treeId = ref('201')
...@@ -289,12 +324,14 @@ const confirm = async (data: TypesettingListData) => { ...@@ -289,12 +324,14 @@ const confirm = async (data: TypesettingListData) => {
} }
const submitReviewVisible = ref(false) const submitReviewVisible = ref(false)
const submitReviewModelRef = ref() const submitReviewModelRef = ref()
const submitReview = async (data: TypesettingListData) => { const detailable = ref(false)
const submitReview = async (data: TypesettingListData, isDetail = false) => {
detailable.value = isDetail
try { try {
submitReviewModelRef.value?.getExamineInfo(data) submitReviewModelRef.value?.getExamineInfo(data)
if (data.state === '701' || data.state === '901') { // if (data.state === '701' || data.state === '901') {
submitReviewModelRef.value?.getPriceDetail(data) submitReviewModelRef.value?.getPriceDetail(data)
} // }
const res = await getTypesettingDetail(data.id) const res = await getTypesettingDetail(data.id)
row.value = res.data row.value = res.data
nextTick(() => { nextTick(() => {
...@@ -323,6 +360,15 @@ const reject = async () => { ...@@ -323,6 +360,15 @@ const reject = async () => {
if (!selection.value.length) { if (!selection.value.length) {
return ElMessage.warning('请选择要驳回的数据') return ElMessage.warning('请选择要驳回的数据')
} }
try {
await showConfirm('确定驳回吗?', {
type: 'warning',
confirmButtonText: '确认',
cancelButtonText: '取消',
})
} catch {
return
}
const ids = selection.value.map((item) => item.id).join(',') const ids = selection.value.map((item) => item.id).join(',')
try { try {
const res = await rejectDataApi(ids) const res = await rejectDataApi(ids)
...@@ -414,4 +460,13 @@ const reject = async () => { ...@@ -414,4 +460,13 @@ const reject = async () => {
.svg-icon { .svg-icon {
margin-left: 5px; margin-left: 5px;
} }
.product-time {
margin-bottom: 10px;
.create-time,
.assign-time {
height: 26px;
line-height: 26px;
}
}
</style> </style>
...@@ -114,6 +114,7 @@ ...@@ -114,6 +114,7 @@
/> />
<div <div
v-if=" v-if="
!detailable &&
lastVersion === version && lastVersion === version &&
(row?.state === '301' || row?.state === '401') (row?.state === '301' || row?.state === '401')
" "
...@@ -128,8 +129,10 @@ ...@@ -128,8 +129,10 @@
</div> </div>
</ElTabPane> </ElTabPane>
<ElTabPane <ElTabPane
v-if="row?.state === '601' || row?.state === '701' || row?.state === '901'" v-if="
label="报价信息" row?.state === '601' || row?.state === '701' || row?.state === '901'
"
label="上传稿件"
name="second" name="second"
> >
<div v-loading="loading" class="review-info"> <div v-loading="loading" class="review-info">
...@@ -154,17 +157,19 @@ ...@@ -154,17 +157,19 @@
</div> </div>
<div class="price-form"> <div class="price-form">
<div class="modals-image-title"> <div class="modals-image-title">
<span>报价信息</span> <span>上传稿件</span>
</div> </div>
<ElForm ref="priceFormRef" :model="priceForm" label-width="100px"> <ElForm ref="priceFormRef" :model="priceForm" label-width="100px">
<ElFormItem <ElFormItem
label="工艺单" label="稿件"
prop="craftImage" prop="craftImage"
:rules="[{ required: true, message: '请上传工艺单' }]" :rules="[{ required: true, message: '请上传稿件' }]"
> >
<UploadImage <UploadImage
v-model="priceForm.craftImage" v-model="priceForm.craftImage"
:disabled="row?.state === '701' || row?.state === '901'" :disabled="
detailable || row?.state === '701' || row?.state === '901'
"
></UploadImage> ></UploadImage>
</ElFormItem> </ElFormItem>
<ElFormItem <ElFormItem
...@@ -175,7 +180,9 @@ ...@@ -175,7 +180,9 @@
<ElInput <ElInput
v-model="priceForm.bulkUnitPrice" v-model="priceForm.bulkUnitPrice"
clearable clearable
:disabled="row?.state === '701' || row?.state === '901'" :disabled="
detailable || row?.state === '701' || row?.state === '901'
"
placeholder="大货单价" placeholder="大货单价"
></ElInput> ></ElInput>
</ElFormItem> </ElFormItem>
...@@ -184,7 +191,9 @@ ...@@ -184,7 +191,9 @@
v-model="priceForm.testUnitPrice" v-model="priceForm.testUnitPrice"
placeholder="测试单价" placeholder="测试单价"
clearable clearable
:disabled="row?.state === '701' || row?.state === '901'" :disabled="
detailable || row?.state === '701' || row?.state === '901'
"
></ElInput> ></ElInput>
</ElFormItem> </ElFormItem>
<!-- <ElFormItem <!-- <ElFormItem
...@@ -202,7 +211,9 @@ ...@@ -202,7 +211,9 @@
<ElInput <ElInput
v-model="priceForm.priceNote" v-model="priceForm.priceNote"
type="textarea" type="textarea"
:disabled="row?.state === '701' || row?.state === '901'" :disabled="
detailable || row?.state === '701' || row?.state === '901'
"
placeholder="备注" placeholder="备注"
></ElInput> ></ElInput>
</ElFormItem> </ElFormItem>
...@@ -285,26 +296,27 @@ ...@@ -285,26 +296,27 @@
</ElTabPane> </ElTabPane>
<ElTabPane label="审核意见" name="four"> <ElTabPane label="审核意见" name="four">
<div class="audit-opinion"> <div class="audit-opinion">
<div <template v-for="(item, index) in versionList" :key="index">
v-for="(item, index) in versionList" <div
v-show="item.state == 3 || item.state == 2" v-if="item.examineImages.length && item.opinion"
:key="index" :key="index"
class="opinion_version" class="opinion_version"
> >
<p> <p>
{{ item.updateTime }} {{ item.updateTime }}
{{ item.examinePeopleName }} 审核了样版,版本为{{ {{ item.examinePeopleName }} 审核了样版,版本为{{
item.version item.version
}},审核结果为【{{ item.state == 2 ? '通过 】' : '' }},审核结果为【{{ item.state == 2 ? '通过 】' : ''
}}{{ item.state == 3 ? '不通过】' : '' }} }}{{ item.state == 3 ? '不通过】' : '' }}
,审核意见如下: ,审核意见如下:
</p> </p>
<p v-dompurify-html="item.opinion"></p> <p v-dompurify-html="item.opinion"></p>
</div> </div>
</template>
</div> </div>
</ElTabPane> </ElTabPane>
</ElTabs> </ElTabs>
<template #footer> <template v-if="!detailable" #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button size="large" @click="visible = false">取消</el-button> <el-button size="large" @click="visible = false">取消</el-button>
<el-button <el-button
...@@ -376,6 +388,7 @@ const props = defineProps({ ...@@ -376,6 +388,7 @@ const props = defineProps({
modelValue: Boolean, modelValue: Boolean,
title: String, title: String,
row: Object, row: Object,
detailable: Boolean,
}) })
const emit = defineEmits(['update:modelValue', 'refresh']) const emit = defineEmits(['update:modelValue', 'refresh'])
const visible = computed({ const visible = computed({
...@@ -388,7 +401,7 @@ const visible = computed({ ...@@ -388,7 +401,7 @@ const visible = computed({
}) })
watch(visible, (val) => { watch(visible, (val) => {
if (val) { if (val) {
if (props.row?.state === '601') { if (props.row?.state === '601' && !props.detailable) {
activeName.value = 'second' activeName.value = 'second'
} else { } else {
activeName.value = 'first' activeName.value = 'first'
......
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