Merge branch 'dev_pro_山西_德益科技' of http://114.132.189.42:9002/r/product-inventory-management into dev_pro_山西_德益科技
| | |
| | | "BTYX": { |
| | | "env": { |
| | | "VITE_APP_TITLE": "山西德益科技有限公司", |
| | | "VITE_BASE_API": "http://36.137.12.37:9000", |
| | | "VITE_JAVA_API": "http://36.137.12.372:9001" |
| | | "VITE_BASE_API": "http://36.213.180.217:9035", |
| | | "VITE_JAVA_API": "http://36.213.180.217:9036" |
| | | }, |
| | | "logo": "logo/DYKJLogo.png", |
| | | "favicon": "favicon/DYKJfavicon.ico" |
| | |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="创建时间" |
| | | :span="2"> |
| | | {{ formatDisplayTime(row.createTime) }} |
| | | {{ formatDisplayDate(row.createTime) }} |
| | | </el-descriptions-item> |
| | | </el-descriptions> |
| | | </div> |
| | |
| | | <script setup> |
| | | import { computed } from "vue"; |
| | | import { Paperclip } from "@element-plus/icons-vue"; |
| | | import { formatDisplayTime } from "../../approve-template/approveTemplateConstants.js"; |
| | | import { formatDisplayDate } from "../../approve-template/approveTemplateConstants.js"; |
| | | import { |
| | | approvalTypeLabel, |
| | | approvalTypeStyle, |
| | |
| | | } from "../../ReimburseManage/shared/reimburseApproveBridge.js"; |
| | | import { |
| | | fetchBusinessTypeOptions, |
| | | formatDisplayTime, |
| | | formatDisplayDate, |
| | | mapEnabledFromApi, |
| | | unwrapTemplateList, |
| | | } from "../approve-template/approveTemplateConstants.js"; |
| | |
| | | const submitTemplatesLoading = ref(false); |
| | | |
| | | const submitTemplateCards = computed(() => { |
| | | if (selectedBusinessType.value == null || selectedBusinessType.value === "") return []; |
| | | if (selectedBusinessType.value == null || selectedBusinessType.value === "") |
| | | return []; |
| | | return allSubmitTemplates.value.filter((card) => |
| | | matchBusinessTypeValue(card.businessType, selectedBusinessType.value) |
| | | ); |
| | |
| | | const isSubmitEdit = computed(() => submitDialog.mode === "edit"); |
| | | const submitDialogTitle = computed(() => { |
| | | if (submitDialog.mode === "edit") { |
| | | return `修改${activeTemplate.value?.label || submitForm.templateName || "审批"}`; |
| | | return `修改${ |
| | | activeTemplate.value?.label || submitForm.templateName || "审批" |
| | | }`; |
| | | } |
| | | if (submitDialog.step === 1) return "选择模板类型"; |
| | | if (submitDialog.step === 2) return `选择审批模板${businessTypeLabel(selectedBusinessType.value) ? `(${businessTypeLabel(selectedBusinessType.value)})` : ""}`; |
| | | if (submitDialog.step === 2) |
| | | return `选择审批模板${ |
| | | businessTypeLabel(selectedBusinessType.value) |
| | | ? `(${businessTypeLabel(selectedBusinessType.value)})` |
| | | : "" |
| | | }`; |
| | | return `提交${activeTemplate.value?.label || "审批"}`; |
| | | }); |
| | | |
| | | const selectedBusinessTypeLabel = computed(() => businessTypeLabel(selectedBusinessType.value)); |
| | | const selectedBusinessTypeLabel = computed(() => |
| | | businessTypeLabel(selectedBusinessType.value) |
| | | ); |
| | | |
| | | function businessTypeLabel(type) { |
| | | if (type == null || type === "") return ""; |
| | | const hit = submitBusinessTypeOptions.value.find((x) => matchBusinessTypeValue(x.value, type)); |
| | | const hit = submitBusinessTypeOptions.value.find((x) => |
| | | matchBusinessTypeValue(x.value, type) |
| | | ); |
| | | return hit?.label || ""; |
| | | } |
| | | |
| | | function countTemplatesByBusinessType(type) { |
| | | return allSubmitTemplates.value.filter((card) => matchBusinessTypeValue(card.businessType, type)).length; |
| | | return allSubmitTemplates.value.filter((card) => |
| | | matchBusinessTypeValue(card.businessType, type) |
| | | ).length; |
| | | } |
| | | |
| | | const activeTemplate = computed(() => submitForm.templateSnapshot || null); |
| | |
| | | }); |
| | | |
| | | const submitFormRules = computed(() => ({ |
| | | templateKey: [{ required: true, message: "请选择审批类型", trigger: "change" }], |
| | | templateKey: [ |
| | | { required: true, message: "请选择审批类型", trigger: "change" }, |
| | | ], |
| | | ...buildFormPayloadRules(submitFormFields.value), |
| | | })); |
| | | |
| | |
| | | label: "创建时间", |
| | | prop: "createTime", |
| | | width: 170, |
| | | formatData: (v) => formatDisplayTime(v), |
| | | formatData: (v) => formatDisplayDate(v), |
| | | }, |
| | | { |
| | | dataType: "action", |
| | |
| | | disabled: (row) => row.approvalStatus !== "pending" || !row.isApprove, |
| | | clickFun: (row) => openApprove(row), |
| | | }, |
| | | { |
| | | name: "删除", |
| | | type: "danger", |
| | | clickFun: (row) => removeInstance(row), |
| | | }, |
| | | // { |
| | | // name: "删除", |
| | | // type: "danger", |
| | | // clickFun: (row) => removeInstance(row), |
| | | // }, |
| | | ], |
| | | }, |
| | | ]); |
| | |
| | | try { |
| | | await navigateToReimburseManageForEdit(proxy?.$router, moduleKey, rid); |
| | | } catch { |
| | | ElMessage.warning("未找到差旅/费用报销菜单路由,请从左侧菜单进入后再编辑"); |
| | | ElMessage.warning( |
| | | "未找到差旅/费用报销菜单路由,请从左侧菜单进入后再编辑" |
| | | ); |
| | | } |
| | | return; |
| | | } |
| | |
| | | templateKey: String(card.id), |
| | | ...applied, |
| | | businessType: |
| | | applied.businessType ?? card.businessType ?? selectedBusinessType.value, |
| | | applied.businessType ?? |
| | | card.businessType ?? |
| | | selectedBusinessType.value, |
| | | }); |
| | | submitDialog.step = 3; |
| | | } catch { |
| | |
| | | return false; |
| | | } |
| | | if (!activeTemplate.value) return false; |
| | | const bindingCheck = validateTemplateBinding({ flowNodes: submitForm.flowNodes }); |
| | | const bindingCheck = validateTemplateBinding({ |
| | | flowNodes: submitForm.flowNodes, |
| | | }); |
| | | if (!bindingCheck.ok) { |
| | | ElMessage.warning(bindingCheck.message); |
| | | return false; |
| | |
| | | return false; |
| | | } |
| | | if (!activeTemplate.value) return false; |
| | | const bindingCheck = validateTemplateBinding({ flowNodes: submitForm.flowNodes }); |
| | | const bindingCheck = validateTemplateBinding({ |
| | | flowNodes: submitForm.flowNodes, |
| | | }); |
| | | if (!bindingCheck.ok) { |
| | | ElMessage.warning(bindingCheck.message); |
| | | return false; |
| | |
| | | ); |
| | | submitDialog.visible = false; |
| | | await fetchApprovalList(); |
| | | if (detailDialog.visible && detailRow.value?.id === submitForm.instanceId) { |
| | | if ( |
| | | detailDialog.visible && |
| | | detailRow.value?.id === submitForm.instanceId |
| | | ) { |
| | | const hit = tableData.value.find((r) => r.id === submitForm.instanceId); |
| | | if (hit) detailRow.value = { ...hit }; |
| | | else detailDialog.visible = false; |
| | |
| | | import { computed } from "vue"; |
| | | import { businessApprovalStatusLabel, businessApprovalStatusTagType, formatFieldDisplayValue, resolveInstanceFormFields } from "../approve-list/approveListConstants.js"; |
| | | import { formatDisplayDate } from "../approve-template/approveTemplateConstants.js"; |
| | | import { INSTANCE_NO_SEARCH_MODULE_KEYS, INSTANCE_NO_TABLE_COLUMN } from "./approvalInstanceListSearch.js"; |
| | | |
| | | /** 列表/详情不回显为独立列的填报项 key(避免覆盖实例系统字段) */ |
| | |
| | | ...formCols, |
| | | ...extraColumns, |
| | | ...afterFormColumns, |
| | | { label: "创建时间", prop: "createTime", width: 170 }, |
| | | { label: "创建时间", prop: "createTime", width: 120, formatData: v => formatDisplayDate(v) }, |
| | | { |
| | | label: "审批状态", |
| | | prop: "approvalStatus", |
| | |
| | | return t || "—"; |
| | | } |
| | | |
| | | /** 仅展示日期(抹掉时分秒) */ |
| | | export function formatDisplayDate(val) { |
| | | const t = normalizeTimeValue(val); |
| | | if (!t) return "—"; |
| | | const parsed = dayjs(t.replace(/-/g, "/")); |
| | | return parsed.isValid() ? parsed.format("YYYY-MM-DD") : t; |
| | | } |
| | | |
| | | /** 详情接口 data 解包 */ |
| | | export function unwrapTemplateDetail(res) { |
| | | const data = res?.data ?? res; |
| | |
| | | |
| | | <el-descriptions-item label="创建时间">{{ formatDisplayTime(detailRow.createdTime) }}</el-descriptions-item> |
| | | |
| | | <el-descriptions-item label="更新时间">{{ formatDisplayTime(detailRow.updatedTime) }}</el-descriptions-item> |
| | | |
| | | </el-descriptions> |
| | | |
| | | <el-divider content-position="left">填报项({{ detailFormConfig.fields?.length || 0 }} 项)</el-divider> |
| | |
| | | formatData: (v) => formatDisplayTime(v), |
| | | }, |
| | | { |
| | | label: "更新时间", |
| | | prop: "updatedTime", |
| | | width: 170, |
| | | showOverflowTooltip: true, |
| | | formatData: (v) => formatDisplayTime(v), |
| | | }, |
| | | { |
| | | dataType: "action", |
| | | label: "操作", |
| | | align: "center", |
| | |
| | | <el-tag :type="statusTagType(row.approvalResult)" size="small">{{ statusLabel(row.approvalResult) }}</el-tag> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="费用类型">{{ expenseCategoryLabel(row.expenseCategory) }}</el-descriptions-item> |
| | | <el-descriptions-item label="申请时间">{{ row.applyTime || row.createTime || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="申请时间">{{ dateOnly(row.applyTime || row.createTime) }}</el-descriptions-item> |
| | | <el-descriptions-item label="员工编号">{{ row.employeeNo || row.applicantNo || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="员工姓名">{{ row.employeeName || row.applicantName || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="报销原因" :span="2">{{ row.reimburseReason || "—" }}</el-descriptions-item> |
| | |
| | | <el-descriptions-item v-if="row.rejectReason" label="驳回原因" :span="2"> |
| | | <span class="reject-text">{{ row.rejectReason }}</span> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="创建时间" :span="2">{{ row.createTime || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="创建时间" :span="2">{{ dateOnly(row.createTime) }}</el-descriptions-item> |
| | | </el-descriptions> |
| | | |
| | | <el-divider content-position="left">报销明细</el-divider> |
| | |
| | | |
| | | <script setup> |
| | | import { computed } from "vue"; |
| | | import { formatReimbursementDate } from "../../shared/finReimbursementMappers.js"; |
| | | import { expenseCategoryLabel, expenseSubjectLabel, statusLabel, statusTagType } from "../costReimburseUtils.js"; |
| | | |
| | | const props = defineProps({ |
| | | row: { type: Object, default: () => ({}) }, |
| | | }); |
| | | |
| | | function dateOnly(val) { |
| | | return formatReimbursementDate(val) || "—"; |
| | | } |
| | | |
| | | const attachmentFiles = computed(() => { |
| | | const list = |
| | | props.row?.attachmentList || |
| | |
| | | enrichReimbursementListRowsWithApprovalFlow, |
| | | filterRowsByReimbursementType, |
| | | FIN_REIMBURSEMENT_TYPE, |
| | | formatReimbursementDate, |
| | | mapCostReimbursementRow, |
| | | mapFinReimbursementDetailRow, |
| | | resolveReimbursementDeleteId, |
| | |
| | | { label: "申请人", prop: "applicantName", minWidth: 90 }, |
| | | { label: "报销金额(元)", prop: "applyAmount", width: 110 }, |
| | | { label: "报销原因", prop: "reimburseReason", minWidth: 160, showOverflowTooltip: true }, |
| | | { label: "申请时间", prop: "applyTime", width: 165 }, |
| | | { label: "创建时间", prop: "createTime", width: 165 }, |
| | | { label: "申请时间", prop: "applyTime", width: 120, formatData: (v) => formatReimbursementDate(v) }, |
| | | { label: "创建时间", prop: "createTime", width: 120, formatData: (v) => formatReimbursementDate(v) }, |
| | | { |
| | | label: "报销状态", |
| | | prop: "approvalResult", |
| | |
| | | return hasTime ? d.format("YYYY-MM-DD HH:mm:ss") : d.format("YYYY-MM-DD"); |
| | | } |
| | | |
| | | /** 列表/详情仅展示日期(抹掉时分秒) */ |
| | | export function formatReimbursementDate(val) { |
| | | if (val == null || val === "") return ""; |
| | | const d = dayjs(val); |
| | | return d.isValid() ? d.format("YYYY-MM-DD") : String(val); |
| | | } |
| | | |
| | | /** 接口行 → 差旅报销列表行(兼容 useTravelReimburse 字段) */ |
| | | export function mapTravelReimbursementRow(row) { |
| | | if (!row) return {}; |
| | |
| | | <el-descriptions-item label="员工编号">{{ row.employeeNo || row.applicantNo || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="员工姓名">{{ row.employeeName || row.applicantName || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="报销原因" :span="2">{{ row.reimburseReason || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="出差开始">{{ row.travelStartTime || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="出差结束">{{ row.travelEndTime || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="出差开始">{{ dateOnly(row.travelStartTime) }}</el-descriptions-item> |
| | | <el-descriptions-item label="出差结束">{{ dateOnly(row.travelEndTime) }}</el-descriptions-item> |
| | | <el-descriptions-item label="出差地">{{ row.departurePlace || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="目的地">{{ row.destination || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="酒店标准">{{ row.hotelStandard != null ? `${row.hotelStandard} 元/晚` : "—" }}</el-descriptions-item> |
| | |
| | | <el-descriptions-item v-if="row.rejectReason" label="驳回原因" :span="2"> |
| | | <span class="reject-text">{{ row.rejectReason }}</span> |
| | | </el-descriptions-item> |
| | | <el-descriptions-item label="创建时间" :span="2">{{ row.createTime || "—" }}</el-descriptions-item> |
| | | <el-descriptions-item label="创建时间" :span="2">{{ dateOnly(row.createTime) }}</el-descriptions-item> |
| | | </el-descriptions> |
| | | |
| | | <el-divider content-position="left">报销明细</el-divider> |
| | |
| | | |
| | | <script setup> |
| | | import { computed } from "vue"; |
| | | import { formatReimbursementDate } from "../../shared/finReimbursementMappers.js"; |
| | | import { expenseSubjectLabel, statusLabel, statusTagType } from "../travelReimburseUtils.js"; |
| | | |
| | | const props = defineProps({ |
| | | row: { type: Object, default: () => ({}) }, |
| | | }); |
| | | |
| | | function dateOnly(val) { |
| | | return formatReimbursementDate(val) || "—"; |
| | | } |
| | | |
| | | const attachmentFiles = computed(() => { |
| | | const list = |
| | | props.row?.attachmentList || |
| | |
| | | enrichReimbursementListRowsWithApprovalFlow, |
| | | filterRowsByReimbursementType, |
| | | FIN_REIMBURSEMENT_TYPE, |
| | | formatReimbursementDate, |
| | | mapFinReimbursementDetailRow, |
| | | mapTravelReimbursementRow, |
| | | resolveReimbursementDeleteId, |
| | |
| | | { label: "报销单号", prop: "reimburseNo", width: 150 }, |
| | | { label: "申请人编号", prop: "applicantNo", width: 110 }, |
| | | { label: "申请人", prop: "applicantName", minWidth: 90 }, |
| | | { label: "出差开始", prop: "travelStartTime", width: 165 }, |
| | | { label: "出差结束", prop: "travelEndTime", width: 165 }, |
| | | { label: "创建时间", prop: "createTime", width: 165 }, |
| | | { label: "出差开始", prop: "travelStartTime", width: 120, formatData: (v) => formatReimbursementDate(v) }, |
| | | { label: "出差结束", prop: "travelEndTime", width: 120, formatData: (v) => formatReimbursementDate(v) }, |
| | | { label: "创建时间", prop: "createTime", width: 120, formatData: (v) => formatReimbursementDate(v) }, |
| | | { |
| | | label: "状态", |
| | | prop: "approvalResult", |
| | |
| | | clearable |
| | | :prefix-icon="Search" /> |
| | | </el-form-item> |
| | | <el-form-item label="销售合同号:"> |
| | | <el-input v-model="searchForm.salesContractNo" |
| | | placeholder="请输入" |
| | | clearable |
| | | prefix-icon="Search" |
| | | @change="handleQuery" /> |
| | | </el-form-item> |
| | | <!-- <el-form-item label="销售合同号:">--> |
| | | <!-- <el-input v-model="searchForm.salesContractNo"--> |
| | | <!-- placeholder="请输入"--> |
| | | <!-- clearable--> |
| | | <!-- prefix-icon="Search"--> |
| | | <!-- @change="handleQuery" />--> |
| | | <!-- </el-form-item>--> |
| | | <el-form-item label="项目名称:"> |
| | | <el-input v-model="searchForm.projectName" |
| | | placeholder="请输入" |
| | |
| | | prop="purchaseContractNumber" |
| | | width="160" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="销售合同号" |
| | | prop="salesContractNo" |
| | | width="160" |
| | | show-overflow-tooltip /> |
| | | <!-- <el-table-column label="销售合同号"--> |
| | | <!-- prop="salesContractNo"--> |
| | | <!-- width="160"--> |
| | | <!-- show-overflow-tooltip />--> |
| | | <el-table-column label="供应商名称" |
| | | prop="supplierName" |
| | | width="160" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="项目名称" |
| | | prop="projectName" |
| | | width="320" |
| | | width="100" |
| | | show-overflow-tooltip /> |
| | | <el-table-column label="审批状态" |
| | | prop="approvalStatus" |
| | |
| | | clearable /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="销售合同号:" |
| | | prop="salesLedgerId"> |
| | | <el-select v-model="form.salesLedgerId" |
| | | placeholder="请选择" |
| | | filterable |
| | | clearable |
| | | @change="salesLedgerChange"> |
| | | <el-option v-for="item in salesContractList" |
| | | :key="item.id" |
| | | :label="item.salesContractNo" |
| | | :value="item.id" /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="12">--> |
| | | <!-- <el-form-item label="销售合同号:"--> |
| | | <!-- prop="salesLedgerId">--> |
| | | <!-- <el-select v-model="form.salesLedgerId"--> |
| | | <!-- placeholder="请选择"--> |
| | | <!-- filterable--> |
| | | <!-- clearable--> |
| | | <!-- @change="salesLedgerChange">--> |
| | | <!-- <el-option v-for="item in salesContractList"--> |
| | | <!-- :key="item.id"--> |
| | | <!-- :label="item.salesContractNo"--> |
| | | <!-- :value="item.id" />--> |
| | | <!-- </el-select>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | </el-row> |
| | | <el-row :gutter="30"> |
| | | <el-col :span="12"> |
| | |
| | | @change="changeDaterange" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <!-- <el-col :span="4"> |
| | | <el-form-item label="销售单号" |
| | | prop="salesContractNo"> |
| | | <el-input v-model="searchForm.salesContractNo" |
| | |
| | | placeholder="请输入生产工单号搜索" |
| | | clearable /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-col>--> |
| | | <!-- 按钮 --> |
| | | <el-col :span="4"> |
| | | <el-form-item> |
| | |
| | | prop: "checkTime", |
| | | width: 120, |
| | | }, |
| | | { |
| | | /*{ |
| | | label: "销售单号", |
| | | prop: "salesContractNo", |
| | | width: 120, |
| | |
| | | label: "生产工单号", |
| | | prop: "workOrderNo", |
| | | width: 120, |
| | | }, |
| | | },*/ |
| | | { |
| | | label: "检验员", |
| | | prop: "checkName", |
| | |
| | | width: 120, |
| | | }, |
| | | { |
| | | label: "检测单位", |
| | | prop: "checkCompany", |
| | | width: 120, |
| | | }, |
| | | { |
| | | label: "检测结果", |
| | | prop: "checkResult", |
| | | dataType: "tag", |
| | |
| | | @change="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="快递单号:"> |
| | | <!-- <el-form-item label="快递单号:"> |
| | | <el-input |
| | | v-model="searchForm.expressNumber" |
| | | placeholder="请输入" |
| | |
| | | style="width: 200px" |
| | | @change="handleQuery" |
| | | /> |
| | | </el-form-item> |
| | | </el-form-item>--> |
| | | <el-form-item> |
| | | <el-button type="primary" @click="handleQuery"> 搜索</el-button> |
| | | </el-form-item> |
| | |
| | | prop="shippingCarNumber" |
| | | show-overflow-tooltip |
| | | /> |
| | | <el-table-column |
| | | <!-- <el-table-column |
| | | label="快递公司" |
| | | prop="expressCompany" |
| | | show-overflow-tooltip |
| | |
| | | label="快递单号" |
| | | prop="expressNumber" |
| | | show-overflow-tooltip |
| | | /> |
| | | />--> |
| | | <el-table-column |
| | | label="审核状态" |
| | | prop="status" |
| | |
| | | </el-table-column>
|
| | | <el-table-column label="创建时间" align="center" prop="createTime" width="200">
|
| | | <template #default="scope">
|
| | | <span>{{ parseTime(scope.row.createTime) }}</span>
|
| | | <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
| | | </template>
|
| | | </el-table-column>
|
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
| | |
| | | <el-table-column label="备注" align="center" prop="remark" :show-overflow-tooltip="true" />
|
| | | <el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
| | | <template #default="scope">
|
| | | <span>{{ parseTime(scope.row.createTime) }}</span>
|
| | | <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
| | | </template>
|
| | | </el-table-column>
|
| | | <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
|
| | |
| | | </el-table-column>
|
| | | <el-table-column label="创建时间" align="center" width="160" prop="createTime">
|
| | | <template #default="scope">
|
| | | <span>{{ parseTime(scope.row.createTime) }}</span>
|
| | | <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
| | | </template>
|
| | | </el-table-column>
|
| | | <el-table-column label="操作" align="center" width="210" class-name="small-padding fixed-width">
|
| | |
| | | </el-table-column>
|
| | | <el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
| | | <template #default="scope">
|
| | | <span>{{ parseTime(scope.row.createTime) }}</span>
|
| | | <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
| | | </template>
|
| | | </el-table-column>
|
| | | <el-table-column label="操作" width="180" align="center" class-name="small-padding fixed-width">
|
| | |
| | | </el-table-column>
|
| | | <el-table-column label="创建时间" align="center" prop="createTime">
|
| | | <template #default="scope">
|
| | | <span>{{ parseTime(scope.row.createTime) }}</span>
|
| | | <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
| | | </template>
|
| | | </el-table-column>
|
| | | <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
| | |
| | | </el-table-column>
|
| | | <el-table-column label="创建时间" align="center" prop="createTime" v-if="columns[6].visible" width="160">
|
| | | <template #default="scope">
|
| | | <span>{{ parseTime(scope.row.createTime) }}</span>
|
| | | <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
| | | </template>
|
| | | </el-table-column>
|
| | | <el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
|