|
|
- <template>
- <div class="jcb-table-container">
- <CustomTable :ref="`tableRef`" :columns="jcbColumns" :formData="formData" :prefixKey="prefixKey"
- class="jcb-table" operationWidth="120px" @clickButton="handleClickButton" @blur="commonHandleUpdate"
- @onAddRow="onAddRow"
- @onRegentSubmit="commonHandleUpdate"
- fieldItemLabel="template.common.operationSteps" :showOperation="templateFillType === 'preFill'">
- <template slot="operation" slot-scope="{ row, rowIndex, columns }">
- <TableOpertaionDelete :row="row" :rowIndex="rowIndex" :columns="columns" @deleteRow="deleteRow">
- </TableOpertaionDelete>
- </template>
- </CustomTable>
- </div>
- </template>
- <script>
- import CustomTable from '../CustomTable.vue';
- import TableOpertaionDelete from "@/components/Template/operation/TableOpertaionDelete.vue";
- import { getuuid } from "@/utils/index.js";
- import moment from "moment"
-
- export default {
- inject: ['templateFillType'],
- components: {
- CustomTable,
- TableOpertaionDelete,
- },
- name: 'JcbComp',
- props: {
- formData: {
- type: Object,
- default: () => { },
- },
- prefixKey: {
- type: String,
- default: '',
- },
- item:{
- type: Object,
- default: () => { },
- },
- type:{
- type: String,
- default: 'qb',
- }
- },
- data() {
- return {
- };
- },
- mounted() {
- console.log(this.prefixKey,"prefixKey")
- },
- computed: {
- jcbColumns() {
- const { buttonName = "取出" } = this.item;
- return [
- {
- label: '处理批',
- prop: 'mc',
- width: '200px',
- bodyType: "jcb",
- bodyKey: "clpClick",
- bodyFillType: "preFill",
- bodySubType: 'span',
- bodySubKey: 'bh',
- },
- {
- label: '时间',
- prop: 'time',
- width: '200px',
- bodyType: "input",
- bodyDisabled: true,
- bodyFillType: "actFill",
- bodySubType: "button",
- bodySubButtonName: buttonName,
- bodySubKey: "timeClick",
- bodySubFillType: "actFill",
- },
-
- ]
- },
- },
- methods: {
- // 添加表格行
- onAddRow(data) {
- const { dataSource = [] } = data;
- const tableRef = this.$refs['tableRef'];
- if (tableRef) {
- tableRef.addRow({ mc: '', time: '' ,id:getuuid(),rowIndex:dataSource.length});
- // 添加行后触发数据变化
- this.onDataChange();
- }
- },
- // 删除表格行
- deleteRow(rowIndex) {
- const tableRef = this.$refs['tableRef'];
- if (tableRef) {
- tableRef.deleteRow(rowIndex);
- // 删除行后触发数据变化
- this.onDataChange();
- }
- },
- // 实现validateFormData方法,用于表单验证
- validateFormData() {
-
- // 调用CustomTable的同步验证方法
- const validateResult = this.$refs.tableRef.validateFormData();
-
- // 如果验证通过,还需要检查是否有数据行
- if (validateResult.valid) {
- const filledData = this.$refs.tableRef.getFilledFormData();
- const { stepTableFormData = [] } = filledData;
- if (stepTableFormData.length === 0) {
- return { valid: false, error: '请添加取板数据' };
- }
- }
- console.log("validateResult",validateResult);
- return validateResult;
- },
- // 点击按钮事件
- handleClickButton(key, rowIndex,colIndex,e,data) {
- if (key === 'timeClick') {
- this.$refs['tableRef'].updateDataSourceByRowIndex(rowIndex, { time: moment().format("YYYY-MM-DD HH:mm:ss") },{signData:data,updateFields:['time']})
- this.onDataChange();
- }
- },
- // 数据变化处理方法
- onDataChange() {
- // 获取表格数据
- let tableData = [];
- if (this.$refs.tableRef) {
- const filledData = this.$refs.tableRef.getFilledFormData();
- tableData = filledData.stepTableFormData || [];
- }
-
- // 触发自定义事件,将数据变化传递给父组件
- this.$emit('update', {
- jcbInfo: {
- stepTableFormData: tableData,
- }
- });
- },
-
- // 处理表格blur事件
- commonHandleUpdate() {
- // 表格数据变化时触发数据变化通知
- this.onDataChange();
- },
- }
- }
- </script>
-
- <style lang="scss">
- .jcb-table-container {
- width: 600px;
- }
-
- .jcb-table {
- .custom-table-wrapper {
- margin-top: 0;
- }
- }
- </style>
|