| | |
| | | <template> |
| | | <view class="raw-material-page"> |
| | | <PageHeader title="原材料" @back="goBack" /> |
| | | <PageHeader title="检测化验" @back="goBack" /> |
| | | |
| | | <!-- 搜索与筛选 --> |
| | | <view class="search-section"> |
| | |
| | | <view v-for="(item, index) in tableData" :key="index" class="list-item"> |
| | | <view class="item-header"> |
| | | <text class="product-name">{{ item.productName }}</text> |
| | | <up-tag |
| | | :text="item.inspectState == 1 ? '已提交' : '未提交'" |
| | | :type="item.inspectState == 1 ? 'success' : 'warning'" |
| | | size="mini" |
| | | ></up-tag> |
| | | <view class="item-header-right"> |
| | | <up-tag |
| | | :text="item.inspectState == 1 ? '已提交' : '未提交'" |
| | | :type="item.inspectState == 1 ? 'success' : 'warning'" |
| | | size="mini" |
| | | ></up-tag> |
| | | <view class="file-entry" @click.stop="openFiles(item)"> |
| | | <up-icon name="file-text" size="16" color="#606266"></up-icon> |
| | | <text class="file-entry-text">附件</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="item-content"> |
| | | <view class="item-row"> |
| | |
| | | </view> |
| | | </view> |
| | | <view class="item-actions"> |
| | | <up-button v-if="item.inspectState != 1" type="primary" size="mini" @click.stop="openForm('edit', item)">编辑</up-button> |
| | | <up-button type="info" size="mini" @click.stop="openFiles(item)">附件</up-button> |
| | | <up-button v-if="item.inspectState != 1||hasRawCancel" type="primary" size="mini" @click.stop="openForm('edit', item)">编辑</up-button> |
| | | <up-button type="warning" size="mini" @click.stop="openDetail(item)">详情</up-button> |
| | | <up-button v-if="item.inspectState != 1" type="success" size="mini" @click.stop="handleConfirmSubmit(item)">提交</up-button> |
| | | <up-button type="error" size="mini" @click.stop="handleDelete(item)">删除</up-button> |
| | | <up-button v-if="hasRawCancel" type="error" size="mini" @click.stop="handleDelete(item)">删除</up-button> |
| | | </view> |
| | | </view> |
| | | <view class="pagination-container"> |
| | |
| | | } from '@/api/qualityManagement/rawMaterial.js'; |
| | | import { toast, showConfirm } from '@/utils/common'; |
| | | import useUserStore from '@/store/modules/user'; |
| | | import { checkPermi } from '@/utils/permission'; |
| | | |
| | | const userStore = useUserStore(); |
| | | const hasRawCancel = computed(() => checkPermi(['raw_cancel'])); |
| | | |
| | | const searchForm = reactive({ |
| | | batchNo: '', |
| | |
| | | }; |
| | | |
| | | const openForm = (type, item) => { |
| | | // if (type === 'edit' && !hasRawEdit.value) return |
| | | const id = item?.id |
| | | uni.navigateTo({ |
| | | url: `/pages/qualityManagement/rawMaterial/form?type=${type}${id ? `&id=${id}` : ''}` |
| | | }) |
| | | }; |
| | | |
| | | const openDetail = (item) => { |
| | | const id = item?.id |
| | | if (!id) return |
| | | uni.navigateTo({ |
| | | url: `/pages/qualityManagement/rawMaterial/form?type=detail&id=${id}` |
| | | }) |
| | | } |
| | | |
| | | const handleConfirmSubmit = (row) => { |
| | | showConfirm('确认提交该检验记录吗?').then(res => { |
| | |
| | | }; |
| | | |
| | | const handleDelete = (row) => { |
| | | if (!hasRawCancel.value) return |
| | | showConfirm('确认删除该记录吗?').then(res => { |
| | | if (res.confirm) { |
| | | // 对齐 PC 端:删除接口接收 id 数组 |
| | |
| | | margin-bottom: 20rpx; |
| | | } |
| | | |
| | | .item-header-right { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 16rpx; |
| | | } |
| | | |
| | | .file-entry { |
| | | display: inline-flex; |
| | | align-items: center; |
| | | gap: 8rpx; |
| | | padding: 8rpx 16rpx; |
| | | border-radius: 999rpx; |
| | | background: #f2f6fc; |
| | | border: 1rpx solid #ebeef5; |
| | | } |
| | | |
| | | .file-entry-text { |
| | | font-size: 24rpx; |
| | | color: #606266; |
| | | line-height: 1; |
| | | } |
| | | |
| | | .product-name { |
| | | font-size: 30rpx; |
| | | font-weight: bold; |